お世話になります。
たまです。
DBGridのPickListについてなのですが
行ごとの切り分けは出来るのでしょうか?
下記のような場合に、プルダウンの項目を
1レコード目は、"20"
2レコード目は、"10"
3レコード目は、"20"
としたいのですが…
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
test1(カラム)のデータ
-------------
10
100
30
-------------
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
Test1: Integer;
begin
DM.Query1.First;
for i := 1 to DM.Query1.Recordcount do
begin
Test1 := DM.Query1.FieldValues['test1'];
DBGrid1.Columns[0].PickList.Clear;
if Test1 = 100 then
begin
DBGrid1.Columns[0].PickList.Add('10');
end
else
begin
DBGrid1.Columns[0].PickList.Add('20');
end;
DM.Query1.Next;
end;
end;
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
この場合、プルダウンはすべて"20"が表示されます。
また、test1のデータが
-------------
10
30
100
-------------
の場合は、すべて"10"が表示されます。
"Test1"の列ごとにPickListが設定されているのですが
行ごとに設定させる方法はどのようにすればよいのでしょうか?
ご存知の方がいらっしゃいましたら
宜しくお願い致します。
DBGrid1.Columns[0].PickList.Clear;
でクリアしているので、最後にAddした文字列が入ります。
お世話になります。
たまです。
----------------------------------------------------------------
にしのさん、ご回答ありがとうございます。
1レコード目でPickListに"20"をAdd
↓
DBGrid1.Columns[0].PickList.Clear;
↓
2レコード目でPickListに"10"をAdd
↓
DBGrid1.Columns[0].PickList.Clear;
↓
3レコード目でPickListに"30"をAdd
(この場合、最後にAddした"20"だけがプルダウンに表示される)
Clear をしない場合、"20-10-20"が表示されます。
----------------------------------------------------------------
プルダウンの項目を
1レコード目は、"20" だけ
2レコード目は、"10" だけ
3レコード目は、"20" だけ
というのは可能なのでしょうか?
宜しくお願い致します。
こんな感じでしょうか。
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
DBGrid1CellClick(DBGrid1.Columns[DBGrid1.SelectedIndex]);
end;
procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if not (Column.Index = 0) then Exit;
DBGrid1.Columns[0].PickList.Clear;
if DBGrid1.SelectedField.AsInteger = 100 then
begin
DBGrid1.Columns[0].PickList.Add('10');
end
else
begin
DBGrid1.Columns[0].PickList.Add('20');
end;
end;
お世話になります。
たまです。
おかげさまで希望していた動作ができるようになりました。
にしのさん
ありがとうございます。
ツイート | ![]() |