2009-03-20 11 views
1

Je souhaite que mon Form1 dispose d'un bouton Options qui ouvre Form2. En Form2, il y aura 3 boutons radio. Lorsqu'un bouton radio est poussé, j'ai besoin l'un de mes procédures pour vérifier l'utilisation:Créer un formulaire d'options dans Delphi

if (RadioButton1.Pushed) then begin 

pour elle de continuer avec une partie du code, ou si Radiobutton2 est poussé, une autre partie, et ainsi de suite. La chose est, je n'ai aucune idée par où commencer. Aucune suggestion?

+0

Montrez-nous ce que vous avez déjà. Nous n'allons pas faire votre travail scolaire pour vous. –

+0

Vous ne savez pas par où commencer? Commencez par mettre le bouton d'option sur Form1. Si vous avez déjà fait cela, alors vous savez par où commencer, alors quelle est la prochaine étape? Dans quelle partie de la tâche avez-vous vraiment des problèmes? Parler d'un problème vous aidera à mieux le comprendre, ainsi que tout le monde. –

+0

Je sais que l'aide de Delphi est lente dans les versions récentes, mais elle est certainement encore plus rapide que d'aller à StackOverflow pour des réponses - alors pourquoi ne pas l'essayer en premier? Cela vous aidera à déterminer que les boutons radio n'ont pas de propriété Poussée, par exemple. – mghie

Répondre

3

Vous pouvez utiliser cet extrait:

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

Si cela va être une application plus, vous devriez envisager de créer un paramètres objet global, qui peut être modifié par votre écran d'options et est lu par les procédures qui doivent connaître certains paramètres.

Important: L'accès direct à vos formulaires à partir de votre code augmente simplement le couplage. Lorsque votre application sera un peu grande, ce sera un cauchemar pour l'entretenir.

// 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; 

Vous pouvez également ajouter des méthodes à votre config objet uration pour enregistrer les paramètres sur le disque et les recharger la prochaine fois que votre application démarre. D'autres ont suggéré d'utiliser un RadioGroup, mais personnellement je ne les aime pas comme solution à long terme, parce que je les trouve difficiles à adapter à mes besoins personnels d'interface utilisateur. (Surtout les frontières et les distances) Ils peuvent aussi devenir problématiques si un jour vous souhaitez réorganiser les éléments ou insérer un nouvel élément ailleurs qu'à la fin: Soudain, ItemIndex 2 signifie quelque chose de complètement différent :) Mais comme une solution rapide et sale ils sont sûrs sont utiles.

5

Il pourrait être plus facile d'utiliser un groupe radio. Ensuite, vous pouvez simplement définir vos options en ajoutant à la liste des éléments dans l'inspecteur d'objets. Vous pouvez dire à quel bouton a été fixé en regardant le ItemIndex comme:

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

Vous ne devez pas utiliser un RadioGroup. Tous les boutons d'un contrôle fenêtré auront la propriété d'exclusion mutuelle que vous attendez d'un ensemble de RadioButtons.

Jack

+0

Gardez à l'esprit que l'index de l'élément commence à compter à zéro, pas un. –

2

Donc, pour reformuler votre question un peu, vous dites que

En appuyant sur un bouton radio met mon application dans un certain état. Ensuite, en fonction de cet état, je veux exécuter un code spécifique.

Lorsqu'il est exprimé comme ceci, il devient très simple. Dans le cas de la réponse de Jack, il suggère (à juste titre) qu'un moyen simple (interroger l'état) est d'utiliser un groupe radio. La propriété ItemIndex vous indique l'état des boutons.

Questions connexes