Einzelnen Beitrag anzeigen

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, 23: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