如何令String grid中的某些cell變成invisible? |
答題得分者是:jow
|
turbocks
一般會員 發表:9 回覆:13 積分:4 註冊:2004-12-16 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
|
turbocks
一般會員 發表:9 回覆:13 積分:4 註冊:2004-12-16 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
試試看..
< class="code">
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (ACol in [3,5]) and (ARow = 4) then
with TStringGrid(Sender) do
begin
Canvas.Brush.Color := clBlack;
Canvas.Rectangle(Rect);
end;
end; procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
begin
CanSelect := not( (ACol in [3,5]) and (ARow=4) );
end;
|
turbocks
一般會員 發表:9 回覆:13 積分:4 註冊:2004-12-16 發送簡訊給我 |
引言: 試試看.. < class="code"> procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if (ACol in [3,5]) and (ARow = 4) then with TStringGrid(Sender) do begin Canvas.Brush.Color := clBlack; Canvas.Rectangle(Rect); end; end; procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin CanSelect := not( (ACol in [3,5]) and (ARow=4) ); end; 引言: 試試看.. < class="code"> procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if (ACol in [3,5]) and (ARow = 4) then with TStringGrid(Sender) do begin Canvas.Brush.Color := clBlack; Canvas.Rectangle(Rect); end; end; procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin CanSelect := not( (ACol in [3,5]) and (ARow=4) ); end;謝謝你,問題解決了。 但若果唔用clblack這種顏色,想這兩個Cell貼成背景的顏色,請問怎樣做?謝謝。 |
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (ACol in [3,5]) and (ARow = 4) then
with TStringGrid(Sender) do
begin
Canvas.Brush.Color := Self.Color;
Canvas.Rectangle(Rect);
end;
end;
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if (ACol in [3,5]) and (ARow = 4) then with TStringGrid(Sender) do begin Canvas.Brush.Color := Self.Color;//Self=TForm1 Canvas.Rectangle(Rect); end; end; |
turbocks
一般會員 發表:9 回覆:13 積分:4 註冊:2004-12-16 發送簡訊給我 |
引言:但我張Form上面cover左張image1, 怎樣才使cell與image1的顏色一樣呢?謝謝procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if (ACol in [3,5]) and (ARow = 4) then with TStringGrid(Sender) do begin Canvas.Brush.Color := Self.Color;//Self=TForm1 Canvas.Rectangle(Rect); end; end; |
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
我目前可以想得到的做法,你要實際實作看看...
< class="code">
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
R: TRect;
begin
if (ACol in [3,5]) and (ARow = 4) then
with TStringGrid(Sender) do
begin
R := ClientRectToScreenRect(TStringGrid(Sender), Rect);
R := ScreenRectToClientRect(Image1, R);
Canvas.CopyRect(Rect,Image1.Picture.Bitmap.Canvas, R);
end;
end; function TForm1.ClientRectToScreenRect(Control: TControl; Rect: TRect): TRect;
begin
Result.TopLeft := Control.ClientToScreen(Rect.TopLeft);
Result.BottomRight := Control.ClientToScreen(Rect.BottomRight);
end; function TForm1.ScreenRectToClientRect(Control: TControl; Rect: TRect): TRect;
begin
Result.TopLeft := Control.ScreenToClient(Rect.TopLeft);
Result.BottomRight := Control.ScreenToClient(Rect.BottomRight);
end;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |