実行時にJvInspectorに入力された値をどのように取得しますか?
のデモは、\..\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エラーが発生したため、おそらく完全に間違っています。これまでに行ったことや試したことは何も機能していないようです:(