PDA

View Full Version : تغییر فونت mainmenu



aradsystem
شنبه 14 شهریور 1388, 01:38 صبح
دوستان خوب سلام.


چجوری میشه فونت mainmenu رو تغییر داد؟ توی خاصیت هاش چیزی برای تعییر فونت منو یا زیرمنو ها نداره؟

با تشکر.

ali_abbasi22145
یک شنبه 15 شهریور 1388, 08:28 صبح
فكر نكنم اما يك كامپوننت رايگان اين كار است

aradsystem
دوشنبه 16 شهریور 1388, 08:58 صبح
میشه اسم اون کامپوننت رو معرفی کنید؟

فونت mainmenu خود دلفی رو عوض میکنه یا یک کامپوننت mainmenu با این قابلیته؟

vcldeveloper
دوشنبه 16 شهریور 1388, 12:55 عصر
فونت منوی اصلی یک برنامه توسط سیستم تعیین میشه، نه توسط خودِ برنامه. یک راه این هست که تنظیمات سیستم را تغییر بدید، در اون صورت فونت منوی همه برنامه ها تغییر میکنه، یا اگر واقعا میخواید فونت منوی برنامه شما از سایر برنامه ها متفاوت باشه، باید منو را بصورت CustomDraw رسم کنید، و برای رویدادهای OnDrawItem و OnMeasureItem هر یک از گزینه های منو کدی بنویسید که متن مربوط به آن گزینه را با فونت دلخواه برای شما رسم کند.

aradsystem
سه شنبه 17 شهریور 1388, 17:10 عصر
برای رویدادهای OnDrawItem و OnMeasureItem هر یک از گزینه های منو کدی بنویسید که متن مربوط به آن گزینه را با فونت دلخواه برای شما رسم کند.


من نمیدونم چی باید توی این رویداد ها بنویسم. میشه یک نمونه برای تغییر فونت و رنگ بنویسید؟

vcldeveloper
سه شنبه 17 شهریور 1388, 18:43 عصر
procedure SetCanvasFont(ACanvas: TCanvas);
begin
ACanvas.Font.Name := 'Arial';
ACanvas.Font.Size := 12;
end;

procedure TForm1.File1DrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
begin
SetCanvasFont(ACanvas);
ACanvas.TextOut(ARect.Left,ARect.Top,TMenuItem(Sen der).Caption);
end;

procedure TForm1.File1MeasureItem(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
SetCanvasFont(ACanvas);
Width := ACanvas.TextWidth(TMenuItem(Sender).Caption);
Height := ACanvas.TextHeight(TMenuItem(Sender).Caption);
end;

aradsystem
چهارشنبه 18 شهریور 1388, 19:49 عصر
procedure SetCanvasFont(ACanvas: TCanvas);
begin
ACanvas.Font.Name := 'Arial';
ACanvas.Font.Size := 12;
end;

procedure TForm1.File1DrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; Selected: Boolean);
begin
SetCanvasFont(ACanvas);
ACanvas.TextOut(ARect.Left,ARect.Top,TMenuItem(Sen der).Caption);
end;

procedure TForm1.File1MeasureItem(Sender: TObject; ACanvas: TCanvas;
var Width, Height: Integer);
begin
SetCanvasFont(ACanvas);
Width := ACanvas.TextWidth(TMenuItem(Sender).Caption);
Height := ACanvas.TextHeight(TMenuItem(Sender).Caption);
end;




اقای کشاورز من همین کدهای شمارو توی گزینه های منو نوشتم ولی هیچ تغییری انجام نمیشه. مشکل از کجاست؟

vcldeveloper
چهارشنبه 18 شهریور 1388, 22:26 عصر
اقای کشاورز من همین کدهای شمارو توی گزینه های منو نوشتم ولی هیچ تغییری انجام نمیشه. مشکل از کجاست؟
دوست عزیز، ,وقتی خودتان رسم منو را بر عهده می گیرید، باید خصوصیت OwnerDraw منو را True کنید.