如何在TListView的标题栏显示一个复选框?
我需要在tlistview的列标题中有一个复选框: 我尝试了以下代码: with CheckBox1 do begin Parent := ListView1; Top := 0; Left := 4; end; 但是复选框并不总是按预期工作.如何在TListView标头列中正确创建复选框? 解决方案 以下代码将将复选框添加到列表视图的标题,并显示如何处理单击事件. 请注意,由于Windows Vista. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, CommCtrl; type TForm1 = class(TForm) ListView1: TListView; procedure FormCreate(Send
36 2023-03-11
编程技术问答社区
在不调用OnClick事件的情况下改变CheckBox的状态
我想知道当我更改复选框状态 时 CheckBox->Checked=false; 它调用CheckBoxonClick事件,如何避免? 解决方案 您可以用 之类的东西包围OnClick事件代码 if myFlag then begin ...event code... end; 如果您不希望执行它,请将myflag设置为false,然后在复选框状态的更改之后将其设置为true. 其他解决方案 在新的Delphi版本中,您可以使用类助手来添加此功能: CheckBox.SetCheckedWithoutClick(False); 通过使用以下类助手进行VCL TCheckBox: TCheckBoxHelper = class helper for TCheckBox procedure SetCheckedWithoutClick(AChecked: Boolean); end; procedure TCheckB
46 2023-03-02
编程技术问答社区
DBGrid中的复选框
我的问题是如何在Delphi 7中的DBGrid中设置一列,该列将使用复选框项目. 预先感谢. 解决方案 好的 我使用了这是我的问题.好的,但是问题在于它应该如何工作.因此,我更改代码中的逻辑.并通过将所选行从列表中的dbgrid保存. 其他解决方案 我测试的最简单,最完整的方法如下: 在单元的私人部分中,声明保留网格选项的全局.它将在输入复选框时临时禁用文本编辑后用于还原 - 因为这也许是Jordan Borisovin关于Delphi.about.com Article Article Article Article 提到的小错误之一. private GridOriginalOptions : TDBGridOptions; 在OnCellClick事件中,如果字段为布尔值,则切换并更改为数据库 procedure TForm1.DBGrid1CellClick(Column: TColumn); begin i
20 2022-10-26
编程技术问答社区
在Delphi中把一个TCheckBox放在TStringGrid里面
我想在某些列的每个单元格中将TCheckBox放入TStringGrid内.我正在使用Delphi Xe. 解决方案 您应该绘制自己的复选框,最好使用视觉主题(如果启用).这是如何做到这一点的简单草图: const Checked: array[1..4] of boolean = (false, true, false, true); procedure TForm4.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); const PADDING = 4; var h: HTHEME; s: TSize; r: TRect; begin if (ACol = 2) and (ARow >= 1) then begin FillRect(StringGrid1.Canvas.Handle, Rec
10 2022-08-20
编程技术问答社区
为什么对不可见的组件不触发OnUpdate?
当我通过将连接的taction设置为"不可见"来使组件不可见时,onupdate事件将不再触发.要重新创建,请执行以下操作. 创建一个新的VCL表单应用程序 在表单上删除按钮,复选框和动作清单. 创建一个新操作,然后将按钮连接到它. 为操作编写以下代码Onexecute和onupdate事件: procedure TForm1.Action1Execute(Sender: TObject); begin ShowMessage('Test'); end; procedure TForm1.Action1Update(Sender: TObject); begin TAction(Sender).Enabled := not CheckBox1.Checked; TAction(Sender).Visible := TAction(Sender).Enabled; end; 运行应用程序.该按钮可见,正常工作.检查复选框,并且按钮消失.取消选中复选框
22 2022-08-19
编程技术问答社区
在虚拟模式列表视图中使用复选框
我正在学习制作虚拟模式ListView.到目前为止,我的问题是我无法在listView中使用复选框.我已经阅读了 http://delphi -kb.blogspot.com/2011/02/draw-checkboxes-in-virtual-mode.html ,但我没有看到任何复选框.任何想法? 解决方案 显然,当启用OwnerData时,您必须自己绘制复选框(如问题所示). 所以你必须将OwnerDraw设置为True(除了OwnerData之外,这两个是 Independed 标志!)并在OnCustomDrawItem事件中绘制复选框. 更新: 似乎这并不完全是真的,OnCustomDrawItem事件也在案例OwnerDraw = False中发射. http://docwiki.embarcadero.com/vcl/xe2/en/comctrls.tlistview.oncustomdrawItem 更新2: 问题中链接的代码
1338 2022-07-19
编程技术问答社区
如何验证Delphi TTaskDialog中的复选框是否被选中?
好的,这应该很容易,但我没有找到解决方案,至少在 不是很好的文档.. 在 TTaskDialog 中,您可以选择添加一个复选框.您可以通过 Flags 中的 tfVerificationFlagChecked 标志来控制其初始状态.但是对话框被Executed之后如何获取状态呢? 当然可以使用 OnVerificationClicked 事件并在每次调用时切换一个局部变量,最初等于复选框的初始状态.但人们会期待一种更自然的解决方案. 解决方案 我的上帝,Embarcadero 犯了一个错误. 我的一些测试表明,如果复选框最初未被选中,但被用户选中,则 tfVerificationFlagChecked 标志将被设置.但是如果最初设置了标志,并且用户取消选中该框,则 tfVerificationFlagChecked 将不会从 Flags 集中删除.这并不奇怪.VCL代码可以 Result := TaskDialogIndirect(LTaskDialog, {$IF
566 2022-07-19
编程技术问答社区