Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.05.01;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.007 c
3-414
yurikon
2003-04-11 14:00
2003.05.01
Св-во наследника TFrame в Object Inspector`е


8-652
Алексей Ч.
2003-01-11 02:09
2003.05.01
Как сделать программу, которая выдает список запущенных процессов


14-725
wicked
2003-04-13 22:48
2003.05.01
журналисты о компьютерах..... :))


14-784
NetBreaker666
2003-04-12 14:45
2003.05.01
GetFieldAddress и GetMethodAddress


1-493
MaxSit
2003-04-17 19:01
2003.05.01
DX: QuickReport351. Проблема с подсчетом страниц перед просмотром





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский