![]() |
Balloontips in Mouse-Events "einbeziehen"
Moin Moin erstmal...
ich habe da mal eine Frage zu den BalloonTips. Mit folgendem Code lass ich mir auf meiner Form ein Balloontip anzeigen. Jetzt möchte ich aber folgendes: Angenommen ich habe ein Image wo sich Graphen drinne befinden. Nun möchte ich, dass wenn sich die Maus über einem Graphen befindet, so ein Baloontip angezeigt wird. Die Abfrage, ob sich die Maus über dem Graph befindet ist relativ simple (funktioniert auch schon) und nun möchte ich eben ein Balloontip anzeigen und sobald die Maus ins "Leere" geht auf dem Image, den Balloontip wieder ausblenden. Hat sowas jemand schonmal probiert, geschafft oder ähnliches? Würde mich sehr freuen wenn ihr ne Lösung habt. MFG Alex
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Commctrl; type TForm1 = class(TForm) Image1: TImage; Button1: TButton; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } procedure ShowBalloonTip(Icon : Integer; Title : PChar; Text : PWideChar; BackCL, TextCL : TColor); public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin ShowBalloonTip(1,'Hallo','TEST',clBlack,clWhite); end; procedure TForm1.ShowBalloonTip(Icon: Integer; Title: PChar; Text: PWideChar; BackCL, TextCL: TColor); const TOOLTIPS_CLASS = 'tooltips_class32'; TTS_ALWAYSTIP = $01; TTS_NOPREFIX = $02; TTS_BALLOON = $40; TTF_SUBCLASS = $0010; TTF_TRANSPARENT = $0100; TTF_CENTERTIP = $0002; TTM_ADDTOOL = $0400 + 50; TTM_SETTITLE = (WM_USER + 32); ICC_WIN95_CLASSES = $000000FF; type TOOLINFO = packed record cbSize : Integer; uFlags : Integer; hwnd : THandle; uId : Integer; rect : TRect; hinst : THandle; lpszText : PWideChar; lParam : Integer; end; var hWndTip : THandle; ti : TOOLINFO; hWnd : THandle; begin hWnd := Form1.Handle; 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 := TTF_TRANSPARENT or TTF_SUBCLASS; ti.hwnd := hWnd; ti.lpszText := Text; 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(Title)); end; end; end. |
Re: Balloontips in Mouse-Events "einbeziehen"
*PUSH*!!!
Hat keiner eine Idee? MFG Alex |
Re: Balloontips in Mouse-Events "einbeziehen"
Wenn du alle Hints global für die ganze Anwendung "ballonisieren" willst (also andere Optik),
dann müsstest du eine neue Klasse von THintWindow ableiten.
Delphi-Quellcode:
Dann müsstest du beim Programmstart die neue Klasse "registrieren":
TBallonHintWindow = class(THintWindow)
.... end;
Delphi-Quellcode:
procedure THauptFormular.OnCreate(sender:TObject);
begin Application.HintWindowClass := TBallonHintWindow; end; |
Re: Balloontips in Mouse-Events "einbeziehen"
das Problem ist ja, ich will nicht alle Hint's "ändern" sondern nur auf bestimmte Maus-Positionen im Image reagieren und dann dort ein Hint bzw. Balloontip anzeigen. Alle anderen Komponenten auf der Form bleiben ganz normal behandelt mit dem "Standard-Hint". (ShowHint = True und Hint = 'Irgendwas').
MFG Alex |
Re: Balloontips in Mouse-Events "einbeziehen"
Zitat:
Window-Handle (hWndTip) für später merken. Wenn du das mit folgendem Tip: ![]() kombinierst, dann kannst du feststellen, ob der Mauszeiger dein Image verlassen hat. |
Re: Balloontips in Mouse-Events "einbeziehen"
okay danke, ich werde es mal in den nächsten Tagen probieren... (komme leider heute und morgen nicht dazu).
MFG Alex |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 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