Flying kongです。
DBソフトをはじめて作成中ですが、プルダウンリスト(▼マーク)
が2回目のクリックで表示されます。
この部分は数量を入力する項目ですが、1回で▼マークが表示
することは可能でしょうか?
また、1回のセル項目クリックで▼マークを押さなくてもリストが
表示され選択可能になるすごい方法はありますか?
procedure TForm2.DBGrid1CellClick(Column: TColumn);
var
i : integer ;
begin
if not (Column.Index = 1) then Exit;
DBGrid1.Columns[1].PickList.Clear;
for i :=0 to 10 do
DBGrid1.Columns[1].PickList.add(IntToStr(i));
end;
DBGridのOptionプロパティのdgAlwaysShowEditorをTrueにしてみてください。
プルダウンボタンは、編集モードの時しか表示されません。dgAlwaysShowEditorがFalseの場合、1回目のクリックでそのセルに移動、2回目で編集モードになります。dgAlwaysShowEditorをTrueにすると常に編集モードになるので1回のクリックでプルダウンボタンが出てくると思います。
masayanさん、Flying kongです。レスありがとうございます。
dgAlwaysShowEditorをTrueに早速してみました。
すぐ入力可能状態になりますが、プルダウンボタンは逆に
何べんクリックしてもでなくなりました。
戻すと2回クリックするとプルダウンボタンが表示されます。
なかなか難しそうなので、いったん解決にします。
Flying kongさん あきらめるのは早いです。
DBGridのOnCellClickでプルダウンの内容を設定しているようですが、OnColEnterに変えてみてください。多分プルダウンボタンが表示されると思います。
procedure TForm2.DBGrid1ColEnter(Sender: TObject);
var
i : integer ;
begin
// if not (Column.Index = 1) then Exit;
// ▲ここでは、カラム位置を判定できないので削除
DBGrid1.Columns[1].PickList.Clear;
for i :=0 to 10 do
DBGrid1.Columns[1].PickList.add(IntToStr(i));
end;
もし、プルダウンリストの内容が常に固定であれば、設計時にPickListを設定するかFormのOnCreateで設定した方がいいと思います。また、実行時にレコード(行)毎に(項目の内容に応じて...)変えたいのであれば、データセットのAfterScrollで設定するといいと思います。(AfterScrollは試していません...)
ツイート | ![]() |