掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
StringGridにコンボボックスを入れるには (ID:4555)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
自分も同様のプログラムを作成しましたが、全てのセルにコンボボックスを表示するのは難しかったのでそのセルに移動したときだけコンボボックスを表示するようにしました。 質問の内容と違うかもしれませんが、参考までに概略を説明します。 ①フォームにグリッド(Grid)とコンボボックス(Combo)をそれぞれ1つ配置します。Combo.VisibleをFalseにします。 ②GridのOnClickイベントにComboの表示制御を記述します。 begin // 3列目に移動したときにコンボを表示する if Grid.Col = 2 then begin // セルの内容をComboに設定 Combo.Text := Grid.Cells[Grid.Col,Grid.Row]; // Comboの位置と大きさをセルにあわせる // Grid.CellRectを使ってComboのLeft,Top等を設定します。 Combo.Visible := True; // コンボ表示 ActiveControl := Combo; // フォーカスをコンボへ end else Combo.Visible := False; OldCol := Grid.Col; OldRow := Grid.Row; // OldCol,OldRowはフォームのPrivateで宣言(Integer変数) end; ③ComboのOnExitに入力完了処理を記述する begin Grid.Cells[OldCol,OldRow] := Combo.Text; Grid.Col := OldCol + 1; // 次のセルへ Combo.Visible := False; // コンボ非表示 end; ④GirdとComboのOnKeyDownにEnterによりフォーカス移動処理を記述する。 Grid: EnterキーでGrid.Col + 1,必要であれば右端で折り返し/行追加。 Combo更新のためGridOnClickを呼び出す。 Combo: EnterキーでフォーカスをGridへ 以上です。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.