こんにちは。
いつもお世話になっております。
StringGridを使用した簡単なものを作成しています。
そのStringGrid上にマウスでクリック行の色を変更したいのでずが
何か方法はあるでしょうか。
Delphi XE5で作成しています。
>そのStringGrid上にマウスでクリック行の色を変更したいのでずが
>何か方法はあるでしょうか。
TStringGird のどこかのセルをクリックしたら,そのセルが含まれる行全体の,セルの背景色を変更したい,
というのでしたら,あると思いますよ.
(1) セルのクリックを検出する
(2) そのセルの行番号(?) を知る
(3) そのセルがある行に対して,背景色の描画コードを書く
という手順でできると思います.
ほとんどそのままですが,問題解決には,このように (頭の中でいいので) 箇条書きにします.
そうすれば,どの部分の処理が不明なのか,解決しなければならないかが明確になます.
そして,分かる部分だけは,とにかくコードを書いてみることです.
抽象的な文章だと,どう返していいのか迷ってしまいます.
>そして,分かる部分だけは,とにかくコードを書いてみることです.
この時,面倒でも,新規にプロジェクトを作成してコーディングします.
これは,余計なコードや設定を除外するためです.
そうしないと,問題が発生した場合に,原因を探すのに苦労することがあります.
単純に、OptionsプロパティのgoRowSelectをTrueにするのはだめでしょうか?
>単純に、OptionsプロパティのgoRowSelectをTrueにするのはだめでしょうか?
本当は,もしかしたら,そういうとこなのかも知れませんが,
残念ながら,質問の文章からは判断できないですね.
「色を変更したい」と書いていますから.
例えば「該当する行を選択状態にしたい」なら別ですが.
Mr.XRAYさん、アドバイスありがとうございます。
マウスで選択した行を選択行にした上で、行の背景色を黄色で
文字色を黒色にしたっかのですが・・
ご指摘の通り頑張ります。
deldelさん、お返事ありがとうございます。
ご教示いただいたgoRowSelectをTrueにしましたが
変化はありませんでした。
この手の質問は、調べればすぐ動くサンプルが出てきます。
調べてためし、動かなかったらここで聞くという形にすると、より問題解決
も早くなると思います。
xxx
>deldelさん、お返事ありがとうございます。
>ご教示いただいたgoRowSelectをTrueにしましたが
>変化はありませんでした。
gdsThemed だと選択領域が見た目の変化がわかりにくいからかな?
type
TStringGrid = class(vcl.Grids.TStringGrid)
private
public
procedure DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); override;
end;
procedure TStringGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
begin
if gdSelected in AState then
begin
Canvas.Brush.Color := clYellow;
Canvas.Font.Color := clBlack;
end;
inherited;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Options := StringGrid1.Options + [goRowSelect] - [goRangeSelect];
end;
KHE00221さん、ご回答ありがとうございます。
出張中ですので明日、帰社してからトライいたします。
KHE00221さん、試してみました。
結果から申しますと
TStringGrid = class(vcl.Grids.TStringGrid)
のところでコンパイルエラーが発生して動作しませんでした。
わからないなりに色々試してみましたが結局、コンパイルできませんでした。
残念です。
しんちゃんさん、エラーの報告はその内容をコピー&ペーストして提示しないといけません。
で、またいつの間にかDelphi7に変わってるとかは無いでしょうね?
あと、タイトルが雑すぎます。
新規質問の際に、以下の注意書きが表示されていたはずです。
> ・「〜するには?」のような質問形式にしてください。
> ・「〜について」の形式は好ましくありません。
きちんと質問される方は、よく考え、工夫して、簡潔明瞭なタイトルにしておられますよ。
当事者であるあなたが「分からない」としか表現できないことは、誰も分かりません。まず状況を客観的かつ詳細に説明してはどうでしょうか。
そもそも、答えはここまでの書き込みで既に出ていますよ。回答を求める割にはあまり人の回答をご覧になっていないようですが。
ツイート | ![]() |