DBComboBoxから派生させ、内部から他のデータセットの項目を参照できるコン
ポーネントを作成したいのですが、プロパティがオブジェクトインスペクタで
上手く設定出来ません。
追加したコードは以下です。
private
FDataLink: TFieldDataLink;
published
property ListField: string read GetListField write SetListField;
property ListSource: TDataSource read GetListSource write SetListSource;
constructor XXX.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FDataLink := TFieldDataLink.Create;
FDataLink.Control := Self;
end;
destructor XXX.Destroy;
begin
FDataLink.Free;
FDataLink := nil;
inherited Destroy;
end;
function XXX.GetListField: string;
begin
Result := FDataLink.FieldName;
end;
procedure XXX.SetListField(const Value: string);
begin
FDataLink.FieldName := Value;
end;
function XXX.GetListSource: TDataSource;
begin
Result := FDataLink.DataSource;
end;
procedure XXX.SetListSource(const Value: TDataSource);
begin
FDataLink.DataSource := Value;
end;
ListSourceのプロパティはインスペクタ上で参照可能なデータソースが
コンボボックス内にリストアップされるのですが、ListFieldプロパティは
ListSource.DataSet内の項目がリストアップされません。
一般のDB対応コントロールのDataFieldプロパティの用にフィールドを
インスペクタ上で選択可能にするにはどのようにしたら良いのでしょうか?
DbLookupComboBoxが同じ機能でありますが、これだとまずいのですか?
>データセットの項目を参照できる
書き方がまずくて上手く伝わりませんでした。
DBComboBoxのItemsプロパティを他のデータセットから自動で取り込む様な
処理にしたいのです。
コンボボックスのアイテムから選択する場合と、コンボボックス上でテキスト
入力する場合と両方あるのでLookupComboBoxでは代用が出来ません。
ツイート | ![]() |