Einzelnen Beitrag anzeigen

Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: TToolbar zeichnet Seperator, obwohl er nicht soll

  Alt 9. Nov 2006, 13:53
Zitat von rider:
Ja, das scheint ein Bug zu sein. Hast du schon mal im Borland Quality Central gestöbert, ob das bereits berichtet wurde?
Nein
Zitat von rider:
Aber warum brauchst du unbedingt einen SpeedButton? Captions kannst du mit dem Property ShowCaptions in der ToolBar auch für normale ToolButtons anzeigen. Auch das neue Property List sieht recht chic aus.
Das habe ich schon geschrieben:
Die Delphi IDE erzeugt automatisch einen TSpeedButton.

btw: ShowCaptions zeigt die Captions aller ToolButtons. Das ist nicht gewünscht.

Zitat von MaBuSE:
Ich verwende die Methode ToolsAPI.INTAServices.AddToolButton aber Delphi erzeugt einen TSpeedbutton statt TToolButton, da ImageIndex = -1 ist. (Es soll die Caption angezeigt werden)
Ich habe das nun wie folgt gelöst:
Der Action habe ich nun ein Imageindex > -1 zugewiesen.
Damit erzeugt die Delphi IDE einen TToolButton und keinen TSpeedButton.
Dann mit AllowTextButtons die Moglichkeit nur bei bestimmtenButtons die Caption anzuzeigen aktiviert.
Den ImageIndex nachträglich wieder auf -1 gesetzt. (Ich will ja kein Bild)
und den TToolButton.Style auf tbsTextButton gesetzt.

-> Funktioniert.

Hier der Quellcode:
Delphi-Quellcode:
constructor TmyClearCaseExpert.Create;
var
  myService: INTAServices;
  tb: TToolbar;
  tc: TControl;
...
begin
  inherited;
...
  if BorlandIDEServices <> nil then
  begin
    if Supports(BorlandIDEServices, INTAServices, myService) then
    begin
...
        // Der Delphi 2006 IDE eine Toolbar hinzufügen
        tb := myService.NewToolbar('myClearCaseToolBar', 'ClearCase', 'CustomToolBar', True);
        tb.AutoSize := True;
        tb.AllowTextButtons := True;
...
        // Buttons hinzufügen
        actCcStatus.ImageIndex := 0; // actCcStatus ist vom Typ TAction;
        tc := myService.AddToolButton('myClearCaseToolBar', 'myCcStatus', actCcStatus);
        actCcStatus.ImageIndex := -1;

        // Wenn ImageIndex = -1 dann ist es ein TSpeedButton
        if (tc is TSpeedButton) then
        begin
          (tc as TSpeedButton).Transparent := False;
        end;

        // Wenn ImageIndex > -1 dann ist es ein TToolButton
        if (tc is TToolButton) then
        begin
          (tc as TToolButton).Style := tbsTextButton;
        end;
...
    end;
  end;
end;
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat