Stringgridについて

解決


こうへい  2007-03-07 02:23:07  No: 25180

はじめまして。Stringgridで悪戦苦闘しています。どなたか教えて下さい。
上手く説明が出来ないと思いますので表として説明させて頂きます。

==============================================-
       項目コード  項目名  分類
→行クリック    1          a       1a←1aの分類の背景塗りが実行
            2          b       1a←同上
            3          c       2b 
            4          d       2c
            5          e       2e

Stringgridのレコードをクリックした時フィールド内に分類された全てのコードをBrush.Colorを利用して色を変更したいのですが…手法を教えて下さい。

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
          IF NOT (gdfixed in state) THEN
begin
            IF (Stringgrid1.Cells[5,ARow]=aa) THEN
begin
                Stringgrid1.Canvas.Brush.Color := clBackground;
                Stringgrid1.Canvas.Font.Color:=clBackground;
                Stringgrid1.Canvas.TextRect(Rect,Rect.Left+1,Rect.Top,stringgrid1.Cells[aCol,aRow]);
下略

 procedure TForm8.StringGrid1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
    rc,cc:integer;

begin
               Stringgrid1.MouseToCell(x,y,rc,cc);
            IF (rc=-1)OR(cc=-1)OR(cc=0) THEN   Exit;
               aa:= Stringgrid1.Cells[5,CC];
下略 

よろしくお願いします。


deldel  2007-03-07 18:03:31  No: 25181

MouseDown の最後に、
Stringgrid1.Refresh;

DrawCell はちょっと変えてますが、以下のような感じで
  with TStringGrid(Sender).Canvas do begin
    if not (gdFixed in State) then begin
      if (ACol = 5) and (TStringGrid(Sender).Cells[ACol, ARow] = aa) then begin
        Brush.Color := clYellow;
        Font.Color:=clRed;
      end else begin
        Brush.Color := clWhite;
        Font.Color:=clBlack;
      end;
    end;

    TextRect(Rect, Rect.Left + 4,Rect.Top + 4, TStringGrid(Sender).Cells[ACol, ARow]);
  end;


こうへい  2007-03-07 21:39:13  No: 25182

deldelさん有難うございます。
自分で思い描いたようにできました。
今後ともよろしくお願いします。


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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