AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"echter" Dropdown-Toolbutton...

Ein Thema von FriFra · begonnen am 11. Jan 2004 · letzter Beitrag vom 12. Jan 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#1

"echter" Dropdown-Toolbutton...

  Alt 11. Jan 2004, 20:09
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ü!
http://www.frifra.de/Temp/tbtest.jpg
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: "echter" Dropdown-Toolbutton...

  Alt 11. Jan 2004, 20:14
Du musst auch nicht Popup, sondern DropdownMenu im OI setzen... oder hast du das schon?

mfG
mirage228
David F.
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#3

Re: "echter" Dropdown-Toolbutton...

  Alt 11. Jan 2004, 20:22
Das hab ich schon ...
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
jonny

Registriert seit: 15. Dez 2003
235 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: "echter" Dropdown-Toolbutton...

  Alt 11. Jan 2004, 20:40
Du kannst im OnClick Ereigniss des Buttons
folgendes angeben:

Code:
procedure btDropDownClick(Sender: TObject);
begin
  popmenueDropDownBtn.PopUp(Self.Left + btDropDown.Left + 5, Self.Top + (Self.Hight - Self.ClientHeight) + btDropDown.Top + btDropDown.Height);
end;
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.
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#5

Re: "echter" Dropdown-Toolbutton...

  Alt 11. Jan 2004, 20:45
@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.
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
jonny

Registriert seit: 15. Dez 2003
235 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: "echter" Dropdown-Toolbutton...

  Alt 11. Jan 2004, 21:10
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.
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#7

Re: "echter" Dropdown-Toolbutton...

  Alt 11. Jan 2004, 21:16
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?
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#8

Re: "echter" Dropdown-Toolbutton...

  Alt 11. Jan 2004, 21:45
So gehts:
Delphi-Quellcode:
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;
Wobei iButton der Index des Buttons ist.
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#9

Re: "echter" Dropdown-Toolbutton...

  Alt 11. Jan 2004, 22:05
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;
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Benutzerbild von FriFra
FriFra

Registriert seit: 19. Apr 2003
1.291 Beiträge
 
Delphi 2005 Professional
 
#10

Re: "echter" Dropdown-Toolbutton...

  Alt 11. Jan 2004, 23:30
Ein kleines Schönheitsproblem gibt es noch...

Irgendwie ist der bettr. Toolbutton zu breit geraten:
http://www.frifra.de/Temp/tbalign.jpg

...obwohl AutoSize=True ist... Der Pfeil sollte schon näher am Glyphen sein
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 21:41 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