Форум: "KOL";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];
ВнизКак глобально, во всей програме отключить хинты? Найти похожие ветки
← →
Trible (2006-11-26 23:08) [0]Привет! Как глобально, во всей програме отключить хинты?
что то типа KOLProject1.showhint:=false.
Использую kolmhTooltip.pas с директивой.
← →
Vladimir Kladov (2006-11-27 15:17) [1]Только через сообщения Applet.OnMessage, смотрите, какие TTM_ приходят, и гасите.
← →
Trible (2006-11-27 16:08) [2]Спасибо!
← →
Trible (2006-11-27 18:33) [3]Или я что то недопонял, но я большинство сообщений перепробовал в 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 18:34) [4]Ну не все из показанных, а те кот. по смыслу подходят.. эт я скопировал из msdn
← →
Vladimir Kladov (2006-11-27 20:51) [5]тут какая-то ерунда: если на форме есть аплет, то хинты вообще не показываются. Надо посмотреть, в чем дело.
← →
Vladimir Kladov (2006-11-27 21:03) [6]с этим наполовину разобрался: у меня в проекте был включен 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 21:13) [7]нет, так что-то не получилось тоже. Все равно показываются.
← →
Trible (2006-11-28 22:48) [8]Может лучше все - таки самому хинты создавать?
← →
Trible (2006-11-28 22:50) [9]Но так больше геморроя...
← →
Vladimir Kladov (2006-11-29 15:20) [10]все можно сделать, любое сообщение обязаетльно пройдет через Applet.OnMessage, если в программе есть Applet. Гасить нужно обычный показ окна, относящийся к конам класса тултипа.
← →
Trible (2006-12-03 16:36) [11]
> любое сообщение обязаетльно пройдет через Applet.OnMessage
Перехватываю в Applet.OnMessage WM_Activate. Смотрю стиль (и расширеный) каждого - нету ничего.
← →
Trible (2006-12-03 16:48) [12]Пробовал и WM_Create перехватывать и смотрел класс окна. Нету тултипа . А как по WM_SHOWWINDOW определить незнаю даже к чему прицепиться. что порекомендуете?
← →
Vladimir Kladov (2006-12-03 19:23) [13]
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;
← →
Stan (2006-12-04 16:35) [14]Спасибо вам Владимир на потраченное на меня время!
Удачного дня! Когда нибудь пригожусь :)
← →
Trible (2006-12-04 16:36) [15]Trible = Stan :)
← →
Trible (2006-12-04 17:51) [16]Более быстрый вариант:
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
← →
Vladimir Kladov (2006-12-04 19:24) [17]ничуть. Посмотрите код, который генерит Delphi. Он не тупой. Создание дополнителньой переменной ничего не стоит, если есть возможность использовать для нее регистр. Смотреть с включенной оптимизацией.
← →
Galkov © (2006-12-05 09:07) [18]Ну может коллега FPC любит :)))
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2007.07.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.045 c