Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Мужики, выручайте... Как заставить THintWindow получать сообщения [D6, WinXP]


Driver ©   (2002-10-01 15:36:00) 

Есть проблема: Нужно в THintWindow вывести несколько подсказок и перемещатся между ними используя либо колесико, либо кнопочки... Но это все мелочи, когда используется TForm, а вот как застваить THintWindow сообщения вот это проблема... Просто когда работаешь с формой, то она на себя заберает фокус, а это не надо, да и охото чтоб окошко подсказки не было таким тежеловесным... Мужики выручайте, уже ничего в голову не лезет...


Driver   (2002-10-02 05:51:00) [1]

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

Но дела-то вдругом, может я конечно плохо излагаю мысли, но нужно следующее:
THintWindow это не что иное как обыкновенный контрол, он показывается с помощью функций WinAPI, ShowWindow(...), вот у меня большое подозрение, что для того чтобы начали работать события нужно его положить на TForm, похоже только она умеет работать с системными событиями, а все события которые отлавливают методы с ключевым словом messageпосылает сама Delphi, с помощью метода TObject.Dispatch. Так вот вопрос, можно ли заставить обыкновенный TControl без участия TForm обрабатывать события Windows? Заранее благодарен...


han_malign   (2002-10-01 17:43:00) [2]

Под Delphi: THintWindow наследуется от TCustomControl (в controls), а где Control там и все системные команды (CM_...,WM_...), а фокус можно терять на CM_MOUSELEAVE, или по таймауту.

Controls.pas:
THintWindow = class(TCustomControl)
private
FActivating: Boolean;
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
procedure WMNCPaint(var Message: TMessage); message WM_NCPAINT;
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
protected
procedure CreateParams(var Params: TCreateParams); override;
procedure Paint; override;
................et cetera

З.Ы. Forms.HintWindowClass:=TMyHintWindow;


Игорь Шевченко   (2002-10-01 17:18:00) [3]

qube © (01.10.02 17:13)

IMHO, выглядит, как hint :-)

А как сделать - обычная форма, раскрашенная под цвет hint"a, без бордюра, с возможностью обрабатывать сообщения от мыши и клавиатуры...

Если бы я видел, что именно имеется в виду, может, еще какие-либо идеи появились бы :-)


qube   (2002-10-01 17:13:00) [4]

А в VC -- хинт. Это я к тому, что такое решение вполне нормальное. Мне бы тоже было интересно, как это сделать.


Игорь Шевченко   (2002-10-01 17:08:00) [5]

qube © (01.10.02 16:56)

Вот в Delphi тоже Code Completion есть...Но не Hint ведь :-)


qube   (2002-10-01 16:56:00) [6]

Может, но очень похоже :).
Выполняет все функции обычного хинта, позволяя при этом выбрать по вкусу, какой вариант функции вызывать.


Игорь Шевченко   (2002-10-01 16:54:00) [7]

qube © (01.10.02 16:46)

Не видел. Но может, там и не хинт вовсе ? :-)))


qube   (2002-10-01 16:46:00) [8]

Почему странного?

В MS VC++ выскакивает именно такой хинт, со стрелками, если набрать в редакторе имя перегруженной функции.


Игорь Шевченко   (2002-10-01 16:43:00) [9]

Driver (01.10.02 15:51)

"Я сам себе придумываю трудности и их преодолеваю" (с) Известный анекдот.

А если серьезно, то зачем желать странного и требовать от пользователя переучиваться под такую вот хитрую программу с особенным Hint"ом ? У каждого интерфейсного элемента есть свое четкое назначение и свое, не менее четкое поведение, которого от этого элемента ожидает пользователь.

Зачем ?


Driver   (2002-10-01 15:51:00) [10]

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

P.S. Игорь, извини, если грубо, но просто уже так достало, что сил нет, двое суток уже бьюсь... а надо было уже вчера


Игорь Шевченко   (2002-10-01 15:42:00) [11]

Обычную форму, раскрашенную под цвет THintWindow - оно, IMHO, проще...


Наверх

Титульная страница Поиск, карта сайта Написать письмо