Хай!
Вообщем хочу сделать полность свой хинт, на данный момент ни чего лучше чем создать форму и ее показывать не придумал, но вот проблема в том что бы ее (форму) во время убирать и показывать может кто знает как или все таки есть компонент который может заменить хинт, но нужно чтобы, там я мог показать картинку свою......
Полностью свой Hint
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
-
- Сообщения: 340
- Зарегистрирован: 22 ноя 2004, 19:15
- Откуда: Минск
- Контактная информация:
Что ты хочешь от хинта?
Многострочный, скашеный, какой-то формы?
Многострочный, скашеный, какой-то формы?
Просто набрать исходники может и любая обезьяна, а придумать и отладить не каждый человек.
У класса TApplication есть событие OnShowHint(var HintStr: String; var CanShow: Boolean; var HintInfo: THintInfo), которое можно обрабатывать. Если в HintInfo поменять свойство HintWindowClass, то будет создаваться не стандартный THintWindow, а любой другой. Конечно, целесообразнее делать класс наследник THintWindow.
Например:
Ну и не забыть про OnShowHint:
Например:
Код: Выделить всё
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;
Код: Выделить всё
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;
С уважением, Lost Angel...
LAngel, С П А С И Б О!!! то что нужно!