掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
StringGrid のOnDrawCell内で特定の条件で線を引く (ID:10253)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
皆さん、こんばんわ お世話になります。 少々頭が煮えています。 特定条件で OnDrawCellのイベント内で特定条件で線を引こうとしました --------------------------------------- var TxtPotion :Cardinal; intFontSize :Integer; BufRect :TRect; begin // 表示時の反転色(青色)を表示させない処理 with TStringGrid(Sender ).Canvas do begin if ( gdSelected in State ) then begin Brush.Color := TStringGrid( Sender ).Color; Font.Color := TStringGrid( Sender ).Font.Color; end; if (ARow > 0) and (ACol = 0) then begin FillRect( Rect ); end; end; // 文字の表示位置 if ARow = 0 then begin TxtPotion := DT_CENTER or DT_VCENTER Or DT_SINGLELINE; //センター intFontSize := 11; end else begin if ACol in [0..4] then begin if ACol in [0,3,4] then begin TxtPotion := DT_RIGHT or DT_VCENTER Or DT_SINGLELINE; //右寄せ intFontSize := 11; end else if ACol = 1 then begin intFontSize := 10; TxtPotion := DT_CENTER Or DT_EDITCONTROL; //2行に表示 if TStringGrid(Sender).Cells[51,ARow] = '1' then begin // 線を引きます TStringGrid(Sender).Canvas.Pen.Color := clBlack; TStringGrid(Sender).Canvas.MoveTo(Rect.Left,Rect.Bottom div 2); TStringGrid(Sender).Canvas.LineTo(Rect.Right,Rect.Bottom div 2); end; end else begin TxtPotion := DT_LEFT or DT_VCENTER Or DT_SINGLELINE; intFontSize := 11; end; end; end; TStringGrid(Sender ).Canvas.FillRect(Rect); Rect.Top := Rect.Top + 2; TStringGrid(Sender).Canvas.Font.Size := intFontSize; DrawText(TStringGrid(Sender ).Canvas.Handle,PChar(TStringGrid(Sender ).Cells[ACol,ARow]), Length(TStringGrid(Sender ).Cells[ACol,Arow]),Rect,TxtPotion); end; ------------------------------------------------------------ ところが、条件に合った行のCell内に線を引かず、全然違う行のCellに線を 引いてしまいます。 何が悪いのかわかりません。 何方か、ご教授頂ければ幸いです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.