Microsoft在其UI准则中使用对话框长度单位(DLU).如何将它们转换为像素?
据我所知,DLU取决于系统字体大小.你能在Delphi for Win32中建议一些简单的转换方法吗?
我正在TTreeView使用OnAdvancedCustomDrawItem事件从头开始自定义绘图,我想知道如何在我的所有者绘制项目的背景中正确渲染这些选择和热矩形?它们是Vista/7风格,所以我不能简单地用一些纯色填充背景.

我试图在cdPostPaint舞台上绘制我的项目,但是如果我DefaultDraw := True在cdPrePaint舞台上离开以绘制选择背景,则会发生完整的默认绘图,包括项目文本.
procedure TForm1.TreeView1AdvancedCustomDrawItem(Sender: TCustomTreeView;
Node: TTreeNode; State: TCustomDrawState; Stage: TCustomDrawStage; var PaintImages,
DefaultDraw: Boolean);
begin
case Stage of
cdPreErase:
begin
DefaultDraw := True;
end;
cdPostErase:
begin
DefaultDraw := True;
end;
cdPrePaint:
begin
// I thought this will paint only the selected/hot backgrounds,
// however this will paint whole item, including text.
DefaultDraw := True;
end;
cdPostPaint:
begin
DefaultDraw := False;
// painting my owner-draw text
// ......... …Run Code Online (Sandbox Code Playgroud) 我需要在我的Delphi应用程序中测试一些HTTP组件.我使用DUnit并希望在测试中添加一些自动化功能.
所以我的测试代码需要启动本地HTTP服务器,配置它(例如,在3秒内准备连接中断,或模拟低带宽,或要求登录/密码等),运行我的单元测试并关闭HTTP服务器.
是否有一些可用于Delphi/DUnit的HTTP服务器?
我知道Mozilla团队有这样的服务器,但是将它集成到DUnit中并不容易.
我有一个XML文件,最初使用空格缩进格式化(每个嵌套项目有2个空格).
当我使用IXMLDocument加载并保存此文件时,空格缩进将更改为制表符(代码#9).
这是代码:
var
FileName: String;
Document: IXMLDocument;
...
Document := XMLDoc.LoadXMLDocument(FileName);
Document.SaveToFile(FileName);
Run Code Online (Sandbox Code Playgroud)
我试图使用NodeIndentStr属性 - 没有结果:
Document := XMLDoc.LoadXMLDocument(FileName);
Document.NodeIndentStr := ' ';
Document.SaveToFile(FileName);
Run Code Online (Sandbox Code Playgroud)
也用过FormatXMLData- 没有结果:
Document := XMLDoc.LoadXMLDocument(FileName);
Document.XML.Text := XMLDoc.FormatXMLData(Document.XML.Text);
Document.Active := True;
Document.SaveToFile(FileName);
Run Code Online (Sandbox Code Playgroud)
如何使用空格缩进而不是制表符保存?
我有一个ListView ViewStyle = vsReport和两个弹出菜单:
显示菜单最正确的方法是什么?我应该处理哪些事件?
问题是当我设置ListView.PopupMenu属性时,右键单击ListView的客户端矩形中的任何点后出现弹出菜单.
当我处理ListView.OnColumnRightClick事件时,如果仅在单击列标题后触发,则排除标题栏的可用空间(在列的右侧).
LisView.OnMouseUp只有在右键单击项目下方的空白后才会触发事件.
我有一个Windows桌面应用程序,必须与我的Chrome扩展程序协同工作.
我可以通过Google Chrome扩展程序以某种方式向我的桌面应用发送消息吗?
我可以使用哪些IPC对象?
winapi message desktop-application google-chrome google-chrome-extension
我有一个TextView可以显示一些可选URL 的多行.现在我遇到了一个问题:我的一些长URL显示在包含的位置://
sometext sometext http:// <-- AUTO LINE WRAP
google.com/
Run Code Online (Sandbox Code Playgroud)
如何禁用整个URL的包装或至少为http(s)://前缀?我仍然需要启用文本换行.
我的文字应该像这样包装
sometext sometext <-- AUTO LINE WRAP
http://google.com/
Run Code Online (Sandbox Code Playgroud) 如何在没有任何公共服务器的情况下在它们之间建立可靠的 TCP 连接?
编程语言:C++、WinAPI
(我需要一个 TCP 连接来发送一些大的关键数据,我不能委托给 UDP)
当TRadioButton的TabStop = True时,它表现得非常奇怪.
如果您尝试使用Tab键在表单上的许多单选按钮之间切换焦点,则每个应用程序会话只会执行一次.制表是单向的,永远不会返回到第一个单选按钮.此外,当焦点在单选按钮上移动时,它们会自动"检查".
可以在不创建自己的组件的情况下修复此行为吗?
我想要标准的单选按钮
我的任务是:
我怎样才能在Delphi XE中做到这一点?
var
Png: TPngImage;
X, Y: Integer;
Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create();
Bitmap.PixelFormat := pf32bit;
Png := TPngImage.Create();
try
Bitmap.SetSize(100, 100);
// How to clear background in transparent color correctly?
// I tried to use this, but the image in PNG file has solid white background:
for Y := 0 to Bitmap.Height - 1 do
for X := 0 to Bitmap.Width - 1 do …Run Code Online (Sandbox Code Playgroud) delphi ×7
selection ×2
android ×1
auto-indent ×1
bitmap ×1
connection ×1
delphi-2010 ×1
dunit ×1
focus ×1
http ×1
image ×1
indentation ×1
listview ×1
message ×1
multicast ×1
ownerdrawn ×1
p2p ×1
pixels ×1
png ×1
popupmenu ×1
radio-button ×1
tcp ×1
textview ×1
treeview ×1
unit-testing ×1
winapi ×1
word-wrap ×1
xml ×1