PDA

View Full Version : سوال: تغییر فونت هینت کنترل خاص



Mask
پنج شنبه 22 اسفند 1392, 13:53 عصر
سلام
با کد زیر سایز و نوع کل کنترلهای موجود روی فرم تغییر میکنه.
مشکل من اینه که میخام مثلا فقط Button1 فونت هینتش تغیر کنه.
چطوری باید محدود به یه کنترل بشه؟
ممنون از پاسخگویی.

Type TMyHintWindow = Class (THintWindow)
Constructor Create (AOwner: TComponent) ; override ;
end;


Constructor TMyHintWindow.Create(AOwner:TComponent) ;
begin
Inherited Create (AOwner) ;
Canvas.Font.Name := 'Courier New' ;
Canvas.Font.Size := 72;
end;




procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowHint := false;
HintWindowClass := TMyHintWindow;
Application.ShowHint := True;
end;

یوسف زالی
پنج شنبه 22 اسفند 1392, 15:03 عصر
سلام.
شما می تونید در رویداد OnShowHint استفاده کنید.
کد مثال شما:


unit Unit1;


interface


uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, U30Component, StdCtrls;


type
TMyHintWindow = Class (THintWindow)
Constructor Create (AOwner: TComponent) ; override ;
end;


TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
OldHintClass: THintWindowClass;
procedure MyShowHint(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo);
public
{ Public declarations }
end;


var
Form1: TForm1;


implementation


{$R *.dfm}


procedure TForm1.MyShowHint(var HintStr: string; var CanShow: Boolean;
var HintInfo: THintInfo);
begin
if HintInfo.HintControl is TButton then
HintInfo.HintWindowClass := TMyHintWindow
else
HintInfo.HintWindowClass := OldHintClass;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
OldHintClass := HintWindowClass;
Application.OnShowHint := MyShowHint;
end;


{ TMyHintWindow }


constructor TMyHintWindow.Create(AOwner: TComponent);
begin
Inherited Create (AOwner) ;
Canvas.Font.Name := 'Courier New' ;
Canvas.Font.Size := 72;
end;


end.




در حقیقت همون طور که می بینید یکی از آیتم های این رویداد شی ای هست که می خواد روش هینت داده بشه، همون جا می تونید کار رو تموم کنید.