Войти

Показать полную графическую версию : Hint в Delphi 6


LedWorm
14-03-2004, 13:51
Подскажите пожалуйста, как можно программно вызвать появление подсказки для определённого компонента?

Заранее благодарен.

[mzd]
14-03-2004, 14:06
В инспекторе объектов у каждого визуального компнента есть такая строчка Hint. Туда и прописываешь, что тебе надо. А чуть ниже есть ShowHint. Его устанавливаешь в True. Или просто пишешь в FormCreate

Button1.Hint:='Подсказка';
Button1.ShowHint:=true;


Исправлено: [mzd], 14:08 14-03-2004

LedWorm
14-03-2004, 16:25
Нет, это-то я знаю.
Я хочу чтоб подсказка появлялась не при наводе мышкой на компонент, а по событию.

Например.

Я печатаю в Едите а в это время выскакивает подсказка о том, что печатать, т.е. без мышки.

hasherfrog
15-03-2004, 10:17
ЕМНИП, подсказка появляется после вызова метода OnHint. Форсируй его вызов и все. :) Только если ты показываешь, что печатать, у пользователя возникает искушение не печатать, а показать мышкой в подсказку. А это немного другая песня, ИМХО.

LedWorm
24-03-2004, 21:14
hasherfrog я пытался вызвать onHint для LabeledEdit, но ничего не выходит.  Пишет "неопознаный индетификатор". Что можете посоветовать?

JCooper
25-03-2004, 08:38
LedWorm


public
 { Public declarations }
 h: THintWindow;

procedure TForm1.Button1Click(Sender: TObject);
begin
 if h<>nil then
   H.ReleaseHandle;
 H:=THintWindow.Create(Form1);
 H.ActivateHint(Form1.ClientRect, 'Это всплывающая подсказка');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 if h<>nil then
   H.ReleaseHandle;
end;

LedWorm
25-03-2004, 13:28
Kuper
Спасибо, буду пробовать


Добавлено:

Kuper

Нет, что-то плохо получается, некрасиво и вообще эффект не тот. неужели никак нельзя просто вызвать подсказку, как делает это Делфи, когда пишеш процедуру, он автоматом в подсказке пишет, какие параметры нужно писать.

Может кто-нить ещё знает как это сделать?

Vich
25-03-2004, 14:38
тебе не нравится как выглядит окошко хинта? перепиши тогда класс ThintWindow.
вообще эффект не тот
а какой эффект нужен?

hasherfrog
25-03-2004, 14:39
...вызвать подсказку, как делает это Делфи, когда пишеш процедуру...

LedWorm
Я ж говорю, другая песня :rotate:
Поскольку я скоро сам что-то подобное буду писать, вот несколько мыслей:
1) Создание и удаление подсказки как VCL-объекта (а также модификация его содержимого  в зависимости от действий пользователя) производиться в классе-родителе (в простейшем случае TMemo - у меня QTextEdit). Родитель должен определить где показывать и что показывать. Кроме того, он обязан закрыть подсказку , если сам потеряет фокус. Родитель должен уметь передать фокус в подсказку при нажатии определенных клавиш типа вверх/вниз.
2) Само окно-подсказка - немодальное попап-окно, показываемое по show(). Имплементейшн класса подсказки должен уметь сообщить родителю о том что его закрыли выбором элемента списка. У Вас, вероятно это будет посредством callback, у меня в QT - через сигналы/слоты.
3) Для упрощения/ускорения процесса написания класса можно в качестве основы взять существующий класс подсказки. Но я, скорее всего, буду делать по-другому (QFrame).
Вот вкратце и все, собственно. Для меня большей проблемой является определение содержимого подсказки. :)

Исправлено: hasherfrog, 14:48 25-03-2004




© OSzone.net 2001-2012