![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать свой hint!!!!!! [D6, Win95/98, WinME, NT4, Win2k, WinXP]
CRACKISH © (2003-01-29 08:36:00)Люди вот задаю для вас смешной вопрос! но!!!!!!!!! как сделать свой hint! выхоть только самое главное покажите!!!!!!!! Спасибо!!!!!!!
smok_er (2003-02-08 11:27:00) [1]Уважаемые, не понимаю, зачем все это надо. CRACKISH, сходи на торри, там есть фриварные компоненты с исходниками, и разбирайся. Имхо это будет лучший вариант.
Юрий Зотов (2003-02-08 08:32:00) [2]Значит, так изменил. Код - в студию, что ж тут еще скажешь.
CRACKISH (2003-02-08 08:25:00) [3]Юрий Зотов! втомто и дело что я вторую форму изменл (цвет и рисунок впихнул!!!!!)!! А hint серавно стандартный!
ййй (2003-02-07 09:25:00) [4]На скорую руку но работает
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm2 = class(TForm)
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
{ Private declarations }
{ Public declarations }
end;
TMyHint = Class ( THintWindow)
public
constructor Create(AOwner: TComponent); override;
procedure Paint ; Override;
procedure ActivateHint(Rect: TRect; const AHint: string); Override;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
constructor TMyHint.Create(AOwner: TComponent);
begin
inherited;
Form2 := TForm2.Create(self);
Form2.Show;
end;
procedure TMyHint.Paint;
var Cp : TPoint;
begin
GetCursorPos(Cp);
Form2.Top := Cp.Y + 2;
Form2.Left := Cp.X + 2;
Form2.Caption := Caption;
Form2.Timer1.Enabled := false;
Form2.Timer1.Enabled := true;
Form2.Show;
end;
procedure TMyHint.ActivateHint(Rect: TRect; const AHint: string);
begin
Caption := AHint;
Paint;
end;
procedure TForm2.Timer1Timer(Sender: TObject);
begin
Close;
end;
end.
Юрий Зотов (2003-02-07 09:10:00) [5]А почему хинт должен измениться? Ваш TForm2 воспринят нормально, но ведь он пока еще ничем не отличается от стандартного THintWindow - поэтому и хинт пока еще стандартный.
Нестандартный хинт - его же писать надо, сам по себе он не возникнет. Вот и пишите класс TForm2.
CRACKISH (2003-02-07 08:12:00) [6]Юрий Зотов! Код Delphi вопринемается!!! но серавно hint станлартный! вот че я делал!
1.В uses дописал unit2
2. Дописал
type
TForm2 = class (THintWindow)
end;
3. А в oncreate то что вы мне сказали!!!!!!!
Как быть????????
CRACKISH (2003-02-06 07:45:00) [7]спасибо!!!!!!!!!:)
Юрий Зотов (2003-02-05 08:12:00) [8]Да, пример не работает, здесь я дал маху, признаюсь. Он не работает потому, что класс хинта должен быть потомком THintWindow, а не TForm. Значит, Ваша задача - написать такого потомка и при старте программы переопределить HintWindowClass.
А идея, конечно, отличная. Жаль только, что не моя, а Borland"а.
:о)
CRACKISH (2003-02-05 07:55:00) [9]Юрий Зотов ! че то твой пример не работает????? а идея отличная!!!!! спасибо!!!!!!!
CRACKISH (2003-01-31 08:00:00) [10]Спасибо!!!!
malkolinge (2003-01-29 13:51:00) [11]А еще лучше разориться на Стива Тексейру и Ксавье Пачеко :)))) сколько вопросов сразу отпадент
Юрий Зотов (2003-01-29 09:49:00) [12]См. в справке:
HintWindowClass variable.
Например, сделайте пустую форму TForm2, а в OnCreate главной формы TForm1 напишите: HintWindowClass := TForm2;
Только не забудьте в unit1 добавить:
uses
..., unit2;
Результат, конечно, будет ужасен, но он будет. Ваша задача - превратить TForm2 во что-то приличное.
Anatoly Podgoretsky (2003-01-29 09:45:00) [13].hint := "My hint";