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

Вниз

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

 
Driver   (2002-10-01 15:36) [0]

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


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

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


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

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

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


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

Driver (01.10.02 15:51)

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

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

Зачем ?


 
qube ©   (2002-10-01 16:46) [4]

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

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


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

qube © (01.10.02 16:46)

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


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

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


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

qube © (01.10.02 16:56)

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


 
qube ©   (2002-10-01 17:13) [8]

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


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

qube © (01.10.02 17:13)

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

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

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


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

Под 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;


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

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

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



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

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

Наверх




Память: 0.5 MB
Время: 0.011 c
1-31692
Осирис
2002-09-30 16:17
2002.10.10
Получить иконку запущенного приложения


1-31813
Slanik
2002-10-02 11:01
2002.10.10
Иерархическая структура


1-31812
kamonavt
2002-10-01 21:00
2002.10.10
mdi-форма -> dll


3-31637
i
2002-09-19 10:15
2002.10.10
Не работает UDF


14-31963
Ihor Osov'yak
2002-09-15 16:14
2002.10.10
Что значит смайлик :D