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

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

Как глобально, во всей програме отключить хинты?


Trible ©   (2006-11-26 23:08:00) 

Привет! Как глобально, во всей програме отключить хинты?
что то типа KOLProject1.showhint:=false.
Использую kolmhTooltip.pas с директивой.


Galkov   (2006-12-05 09:07:00) [1]

Ну может коллега FPC любит :)))


Vladimir Kladov   (2006-12-04 19:24:00) [2]

ничуть. Посмотрите код, который генерит Delphi. Он не тупой. Создание дополнителньой переменной ничего не стоит, если есть возможность использовать для нее регистр. Смотреть с включенной оптимизацией.


Trible   (2006-12-04 17:51:00) [3]

Более быстрый вариант:

case Msg.message of

WM_NOTIFY: begin

              if PNMHdr(Msg.lParam).code = {TTN_SHOW} 0-520-1 then
              begin
                SetWindowPos( PNMHdr(Msg.lParam).hwndFrom, 0, 0, 0, 0, 0, SWP_HIDEWINDOW
                  or SWP_NOZORDER or SWP_NOACTIVATE );
                Result := TRUE;
              end;
            end;
end; // of case


Trible   (2006-12-04 16:36:00) [4]

Trible = Stan :)


Stan   (2006-12-04 16:35:00) [5]

Спасибо вам Владимир на потраченное на меня время!
Удачного дня! Когда нибудь пригожусь :)


Vladimir Kladov   (2006-12-03 19:23:00) [6]

function TForm1.KOLApplet1Message(var Msg: tagMSG;
 var Rslt: Integer): Boolean;
var NE: PNMHdr;
begin
 Result := FALSE;
 if (Msg.message = WM_NOTIFY) then
 begin
   NE := Pointer( Msg.lParam );
   if NE.code = {TTN_SHOW} 0-520-1 then
   begin
     SetWindowPos( NE.hwndFrom, 0, 0, 0, 0, 0, SWP_HIDEWINDOW
       or SWP_NOZORDER or SWP_NOACTIVATE );
     Result := TRUE;
   end;
 end;
end;


Trible   (2006-12-03 16:48:00) [7]

Пробовал и WM_Create перехватывать и смотрел класс окна. Нету тултипа .  А как по WM_SHOWWINDOW определить незнаю даже к чему прицепиться. что порекомендуете?


Trible   (2006-12-03 16:36:00) [8]


> любое сообщение обязаетльно пройдет через Applet.OnMessage


Перехватываю в Applet.OnMessage WM_Activate. Смотрю стиль (и расширеный) каждого - нету ничего.


Vladimir Kladov   (2006-11-29 15:20:00) [9]

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


Trible   (2006-11-28 22:50:00) [10]

Но так больше геморроя...


Trible   (2006-11-28 22:48:00) [11]

Может лучше все - таки самому хинты создавать?


Vladimir Kladov   (2006-11-27 21:13:00) [12]

нет, так что-то не получилось тоже. Все равно показываются.


Vladimir Kladov   (2006-11-27 21:03:00) [13]

с этим наполовину разобрался: у меня в проекте был включен UNICODE_CTRLS, как только убрал, стали появляться.

И вот что заметил: окно тултипа создается напрямую вызовом CreateWindowEx. Попробуйте сделать свой Run (просто скопировать из KOL в dpr) и в нем поставить обработчик вроде такого:

peekmessage...

if disabletooltips and (msg.message >= DWORD(TTM_FIRST)) and
 (msg.message <= DWORD(TTM_LAST)) then // ничего не делать
else
begin
  transaltemessage...
  dispatchmessage ...
end;


Vladimir Kladov   (2006-11-27 20:51:00) [14]

тут какая-то ерунда: если на форме есть аплет, то хинты вообще не показываются. Надо посмотреть, в чем дело.


Trible   (2006-11-27 18:34:00) [15]

Ну не все из показанных, а те кот. по смыслу подходят.. эт я скопировал из msdn


Trible   (2006-11-27 18:33:00) [16]

Или я что то недопонял, но я большинство сообщений перепробовал в Applet.OnMessage. TTM_ACTIVATE
TTM_ADDTOOL
TTM_DELTOOL
TTM_ENUMTOOLS
TTM_GETCURRENTTOOL
TTM_GETTEXT
TTM_GETTOOLCOUNT
TTM_GETTOOLINFO
TTM_HITTEST
TTM_NEWTOOLRECT
TTM_RELAYEVENT
TTM_SETDELAYTIME
TTM_SETTOOLINFO
TTM_UPDATETIPTEXT
TTM_WINDOWFROMPOINT

Ни одно не выполняетсья.... При показе хинта..


Trible   (2006-11-27 16:08:00) [17]

Спасибо!


Vladimir Kladov   (2006-11-27 15:17:00) [18]

Только через сообщения Applet.OnMessage, смотрите, какие TTM_ приходят, и гасите.


Наверх

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