您如何获得在运行时输入到 JvInspector 中的值?
中的 Demo\..\jvcl\examples\JvInspector
展示了如何添加字符串,通过编写类似这样的内容(从演示中提取):
var
FirstName: string;
implementation
procedure TfrmInspector.AddVarious;
var
InspCat: TJvInspectorCustomCategoryItem;
begin
TJvInspectorVarData.New(InspCat, 'First', TypeInfo(string), @FirstName).DisplayName := 'Copy of first name';
end;
我想添加一个 TColor 属性,所以我这样做了:
var
FirstName: string;
SomeColor: TColor;
implementation
procedure TfrmInspector.AddVarious;
var
InspCat: TJvInspectorCustomCategoryItem;
begin
TJvInspectorVarData.New(InspCat, 'First', TypeInfo(string), @FirstName).DisplayName := 'Copy of first name';
TJvInspectorVarData.New(InspCat, 'SomeColor', TypeInfo(TColor), @SomeColor;
end;
这显示正确,但从检查器的下拉列表中选择新颜色时,我似乎无法获得为 SomeColor 更改的值。
我试过这个:
procedure TfrmInspector.JvInspector1ItemValueChanged(Sender: TObject;
Item: TJvCustomInspectorItem);
begin
if (Item.Data <> nil) and (CompareText(Item.Data.Name, 'FirstName') = 0) then
ShowMessage(Item.Data.AsString) //< works
else if (Item.Data <> nil) and (CompareText(Item.Data.Name, 'SomeColor') = 0) then
ShowMessage(ColorToString(TColor(Item.Data))); //< does not return correct value
end;
我通常不使用 Jedi 组件,但我想我会给他们另一个机会,但似乎文档很少,我在 Wiki 页面上查看了 OnItemValueChanged 事件:http://wiki.delphi-jedi.org/wiki/JVCL_Help: TJvInspector.OnItemValueChanged但几乎没有任何信息或帮助。
我确定不是试图让ColorToString(TColor(Item.Data))
我需要使用Item.Data.AsVariant
但我可能是错的,当我尝试时我得到了 AV 错误所以我可能完全错了,我做过或尝试过的任何事情似乎都不起作用:(