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

MonthCalendar有Bold粗體的功能, 但可否修改Bold粗體的內定值(如顏色)

尚未結案
yes123
一般會員


發表:5
回覆:6
積分:2
註冊:2004-09-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-18 12:14:17 IP:211.23.xxx.xxx 未訂閱
已經從貴站學的如何用BoldDays功能來 顯示設定過的日期,用Bold粗體顯示, ,但實務上有設定(粗體)及沒有設定過 (沒有粗體),實務上並不是有很明顯的區分, 可否改變Bold粗體顯示的內定值,除了 變粗以外可否也改變字型顏色.... 儘量用D7內定元件,不再外掛元件..... 拜託各位.....
yes123
一般會員


發表:5
回覆:6
積分:2
註冊:2004-09-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-26 11:49:16 IP:211.23.xxx.xxx 未訂閱
各位大大: 我是發問題者,原來的構想是有一假日檔案,當MonthCalendar出現時,要把 有設定過假日的日期用粗體來表示,然後再讓user修改或新增新的假日,最後, 再將有粗體的日期,回寫資料庫,但經過這幾天的test發現MonthCalendar這個 元件並不適合這個Case, 經過在貴站尋找,發現用TCalendar搭配 12個TStringGrid可以較完整且解決我的問題,以下我就將在貴站找的相關資料 ,整合如下(列出重要的procedure),有些寫法很笨,可不要偷偷的笑...... procedure TMainForm.FormShow(Sender: TObject); var i,x,y:integer; begin Calendar.Year:=2005; For i:= 1 to 12 do begin Calendar.Month:= i; for x := 0 to 6 do begin for y := 0 to 6 do begin if i = 1 then SG1.Cells[x,y]:= Calendar.CellText[x,y]; if i = 2 then SG2.Cells[x,y]:= Calendar.CellText[x,y]; if i = 3 then SG3.Cells[x,y]:= Calendar.CellText[x,y]; .....共12個StringGrid end; end; end; end; procedure TMainForm.SG1DblClick(Sender: TObject); begin With SG1 Do Begin If Integer(Objects[Col,Row]) = 1 Then Begin // 如果該儲存格的Object 的值為1 Objects[Col,Row] := TObject(0); // 則把它改為 0 End Else Begin Objects[Col,Row] :=TObject(1); // 否則把它設為 1 End; End; end; procedure TMainForm.SG2DblClick(Sender: TObject); begin With SG2 Do Begin If Integer(Objects[Col,Row]) = 1 Then Begin // 如果該儲存格的Object 的值為1 Objects[Col,Row] := TObject(0); // 則把它改為 0 End Else Begin Objects[Col,Row] :=TObject(1); // 否則把它設為 1 End; End; end; 寫..........................12次因為有12個StringGrid procedure TMainForm.SG1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var Obj : TstringGrid; Begin // 將Sender 轉型成TStringGrid 備用 Obj := TStringgrid(Sender); // 要變換顏色的判斷 // 每個儲存格除了可以儲存畫面看得到的文字之外,StringGrid 還為每個儲存格提供了一個Object屬性可以你儲存TObject, // 然而每個物件(TObject)其實就是個指標,也可看成一個整數值,所以只要檢查Object的屬性值(當然要轉型啦)如果為1代表改了顏色 // ,若為0則未改變顏色 If Integer(Obj.Objects[ACol,ARow]) = 1 Then Begin Obj.Canvas.Brush.Color := clRed; // 設定背景顏色 End; Obj.Canvas.FillRect(Rect); // 用Brush.color 填滿該儲存格 Obj.Canvas.TextOut(Rect.Left 2,Rect.Top 2,Obj.Cells[ACol,ARow]); // 畫出顯示的文字 End;
系統時間:2024-05-19 14:19:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!