小编And*_*rew的帖子

如何将DLU转换为像素?

Microsoft在其UI准则中使用对话框长度单位(DLU).如何将它们转换为像素?

据我所知,DLU取决于系统字体大小.你能在Delphi for Win32中建议一些简单的转换方法吗?

delphi pixels units-of-measurement

9
推荐指数
2
解决办法
6112
查看次数

如何在AdvancedCustomDrawItem期间绘制TTreeView的样式选择矩形?

我正在TTreeView使用OnAdvancedCustomDrawItem事件从头开始自定义绘图,我想知道如何在我的所有者绘制项目的背景中正确渲染这些选择和热矩形?它们是Vista/7风格,所以我不能简单地用一些纯色填充背景.

在此输入图像描述

我试图在cdPostPaint舞台上绘制我的项目,但是如果我DefaultDraw := TruecdPrePaint舞台上离开以绘制选择背景,则会发生完整的默认绘图,包括项目文本.

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 treeview ownerdrawn selection

8
推荐指数
1
解决办法
4849
查看次数

用于Delphi中单元测试的HTTP服务器

我需要在我的Delphi应用程序中测试一些HTTP组件.我使用DUnit并希望在测试中添加一些自动化功能.

所以我的测试代码需要启动本地HTTP服务器,配置它(例如,在3秒内准备连接中断,或模拟低带宽,或要求登录/密码等),运行我的单元测试并关闭HTTP服务器.

是否有一些可用于Delphi/DUnit的HTTP服务器?

我知道Mozilla团队有这样的服务器,但是将它集成到DUnit中并不容易.

delphi unit-testing http dunit

7
推荐指数
1
解决办法
529
查看次数

IXMLDocument.SaveToFile()使用制表符来缩进而不是空格

我有一个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)

如何使用空格缩进而不是制表符保存?

xml delphi indentation auto-indent delphi-2010

7
推荐指数
1
解决办法
2521
查看次数

如何设置ListView标题栏的弹出菜单以及项目弹出菜单?

我有一个ListView ViewStyle = vsReport和两个弹出菜单:

  1. 列弹出菜单,我想在用户右键单击标题栏时打开它
  2. 当用户右键单击任何列表项/子项或项目下方的空白时,必须打开项目弹出菜单.

显示菜单最正确的方法是什么?我应该处理哪些事件?

问题是当我设置ListView.PopupMenu属性时,右键单击ListView的客户端矩形中的任何点后出现弹出菜单.

当我处理ListView.OnColumnRightClick事件时,如果仅在单击列标题后触发,则排除标题栏的可用空间(在列的右侧).

LisView.OnMouseUp只有在右键单击项目下方的空白后才会触发事件.

delphi listview popupmenu

7
推荐指数
1
解决办法
2724
查看次数

如何从Google Chrome扩展程序向桌面应用程序发送消息?

我有一个Windows桌面应用程序,必须与我的Chrome扩展程序协同工作.

我可以通过Google Chrome扩展程序以某种方式向我的桌面应用发送消息吗?

我可以使用哪些IPC对象?

winapi message desktop-application google-chrome google-chrome-extension

7
推荐指数
2
解决办法
3486
查看次数

如何防止在TextView中包装URL?

我有一个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)

android word-wrap textview

6
推荐指数
1
解决办法
525
查看次数

在没有服务器的 2 台计算机之间创建 TCP 连接

  • 2 台计算机在不同的子网中。
  • 两者都是Windows机器。
  • 它们之间有 2-5 个支持 IGMP 的路由器。
  • 他们可以通过多播协议相互连接(他们加入了同一个多播组并且知道彼此的存在)。

如何在没有任何公共服务器的情况下在它们之间建立可靠的 TCP 连接?

编程语言:C++、WinAPI

(我需要一个 TCP 连接来发送一些大的关键数据,我不能委托给 UDP)

connection p2p tcp multicast

5
推荐指数
1
解决办法
3866
查看次数

Delphi:TRadioButton的TabStop问题

当TRadioButton的TabStop = True时,它表现得非常奇怪.

如果您尝试使用Tab键在表单上的许多单选按钮之间切换焦点,则每个应用程序会话只会执行一次.制表是单向的,永远不会返回到第一个单选按钮.此外,当焦点在单选按钮上移动时,它们会自动"检查".

可以在不创建自己的组件的情况下修复此行为吗?

我想要标准的单选按钮

  1. 循环切换焦点
  2. 防止单选按钮在焦点进入时检查(我希望我的用户使用Space键检查它们)

delphi focus selection radio-button

5
推荐指数
1
解决办法
2039
查看次数

如何从位图创建透明 png 图像?

我的任务是:

  1. 创建一个 TBitmap 对象。
  2. 用透明颜色填充它(alpha = 0)。
  3. 将此位图分配给 TPngImage。
  4. 保存具有 Alpha 透明度的 PNG 文件。

我怎样才能在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 png image bitmap alpha-transparency

5
推荐指数
1
解决办法
1万
查看次数