Страница 1 из 1
Полностью свой Hint
Добавлено: 01 июн 2005, 09:09
Alexie D.
Хай!
Вообщем хочу сделать полность свой хинт, на данный момент ни чего лучше чем создать форму и ее показывать не придумал, но вот проблема в том что бы ее (форму) во время убирать и показывать может кто знает как или все таки есть компонент который может заменить хинт, но нужно чтобы, там я мог показать картинку свою......
Добавлено: 01 июн 2005, 11:38
Лелик_1044
Что ты хочешь от хинта?
Многострочный, скашеный, какой-то формы?
Добавлено: 01 июн 2005, 11:57
LAngel
У класса TApplication есть событие OnShowHint(var HintStr: String; var CanShow: Boolean; var HintInfo: THintInfo), которое можно обрабатывать. Если в HintInfo поменять свойство HintWindowClass, то будет создаваться не стандартный THintWindow, а любой другой. Конечно, целесообразнее делать класс наследник THintWindow.
Например:
Код: Выделить всё
type
...
TMyHintWindow = class(THintWindow)
protected
procedure Paint; Override;
public
procedure ActivateHint(Rect: TRect; const AHint: string); override;
end;
...
implementation
procedure TMyHintWindow.ActivateHint(Rect: TRect; const AHint: string);
begin
Canvas.Font.Color := Screen.HintFont.Color;
Rect.Right := Rect.Left + Canvas.TextWidth(AHint);
if Canvas.TextWidth(AHint) < Application.Icon.Width
then Rect.Right := Rect.Left + Application.Icon.Width
else Rect.Right := Rect.Left + Canvas.TextWidth(AHint);
Rect.Bottom := Rect.Top + Canvas.TextHeight(AHint) + Application.Icon.Height;
inherited;
end;
procedure TMyHintWindow.Paint;
begin
inherited;
Canvas.Draw((ClientRect.Right-ClientRect.Left-Application.Icon.Width) div 2,
(ClientRect.Bottom-Application.Icon.Height), Application.Icon);
end;
Ну и не забыть про OnShowHint:
Код: Выделить всё
type
TForm1 = class(TForm)
...
procedure ApplicationHint(var HintStr: String; var CanShow: Boolean; var HintInfo: THintInfo);
procedure FormCreate(Sender: TObject);
...
procedure TForm1.ApplicationHint(var HintStr: String;
var CanShow: Boolean; var HintInfo: THintInfo);
begin
HintInfo.HintWindowClass := TMyHintWindow;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnShowHint := ApplicationHint;
end;
Добавлено: 02 июн 2005, 05:25
Alexie D.
LAngel, С П А С И Б О!!! то что нужно!