2009-11-19 10 views
5

Ich benutze Beyond Compare (ein großartiges Programm), und war sehr beeindruckt, als es eine "New Version Available" -Label auf seiner Menüleiste angezeigt. Ich habe darauf geklickt, eine neue Install-Version-Box gepoppt, es installiert, das Programm neu gestartet und da war die neue Version und kein Label mehr.Wie füge ich ein TLabel zur Menüleiste in Delphi hinzu?

Ich dachte, das war ein großartiges Feature. Das Etikett ist dort prominent in der Menüleiste, wo der Benutzer es nicht verpassen kann. Ich habe bereits das Update-Verfahren, also musste ich nur noch das Label hinzufügen. Das sollte einfach sein.

Hier ist das Label, wo ich es will: The Label Where I Want It http://www.beholdgenealogy.com/img/tlabel.jpg

... Falsch. Ich konnte nicht herausfinden, wie man dort ein Label hinzufügt. Die Menüleiste und der darüber liegende Kontrollbereich erscheinen als Freihandbereich für visuelle Komponenten. Ich konnte dort keinen platzieren.

Aber ich weiß, dass es getan werden kann, denn Beyond Compare ist ein Delphi-Programm.

Kann mir jemand sagen, was ich tun muss, um ein TLabel in meine Menüleiste zu setzen oder es zumindest über der Menüleiste in der richtigen Position erscheinen zu lassen?

Als Referenz benutze ich Delphi 2009.


Fazit: Christopher scheint richtig gedacht zu haben, was das Jenseits Menschen vergleichen tat. Ich habe mich entschieden, den Menüeintrag zu implementieren, aber ohne die Anpassung seiner Lösung "Owner Draw". So bekomme ich nicht den blauen fett unterstrichenen Hyperlink-Look, aber ich verliere auch nicht alle automatischen Dinge (wie der Vista-Stil), die der Besitzer überspringt.

Um den Menüeintrag nach rechts zu platzieren, habe ich ein Element nach der "Hilfe" mit der Beschriftung "" hinzugefügt und ist deaktiviert.

Danke, Christopher. Ich dachte, es müsste ein Label sein, aber du hast es gesehen.

+1

Sind Sie sicher, dass Beyond Compare das native Menü (TMainMenu) verwendet. Vielleicht ist es ein Drittanbieter-Menü (Toolbar2000, DevEx, ...). –

+0

Ulrich: Ich weiß nicht, was Beyond Compare verwendet. Ich weiß nur, dass es mit Delphi entwickelt wurde. – lkessler

+1

Wenn es mit Delphi gemacht wird, sollte es einfach sein zu finden, welche Komponente durch die Überprüfung der Ressourcen verwendet wird. – Vegar

Antwort

13

Sind Sie sicher, dass es ein Etikett ist?

Ich habe das Programm nicht benutzt, aber es könnte nur ein Menüelement sein, auf 'Besitzer zeichnen' gesetzt und so gemalt, dass es wie ein Link aussieht?

http://sirmonkeys.com/images/updatelink.png
(done in Delphi 7)

procedure TForm1.MYITem1DrawItem(Sender: TObject; ACanvas: TCanvas; 
    ARect: TRect; Selected: Boolean); 
begin 
    acanvas.Font.Style := [fsUnderline,fsbold]; 
    acanvas.Font.color := clblue; 
    acanvas.Brush.Style := bsClear; 
    acanvas.TextOut(arect.left+1,arect.top+1,'Link to Update...'); 
end; 

procedure TForm1.MYITem1MeasureItem(Sender: TObject; ACanvas: TCanvas; 
    var Width, Height: Integer); 
begin 
    width := 100; 
end; 

und dann entweder a haben eine ImageList zugewiesen MainMenu1.Images oder MainMenu1.OwnerDraw zu true gesetzt.

+0

Das könnte möglich sein. Ich werde es versuchen. – lkessler

+0

Jetzt bin ich sicher, dass du recht hast. Vielen Dank. P. S., meine Beschleuniger (die Unterstreichungen unter den Buchstaben) sind verschwunden. Aber dein Beispiel hat sie. Wie bekomme ich sie zurück? Ich habe bereits die & als Teil ihrer Beschriftung. – lkessler

+1

Beschleuniger erscheinen automatisch, wenn Sie sich so verhalten, als würden Sie die Tastatur benutzen, um das Menü zu aktivieren, was bedeutet, dass Sie die Alt-Taste drücken müssen. Wahrscheinlich hat Christoph Alt + PrntScr gedrückt, um das Bild zu machen, so dass die Beschleunigeranzeigen erschienen. Dies ist seit etwa 10 Jahren das Standardverhalten von Windows. Wenn Sie sie ständig anzeigen möchten, passen Sie die Anzeigeeinstellungen im OS-Bedienfeld an. –

2

Beyond Compare Implementierung ist eigentlich ein TLabel. Wir verwenden Toolbar 2000 für unsere Menüs und Symbolleisten, so dass ein Steuerelement direkt in das Menü eingebettet wird (mit einem korrekten Hintergrund), und es hat den Vorteil, dass es rechtsbündige Menüelemente unterstützt.

+0

Danke, Craig. Also ist es eigentlich ein Label. Sie haben technisch die richtige Antwort (mit Toolbar 2000), aber ich habe es bereits als ungefärbtes Menüelement implementiert, also überlasse ich die akzeptierte Antwort mit Christopher. Ich wusste nicht, dass du hier bei StackOverflow warst. Liebe dein Jenseits Vergleiche. Ich benutze es, um meine Versionen zu vergleichen, meine Website zu aktualisieren und meine Backups zu machen. – lkessler