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

StringGrid 的 ondrawcell

答題得分者是:william
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-13 11:18:25 IP:61.71.xxx.xxx 未訂閱
請問各位!    以下是我的StringGrid 的 onDrawCell程式碼, 主要目的是控制 cell的底色 但如果加上這段後, 原本 StringGrid 是可以用滑鼠來拖曳設定 cell 的區段 例如我想要把 cell(1,1)到 cell(3,5)都mark起來, 用拖曳方式可以很明顯的 看到這塊區域被反藍出來, 那我現在加了這段就無法出現這樣的功能, 不知各 位知道要如何改否? 謝謝!    
procedure TForm_Part.stgSpecDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
        var xCol, xWidth: integer;
            xRow, xHeight: integer;
begin
     with Sender as TStringGrid do  begin
       if (Cells[ACol, ARow]='√') then begin
         Canvas.Brush.Color:= clGreen; //底色
         Canvas.Font.Color:= clWhite;  //字體顏色
       end
       else begin
         if (ACol<>0) and (ARow<>0) then begin
            Canvas.Brush.Color:= clGray;
            Canvas.Font.Color:= clBlack;
         end;
       end;
       if (ARow=nRow) and (ACol=nCol) then begin
          Canvas.Brush.Color:= $00C08080;
          Canvas.Font.Color:= clBlack;
       end;
       xRow:= Round(stgSpec.DefaultRowHeight);
       xCol:= Round(stgSpec.DefaultColWidth);
       xHeight:= Abs(stgSpec.Font.Height);
       xWidth:=  9 * Length(Cells[ACol,ARow]);
       xRow:= Round((xRow-xHeight)/2);
       if (ARow=0) or ((ARow<>0) and (ACol<>0)) then xCol:= Round((xCol-xWidth)/2)
       else xCol:= 2;
       Canvas.FillRect(Rect);  //繪底色
       Canvas.textout(Rect.Left xCol,Rect.Top xRow,Cells[ACol,ARow]); //output text
     end;
end;    
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-13 12:31:52 IP:147.8.xxx.xxx 未訂閱
I think you should test the State value.... e.g.
    if State=gdSelected then begin
        {...}
    end
    else begin
        {...}
    end;
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-14 23:33:05 IP:61.71.xxx.xxx 未訂閱
引言: I think you should test the State value.... e.g.
    if State=gdSelected then begin
        {...}
    end
    else begin
        {...}
    end;
謝謝! 可以了!
系統時間:2024-07-02 2:14:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!