Autor Beitrag
TheUnknown
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 334



BeitragVerfasst: Do 08.05.03 06:28 
*schluchz, flenn*

Leute, ich verzweifel hier langsam... Wenn SHOWHINT auf True steht und HINT einen String enthält, wird ja ein kleines, beiges Hinweisfenster angezeigt, wenn man mit der Maus ca. 0,5 Sekunden auf einer Komponente verweilt... Klappt auch wunderbar. ABER nur dann, wenn das Form, welches die Komponente "owned" auch das aktive ist (also seine Titelzeile nicht grau ist). Ich möchte es aber so haben, dass das HINT wirklich _immer_ angezeigt wird, wenn man mit der Maus kurz auf der Komponente wartet...

Ich bastel seit Stunden mit HintActivate und dem ganzen Kram rum... Es klappt zwar irgendwie, aber ich muss das beige Hinweisfenster wieder umständlich durch einen Timer entfernen (was manchmal nicht klappt, so dass ich dann Hinweisfenster-Leichen habe, die erst bei App-Ende verschwinden), was für meine App nicht in Frage kommt. Warum, ist ein wenig zu lang zu erklären...

Meine ganze Dankbarkeit an jene Person, die mir zeigen kann, wie ich immer das HINT anzeigen kann, ganz gleich, ob das Form nun aktiv ist oder nicht, wenn man mit der Maus die 0,5 Sekunden auf der Komponente wartet - EGAL WIE... Vielleicht mit einem Sourcecode-Beispiel...!? Bitte, ich will den Code tot oder lebendig... ;-)
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 08.05.03 07:03 
Ich glaube das ist nun mal so bei Windows, dass die Tooltips nur dann angezeigt werden, wenn das Fenster aktiv ist.
ase
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 203

Gentoo, Windows 9X, ME, 2k, NT, XP
Delphi 7 Prof., PHP 5 (Eclipse 3 SDK)
BeitragVerfasst: Do 08.05.03 08:15 
servus

ich fürchte das wird nur schwer machbar sein.

hier ein ausschnitt aus der controls.pas:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function THintWindow.IsHintMsg(var Msg: TMsg): Boolean;
begin
  with Msg do
    Result := ((Message >= WM_KEYFIRST) and (Message <= WM_KEYLAST)) or
      ((Message = CM_ACTIVATE) or (Message = CM_DEACTIVATE)) or
      (Message = CM_APPKEYDOWN) or (Message = CM_APPSYSCOMMAND) or
      (Message = WM_COMMAND) or ((Message > WM_MOUSEMOVE) and
      (Message <= WM_MOUSELAST)) or (Message = WM_NCMOUSEMOVE);
end;


ich stelle mal ne theorie zusammen:
mit dieser methode prüft die vcl, ob eine hint message vorliegt. da ist WM_MouseMove enthalten die windows ja bekanntlich dem fenster schickt wenn die maus über ihm bewegt wird. ich gauble aber das windows die nachricht nur zu aktiven fenstern schickt. darum kann (und sollte) bei inaktiven fenstern kein hint ausgelöst werden.

wie gesagt, muss nich stimmen aber ist ne theorie.

ase
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.

Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.