2009-09-13 7 views
5

Ich habe viele mit RibbonApplicationMenuBar verbundene Methoden ausprobiert, um zu verhindern, dass ein Benutzer die RibbonApplicationMenuBar mit einer Maus auswählt, bis die Projekteinstellungen von einer Inifile geladen und ein Splashform geschlossen wird. Aber nichts scheint zu funktionieren, um die RibbonApplicationMenuBar InActive zu machen, bis etwas anderes gesagt wird.Wie mache RibbonApplicationMenuBar inaktiv/aktiv?

Die Hilfe-Datei zeigt nichts über viele der Eigenschaften von RibbonApplicationMenuBar und das Hilfe-Wiki das gleiche, so dass ich nicht lösen kann.

procedure TMainForm.FormCreate(Sender: TObject); 
begin 
    // make theRibbonApplicationMenuBar1 inactive 
    RibbonApplicationMenuBar1.Enabled := False; 
    RibbonApplicationMenuBar1.Inactive := True; 
    RibbonApplicationMenuBar1.Hide; 
    RibbonApplicationMenuBar1.AutoFocus := False; 
    // read application settings 
    ReadIni(AIniFileFilename); 
    // show a splash form 
    FormSplash := TFormSplash.Create(MainForm); 
    // FormSplash.Parent := MainForm; 
    FormSplash.Position := poOwnerFormCenter; 
    FormSplash.Show; 
    FormSplash.Update; 
end; 


procedure TMainForm.FormShow(Sender: TObject); 
begin 
    // close the splash form 
    FormSplash.RequestClose; 
    // Activate the RibbonApplicationMenuBar 
    RibbonApplicationMenuBar1.Enabled := True; 
    RibbonApplicationMenuBar1.Inactive := False; 
    if RibbonApplicationMenuBar1.CanFocus then 
    RibbonApplicationMenuBar1.SetFocus; 
    RibbonApplicationMenuBar1.AutoFocus := True; 
    RibbonApplicationMenuBar1.SelectApplicationButton; 
    RibbonApplicationMenuBar1.Show; 
end; 

Sofern die RibbonApplicationMenuBar inaktiv ist der Benutzer kann die RibbonApplicationMenuBar auswählen, bevor sie bereit ist, ausgewählt werden. Irgendwelche Vorschläge werden geschätzt. Ich weiß, dass alle hier gezeigten Methoden nicht korrekt oder möglicherweise nicht in der richtigen Reihenfolge sind ... es ist nur mein Versuch zu verhindern, dass die RibbonApplicationMenuBar aktiv und anklickbar wird, bis das Splash-Formular geschlossen wird.

Danke,

Bill

+0

Warum zeigen Sie den Begrüßungsbildschirm nicht modal? Das verhindert jegliche Interaktion mit anderen Formen. –

+0

Microsoft-Anwendungen Ribbonbar wird nicht aktiv, bis die Anwendung vollständig geladen ist ... ich versuche nur, das zu duplizieren. Ich möchte keinen modalen Begrüßungsbildschirm. –

+0

Ich benutze nicht das Ribbon von Delphi, aber was ist mit der Verknüpfung von Ribbon-Elementen zu Aktionen. Dann können Sie die Aktion einfach aktivieren/deaktivieren oder sogar ausblenden. Ich stimme zu, dass die Ribbon-Benutzeroberfläche sich nicht so verhalten sollte. – Mihaela

Antwort

0

Es genügt TRibbon.Enabled auf False zu setzen alle Ribbon Aktionen (getestet mit XE3) zu deaktivieren. Der einfachste Weg ist falsch in der Entwurfszeit gesetzt. Setzen Sie es zum Beispiel True von OnHide Ihres Splash-Formulars. Beenden Sie den Splash nur, wenn alle Hintergrundaktivitäten ausgeführt wurden.