![]() |
Re: Vista Balloon Tip
Moin,
So (aber das wussten wir ja schon ;) Dieser Code erzeugt leider nur das normale Balloon-Window):
Delphi-Quellcode:
Aufruf:
procedure ShowBalloonTip(Control: TWinControl; Icon: integer; Title: pchar;
Text: PWideChar); 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 := Control.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_CENTERTIP or TTF_TRANSPARENT or TTF_SUBCLASS; ti.hwnd := hWnd; ti.lpszText := Text; Windows.GetClientRect(hWnd, ti.rect); SendMessage(hWndTip, TTM_ADDTOOL, 1, Integer(@ti)); SendMessage(hWndTip, TTM_SETTITLE, Icon mod 4, Integer(Title)); end; end;
Delphi-Quellcode:
Grüße,
ShowBalloonTip(Button1, 2, 'Empty Value!',
'Please enter something, ANYTHING(!)' +sLineBreak + 'in the edit box!'); Max |
Re: Vista Balloon Tip
Ach so meintest du das...ich dachte jez du hättest teile vom c++ code ind delphi umgeschrieben
|
Re: Vista Balloon Tip
Ich hab nochmal ein bisschen gegoogled und folgendes gefunden:
![]() So wie es aussieht entscheidet Vista welcher Balloon Style verwendet wird. Zitat:
Man müsste jetzt wissen, nach welchen Kriterien Vista da vorgeht um jeweils den einen oder den anderen Style zu verwenden... |
Re: Vista Balloon Tip
Hab grad was gefunden, was dir helfen kann: TTM_SETWINDOWTHEME hab ich in der CommCtrl.h gefunden
MS VisualStudio 05 - Hilfe TTM_SETWINDOWTHEME Message -------------------------------------------------------------------------------- Sets the visual style of a ToolTip control. Syntax To send this message, call the SendMessage function as follows. lResult = SendMessage( // returns nothing in lResult (HWND) hWndControl, // handle to destination control (UINT) TTM_SETWINDOWTHEME, // message ID (WPARAM) wParam, // = 0; not used, must be zero (LPARAM) lParam // = (LPARAM) (LPWSTR) pwStr; ); Parameters wParam Must be zero. pwStr Pointer to a Unicode string that contains the ToolTip visual style to set. Return Value The return value is not used. Remarks Note To use this API, you must provide a manifest specifying Comclt32.dll version 6.0. For more information on manifests, see Using Windows XP Visual Styles. Message Information Header commctrl.h Minimum operating systems Windows XP -------------------------------------------------------------------------------- © 2005 Microsoft Corporation. All rights reserved. Quelle: ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/shellcc/platform/commctls/tooltip/messages/ttm_setwindowtheme.htm |
Re: Vista Balloon Tip
Ich komm da nich wirklich weiter und vergeude viel zu viel zeit damit...also wenn keiner eine Lösung hat dann lass ichs und nimm die normalen Balloon Tips...
Gruß |
Re: Vista Balloon Tip
Der Beitrag hinter dem LInk
Zitat:
![]() |
Re: Vista Balloon Tip
Wieso macht ihr euch so viel Arbeit?
Nutze doch einfach eine eigene Form welche unten rechts in der Ecke angezeigt wird. Die meisten Entwickler machen das. Erstens kannst du dann deine Inhalte (was und wie sie angezeigt werden) selbst gestalten und kannst dir auch sicher sein, dass es auch angezeigt wird. Die meisten Nutzer haben, entweder selbst oder über ein Tuning-Tool, die Balloons abgeschaltet. Andreas |
Re: Vista Balloon Tip
Liste der Anhänge anzeigen (Anzahl: 1)
Vielleicht macht es Spass?
|
Re: Vista Balloon Tip
Zitat:
Solche Geschichten wie dieses Tooltip hier sind einfach tolle, kleine Herausforderungen, denen man, ohne Termindruck oder etc. nachgehen kann. Es macht einfach Spaß ;) Edit: Ich hab's! Ich hätte es auch schon viel länger haben können, hätte ich mich nicht vom C++ Beispiel durcheinanderbringen lassen... Ich baue das eben noch in handliche Funktionen um.. |
Re: Vista Balloon Tip
Moin,
So, ich denke das war's. Hier ist nochmal eine etwas verbesserte Version meines vorherigen Tooltip-Codes (etwas erweitert) und dann des Rätsels Lösung - die fixierte Balloontip Box. Da diese Box fixiert ist, wird ein Handle zurückgegeben, mit welchem man mit der Hide-Procedure selbiges wieder unsichtbar machen kann (denn es gibt nur 2 Wege: Entweder ein Klick auf einen etwaigen Close-Button, oder die Hide-Procedure).
Delphi-Quellcode:
Ich ärgere mich, denn das war genau mein letzter Gedanke, bevor ich mich dem C++ Code zugewandt hatte, welcher durch seine scheinbar identische Aufrufsprozeduren meine Theorie verworfen hatte.
type
TTOOLINFO = packed record cbSize: Integer; uFlags: Integer; hwnd: THandle; uId: Integer; rect: TRect; hinst: THandle; lpszText: PWideChar; lParam: Integer; end; const TOOLTIPS_CLASS = 'tooltips_class32'; TTS_ALWAYSTIP = $01; TTS_NOPREFIX = $02; TTS_BALLOON = $40; TTS_CLOSE = $80; TTF_SUBCLASS = $0010; TTF_TRANSPARENT = $0100; TTF_CENTERTIP = $0002; TTM_ADDTOOL = $0400 + 50; TTM_SETTITLE = (WM_USER + 32); ICC_WIN95_CLASSES = $000000FF; function ShowBalloonTipFixed(AControl: TWinControl; AIcon: Integer; ATitle: string; AText: WideString; ACloseButton: Boolean; X: Integer; Y: Integer): THandle; var lToolInfo: TTOOLINFO; lParentHandle: THandle; lParameters: Cardinal; begin lParentHandle := AControl.Handle; lParameters := WS_POPUP or TTS_NOPREFIX or TTS_BALLOON or TTS_ALWAYSTIP; if ACloseButton then begin lParameters := lParameters or TTS_CLOSE; end; Result := CreateWindow(TOOLTIPS_CLASS, nil, lParameters, 0, 0, 0, 0, lParentHandle, 0, HInstance, nil); if Result <> 0 then begin SetWindowPos(Result, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); lToolInfo.cbSize := SizeOf(lToolInfo); lToolInfo.uFlags := TTF_TRANSPARENT or TTF_SUBCLASS or TTF_TRACK; lToolInfo.hwnd := lParentHandle; lToolInfo.lpszText := PWideChar(AText); Windows.GetClientRect(lParentHandle, lToolInfo.rect); SendMessage(Result, TTM_ADDTOOL, 1, Integer(@lToolInfo)); SendMessage(Result, TTM_SETTITLE, AIcon mod 4, Integer(PChar(ATitle))); SendMessage(Result, TTM_TRACKPOSITION, 0, MakeLong(X, Y)); SendMessage(Result, TTM_TRACKACTIVATE, Ord(True), Integer(@lToolInfo)); end; end; function ShowBalloonTip(AControl: TWinControl; AIcon: Integer; ATitle: string; AText: WideString; ACloseButton: Boolean; ACenterTip: Boolean): THandle; var lToolInfo: TTOOLINFO; lParentHandle: THandle; lParameters: Cardinal; begin lParentHandle := AControl.Handle; lParameters := WS_POPUP or TTS_NOPREFIX or TTS_BALLOON or TTS_ALWAYSTIP; if ACloseButton then begin lParameters := lParameters or TTS_CLOSE; end; Result := CreateWindow(TOOLTIPS_CLASS, nil, lParameters, 0, 0, 0, 0, lParentHandle, 0, HInstance, nil); if Result <> 0 then begin SetWindowPos(Result, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); lToolInfo.cbSize := SizeOf(lToolInfo); lToolInfo.uFlags := TTF_TRANSPARENT or TTF_SUBCLASS; if ACenterTip then begin lToolInfo.uFlags := lToolInfo.uFlags or TTF_CENTERTIP; end; lToolInfo.hwnd := lParentHandle; lToolInfo.lpszText := PWideChar(AText); Windows.GetClientRect(lParentHandle, lToolInfo.rect); SendMessage(Result, TTM_ADDTOOL, 1, Integer(@lToolInfo)); SendMessage(Result, TTM_SETTITLE, AIcon mod 4, Integer(PChar(ATitle))); end; end; procedure HideBalloonTipFixed(AToolTip: THandle); begin SendMessage(AToolTip, TTM_TRACKACTIVATE, Ord(False), 0); end; Viel Spass damit & Grüße, Max Edit: Möglicherweise ist dieser Code ja was für die Code-Lib? Ich habe im Internet bis jetzt noch keine fixierte BalloonTip Funktion gefunden. Hmm, mal sehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:49 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