掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
StringGridにコンボボックスを入れるには (ID:4558)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
scorposさん がんばってください。 もう解決されているかもしれませんが、以下が実際に動くサンプルソースです。参考にしてください。 (概略でちょっと複雑に説明しすぎたみたいです。すいません。) ActiveFormですが、実際にやったことがないのでわかりませんが、たぶん大丈夫だと思います。 { EVENT : Grid OnClick } procedure TForm1.GridClick(Sender: TObject); var ARect : TRect; begin if Grid.Col = 2 then begin ARect := Grid.CellRect(Grid.Col,Grid.Row); Combo.Top := ARect.Top + Grid.Top; Combo.Left := ARect.Left + Grid.Left; Combo.Width := ARect.Right - ARect.Left; Combo.Text := Grid.Cells[Grid.Col,Grid.Row]; Combo.Visible := True; ActiveControl := Combo; end else begin Combo.Visible := False; end; end; { EVENT : Grid OnKeyDown } procedure TForm1.GridKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_RETURN then begin if Grid.Col < (Grid.ColCount - 1) then Grid.Col := Grid.Col + 1 else begin if Grid.Row < (Grid.RowCount - 1) then begin Grid.Row := Grid.Row + 1; Grid.Col := 1; end; end; end; end; { EVENT : Combo OnExit } procedure TForm1.ComboExit(Sender: TObject); begin Grid.Cells[Grid.Col,Grid.Row] := Combo.Text; Combo.Visible := False; end; { EVENT : Combo OnKeyDown } procedure TForm1.ComboKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = VK_RETURN then begin ActiveControl := Grid; Grid.Col := Grid.Col + 1; end else if Key = VK_LEFT then begin ActiveControl := Grid; Grid.Col := Grid.Col - 1; end; end;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.