Pergunta

Como você pode ver na minha história de perguntas, estou desenvolvendo um gerente de e-book, que será de código aberto e o lançarei em cerca de 10 dias, mas eu tenho um TRadioGroup, como você pode ver:
TRADIOGROUP Usado no meu formulário http://img85.imageshack.us/img85/1830/radiogroup.png

E eu quero armazenar algo em uma variável (que precisa ser um Integer) que estará "vinculado" a isso TRadioGroup.

Eu preciso fazer um if função assim:

Legenda do Tradiobutton -> Número que precisará ser armazenado na variável

FIT 2XWidth - Padrão -> 0
Ajuste 2xHeight -> 1
Largura de ajuste -> 2
Altura de ajuste -> 3

Mas eu acabei de usar um TRadioGroup e a TRadioButton Uma vez, diferente de C# que usei mais de 20 vezes. Então eu quero saber o que preciso colocar na função IF, porque o que vai fazer eu já sei como fazer:

var
  num: Integer;

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

O que eu preciso colocar dentro dos colchetes do if função?

PS: Vou colocar os créditos no programa para as pessoas que me ajudaram neste pequeno projeto.

Foi útil?

Solução

Um Tradiobutton tem a propriedade verificada. Mas um tradiogrupo possui a propriedade ItemIndex.

Os itens em um tradiogrupo são armazenados usando um TSTRINGS. Assim, você pode associar um objeto a cada opção e ele pode lançar um número inteiro para um objeto para ser armazenado.

Exemplo:

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

Para ler a configuração atual:

value := radiogroup.ItemIndex;

Ou para obter o número inteiro associado:

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

No seu caso, os valores são de 0 a 3 para que você possa usar o itemIndex.

Como nota, se não for uma função. Uma função é uma peça de código que retorna um valor com base nos parâmetros de entrada. Se for uma declaração, que é um comando que pode ser executado. A instrução IF é especial porque permite executar uma instrução diferente com base na condição if.

Outras dicas

Apenas uma pequena dica: configuração .ItemIndex Não envia foco no teclado para o item de rádio, eu sei como corrigi -lo, leia com antecedência.

Em vez de selecionar por codificar um rádio em um radiograma, configurando .ItemIndex É muito melhor fazê -lo enviando foco para o item de rádio; Só para ser muito claro: quero dizer, enviando foco apenas para o item de rádio, não para todo o grupo de rádio.

Ao invés de: radiogroup.itemindex:=TheIndex;

Faça assim: TRadioButton(radiogroup.Controls[TheIndex]).SetFocus;

Isso fará com que o item de rádio seja selecionado e Envie o foco do teclado para ele, por isso exibirá o controle de retângulo pontilhado, como se o usuário tivesse clicado nele.

Nota 1: Para vê -lo em ação, use as teclas do cursor do teclado e compare o comportamento de apenas configurar .ItemIndex e enviando foco para o item de rádio.

Nota2: Se você usa TRadioButton(radiogroup.Controls[TheIndex]).SetFocus; Então não há necessidade de definir .ItemIndex de jeito nenhum, também será feito.

Espero que ajude alguém a ter o mesmo problema que eu, quando precisar defini -lo por código, por exemplo, para evitar o comportamento circular do teclado, por exemplo, para que ele permaneça no último item de rádio quando o último item de rádio é selecionado e o cursor direito do teclado é pressionado , o mesmo para primeiro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top