Domanda

Come si può vedere nella mia storia domanda, sto sviluppando un manager eBook, che sarà open-source e io lo distribuirà in circa 10 giorni, ma ho un TRadioGroup, come si può vedere:
TRadioGroup usati sulla mia http://img85.imageshack.us/img85/1830/radiogroup modulo. png

E voglio conservare quarantina in una variabile (che ha bisogno di essere un Integer) che sarà "legato" con questo TRadioGroup.

ho bisogno di fare una funzione if come questo:

  

didascalia della TRadioButton - Number> che dovrà essere memorizzato nella variabile

     

Fit 2xWidth - Default -> 0
  Montare 2xHeight -> 1
  Adatta larghezza -> 2
  Adatta altezza -> 3

Ma ho appena usato un TRadioGroup e un tempo TRadioButton uno, diverso da quello in C # che ho usato più di 20 volte. Allora io voglio sapere che cosa ho bisogno di mettere in funzione di se, perché ciò che farà so già come fare:

var
  num: Integer;

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

Quello che ho bisogno di mettere all'interno delle parentesi della funzione if?

PS: ho intenzione di mettere i crediti sul programma per le persone che mi hanno aiutato in questo piccolo progetto

.
È stato utile?

Soluzione

A TRadioButton ha la proprietà Checked. Ma un TRadioGroup ha la proprietà ItemIndex.

Gli elementi in una TRadioGroup vengono memorizzati utilizzando un TStrings. Così si può associare un oggetto per ogni opzione e si può lanciare un intero ad un TObject da memorizzare.

Esempio:

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

Per leggere l'impostazione corrente:

value := radiogroup.ItemIndex;

O per ottenere il numero intero associati:

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

Nel tuo caso, i valori sono 0-3 in modo da poter utilizzare l'ItemIndex.

Come nota, se non è una funzione. Una funzione è un pezzo di codice che restituisce un valore basato sui parametri di input. Se è una dichiarazione, che è un comando che può essere eseguito. L'istruzione if è speciale perché vi permette di eseguire un'istruzione diversa in base alla condizione di se.

Altri suggerimenti

Solo un po '. SUGGERIMENTO: Impostazione .ItemIndex non invia fuoco della tastiera alla voce della radio, so come risolvere il problema, leggere in anticipo

Invece di selezionare dal codice di una radio in un RadioGroup impostando .ItemIndex è molto meglio farlo inviando attenzione alla voce della radio; tanto per essere molto chiaro:. Voglio dire l'invio di concentrarsi solo per la voce della radio, non l'intero gruppo della radio

Invece di: radiogroup.itemindex:=TheIndex;

Farlo come questo: TRadioButton(radiogroup.Controls[TheIndex]).SetFocus;

Si farà il punto della radio da selezionare e inviare il fuoco della tastiera ad esso , quindi verrà visualizzato il rettangolo tratteggiato arroud, proprio come se l'utente avesse cliccato su di esso.

Nota 1: Per vedere in azione l'uso della tastiera tasti cursore e confrontare behavor di appena impostazione .ItemIndex e l'invio di attenzione alla voce della radio

.

Nota 2:. Se si utilizza TRadioButton(radiogroup.Controls[TheIndex]).SetFocus; allora non c'è alcuna necessità di impostare .ItemIndex a tutti, sarà anche essere fatto

La speranza che aiuta qualcuno che ha lo stesso problema di me, quando necessario impostarla dal codice, per esempio per evitare behavor tastiera circolare, ad esempio, per renderlo di rimanere in ultimo elemento radio quando ultima voce di radio viene selezionato e destra della tastiera si preme cursore stesso per primo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top