Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Balloon Tooltip (https://www.delphipraxis.net/158509-balloon-tooltip.html)

Willie1 20. Feb 2011 11:25

Balloon Tooltip
 
Hallo Leute,
ich habe mir eine Unit gebaut, um Balloon Tooltips anzeigen zu können. In einen Demoprogramm schien alles zu klappen, dann stellte ich aber fest, dass in einem Tochterfenster keine Tooltips aufpoppen, keine Fehlermeldung, es passiert einfach nichts.
Übersehe ich da etwas Offensichtliches oder wie oder was?

Schönen Sonntag
Willie

lbccaleb 20. Feb 2011 14:32

AW: Balloon Tooltip
 
Zitat:

Zitat von Willie1 (Beitrag 1083050)
Hallo Leute,
ich habe mir eine Unit gebaut, um Balloon Tooltips anzeigen zu können. In einen Demoprogramm schien alles zu klappen, dann stellte ich aber fest, dass in einem Tochterfenster keine Tooltips aufpoppen, keine Fehlermeldung, es passiert einfach nichts.
Übersehe ich da etwas Offensichtliches oder wie oder was?

Schönen Sonntag
Willie

Tolle Fehler beschreibung. Wie wärs mal mit der Unit oder bissel Code?? Kann keiner hellsehen hier. :shock:

markus5766h 20. Feb 2011 17:01

AW: Balloon Tooltip
 
. . . . hab' mich auch schon gefragt,
wie man da helfen kann / soll ? :gruebel:

worauf reagiert der Balloon-ToolTip, auf Messages ? - oder
wird er direkt angesprochen . . .
werden Variablen(Inhalte) übergeben ? . . .
usw.

Willie1 21. Feb 2011 08:56

AW: Balloon Tooltip
 
wie beschrieben funktioniert mein Balloon Tip in einem Programm ohne Tochterfenster. Fehlerbeschreibung: in einem Tochterfenster (statisch oder dynamisch) passiert einfach nichts!

W.

Delphi-Quellcode:
procedure ShowBalloonTip(hWnd: THandle; Icon: integer; Title, Text: string;
                         BackCL, TextCL: TColor; RightTop: Boolean=false);
var
  hWndTip: THandle;
  ti: TOOLINFO;
  fl: Integer;
  b: pWideChar;
  pTitle: PChar;
begin
  if RightTop then
    fl:=TTF_TRANSPARENT or TTF_SUBCLASS
  else
    fl:=TTF_CENTERTIP or TTF_TRANSPARENT or TTF_SUBCLASS;
  GetMem(b,2*256);
  pTitle := PChar(Title);

  hWndTip := CreateWindow(TOOLTIPS_CLASS, nil,
    WS_POPUP or TTS_NOPREFIX or TTS_BALLOON or TTS_ALWAYSTIP,
    0, 0, 0, 0, hWnd, 0, HInstance, nil);
  if hWndTip <> 0 then
  begin
    SetWindowPos(hWndTip, HWND_TOPMOST, 0, 0, 0, 0,
      SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
    ti.cbSize := SizeOf(ti);
    ti.uFlags := fl;
    ti.hwnd := hWnd;
    ti.lpszText := StringToWideChar(Text, b, 2*356);
    Windows.GetClientRect(hWnd, ti.rect);
    SendMessage(hWndTip, TTM_SETTIPBKCOLOR, BackCL, 0);
    SendMessage(hWndTip, TTM_SETTIPTEXTCOLOR, TextCL, 0);
    SendMessage(hWndTip, TTM_ADDTOOL, 1, Integer(@ti));
    SendMessage(hWndTip, TTM_SETTITLE, Icon mod 4, Integer(pTitle));
  end;
  FreeMem(b);
end;

Bummi 21. Feb 2011 09:36

AW: Balloon Tooltip
 
Übergibst Du hier
Delphi-Quellcode:
ShowBalloonTip(hWnd: THandle
das richtige Fensterhandle?

Willie1 21. Feb 2011 11:45

AW: Balloon Tooltip
 
hier übergebe ich den Handle des Steuerelements (oder Form), über dem der Tooltip aufgehen soll. Ich wiederhole im Hauptfenster funktioniert alles. Ihr könnt es selbst ausprobieren.
W.

Bummi 21. Feb 2011 22:48

AW: Balloon Tooltip
 
ich habe es mit XE durchgespielt, mehrere Forms, tut eigentlich das was ich erwarten würde....

Willie1 22. Feb 2011 11:25

AW: Balloon Tooltip
 
Wenn ich meine Routine in OnActivate einbaue funktioniert alles bestens! Das Problem ist gelöst.
Ich habe die Unit noch etws erweitert, wenn jemand Interesse hat, melde dich.

MfG W.

EWeiss 22. Feb 2011 16:15

AW: Balloon Tooltip
 
Zitat:

Zitat von Willie1 (Beitrag 1083450)
Wenn ich meine Routine in OnActivate einbaue funktioniert alles bestens! Das Problem ist gelöst.
Ich habe die Unit noch etws erweitert, wenn jemand Interesse hat, melde dich.

MfG W.

Schön das es geht ;)
Ich möchte aber anmerken das der Balloon Tooltip nicht als Standard Tooltip mißbraucht werden soll.

gruss

Willie1 24. Feb 2011 08:57

AW: Balloon Tooltip
 
ich habe die Procedure in eine Function umgewandelt, die den Handle des Tooltips zurückliefert, um mit DestroaWindow() den Tooltip aus zu blenden. Was meinst du mit Standart-Tooltip? (Hint bei Delphi?)
Ich finde, dass Balloon-Tooltips sehr sparsam eingesetzt werdem sollten, weil sie leicht nerven können.
W.

Willie1 7. Mär 2011 11:27

AW: Balloon Tooltip
 
Hallo Leute,
als Hobby-Programierer bin ich erst vor kurzem auf Delphi XE umgestiegen. Ich weiß, dass wg. pWideChar einiges an zu passen ist.
Mit den Balloon-Tooltips habe ich ein Problem, welches ich nicht zu lösen vermag. Den Quelltext habe ich hier weiter oben veröffentlicht. Er funktioniert auch mit Delphi XE, der Tooltip wird mit Text und Ikone angezeigt, aber vom Titel (title) wird nur das erste Zeichen angezeigt. Hängt sicher mit WideChar zusammen, kennt eine/r die Lösung...

ich hoffe ihr feiert nicht alle Karneval!
Willie

Willie1 7. Mär 2011 15:08

AW: Balloon Tooltip
 
ich habe über Balloon-Tooltips herum gesucht, aber nichts gefunden, was weiter hilft.
Bitte meldet euch!

Willie

Willie1 7. Mär 2011 15:37

AW: Balloon Tooltip
 
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

hier ist der Link zum MSDN, damit müsste doch einer von euch was anfangen können. Ich kann kein C.
Wi.

Willie1 7. Mär 2011 16:32

AW: Balloon Tooltip
 
Ich habe die Lösung gefunden.

Delphi-Quellcode:
Const
  TTM_SETTTTLEW = (WM_USER + 33); // Neu

function ShowBalloonTipHandle(hWnd: THandle; Icon: integer; Title, Text: string;
                         BackCL, TextCL: TColor;
                         RightTop: Boolean=false): THandle;
var
  ti: TOOLINFO;
  fl: Integer;
  b: pWideChar;
  pTitle: PWideChar;
begin
  if RightTop then
    fl := TTF_TRANSPARENT or TTF_SUBCLASS
  else
    fl := TTF_CENTERTIP or TTF_TRANSPARENT or TTF_SUBCLASS;
  GetMem(b,2*256);
  pTitle := PWideChar(Title);

  Result := CreateWindow(TOOLTIPS_CLASS, nil,
    WS_POPUP or TTS_NOPREFIX or TTS_BALLOON or TTS_ALWAYSTIP,
    0, 0, 0, 0, hWnd, 0, HInstance, nil);
  if Result <> 0 then
  begin
    SetWindowPos(Result, HWND_TOPMOST, 0, 0, 0, 0,
      SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
    ti.cbSize := SizeOf(ti);
    ti.uFlags := fl;
    ti.hwnd := hWnd;
    ti.lpszText := StringToWideChar(Text, b, 2*356);
    Windows.GetClientRect(hWnd, ti.rect);
    SendMessage(Result, TTM_SETTIPBKCOLOR, BackCL, 0);
    SendMessage(Result, TTM_SETTIPTEXTCOLOR, TextCL, 0);
    SendMessage(Result, TTM_ADDTOOL, 1, Integer(@ti));
    SendMessage(Result, TTM_SETTITLEW, Icon mod 4, Integer(pTitle)); //<-- Ändern
  end;
  FreeMem(b)
end;
Willie.

DeddyH 7. Mär 2011 16:34

AW: Balloon Tooltip
 
Könntest Du das Pushen bitte in Zukunft unterlassen? Das ist nämlich sehr unfair gegenüber den Anderen, die ein Problem haben und sich an die Forenregeln halten.

Willie1 7. Mär 2011 18:19

AW: Balloon Tooltip
 
Zitat:

Könntest Du das Pushen bitte in Zukunft unterlassen? Das ist nämlich sehr unfair gegenüber den Anderen, die ein Problem haben und sich an die Forenregeln halten.
D
Sorry, könntest du mir bitte erklären gegen welche Forumregel ich verstoßen habe?
Obwohl ich eigentlich hier nie mehr davon sprechen wollte, ich kann schlecht sehen und kann lange Texte(zB Forumregeln) nur mit Anstrengung lesen. So kann ich deinen Vorwurf nicht verstehen. Eine Antwort von dir würde ich schon erwarten. Danke DeddyH.

W.

haentschman 7. Mär 2011 18:29

AW: Balloon Tooltip
 
Hallo...

DeddyH meinte mit Pushen immer einen neuen Beitrag zu erzeugen. Es kann ja vorkommen, daß man nachdem man eine Frage gestellt hat Neuigkeiten mitteilen möchte. Dazu steht dir die Funktion Beitrag bearbeiten zur Verfügung. Das Pushen (neuer Beitrag auf den eigenen) ist erst nach 24 Std. erlaubt.

PS: das ist aber Usus in allen Foren... nicht nur hier :zwinker:

:hi:

Willie1 7. Mär 2011 18:37

AW: Balloon Tooltip
 
Ok, ich war zu ungeduldig! Wird nicht mehr vorkommen.
Ich denke aber, dass meine Lösung (Balloon Tooltip) durchaus von allgemeinem Interesse sein könnte.
W.

haentschman 7. Mär 2011 18:57

AW: Balloon Tooltip
 
Ja gut... du kannst aber an deinen Beitrag über das Bearbeiten 100 Mal Informationen anhängen. Dadurch bleibt der ganze Thread auch übersichtlicher... 8-)

joehd 29. Mai 2013 13:08

AW: Balloon Tooltip
 
Hallo
also gelesen habe ich das nun alles und probiert auch aber wie binde ich die Prozedur. Ein ich habe noch nie so was eingebunden. Da muss ich was aus dem System einbinden... Kann mir da jemand einen tip geben . Ich würde den Tooltip gerne verwenden ...

Danke für einen Tip

Joachim

baumina 29. Mai 2013 13:57

AW: Balloon Tooltip
 
Also im Delphi XE gibt's bereits die TBallonHint-Komponente, falls ich das richtig verstanden habe, was du haben willst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz