如何将 Name=Value 对添加到 RzCheckList 组件?
How to add a Name=Value pair to the RzCheckList component?
在 Delphi Win32 VCL 应用程序中,我使用 TRzCheckList
组件,它与标准 TCheckListBox
类似,但有几个附加功能。
TRzCheckList
是包含的“Konopka 签名 VCL 控件”的一部分,可从 Delphi IDE:
中的 GetIt 包管理器免费获得
我尝试使用以下代码将“Name=Value”对添加到 RzCheckList:
ThisItem := RzCheckList1.AddItemToGroup(0, 'MyName');
RzCheckList1.Items.ValueFromIndex[ThisItem] := 'MyValue';
但是,我没有在 RzCheckList 中显示“MyName”(“MyValue”作为该项目的隐藏部分),而是在 运行-time:
同样,使用此代码时:
RzCheckList1.Items.AddPair('MyName', 'MyValue');
...我得到这个结果:
那么,如何在RzCheckList组件中添加一个Name=Value对,并且只显示Name部分呢?
使用此代码将配对添加到特定组:
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;
这会让您在 运行 时得到想要的结果:
在 Delphi Win32 VCL 应用程序中,我使用 TRzCheckList
组件,它与标准 TCheckListBox
类似,但有几个附加功能。
TRzCheckList
是包含的“Konopka 签名 VCL 控件”的一部分,可从 Delphi IDE:
我尝试使用以下代码将“Name=Value”对添加到 RzCheckList:
ThisItem := RzCheckList1.AddItemToGroup(0, 'MyName');
RzCheckList1.Items.ValueFromIndex[ThisItem] := 'MyValue';
但是,我没有在 RzCheckList 中显示“MyName”(“MyValue”作为该项目的隐藏部分),而是在 运行-time:
同样,使用此代码时:
RzCheckList1.Items.AddPair('MyName', 'MyValue');
...我得到这个结果:
那么,如何在RzCheckList组件中添加一个Name=Value对,并且只显示Name部分呢?
使用此代码将配对添加到特定组:
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;
这会让您在 运行 时得到想要的结果: