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

TMainMenu 的字型可自訂嗎?

尚未結案
mcho
初階會員


發表:57
回覆:106
積分:42
註冊:2002-11-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-23 10:41:05 IP:220.137.xxx.xxx 未訂閱
請教高手們! Delphi的TMainMenu原件的字型可自訂或變更嗎? 何明昌
------
何明昌
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-23 11:30:50 IP:202.39.xxx.xxx 未訂閱
TMainMenu.OwnerDraw := True; 然後在 TMainMenu 的各 TMenuItem 的 OnDrawItem 時去變更字型/顏色 參考: http://delphi.ktop.com.tw/topic.php?topic_id=26004 發表人 - hagar 於 2004/04/23 11:35:46
mcho
初階會員


發表:57
回覆:106
積分:42
註冊:2002-11-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-27 12:00:30 IP:220.137.xxx.xxx 未訂閱
HI!hagar: 謝謝您!回應我的問題!再請問在D7版本也可以做到嗎? 何明昌
------
何明昌
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-27 12:17:19 IP:202.39.xxx.xxx 未訂閱
可以的, 試試吧!
MainMenu1.OwnerDraw := True; // 記得先設這個屬性    procedure TForm1.N1DrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; Selected: Boolean);
begin
  ACanvas.Font.Name := '細明體'; // 設定字型
  ACanvas.TextOut(ARect.Left, ARect.Top, 'menu item 的 caption');  // 畫出 menu item 的 caption 
end;
mcho
初階會員


發表:57
回覆:106
積分:42
註冊:2002-11-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-29 09:35:55 IP:220.137.xxx.xxx 未訂閱
HI!hagar: 謝謝您指點但是我是始用動態MenuItem,要如何呼叫NewItemDrawItem的 Events 何明昌
------
何明昌
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-29 09:53:49 IP:202.39.xxx.xxx 未訂閱
unit Unit1;    interface    uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, Menus;    type
  TForm1 = class(TForm)
    Button1: TButton;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure N1DrawItem(Sender: TObject; ACanvas: TCanvas; ARect: TRect;
      Selected: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;    var
  Form1: TForm1;    implementation    {$R *.DFM}    // OnDrawItem event 
procedure TForm1.N1DrawItem(Sender: TObject; ACanvas: TCanvas;
  ARect: TRect; Selected: Boolean);
begin
  ACanvas.Font.Name := '細明體';
  ACanvas.Font.Color := clRed;
  ACanvas.Font.Size := 18;
  ACanvas.TextOut(ARect.Left, ARect.Top, TMenuItem(Sender).Caption);
end;    procedure TForm1.Button1Click(Sender: TObject);
var
  mi: TMenuItem;
begin
  mi := TMenuItem.Create(self);
  mi.Caption := 'MenuItem Caption 1';
  mi.OnDrawItem := N1DrawItem; // 指定 MenuItem 的 OnDrawItem Event
  MainMenu1.Items.Add(mi);
end;    end.
發表人 - hagar 於 2004/04/29 09:55:08
mcho
初階會員


發表:57
回覆:106
積分:42
註冊:2002-11-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-29 11:00:14 IP:220.137.xxx.xxx 未訂閱
Font.Size 定太大 TMenuItem(Sender).Caption 無法完成顯示(尾部被截斷) 何明昌
------
何明昌
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-29 11:22:11 IP:202.39.xxx.xxx 未訂閱
引言: Font.Size 定太大 TMenuItem(Sender).Caption 無法完成顯示(尾部被截斷) 何明昌
在 TMenuItem 的 OnMeasureItem Event 中, 有 Height, Width 兩參數 改成你要的大小試試.
mcho
初階會員


發表:57
回覆:106
積分:42
註冊:2002-11-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-29 11:50:22 IP:220.137.xxx.xxx 未訂閱
hagar版主:您太利害了!謝謝你 何明昌
------
何明昌
系統時間:2024-06-26 20:06:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!