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

Вниз

Мужики, выручайте... Как заставить 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.59 MB
Время: 0.041 c
4-32077
Alexw
2002-08-22 12:50
2002.10.10
Помогите TAPI!!!


14-31968
RV
2002-09-16 10:53
2002.10.10
Чем смотреть файлы *.odf


14-31955
Igor_thief
2002-09-15 13:17
2002.10.10
Hook


3-31639
pwlusa
2002-09-19 13:03
2002.10.10
Как получить данные в строке


1-31675
GreatMaster
2002-09-26 09:46
2002.10.10
как нормально скрыть курсор в TEdit? (hidecaret)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский