我注意到当你将按钮的样式设置为tbsDropdown时,TToolButton的高度会增加.我可以理解宽度增加,所以按钮有空间绘制向下箭头,但我不确定高度增加是否必要.
重现问题的步骤(Delphi 2010,Windows 7 x64):
当分配给工具栏的图像时,会发生相同的高度增加,在这种情况下,按钮中已有足够多的垂直空间可用于绘制下拉列表.
这是一个可视化示例: alt text http://img440.imageshack.us/img440/1462/ttoolbar02.png alt text http://img291.imageshack.us/img291/966/ttoolbar01.png
是否有一个解决方法,没有黑客攻击VCL,或者这是硬编码到Windows控件?
我正在考虑将我的应用程序设置保存为xml而不是使用注册表,但我很难理解并使用OmniXML.
我知道你们中的一些人在使用和推荐OnmiXML所以我希望有人可以给我一些指示.
我习惯使用TRegistry创建一个新密钥,如果它不存在,但我似乎无法在OmniXML上找到任何类似的选项.
基本上我想要做的是在不同的XML级别上保存设置,如下所示:
<ProgramName version="6">
<profiles>
<profile name="Default">
<Item ID="aa" Selected="0" />
<Item ID="bb" Selected="1" />
</profile>
</profiles>
<settings>
<CheckForUpdates>1</CheckForUpdates>
<CheckForUpdatesInterval>1</CheckForUpdatesInterval>
<ShowSplashScreen></ShowSplashScreen>
</settings>
</ProgramName>
Run Code Online (Sandbox Code Playgroud)
现在,当第一次运行程序时,我没有xml文件,所以我需要创建所有子级别.使用TRegistry很容易,只需调用OpenKey(pathtokey,True),如果它不存在,将创建密钥.有没有类似的方法用OmniXML做同样的事情?喜欢:
SetNodeStr('./settings/CheckForUpdates', True);
Run Code Online (Sandbox Code Playgroud)
如果它还不存在,那将创建"路径".
Gustavo Daud使用(不再是)免费提供的TPngImage的人试图将他们的项目移植到Delphi 2009?
在我的情况下,在D2007中打开表格时,似乎所有在D2007中显示得很好的TImage png图像现在都是空白的(如果我在D2009中重新添加图像,保存表格并在D2007中打开它然后图像为空白再次).
比较D2007和D2009之间的Picture.Data以获得完全相同的图像,表明数据不同.
有人注意到这个问题?我在我的所有项目中都有几十个png图像,我不想在D2009中重新添加它们并且松散向后兼容性.
我试图了解常规svn://和svn + ssh:// access之间的subversion存储库安全性方面的差异.
我在自定义端口和IP地址中设置了我的subversion存储库,并在防火墙上打开了相同的端口,并将存储库配置为仅对经过身份验证的用户进行访问.
根据我的理解,subversion svn:// access通过subversion端口连接,而svn + ssh://连接到ssh端口以创建到服务器的隧道(很像使用PuTTY).
我假设使用svn + ssh是没有让svn端口对世界开放或者我错过了其他东西的额外增加的安全性?
编辑: 如何svn + ssh://命令不同于打开到我的服务器的PuTTY隧道并使用svn:// localhost/repository而不是?我已经阅读了几篇关于如何获得颠覆以使svn + ssh在windows中工作的文章,但我无法理解所有这些.使用PuTTY打开隧道工作得很好,但我必须记住在调用svn:// localhost/repository之前先打开它.
我正在尝试创建一些类,允许我检索和操作我的应用程序将创建和管理的一组备份.
我已经提出了以下代码(尚未测试),但我不确定它是否是实现此目的的最佳方式,或者是否有更简单/更好的方法.我正在使用Delphi 2010.
我有一个包含备份详细信息的类(TBackupItem),然后我需要一个包含TBackupItem集合的类,最后我将有一个类来管理备份的读取和写入,并且还公开了一个访问的属性TBackupItem的集合.
type
TBackupItem = class
private
FBackupProgram: string;
FBackupProgramVersion: string;
// There are more variables and properties but for the sake of simplicity I've listed only two
public
property BackupProgram: string read FBackupProgram write FBackupProgram;
property BackupProgramVersion: string read FBackupProgramVersion write FBackupProgramVersion;
end;
TBackupsList = class(???)
private
// This class will hold a list of TBackupItem. What should I use to accomplish this?
end;
TBackupsManager = class(TObject)
private
FBackups: TBackupsList;
public
property Backups: TBackupsList read FBackups write …Run Code Online (Sandbox Code Playgroud) 是否有任何Delphi专家或类似工具允许我自动查找项目中使用的所有第三方组件?
我需要发送一个使用多个第三方组件的项目,为了编译,我还必须包含它使用的第三方组件.比手动查看第三方组件的所有表单更快捷的方法?
我正在评估试验保护系统的许多可能性,并提出了以下问题:
如果我不止一次使用我的"试验检查"类(在应用程序上分散了几次),它只会被编译一次到exe中吗?
我之所以要问的是,如果它只在exe中编译一次,那么修补这个单独的类将使使用它的所有地方无效.
如果它只编译一次,是否有任何可行的替代方案来防止这种情况?
谢谢!
编辑:我实际上并没有尝试推出自己的保护系统,我正在寻找一些现有的解决方案,如OnGuard,mxProtector和TRegWare.在查看各种解决方案源代码时,我提出了这个问题.
有没有办法直接在Delphi 2010中安装TWebBrowser而无需安装Web开发控件?
如果我在Delphi 2010安装程序中选择Web开发控件选项,则会安装TWebBrowser.但是这个"包"超过200 MB,我只需要TWebBrowser.
有没有直接在Delphi 2010 Pro上安装TWebBrowser的方法?
谢谢!
我已经读过使用Sysinternals记录的技术在注册表中隐藏注册表值的可能性,它允许您使用本机API在注册表项中放置一个空字符(例如,"hello\0"): http:// technet.microsoft.com/en-us/sysinternals/bb897446.aspx(滚动到"隐藏的注册表项"部分).
他们还有一个工具来查找和删除这些值:http: //technet.microsoft.com/en-us/sysinternals/bb897448.aspx
任何人都知道如何使用这种技术在Delphi中创建/读取/删除隐藏的注册表值?
我正在尝试将一个集合存储在TStringList的对象属性(并读取它)中(我也将使用它来存储与该集合相关联的文本),但是我得到了一个无效的集合类型.
在StringList对象中存储集合的最佳方法是什么?此外,在销毁StringList时是否需要释放此对象?
这是一些示例代码:
type
TDummy = (dOne, dTwo, dThree);
TDummySet = set of TDummy;
var
DummySet: TDummySet;
SL: TStringList;
begin
SL := TStringList.Create;
Try
DummySet := [dOne, dThree];
SL.AddObject('some string', TObject(DummySet)); // Doesn't work. Invalid typecast
Finally
SL.Free;
End;
end;
Run Code Online (Sandbox Code Playgroud)