2009-03-20 4 views
1

Ich möchte, dass mein Form1 eine Schaltfläche Optionen hat, die Form2 öffnet. In Form2 gibt es 3 Optionsfelder. Wenn ein Radioknopf gedrückt wird, muss ich eine meiner Verfahren unter Verwendung überprüfen:Erstellen Sie ein Optionsformular in Delphi

if (RadioButton1.Pushed) then begin 

für sie mit einem Teil des Codes, um fortzufahren, oder wenn Radiobutton2 gedrückt wird, einen anderen Teil, und so weiter. Die Sache ist, ich habe keine Ahnung, wo ich anfangen soll. Irgendwelche Vorschläge?

+0

Zeigen Sie uns, was Sie bisher haben. Wir werden deine Hausaufgaben nicht für dich machen. –

+0

Sie haben keine Ahnung, wo Sie anfangen sollen? Beginnen Sie, indem Sie das Optionsfeld auf Form1 setzen. Wenn Sie das bereits getan haben, dann wissen Sie, wo Sie anfangen sollen, also was kommt als nächstes? Mit welchem ​​Teil der Aufgabe hast du wirklich Probleme? Wenn Sie über ein Problem sprechen, werden Sie es besser verstehen, genauso wie alle anderen auch. –

+0

Ich weiß, dass die Delphi-Hilfe in den letzten Versionen langsam ist, aber es ist sicherlich noch schneller als nach StackOverflow für Antworten zu gehen - warum also nicht zuerst versuchen? Dies würde Ihnen helfen festzustellen, dass Optionsfelder beispielsweise keine Pushed-Eigenschaft haben. – mghie

Antwort

3

Sie diese Schnipsel verwenden können:

if Form2.RadioButton1.Checked then 
begin 
    // Do something 
end else 
if Form2.RadioButton2.Checked then 
begin 
    // Do something else 
end; 

Wenn dies eine größere Anwendung sein wird, sollten Sie eine globale Einstellungen Objekt erstellen betrachten, die durch Optionen Bildschirm geändert werden kann und wird gelesen von die Verfahren, die über bestimmte Einstellungen wissen müssen.

Wichtig: Der direkte Zugriff auf Ihre Formulare über den gesamten Code erhöht die Kopplung. Wenn Ihre Anwendung ein wenig zu groß wird, wird es ein Albtraum sein, es zu erhalten.

// Form2 
Config.DoSomething = RadioButton1.Checked 
Config.DoSomethingElse = RadioButton2.Checked 

// Form1 
if Config.DoSomething then 
begin 
    // Do something 
end else 
if Config.DoSomethingElse then 
begin 
    // Do something else 
end; 

Sie könnten auch Methoden zu Ihrem config uration Objekt hinzufügen, um die Einstellungen auf der Festplatte zu speichern und sie bei der nächsten Anwendung startet neu laden.

Andere empfahlen die Verwendung einer RadioGroup, aber persönlich mag ich sie nicht als eine langfristige Lösung, weil ich finde sie schwer auf meine persönlichen UI Bedürfnisse anzupassen. (Meist Grenzen und Abstände) Sie können auch problematisch werden, wenn Sie eines Tages die Gegenstände neu anordnen oder einen neuen Gegenstand irgendwo anders als das Ende einfügen möchten: Plötzlich ItemIndex 2 bedeutet etwas völlig anderes :) Aber als eine schnelle und schmutzige Lösung sie sicher sind nützlich.

5

Es könnte einfacher sein, eine RadioGroup zu verwenden. Dann können Sie Ihre Optionen einfach festlegen, indem Sie im Objektinspektor zur Objektliste hinzufügen. Sie können an der ItemIndex eingestellt ist wie sagen, welche Taste, indem Sie:

Case MyRadioGroup.ItemIndex of 
    1: DoSomething; 
    2: DoSomethingElse; 
    3: DoAnotherThing; 
End; 

Sie keine Radiogroup verwenden. Alle Schaltflächen in einem Fenstersteuerelement verfügen über die Eigenschaft zum gegenseitigen Ausschluss, die von einer Reihe von RadioButtons erwartet wird.

Jack

+0

Beachten Sie, dass der Artikelindex bei null zu zählen beginnt, nicht bei einem. –

2

So neu Phrase Ihre Frage etwas, sagen Sie, dass

Drücken einer Optionsfeld setzt meine Anwendung in einem bestimmten Zustand. Später, basierend auf diesem Zustand, möchte ich einen bestimmten Code ausführen.

Wenn es so formuliert wird, wird es sehr einfach. Im Fall von Jacks Antwort schlägt er (zu Recht) vor, dass ein einfacher Weg (um den Zustand abzufragen) darin besteht, eine Funkgruppe zu verwenden. Die ItemIndex-Eigenschaft teilt Ihnen den Status der Schaltflächen mit.

Verwandte Themen