我有几个Delphi程序来维护与数据库的连接(一些Oracle,一些Firebird.)如果程序在Windows进入睡眠模式时运行,则与数据库的连接将丢失.处理这种情况的最佳方法是什么?有没有办法在网络进入睡眠模式之前接收事件,这样我可以尝试更好地处理这种情况?
当我设置TFileOpenDialog的Filename属性然后执行它时,我只看到在Filename字段中选择的文件名的最后14个字符.如果我按下Home我可以看到整个字符串都在那里,但我希望它能正确显示.我已经在两台Windows 7和一台Windows 8机器上进行了测试,结果相同.有没有人对如何解决这个问题有任何建议或提示?
FileOpenDialog1.FileName :=
'C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\available_downloads_en.htm';
if FileOpenDialog1.Execute then
ShowMessage(FileOpenDialog1.FileName);
Run Code Online (Sandbox Code Playgroud)
显示问题的初始显示:

按Home后的整个字符串:

我正在尝试制作一个Delphi实时模板(在D2010中)用()包围选择.我目前的尝试看起来像:
<code language="Delphi" delimiter="|"><![CDATA[(|selected|)]]>
Run Code Online (Sandbox Code Playgroud)
它几乎可以工作,但放入额外的空白.如果我有一个代码行,如:
if blah = 5 then
Run Code Online (Sandbox Code Playgroud)
我只选择了blah = 5部分并调用了我想要的模板,如下所示:
if (blah = 5) then
Run Code Online (Sandbox Code Playgroud)
但它最终成为了
if ( blah = 5) then
Run Code Online (Sandbox Code Playgroud)
有什么建议?
编辑:这是整个模板:
<?xml version="1.0" encoding="utf-8" ?>
<codetemplate xmlns="http://schemas.borland.com/Delphi/2005/codetemplates"
version="1.0.0">
<template name="(" surround="true" invoke="none">
<description>
Surround selection by parentheses
</description>
<author>
Mark Ford
</author>
<code language="Delphi" delimiter="|"><![CDATA[(|selected|)]]>
</code>
</template>
</codetemplate>
Run Code Online (Sandbox Code Playgroud) 我现在用Outlook做什么:
我收到产品的电子邮件订单.我在Outlook中选择一个或多个电子邮件(一个订单可以有多个与之关联的电子邮件),然后切换到我的Delphi编码的OrderManager程序并单击"导入".它使用Outlook的COM自动化界面来读取每条消息的文本,解析并处理每条消息.
问题是,我可以使用Thunderbird代替吗?Thunderbird有COM接口吗?我必须使用Google搜索错误的关键字,因为我还没有找到任何内容.
顺便说一句,我确实有一个版本的OrderManager,它只是使用Indy从我的电子邮件服务器直接读取电子邮件,但出于几个原因,我想尝试从Firefox中读取它们.
任何建议,文档链接或代码示例将不胜感激!
我有一个TListView(在报告模式下),我在虚拟模式下使用(OwnerData:= True).除了我知道的自动自动调整列的两种情况之外,一切都很好.他们是:
在虚拟模式下这些事件的默认处理并不真正起作用(它似乎在第一行数据上自动调整.)我想挂钩行为并自己进行列自动调整.有谁知道这是怎么做到的吗?或许我错过了一些明显的东西?我正在使用Delphi XE.谢谢你的任何建议.
我正在尝试使用TRegistry处理扩展的OpenWithProgids键.我没有看到TRegistry可以编写这些值(需要一种REG_NONE类型.)我知道我可以使用API RegSetValueEx函数来设置这些,但我想知道我是否遗漏了TRegistry中的某些内容做到这一点.
这与具有子窗体的Delphi应用程序有关,该子窗体已显示然后隐藏但未释放。如果用户将鼠标悬停在应用程序的(Windows 10)任务栏“迷你视图”上,则隐藏的窗体将变得可见(在悬停期间)。当用户单击迷你视图以将焦点更改为时,它们将隐藏。应用程序。有什么办法可以避免这种情况?
重新创建:
请注意,最小化应用程序并还原它可以“修复”影响,直到下次显示表单为止。也许这是导致问题的线索或解决方法的线索?这并不是一个大问题,因为它似乎并没有引起任何实际问题,但是看起来确实不专业。
根据要求添加代码(但是,这不会很有趣。)
program Project1;
uses
Vcl.Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
// Only code that was added to TForm1:
procedure TForm1.Button1Click(Sender: TObject);
begin
// Show and then hide the form or use ShowModal and close it before testing the hover.
Form2.Show;
Form2.Hide;
// Form2.ShowModal;
end;
Run Code Online (Sandbox Code Playgroud)
更新:如何仅使用Delphi IDE显示问题。
当用Unicode字符串调用时,我对"Ansi"vs"常规"rtl字符串函数有点混淆.据我所知,在旧版本的Delphi(当Ansistring是默认值时),"Ansi"版本处理多字节字符.在处理Unicode字符串时这是否意味着什么?假设我需要处理韩文字符,并且我的代码不必与旧的Delphi版本兼容,应该使用哪些rtl函数?
我的应用程序需要在启动时读取一个选项以检查它是否应该以只读模式启动.用户不应允许更改该选项.
我现在通常使用系统注册表的HKLM\Software部分中设置的值来执行此操作.管理员设置值,用户无法更改它(他们无权修改HKLM中的条目).
问题是在终端服务器(或Citrix)计算机上,这会影响所有用户.我想找出一种基于每个用户的方法.别人怎么处理这个?系统注册表中是否有针对此类用户设置的部分,用户无法更改?
感谢您的任何建议或意见!
现在我有一个宽屏显示器,我似乎无法找到一种方法来使Delphi IDE包装生成的代码不是80个字符.我已将IDE编辑器选项中的"右边距"设置设置为较高的值,但它似乎不会影响生成的事件和代码行上发生的包装.有谁知道设置它的方法?也许隐藏的注册表设置?或者,是否有任何IDE插件可以执行此操作?谢谢你的任何建议!
delphi ×10
delphi-xe2 ×3
delphi-2009 ×1
delphi-xe ×1
ide ×1
networking ×1
registry ×1
settings ×1
thunderbird ×1
tlistview ×1
unicode ×1