Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.283 Beiträge
 
Delphi 12 Athens
 
#1

SpTBXLib - Menu-Items rechts anordnen

  Alt 18. Apr 2013, 15:42
Manchmal ist es nötig, einzelne Items in einer MenuBar rechtsbündig anzuordnen. Zum Beispiel die MDI-Buttons in der Menüzeile oder (in alter Zeit) den Menüeintrag "Hilfe", welcher sich immer am rechten Fensterrand befand.

Die SpTBXLib bietet in ihrer aktuellen Form keine direkte Möglichkeit, das zu realisieren. Die zugrunde liegende Toolbar 2000 dagegen schon. Leider sind die entsprechenden Schnittstellen protected. Man muss sie eigentlich nur sichtbar machen.

Zuerst erstellen wir uns ein Formular und darauf ein TSpTBXDock mit einer TSpTBXToolbar. Die Eigenschaft "MenuBar" der Toolbar setzen wir auf TRUE. Der Toolbar fügen wir wie gewohnt zwei TSpTBXItems namens "btn1" und "btn2" hinzu. Unser Code sieht damit wie folgt aus:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, TB2Item, SpTBXItem, TB2Dock, TB2Toolbar;

type
  TForm1 = class(TForm)
    dkTop: TSpTBXDock;
    tbMain: TSpTBXToolbar;
    btn1: TSpTBXItem;
    btn2: TSpTBXItem;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.
Jetzt fügen wir im implementation-Bereich eine neue Klassendeklaration hinzu, welche die entscheidende Property sichtbar macht:
Delphi-Quellcode:
implementation

{$R *.dfm}

type
  TMySpTBXItem = class(TSpTBXItem)
  public
    property ItemStyle;
  end;

end.
Zuletzt erstellen wir einen Handler für das OnCreate-Ereignis des Formulars und weisen dem zweiten TSpTBXItem in der Toolbar das entsprechende Style-Flag zu:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  TMySpTBXItem(btn2).ItemStyle:= TMySpTBXItem(btn2).ItemStyle + [tbisRightAlign];
end;
Voila: Beim nächsten Start der Anwendung klebt der MenuItem an der rechten Seite (siehe Screenshot).
Miniaturansicht angehängter Grafiken
1.png  
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden

Geändert von Codehunter (18. Apr 2013 um 15:44 Uhr)
  Mit Zitat antworten Zitat