Delphi 如何向RzCheckList组件添加名称=值对?
在Delphi Win32 VCL应用程序中,我使用了Delphi 如何向RzCheckList组件添加名称=值对?,delphi,delphi-10.4-sydney,checklistbox,Delphi,Delphi 10.4 Sydney,Checklistbox,在Delphi Win32 VCL应用程序中,我使用了TRzCheckList组件,该组件类似于标准的TCheckListBox,但有几个附加功能 TRzCheckList是包含的“Konopka签名VCL控件”的一部分,可从Delphi IDE中的GetIt软件包管理器免费获得: 我尝试使用以下代码将“Name=Value”对添加到RzCheckList: ThisItem := RzCheckList1.AddItemToGroup(0, 'MyName'); RzCheckList1.I
TRzCheckList
组件,该组件类似于标准的TCheckListBox
,但有几个附加功能
TRzCheckList
是包含的“Konopka签名VCL控件”的一部分,可从Delphi IDE中的GetIt软件包管理器免费获得:
我尝试使用以下代码将“Name=Value”对添加到RzCheckList:
ThisItem := RzCheckList1.AddItemToGroup(0, 'MyName');
RzCheckList1.Items.ValueFromIndex[ThisItem] := 'MyValue';
RzCheckList1.Items.AddPair('MyName', 'MyValue');
但是,我没有在RzCheckList中显示“MyName”(将“MyValue”作为项目的隐藏部分),而是在运行时获得以下信息:
类似地,使用此代码时:
ThisItem := RzCheckList1.AddItemToGroup(0, 'MyName');
RzCheckList1.Items.ValueFromIndex[ThisItem] := 'MyValue';
RzCheckList1.Items.AddPair('MyName', 'MyValue');
…我得到了这个结果:
那么,如何将名称=值对添加到RzCheckList组件中,并仅显示名称部分?使用以下代码将该对添加到特定组中:
RzCheckList1.AddItemToGroup(0, 'MyName=MyValue');
然后在OnDrawItem
事件处理程序中实现此代码:
procedure TformMain.RzCheckList1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
Flags: Longint;
Data: String;
FCanvas: TCanvas;
CheckListBox: TCheckListBox;
begin
CheckListBox := TCheckListBox(Control);
FCanvas := CheckListBox.Canvas;
FCanvas.FillRect(Rect);
if Index < CheckListBox.Count then
begin
Flags := DrawTextBiDiModeFlags(DT_SINGLELINE or DT_VCENTER or DT_NOPREFIX);
if not UseRightToLeftAlignment then
Inc(Rect.Left, 2)
else
Dec(Rect.Right, 2);
Data := CheckListBox.Items.Names[Index];
DrawText(FCanvas.Handle, Data, Length(Data), Rect, Flags);
end;
end;
过程TformMain.RzCheckList1DrawItem(控件:TWinControl;索引:Integer;Rect:TRect;状态:TOwnerDrawState);
变量
旗帜:长;
数据:字符串;
FCanvas:TCanvas;
CheckListBox:CheckListBox;
开始
CheckListBox:=CheckListBox(控件);
FCanvas:=CheckListBox.Canvas;
FCanvas.FillRect(Rect);
如果索引
这将在运行时获得所需的结果: