RadioGroup, cada vez pressionada tecla altera os items
Olá.
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.
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
Curtidas 0
Respostas
Alecsandro Moura
27/10/2007
E ai lucasfss blz!
Bom usando uma action list eu não sei como te ajudar, mas dá para fazer da seguinte maneira:
Depois no OnEnter do RadioGroup coloca
depois no OnExit do RadioGroup
depois mude o keyPreview do form para true
e depois no OnKeyDown do form faça:
Bom pelo menos dessa maneira dá para fazer o que vc deseja. :wink:
espero ter ajudado :D
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
Marco Salles
27/10/2007
outra maneira
particularmente gosto de concentrar os meus codigos facilita a manutenção
Adicione um componente TApplicationEvents no Projeto e no seu evento
ShortCut escreva..
P:S Se não quiser disparar o evento OnClick do RadioGroup deve desabilita-lo temporariamente
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
Devmedia
27/10/2007
Cara, muito obrigado pela ajuda.
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:
Meu Onclick do RadioGroup:
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.
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
Devmedia
27/10/2007
[color=blue:85425fbeda]If Key = VK_F7 then
Begin
RadioGroupOpcaoProdutosPesquisa.SetFocus;
end; [/color:85425fbeda]
Estes colors foi bug do forum. Não sei porque não saiu azul o texo.
Inté.
GOSTEI 0