Frage

Wie Sie in meiner Fragenhistorie sehen können, entwickle ich einen E-Book-Manager, das wird Open-Source sein und ich werde ihn in ungefähr 10 Tagen veröffentlichen, aber ich habe eine TRadioGroup, wie du sehen kannst:
TradioGroup verwendet in meinem Formular http://img85.imageshack.us/img85/1830/radioGroup.png

Und ich möchte etwas in einer Variablen speichern (das muss a sein Integer) Das wird damit "verknüpft" TRadioGroup.

Ich muss a machen if Funktion wie diese:

Bildunterschrift des TradioButton -> Nummer, der in der Variablen gespeichert werden muss

FIT 2XWIDTH - Standard -> 0
Fit 2xHeight -> 1
Anpassungsbreite -> 2
Anpassungshöhe -> 3

Aber ich habe gerade eine benutzt TRadioGroup und ein TRadioButton Einmal, anders als in C#, das ich mehr als 20 Mal verwendet habe. Dann möchte ich wissen, was ich auf die Funktion machen muss, denn was es tun wird, weiß ich bereits, wie es geht:

var
  num: Integer;

begin
  if(TRadioButton1 checked?)
  begin
    num := 0;
  end;
end.

Was ich in die Halterungen der Klammern legen muss if Funktion?

PS: Ich werde das Programm für die Leute, die mir in diesem kleinen Projekt geholfen haben, den Credits aufstellen.

War es hilfreich?

Lösung

Ein Tradiobutton hat die überprüfte Immobilie. Aber eine TradeioGroup hat die ItemIndex -Eigenschaft.

Die Elemente in einer TradioGroup werden unter Verwendung eines TStrings gespeichert. Sie können also ein Objekt jeder Option in Verbindung bringen und eine Ganzzahl in ein Tobjekt geben, das gespeichert werden soll.

Beispiel:

// fill the radiogroup
radiogroup.Items.AddObject('Fit 2xWidth', TObject(0));
radiogroup.Items.AddObject('Fit 2xHeight', TObject(1));
radiogroup.Items.AddObject('Fit Width', TObject(2));
radiogroup.Items.AddObject('Fit Height', TObject(3));
radiogroup.ItemIndex := 0;

So lesen Sie die aktuelle Einstellung:

value := radiogroup.ItemIndex;

Oder um die zugehörige Ganzzahl zu bekommen:

index := radiogroup.ItemIndex;
Assert(index>=0); // Sanity check
value := Integer(radiogroup.Items.Objects[index]);

In Ihrem Fall sind die Werte 0 bis 3, sodass Sie den ItemIndex verwenden können.

Als Notiz ist es keine Funktion. Eine Funktion ist ein Code, der einen Wert zurückgibt, der auf den Eingabeparametern basiert. Wenn es sich um eine Anweisung handelt, die ein Befehl ist, der ausgeführt werden kann. Die IF -Anweisung ist besonders, da Sie eine andere Anweisung basierend auf der IF -Bedingung ausführen können.

Andere Tipps

Nur ein kleiner Tipp: Einstellung .ItemIndex Sendet keinen Fokus auf den Funkelement, ich weiß, wie man es behebt, und lesen Sie im Voraus.

Anstatt nach dem Code ein Radio in einer RadioGroup durch Einstellung zu wählen .ItemIndex Es ist viel besser, es zu tun, indem es den Fokus an den Funkelement sendet. Nur um sehr klar zu sein: Ich meine, ich sende den Fokus nur an das Radioartikel, nicht die gesamte Radiogruppe.

Anstatt von: radiogroup.itemindex:=TheIndex;

Mach es so: TRadioButton(radiogroup.Controls[TheIndex]).SetFocus;

Dadurch wird das Funkelement ausgewählt und Senden Sie den Fokus der Tastatur darauf, Daher wird das gepunktete Rechteck angewiesen, als hätte der Benutzer darauf geklickt.

Hinweis 1: Um es in Aktion anzuzeigen .ItemIndex und Fokus an Radioartikel senden.

Note2: Wenn Sie verwenden TRadioButton(radiogroup.Controls[TheIndex]).SetFocus; Dann gibt es nicht nötig zu setzen .ItemIndex Es wird auch auch getan.

Ich hoffe, das hilft jemandem, der das gleiche Problem wie ich hat, wenn ich es durch Code festlegen muss, zum Beispiel, um ein kreisförmiges Tastaturverhalten zu vermeiden, zum Beispiel, um es im letzten Radio zu bleiben, wenn der letzte Radioelement ausgewählt ist und der rechte Cursor der Tastatur gedrückt wird , gleich für den ersten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top