Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.01;
Скачать: CL | DM;

Вниз

Hint   Найти похожие ветки 

 
saha   (2003-04-18 17:52) [0]

Привет. Тут давеча нашел в faq пример работы с hint-ом
Появление}
IF h<>nil H.ReleaseHandle; {если чей-то хинт yже был, то его погасить}
H:=THintWindow.Create(Окно-владелец хинта);
H.ActivateHint(H.CalcHintRect(...),"hint hint nint");
....
{UnПоявление :) - это возможно пpидется повесить на таймеp, котоpый бyдет
обнyляться пpи каждом новом появлении хинта}
IF h<>nil H.ReleaseHandle;
Все нормально получилось, тока hint появляется в левом верхнем углу экрана, если применить HintHandle.PaintTo(RXDBGrid1.Canvas,10,20); то все ок hint появляется там где надо, но тот который в левом верхнем угле тоже появляется. Как сделать что бы появлялся один?
Вот код:
If HintHandle=nil Then HintHandle:=THintWindow.Create(RXDBGrid1);
HintString:=HintString+key;
HintHandle.PaintTo(RXDBGrid1.Canvas,10,20);
HintHandle.ActivateHint(HintHandle.CalcHintRect(length(hintString)*10,hintString,sss),HintString);


 
Skier ©   (2003-04-18 18:00) [1]

Не поможет ?

If HintHandle=nil Then HintHandle:=THintWindow.Create( Application);
HintString:=HintString+key;
HintHandle.ActivateHint(HintHandle.CalcHintRect(length(hintString)*10,hintString,sss),HintString);


 
saha   (2003-04-18 18:08) [2]

Неа, кроме того тот hint который нужен все время отстает на один символ (это все у меня стоит в процедуре RxDBGrid1KeyPress)


 
Skier ©   (2003-04-18 18:11) [3]

>saha
Может быть всё дело в вычислении прямоугольника для хинта,
он должен быть в экранных координатах...Посмотри...


 
saha   (2003-04-18 18:47) [4]

а что там смотреть?
максимальная длина без переноса на другую строку, собственно строка, и указатель, который не используется (как написано в help
Note: CalcHintRect ignores the AData parameter. Descendant classes can override this method to make use of associated hint data.)


 
NickBat ©   (2003-04-18 19:00) [5]

procedure TFormMain.MyHintShow;
begin
MyHintHide;
HintExists:=True;
MyHint:=THintWindow.Create(self);
MyHint.Color:=clMyHint;
MyHint.ActivateHint(MyRct,"тРА-ЛЯ-ЛЯ");
end;
end;

procedure TFormMain.MyHintHide;
begin
if HintExists
then begin
HintExists:=False;
MyHint.ReleaseHandle;
MyHint.Free;
end;
end;


 
Skier ©   (2003-04-18 19:01) [6]

Я же говорю экранные координаты

Получишь хинт "примерно" в центре,
(код тупой, но наглядный...) :

procedure TForm1.Button1Click(Sender: TObject);
var
HintString : String;
begin
If HintHandle=nil Then HintHandle:=THintWindow.Create(Application);
HintString:= "Hello, world !";
HintHandle.ActivateHint(Rect(Screen.Width div 2,
Screen.Height div 2,
Screen.Width div 2 + 50,
Screen.Height div 2 + 15)
,HintString);
end;


 
saha   (2003-04-18 19:20) [7]

Ясно.
Но а ф-ция CalcHintRect выдает hint только в левом верхнем углу?
А зачем тогда THintWindow.Create( тип TComponent)? Мне думалось
что оно создает hint привязанный к определенному компоненту, а уже относительно него дальше пляшет. Но судя по-вашим словам это не так, а жаль, придется вычеслять куда встыркнуть hint.


 
Skier ©   (2003-04-18 19:27) [8]

>saha

> Мне думалось
> что оно создает hint привязанный к определенному компоненту,
> а уже относительно него дальше пляшет.

Да - привязанный, только что имеешь ввиду под "привязанным компонентом" ?


 
saha   (2003-04-18 19:33) [9]

>Да - привязанный, только что имеешь ввиду под "привязанным компонентом" ?

Ну тот который объявлен в create


 
Skier ©   (2003-04-18 19:36) [10]

>saha
Я бы посоветовал тебе внимательно почитать про владельца компонента и его родителя (или его контейнер) и понять разницу, тогда вся путацина исчезнет
"как с белых яблонь дым..." :)


 
saha   (2003-04-18 19:45) [11]

ok.
Ну и попутно, тогда еще маленький вопросик.
Как, к примеру, узнать координаты левого верхнего края формы?


 
Skier ©   (2003-04-18 19:45) [12]

см. TForm.Left и TForm.Top



Страницы: 1 вся ветка

Текущий архив: 2003.05.01;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
14-714
Мазут Береговой Рюрикович
2003-04-13 04:07
2003.05.01
Эй, питерцы! Я же прожил в Питере 4 года.


14-686
M_A_M
2003-04-15 11:23
2003.05.01
Защита програмного продукта


1-608
b-Ars
2003-04-15 22:40
2003.05.01
Out of resources - как бороться?


1-635
LEON
2003-04-11 17:27
2003.05.01
Как вставить картинку (BMP) в TRichEdit? чтобы пользователь мог у


1-628
Cybermozg
2003-04-19 13:50
2003.05.01
Как почистить ресурсы?