DBGridのPickListについて

解決


たま  2002-12-12 20:40:05  No: 2314

お世話になります。
たまです。

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が設定されているのですが
行ごとに設定させる方法はどのようにすればよいのでしょうか?

ご存知の方がいらっしゃいましたら
宜しくお願い致します。


にしの  2002-12-13 02:30:13  No: 2315

DBGrid1.Columns[0].PickList.Clear;
でクリアしているので、最後にAddした文字列が入ります。


たま  2002-12-13 18:26:52  No: 2316

お世話になります。
たまです。

----------------------------------------------------------------

にしのさん、ご回答ありがとうございます。

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" だけ
というのは可能なのでしょうか?

宜しくお願い致します。


にしの  2002-12-14 02:02:24  No: 2317

こんな感じでしょうか。

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;


たま  2002-12-14 03:04:54  No: 2318

お世話になります。
たまです。

おかげさまで希望していた動作ができるようになりました。

にしのさん
ありがとうございます。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加