我想每当 ListView 中的选定项目发生变化时运行一个过程。显而易见的选择是 OnSelectItem,但当用户从一个选定项目移动到另一个选定项目(使用鼠标或箭头键)时,它会被调用两次。同样,在项目之间移动时,OnChange 会被调用三次。
在这些条件下是否存在仅生成一次的事件?OnClick 生成一次,但不包括使用箭头键等在项目之间移动。
我想知道是否有一种好方法可以防止任何应用程序最小化我的 Delphi 表单?我目前有一个无边框 VCL 表单,WindowState 设置为 wsMaximized。我想永久保持最大化状态。关于如何做到这一点的任何建议将是最美妙的。谢谢
我不知道你是怎么做的,但是当我处理一个新组件时,为了测试它,我在运行时手动创建它并为其分配一个父级,这样我就不必每次都安装它。 .. 现在我完成了,当我以这种方式运行它时,它运行得很好。但是在我将它安装在 VCL 中并且我想把它放在一个表单上之后,我从构造函数的某个地方收到一个“访问冲突”错误。如果我无权逐行运行它以查看它发生的位置和条件,我该如何调试它?
我有一个 TStringGrid,它有一个 TPopupMenu 连接。通过单击弹出菜单的一个事件,我想获取调用组件。那可能吗?
背景:这是一个更大的项目,每个表单都有一个我可以继承的“BasicForm”。所以我想为包含复制、选择等内容的网格提供一个“默认弹出菜单”。在继承的形式中,我只将网格(如果存在)与该弹出窗口匹配,我就完成了。
我有一个 Delphi GUI 应用程序,它运行得很好,直到显示分辨率更改自动导致程序的 GUI 窗口被重新绘制。我们可以通过消息捕获这个显示事件WM_DISPLAYCHANGE。
在重绘事件中,似乎某些TListView在那一刻隐藏的组件不会被重绘,直到它们再次可见。
似乎仅在表单的可见组件上调用重绘,并且操作系统在不可见的项目再次变得可见时重新绘制它们。
但是,当代码引用消息TListView后WM_DISPLAYCHANGE尚未显示的 a 中的项目时,这会导致问题。内部应该TListView有项目,但TListView.Items.Count返回 0,就好像TListView是空的一样。
在屏幕上显示可见后TListView,一切都会恢复正常,并且我可以再次引用TListView.
我尝试显式调用TListView.Repaint()更新它而不必显示它,但它不起作用。
这是有记录的行为吗?
有没有办法立即重新绘制不可见的表单组件,而不让它在屏幕上可见?
我希望用户能够按下按钮将 TCheckListBox 重置为其初始状态(没有选中任何框)。
请参阅下面的图片,了解单击按钮后我想要发生的情况的示例:
变成:
我该怎么做呢?我知道可能会涉及一个循环,但我不确定从哪里开始。我在这里先向您的帮助表示感谢。
我想要一个指向 的指针TEdit.Text,但无论我如何表达,Delphi 都坚持这一点E2036 Variable required。
I'm trying to have a TComboBox with images instead of text. Is this possible? If yes, then how? I've looked over all of the properties a dozen times and I can't find anything. Also, I'm very new to Delphi. So maybe this is obvious, but I couldn't find a place to add images into a ComboBox instead of text. How can I add images to my ComboBox?
我尝试在网上寻求帮助,但没有什么真正有帮助,也没有什么对我来说足够容易理解的。
我有一个用 Delphi 10.4 编写的可视化控件。为了方便地关注问题,我仅创建了具有 Anchors 和 Align 属性的 TwinControl。我包括了 AutoSize 属性。问题是当该组件构建安装并放置在 TForm 上时,控件将不会响应表单大小调整。
该控件已将控件设置为锚定正确。我向表单添加了一个 TButton,并将其锚点设置为 akRight。按钮随着表单的拉伸而移动。我的控制没有。我可以提供这个小测试的完整源代码。也许有人以前见过这个。我以前曾在我的组件中使用过 TFrame,但发现存在一些显示问题,仅部分控件显示或根本不显示。我的客户没有留下深刻的印象。我会欣赏一些智慧。
这是来自 TWinControl 的代码
unit SampleControl;
interface
uses
System.Classes, Vcl.Controls, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Buttons, Vcl.Dialogs,
Vcl.Graphics,AdvGrid,vcl.Forms,System.SysUtils,StrUtils,Messages, EBS3DataUtils,
EBSGridSetup,System.UITypes,WinApi.Windows,vcl.Grids,AdvObj,System.Variants;
Type
TSampleControl = class(TWinControl)
private
FAnchors: TAnchors;
FAlign : TAlign;
FAutoSize : Boolean;
procedure InitializeComponents;
procedure SetAnchors(const Value: TAnchors);
procedure SetAlign(const Value: TAlign);
procedure SetAutoSize(const Value: Boolean);
Public
procedure Resize; Override;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
Published
property Anchors: TAnchors read FAnchors write SetAnchors default …Run Code Online (Sandbox Code Playgroud) 我想基于设计模板对旧的VCL应用程序进行现代化.该设计模板包含不同的按钮样式.比方说,有三种类型的按钮:LightButton,DarkButton和GreenButton.
由于DarkButton我TButton使用位图样式设计器修改了暗设计的外观,因此超过50%的按钮都会出现.
现在我想将其他按钮样式添加到.vsf文件中并在我的应用程序中使用它.最好的方法是什么?
我是否需要创建新的按钮类和新的后代,TStyleHook其中绘制全新的按钮?如果是,是否有办法尽可能多地重用代码Vcl.StdCtrls.TButtonStyleHook?
还有其他方法,最佳实践或示例吗?
delphi ×10
vcl ×10
alignment ×1
anchor ×1
components ×1
debugging ×1
delphi-2010 ×1
firemonkey ×1
forms ×1
grid ×1
listview ×1
minimize ×1
popupmenu ×1
repaint ×1
vcl-styles ×1