AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Nachricht/Ereignis wenn Tooltips aktiviert werden
Thema durchsuchen
Ansicht
Themen-Optionen

Nachricht/Ereignis wenn Tooltips aktiviert werden

Ein Thema von fylo · begonnen am 25. Feb 2008 · letzter Beitrag vom 27. Feb 2008
Antwort Antwort
Benutzerbild von fylo
fylo

Registriert seit: 18. Feb 2004
Ort: Rostock
155 Beiträge
 
Delphi 7 Personal
 
#1

Nachricht/Ereignis wenn Tooltips aktiviert werden

  Alt 25. Feb 2008, 18:23
Hallo,

ich arbeite in einem Programm viel mit Window-Messages (z.B. WM_MOUSEMOVE oder WM_LBUTTONDBLCLK).

Nun habe ich mich gefragt ob es eine Möglichkeit gibt, von einem beliebigen "Control" in einer anderen Anwendung den Tooltip per Code zu aktivieren? Gibt es da eine Nachricht die ich an das Control senden kann, z.B. WM_TOOLTIP?

Ich habe schon in der Message.pas (von Delphi 7) nach etwas passendem gesucht, aber leider nichts gefunden.

[edit]
Wird im Windowssystem eine bestimmte Nachricht ausgelöst, wenn irgendwo ein Tooltip angezeigt/angefordert wird soll und kann man das irgendwie heraus bekommen?
[/edit]

[edit 2]
Titel angepasst, damit er besser zur Frage passt.
[/edit 2]
have fun
fylo
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#2

Re: Tooltips per Code aktivieren

  Alt 25. Feb 2008, 19:18
Hallo,

Einen Hint kannst du mit ActivateHint() anzeigen.

Delphi-Quellcode:
  private
    { Private declarations }
    FMyHint: THintWindow;
    function RevealHint(Control: TControl; Color: TColor): THintWindow;
    procedure RemoveHint(var Hint: THintWindow);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Hint Fenster anzeigen

function TForm1.RevealHint(Control: TControl; Color: TColor): THintWindow;
var
  ShortHint: string;
  AShortHint: array[0..255] of Char;
  HintPos: TPoint;
  HintBox: TRect;
  HeightOfText: Integer;
begin
   { Hint Fenster erstellen falls noch nicht }
  if not Assigned(Result) then
    Result := THintWindow.Create(Control);
  if Color <> 0 then
    Result.Color := Color;
  ShortHint := GetShortHint(Control.Hint);
   { Hint Fenster Position & Größe: }
  HintPos := Control.ClientOrigin;
  Inc(HintPos.Y, Control.Height + 6);
  HintBox := Bounds(0, 0, Screen.Width, 0);
  HeightOfText := DrawText(Result.Canvas.Handle, StrPCopy(PChar(@AShortHint), ShortHint),
    -1, HintBox, DT_CALCRECT or DT_LEFT or DT_WORDBREAK or DT_NOPREFIX);
  OffsetRect(HintBox, HintPos.X, HintPos.Y);
  Inc(HintBox.Right, 6);
  Inc(HintBox.Bottom, 2);
{ Hint zeigen }
  Result.ActivateHint(HintBox, ShortHint);
end;

// Hint verstecken
procedure TForm1.RemoveHint(var Hint: THintWindow);
begin
  if Assigned(Hint) then
  begin
    Hint.ReleaseHandle;
    Hint.Free;
    Hint := nil;
  end;
end;

// Test: Hint von Button2 anzeigen bei Klick auf Button1
procedure TForm1.Button1Click(Sender: TObject);
begin
  FMyHint := RevealHint(Button2, clInfoBk);
  Application.Processmessages;
  Sleep(Application.HintHidePause);
  RemoveHint(FMyHint)
end;
  Mit Zitat antworten Zitat
Benutzerbild von fylo
fylo

Registriert seit: 18. Feb 2004
Ort: Rostock
155 Beiträge
 
Delphi 7 Personal
 
#3

Re: Tooltips per Code aktivieren

  Alt 25. Feb 2008, 22:40
Hallo API,

vielen Dank für deinen Tipp, aber ich habe mich vielleicht etwas missverständlich ausgedrückt.

Ich meinte nicht im eigenen Programm einen Tooltip aktivieren, sondern von der eigenen Anwendung in einem anderen Programm. Z.B. vom eigenen Programm den Tooltip/Hint des Zurück-Buttons im Firefox anzeigen bzw. aktivieren.

Gibt es da eine Möglichkeit?

Oder wird eigentlich im Windowssystem eine bestimmte Nachricht ausgelöst, wenn irgendwo ein Tooltip angezeigt werden soll und kann man das irgendwie mitbekommen?
have fun
fylo
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#4

Re: Tooltips per Code aktivieren

  Alt 26. Feb 2008, 18:06
Zitat von fylo:
Gibt es da eine Möglichkeit?

Oder wird eigentlich im Windowssystem eine bestimmte Nachricht ausgelöst, wenn irgendwo ein Tooltip angezeigt werden soll und kann man das irgendwie mitbekommen?
Ein ToolTip wird angeizeigt, wenn die Maus eine bestimmte Zeit über einem Control ist.
Ich glaube aber nicht, dass eine Nachricht ausgelöst wird. Wozu denn?
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von fylo
fylo

Registriert seit: 18. Feb 2004
Ort: Rostock
155 Beiträge
 
Delphi 7 Personal
 
#5

Re: Tooltips per Code aktivieren

  Alt 26. Feb 2008, 20:50
Zitat von toms:
Ein ToolTip wird angeizeigt, wenn die Maus eine bestimmte Zeit über einem Control ist.
Ja das weiß ich. Die Frage die ich habe, ist ob man es z.B. über globale Hooks mitbekommen kann ob ein Tooltip aufgerufen und angezeigt wird

Zitat von toms:
Ich glaube aber nicht, dass eine Nachricht ausgelöst wird.
Eigentlich wird doch ein Fester erzeugt und in diesem der Text des Tooltips angezeigt. Also müsste man doch mitbekommen ob ein Fenster erzeugt wird. Oder ist der Tooltip kein Fenster im eigentlichen Sinne

Zitat von toms:
Wozu denn?
Ich schreibe an einem Programm zur Auswertung des Benutzerverhalten und da würde ich gerne herausfinden, ob ein Benutzer z.B. einen Button immer gleich drückt oder ob er auf den Tooltip wartet oder ob er generell immer auf den Tooltip wartet obwohl der Button keinen hat.
have fun
fylo
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Nachricht/Ereignis wenn Tooltips aktiviert werden

  Alt 26. Feb 2008, 21:26
ToolTip ist nicht gleich ToolTip, die VCL von Delphi zum Beispiel hat seine eigene Klasse.
Praktisch kann jeder Programmierer seinen eigenen Tooltip schreiben.

Bei Firefox kann ich mir sogar vorstellen, dass die nicht einmal ein Handle besitzen, habe auf jeden Fall schon welche ohne Handle gesehen. Das wären dann keine Fenster im eigentlichen Sinne.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von fylo
fylo

Registriert seit: 18. Feb 2004
Ort: Rostock
155 Beiträge
 
Delphi 7 Personal
 
#7

Re: Nachricht/Ereignis wenn Tooltips aktiviert werden

  Alt 27. Feb 2008, 11:05
Zitat von bitsetter:
ToolTip ist nicht gleich ToolTip, die VCL von Delphi zum Beispiel hat seine eigene Klasse.
Praktisch kann jeder Programmierer seinen eigenen Tooltip schreiben.
Hmm, das ist ja gar nicht gut

Sind denn das letztendlich auch alles nur Fenster mit bestimmten Attributen? Ob mit ober ohne Handle ist ja eigentlich egal, falls man herausbekommen könnte ob ein Fenster erstellt wird, könnte man schauen mit welchen Styles es erzeugt wird und dann daraus schließen, das es vielleicht ein Tooltip sein könnte.
have fun
fylo
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Nachricht/Ereignis wenn Tooltips aktiviert werden

  Alt 27. Feb 2008, 12:24
Zitat von fylo:
Ob mit ober ohne Handle ist ja eigentlich egal, falls man herausbekommen könnte ob ein Fenster erstellt wird, könnte man schauen mit welchen Styles es erzeugt wird und dann daraus schließen, das es vielleicht ein Tooltip sein könnte.
Bei dem Standard Tooltip der VCL THintWindow wird das Fenster nicht jedesmal neu erstellt, sondern nur wieder sichtbar gemacht und vorher gegeben falls der Text und die Position geändert.
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: Nachricht/Ereignis wenn Tooltips aktiviert werden

  Alt 27. Feb 2008, 13:23
Versuch mal ob du mit der Windows API Funktion TrackMouseEvent() weiterkommst.
Du müsstest dann eine WM_MOUSEHOVER Message erhalten.
Es ist wohl so, dass TrackMouseEvent() nur im eigenen Prozess wirksam ist; aber vielleicht lässt sich das etwas machen (AttachThreadInput ?)
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz