全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1354
推到 Plurk!
推到 Facebook!

如何令String grid中的某些cell變成invisible?

答題得分者是:jow
turbocks
一般會員


發表:9
回覆:13
積分:4
註冊:2004-12-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-23 14:39:59 IP:61.10.xxx.xxx 未訂閱
例如我現在有個17*13的string grid,如何令[3,4],[5,4]的cell變成invisible?
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-23 15:04:26 IP:220.130.xxx.xxx 未訂閱
題義不明,你只要Cells[3,4],Cells[5,4] 變成invisible是怎樣的情形?無法想像. 是不是要將這兩個 >
turbocks
一般會員


發表:9
回覆:13
積分:4
註冊:2004-12-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-23 16:06:24 IP:222.166.xxx.xxx 未訂閱
引言: 題義不明,你只要Cells[3,4],Cells[5,4] 變成invisible是怎樣的情形?無法想像. 是不是要將這兩個 > < face="Verdana, Arial, Helvetica"> 我想令user看不到之餘,也不能add資料。[謝謝回應]
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-23 16:28:54 IP:220.130.xxx.xxx 未訂閱
試試看.. < 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-23 17:29:02 IP:61.18.xxx.xxx 未訂閱
引言: 試試看.. < 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-23 17:49:13 IP:220.130.xxx.xxx 未訂閱
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-23 17:50:01 IP:220.130.xxx.xxx 未訂閱
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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-12-23 18:18:49 IP:61.10.xxx.xxx 未訂閱
引言:
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;
但我張Form上面cover左張image1, 怎樣才使cell與image1的顏色一樣呢?謝謝
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-12-23 18:44:32 IP:220.130.xxx.xxx 未訂閱
我目前可以想得到的做法,你要實際實作看看... < 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;
系統時間:2024-06-26 23:39:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!