Fórum RadioGroup, cada vez pressionada tecla altera os items #348051
27/10/2007
0
Gostaria de saber como posso fazer o seguinte:
Eu tenho um RadioGroup com 4 Items, certo!
Utilizo um ActionList e atribuo a ShorCut := F7
Oque quero, é que cada vez que eu pressionar F7 ele altere a posição dos Items no meu RadioGroup.
Exemplo:
Inicio meu Form.
RadioGroup := 0
Pressiono F7
RadioGroup := 1
Pressiono novamente F7
RadioGroup := 2
Pressiono novamente F7
RadioGroup := 3
Será que os amigos podem me ajudar?
Agradeço.
Att.
Devmedia
Curtir tópico
+ 0Posts
27/10/2007
Alecsandro Moura
Bom usando uma action list eu não sei como te ajudar, mas dá para fazer da seguinte maneira:
public
{ Public declarations }
end;
var
Form1: TForm1;
//Aqui vc coloca uma varialvel para controlar a entrada do focu no componente
controle :Integer;
implementation
Depois no OnEnter do RadioGroup coloca
begin controle := 1; end;
depois no OnExit do RadioGroup
begin controle := 0; end;
depois mude o keyPreview do form para true
e depois no OnKeyDown do form faça:
var tecla :Integer; begin if (controle = 1) and(Key = VK_F7) Then begin tecla := RadioGroup1.ItemIndex; RadioGroup1.ItemIndex := tecla + 1; if tecla = RadioGroup1.Items.Count -1 Then RadioGroup1.ItemIndex := 0; end; end;
Bom pelo menos dessa maneira dá para fazer o que vc deseja. :wink:
espero ter ajudado :D
Gostei + 0
27/10/2007
Marco Salles
particularmente gosto de concentrar os meus codigos facilita a manutenção
Adicione um componente TApplicationEvents no Projeto e no seu evento
ShortCut escreva..
procedure TForm1.ApplicationEvents1ShortCut(var Msg: TWMKey; var Handled: Boolean); begin if msg.CharCode = vk_F7 then with RadioGroup1 do if itemIndex = componentCount-1 then itemIndex:=0 else itemIndex:=itemIndex+1; end;
P:S Se não quiser disparar o evento OnClick do RadioGroup deve desabilita-lo temporariamente
Gostei + 0
27/10/2007
Devmedia
Deu certo.
Fiz algumas modificações no codigo.
Porque eu preciso de colocar mudanças em outros componentes apartir do Item selecionado no meu RadioGroup. Falo no OnClick do RadioGroup.
Segue a modificação:
procedure TFormProdutosPesquisa.FormShow(Sender: TObject); begin //Ao iniciar o Form, manda o foco para RadioGroupOpcaoProdutosPesquisa RadioGroupOpcaoProdutosPesquisa.SetFocus; //Fim do Codigo. end;
procedure TFormProdutosPesquisa.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); var Tecla : Integer; begin [color=blue]If Key = VK_F7 then Begin RadioGroupOpcaoProdutosPesquisa.SetFocus; end; [/color] If (Controle = 1) and (Key = VK_F7) Then begin Tecla := RadioGroupOpcaoProdutosPesquisa.ItemIndex; RadioGroupOpcaoProdutosPesquisa.ItemIndex := Tecla + 1; If Tecla = RadioGroupOpcaoProdutosPesquisa.Items.Count -1 Then RadioGroupOpcaoProdutosPesquisa.ItemIndex := 0; end; end;
Meu Onclick do RadioGroup:
If RadioGroupOpcaoProdutosPesquisa.ItemIndex = 0 then Begin LabelTextoPorOpcaoProdutosPesquisa.Caption := ´Digite aqui o NOME a ser pesquisado:´; EditDigiteProdutosPesquisa.MaxLength := 30; EditDigiteProdutosPesquisa.SetFocus; end; If RadioGroupOpcaoProdutosPesquisa.ItemIndex = 1 then Begin LabelTextoPorOpcaoProdutosPesquisa.Caption := ´Digite aqui a REFERÊNCIA a ser pesquisado:´; EditDigiteProdutosPesquisa.MaxLength := 6; EditDigiteProdutosPesquisa.SetFocus; end; If RadioGroupOpcaoProdutosPesquisa.ItemIndex = 2 then Begin LabelTextoPorOpcaoProdutosPesquisa.Caption := ´Digite aqui o CÓDIGO SEQUÊNCIA a ser pesquisado:´; EditDigiteProdutosPesquisa.MaxLength := 6; EditDigiteProdutosPesquisa.SetFocus; end; If RadioGroupOpcaoProdutosPesquisa.ItemIndex = 3 then Begin LabelTextoPorOpcaoProdutosPesquisa.Caption := ´Digite aqui o CÓDIGO DE BARRA a ser pesquisado ou utilize a Leitora:´; EditDigiteProdutosPesquisa.MaxLength := 13; EditDigiteProdutosPesquisa.SetFocus; end;
Agora porque fiz isto?
Porque toda vez que teclava F7 ele fazia oque foi prometido, mas não retornava o Focu para o RadioGroup. Com isso não retornava para alterar o Item desejado.
Muito obrigado pela ajuda.
Att.
Gostei + 0
27/10/2007
Devmedia
Estes colors foi bug do forum. Não sei porque não saiu azul o texo.
Inté.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)