Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Hint в Delphi 6 (http://forum.oszone.net/showthread.php?t=29891)

LedWorm 14-03-2004 13:51 206192

Подскажите пожалуйста, как можно программно вызвать появление подсказки для определённого компонента?

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

[mzd] 14-03-2004 14:06 206193

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

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


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

LedWorm 14-03-2004 16:25 206194

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

Например.

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

hasherfrog 15-03-2004 10:17 206195

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

LedWorm 24-03-2004 21:14 206196

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

JCooper 25-03-2004 08:38 206197

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 206198

Kuper
Спасибо, буду пробовать


Добавлено:

Kuper

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

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

Vich 25-03-2004 14:38 206199

тебе не нравится как выглядит окошко хинта? перепиши тогда класс ThintWindow.
Цитата:

вообще эффект не тот
а какой эффект нужен?

hasherfrog 25-03-2004 14:39 206200

Цитата:

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

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


Время: 05:45.

Время: 05:45.
© OSzone.net 2001-