![]() |
"echter" Dropdown-Toolbutton...
Wie mache ich einen Toolbutton zu einem "echten" DropDown-Toolbutton (Abbildung links.; Explorer)? Unter Delphi bewirkt der Style tbsDropDown (Abblildung rechts) nur, dass beim Klick rechts auf den Button das Menü aufpoppt... aber im Explorer öffnet der komplette Button das Menü!
![]() |
Re: "echter" Dropdown-Toolbutton...
Du musst auch nicht Popup, sondern DropdownMenu im OI setzen... oder hast du das schon?
mfG mirage228 |
Re: "echter" Dropdown-Toolbutton...
Das hab ich schon :? ...
|
Re: "echter" Dropdown-Toolbutton...
Du kannst im OnClick Ereigniss des Buttons
folgendes angeben:
Code:
Dann Kommt das Menü ganz wie in dem Explorer genau unter dem Button. Wenn du den Button auf Panels sitzen hast und die Left eigenschaft nicht bei 0 liegt musst du die auch noch in die Formel einbauen.
procedure btDropDownClick(Sender: TObject);
begin popmenueDropDownBtn.PopUp(Self.Left + btDropDown.Left + 5, Self.Top + (Self.Hight - Self.ClientHeight) + btDropDown.Top + btDropDown.Height); end; |
Re: "echter" Dropdown-Toolbutton...
@Jonny: Dann hat der Button immernoch nicht den richtigen Style! Ich will auch den blöden "divider" innerhalb des Buttons weg haben... er wäre auch weg, wenn der Style stimmt.
|
Re: "echter" Dropdown-Toolbutton...
Mann könnte höchstens mal einen eigenen Pfeil malen dann in ein BitBtn einfügen und dann wie oben beschrieben verfahren. ist zwar nicht die Eleganteste Lösung es ist aber eine.
|
Re: "echter" Dropdown-Toolbutton...
Nein, solche Basteleien will ich nicht...
Lt. MSDN gibt es einen Style BTNS_WHOLEDROPDOWN =$0080;... nur wie sende ich einem Toolbutton, das ja kein Handle hat, eine Message, dass es diesen Style verwenden soll? |
Re: "echter" Dropdown-Toolbutton...
So gehts:
Delphi-Quellcode:
Wobei iButton der Index des Buttons ist.
uses
CommCtrl; // Nicht vergessen und nicht mit ComCtrls verwechseln procedure TBSetWholeDropDown(hTB : THandle; iButton : integer); var tBB : TTBBUTTON; tBI : TBBUTTONINFO; const BTNS_WHOLEDROPDOWN =$0080; begin FillChar(tBB, SizeOf(tBB), 0); SendMessage (hTB, TB_GETBUTTON, iButton, Integer(@tBB)); FillChar(tBI, SizeOf(tBI), 0); tBI.cbSize := SizeOf(tBI); tBI.dwMask := TBIF_STYLE; SendMessage(hTB, TB_GETBUTTONINFO, tBB.idCommand, Integer(@tBI)); tBI.fsStyle := tBI.fsStyle or BTNS_WHOLEDROPDOWN; SendMessage(hTB, TB_SETBUTTONINFO, tBB.idCommand, Integer(@tBI)); end; procedure TForm1.Button1Click(Sender: TObject); begin TBSetWholeDropDown(ToolBar1.Handle, 0); end; |
Re: "echter" Dropdown-Toolbutton...
Danke ;)
Ich hab den Code noch etwas erweitert, da dieser Style erst ab IE5 verfügbar ist und es mit IE4 (oder früher) zu unerwarteten Verhalten kommen könte:
Delphi-Quellcode:
uses
CommCtrl, Registry; procedure TBSetWholeDropDown(hTB: THandle; iButton: integer); function IEReady: Boolean; var Reg: TRegistry; Tmp: string; begin Result := False; Reg := TRegistry.Create; try Reg.Access := KEY_READ; Reg.RootKey := HKEY_LOCAL_MACHINE; Reg.OpenKey('Software\Microsoft\Internet Explorer', False); Tmp := Reg.ReadString('Version'); if pos('.', Tmp) > 0 then Tmp := copy(Tmp, 1, pos('.', Tmp) - 1); Result := StrToIntDef(Trim(Tmp), 0) >= 5; Reg.CloseKey; finally Reg.Free; end; end; var tBB: TTBBUTTON; tBI: TBBUTTONINFO; const BTNS_WHOLEDROPDOWN = $0080; begin if IEReady then begin FillChar(tBB, SizeOf(tBB), 0); SendMessage(hTB, TB_GETBUTTON, iButton, Integer(@tBB)); FillChar(tBI, SizeOf(tBI), 0); tBI.cbSize := SizeOf(tBI); tBI.dwMask := TBIF_STYLE; SendMessage(hTB, TB_GETBUTTONINFO, tBB.idCommand, Integer(@tBI)); tBI.fsStyle := tBI.fsStyle or BTNS_WHOLEDROPDOWN; SendMessage(hTB, TB_SETBUTTONINFO, tBB.idCommand, Integer(@tBI)); end; end; procedure TForm1.Button1Click(Sender: TObject); begin TBSetWholeDropDown(ToolBar1.Handle, 0); end; |
Re: "echter" Dropdown-Toolbutton...
Ein kleines Schönheitsproblem gibt es noch...
Irgendwie ist der bettr. Toolbutton zu breit geraten: ![]() ...obwohl AutoSize=True ist... Der Pfeil sollte schon näher am Glyphen sein :? |
Re: "echter" Dropdown-Toolbutton...
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
Re: "echter" Dropdown-Toolbutton...
Zitat:
Schau Dir doch die Toolbuttons auf dem Bild mal genauer an ;) ... |
Re: "echter" Dropdown-Toolbutton...
Du wolltest doch, dass das Menü so aufgeht, wie links in deinem Bild oder? Das tut es doch oder nicht?
|
Re: "echter" Dropdown-Toolbutton...
Zitat:
Auch in Deinem Beispiel geht es nicht so wie ich es will... schau Dir doch mal den Code an und sieh Dir an was er bewirkt, dann wirst Du sehen, das die Borlander da tatsächlich etwas wichtiges vergessen haben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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