PageControl的drawTab 如何加入快捷鍵 |
答題得分者是:herbert2
|
shininggod
一般會員 發表:16 回覆:20 積分:17 註冊:2009-05-13 發送簡訊給我 |
[code delphi] procedure Tfrom1.pagecontrol1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); begin if Active then begin Control.Canvas.Brush.Color:=clBlue; Control.Canvas.Font.Color:=clWhite; end else begin Control.Canvas.Brush.Color:=clBtnFace; Control.Canvas.Font.Color:=clBlack; end; Control.Canvas.FillRect(Rect); Control.Canvas.TextOut(Rect.Left 3, Rect.Top 3,PChar(pcMaster.Pages[TabIndex].Caption)); end; [/code] 第一頁是 &1.首頁 (1.首頁) 可是這樣下去全部變字串Orz, 快捷鍵就無效了orz |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
shininggod
一般會員 發表:16 回覆:20 積分:17 註冊:2009-05-13 發送簡訊給我 |
現在想加上顏色,有人說不知道自己現在在哪一頁 orz..
可是text out後變成不吃快捷鍵 drawtab/ownerdraw = false 不加東西 &1.首頁 - > 1.首頁 在drawtab 裡面用 textout .caption( '&1.首頁' )- > &1.首頁 &都出來了orz
編輯記錄
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
[code cpp]
// 請改寫如下試試: procedure Tfrom1.pagecontrol1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); var ixX: Integer; ixW: Integer; begin if Active then begin Control.Canvas.Brush.Color:=clBlue; Control.Canvas.Font.Color:=clWhite; Control.Canvas.FillRect(Rect); // 非 Acvive 者, 自動使用 Default 顏色 end; // else // begin // Control.Canvas.Brush.Color:=clBtnFace; // Control.Canvas.Font.Color:=clBlack; // end; // Control.Canvas.FillRect(Rect); // Control.Canvas.TextOut(Rect.Left 3, Rect.Top 3,PChar(pcMaster.Pages[TabIndex].Caption)); ixW := Control.Canvas.TextWidth(pagecontrol1.Pages[TabIndex].Caption); ixX := (Rect.Width() - ixW) / 2; ixW := 2; if Active then ixW := ixW 2; // ActivePage 之 Tab Width 較寬, ActivePage 與 TabSheet 間多出分隔橫線. Control.Canvas.TextOut(Rect.Left ixX,Rect.Top ixW,Pagecontrol1.Pages[TabIndex].Caption); if Active then begin // 改變背景色 Control.Canvas.Pen.Width := 2; Control.Canvas.Pen.Color := clBtnFace; Control.Canvas.MoveTo(Rect.Left,Rect.Bottom-1); Control.Canvas.LineTo(Rect.Right,Rect.Bottom-1); // 非 Acvive 者, 自動使用 Default 顏色重畫 end; end; [/code]
編輯記錄
herbert2 重新編輯於 2010-08-20 15:25:17, 註解 無‧
|
shininggod
一般會員 發表:16 回覆:20 積分:17 註冊:2009-05-13 發送簡訊給我 |
可是這樣還是讓快捷鍵消失orz, *我指的是 accelerator key
例如有PageControl加了3頁 tabSheet 每一頁的catpion為 &1.主檔 &2.明細 &3.其他 顯示的時候會是 1.主檔 | 2.明細 | 3.其他 這裡按 1,2,3會直接跳頁 如果改了tabDraw, OnwerDraw就要調true 這時候就變成 &1.主檔 | &2.明細 | &3.其他 顏色是對的..只是&跑到caption(1,2,3也不會有underline),而且這時候按快捷鍵(1,2,3)無效 補充:我知道這個字是畫上去的,只是想問有沒有辦法一樣讓快捷鍵有效orz
編輯記錄
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
shininggod
一般會員 發表:16 回覆:20 積分:17 註冊:2009-05-13 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
shininggod
一般會員 發表:16 回覆:20 積分:17 註冊:2009-05-13 發送簡訊給我 |
|
shininggod
一般會員 發表:16 回覆:20 積分:17 註冊:2009-05-13 發送簡訊給我 |
回完就找出問題了Orz,
原因出在要設定 flag := WINDOWS.DST_PREFIXTEXT, 預設是 DST_TEXT 所以要呼叫的DrawState, 把自己的 cavas 丟過去 指定 flag google萬能.....(拜) http://www.delphidabbler.com/codesnip?action=named&showsrc=1&routines=DrawDisabledText 話說回來是不是該轉戰delphi C .... |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |