2009-11-19 14 views
5

Io uso Beyond Compare (un ottimo programma) e sono rimasto molto impressionato quando ha visualizzato un'etichetta "Nuova versione disponibile" nella barra dei menu. Ho cliccato su di esso, è spuntato un box di installazione nuova versione, è stato installato, il programma è stato riavviato da solo e c'era la nuova versione e non più l'etichetta.Come aggiungo un TLabel alla barra dei menu in Delphi?

Ho pensato che fosse una grande caratteristica. L'etichetta è lì in primo piano sulla barra dei menu dove l'utente non può mancare. Ho già ricevuto la procedura di aggiornamento, quindi tutto ciò che dovevo fare era aggiungere l'etichetta. Dovrebbe essere facile

Ecco l'etichetta dove voglio: The Label Where I Want It http://www.beholdgenealogy.com/img/tlabel.jpg

... Sbagliato. Non riuscivo a capire come aggiungere un'etichetta lì. La barra dei menu e l'area di controllo sopra sembra essere un'area hands-off per i componenti visivi. Non potrei metterne uno lì.

Ma so che si può fare, perché Beyond Compare è un programma Delphi.

Qualcuno può dirmi cosa devo fare per inserire un TLabel nella barra dei menu o almeno farlo apparire sopra la barra dei menu nella posizione corretta?

Per avere un riferimento, io uso Delphi 2009.


Conclusione: Christopher sembra essere correttamente capito che cosa la gente ha fatto Beyond Compare. Ho deciso di implementare la voce di menu, ma senza la personalizzazione della sua soluzione "owner draw". Quindi non ottengo l'aspetto grassetto sottolineato per i collegamenti ipertestuali, ma non perdo tutte le cose automatiche (come lo stile di Vista) che il proprietario disegna salti.

Per spaziare la voce di menu sulla destra, ho aggiunto una voce dopo la "Guida" che ha la didascalia "" ed è disabilitata.

Grazie, Christopher. Ero bloccato pensando che dovesse essere un'etichetta, ma hai visto intorno.

+1

Sei sicuro che Beyond Compare utilizza il menu nativo (TMainMenu). Forse è un menu di terze parti (Toolbar2000, DevEx, ...). –

+0

Ulrich: Non so cosa usi Beyond Compare. So solo che è stato sviluppato con Delphi. – lkessler

+1

Se è stato creato con delphi, dovrebbe essere facile trovare facilmente quale componente viene utilizzato ispezionando le risorse. – Vegar

risposta

13

Sei sicuro che sia un'etichetta?

Non ho usato il programma, ma potrebbe essere solo una voce di menu, impostato su "owner draw" e dipinto per sembrare un collegamento?

http://sirmonkeys.com/images/updatelink.png
(fatto 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; 

e quindi sia un avere un ImageList assegnato MainMenu1.Images o impostare MainMenu1.OwnerDraw a true.

+0

Questo potrebbe essere possibile. Ci proverò. – lkessler

+0

Ora sono sicuro che hai ragione. Grazie. P.S., i miei acceleratori (le sottolineature sotto le lettere) sono spariti. Ma il tuo esempio li ha dentro. Come posso riaverli indietro? Ho già ottenuto il & come parte della loro didascalia. – lkessler

+1

Gli acceleratori vengono visualizzati automaticamente quando si agisce come se si desidera utilizzare la tastiera per attivare il menu, che significa premere il tasto Alt. Probabilmente Christopher ha premuto Alt + PrntScr per creare l'immagine, quindi sono comparsi gli indicatori dell'acceleratore. Questo è stato il comportamento predefinito di Windows per circa 10 anni. Se si desidera che siano sempre visibili, regolare le impostazioni dello schermo nel pannello di controllo del sistema operativo. –

2

Oltre l'implementazione di Compare è in realtà un TLabel. Utilizziamo Toolbar 2000 per i nostri menu e le barre degli strumenti, quindi è supportato l'incorporamento di un controllo direttamente nel menu (con uno sfondo corretto) e ha il vantaggio di supportare voci di menu giustificate.

+0

Grazie, Craig. Quindi in realtà è un'etichetta allora. Hai tecnicamente la risposta corretta (usando Toolbar 2000), ma l'ho già implementata come voce di menu non colorata, quindi lascerò la risposta accettata con Christopher. Non sapevo che fossi qui a StackOverflow. Love your Beyond Compare. Lo uso per confrontare le mie versioni, aggiornare il mio sito Web e fare i miei backup. – lkessler

Problemi correlati