TECLAS DE ATALHO

Delphi

25/08/2009

OLá pessoal,

Utilizando o TAction, setei todos os botões com seus respectivos SHORTCUR,
no meu formulário modelo, mas os mesmos não estão funcionando...

Preciso ativa algo mais?

Tentei utilizar pelo OnKeyDown, mas como definiria se pressionado por exemplo, CTRL+(uma letra)????


Lenasi

Lenasi

Curtidas 0

Respostas

Leufmt

Leufmt

25/08/2009

procedure Tform1.FormKeyDown(Sender:TObject; var Key: Word; Shift: TShifState);
begin
if key = vk_F1 then begin
{ instrucoes a serem executadas }
end;
end;
- OBSERVAÇÃO:
Não se esqueça de colocar a propriedade ´KeyPreview´ do formulário em ´True´.

Você também pode usar as variáveis VK_F1 até VK_F12 referentes as outras teclas de função.


GOSTEI 0
Lenasi

Lenasi

25/08/2009

procedure Tform1.FormKeyDown(Sender:TObject; var Key: Word; Shift: TShifState); begin if key = vk_F1 then begin { instrucoes a serem executadas } end; end; - OBSERVAÇÃO: Não se esqueça de colocar a propriedade ´KeyPreview´ do formulário em ´True´. Você também pode usar as variáveis VK_F1 até VK_F12 referentes as outras teclas de função.


Caro amigo,

Mas, precisaria com as letras além das teclas de funções..
E também saber o porque as já definidas pela propriedade SHURTCUT não funcionou...


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

25/08/2009

tente assim:
procedure TFormX.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Shift = [ssCtrl]) then
    Label1.Caption := ´[CTRL] + ´+Chr(Key)
  else
  if (Shift = [ssAlt]) then
    Label1.Caption := ´[ALT] + ´+Chr(Key)
  else
  if (Shift = [ssShift]) then
    Label1.Caption := ´[SHIFT] + ´+Chr(Key)
  else
  if (Shift = [ssCtrl, ssAlt]) then
    Label1.Caption := ´[CTRL] + [ALT] + ´+Chr(Key)
  else
  if (Shift = [ssShift, ssAlt]) then
    Label1.Caption := ´[SHIFT] + [ALT] + ´+Chr(Key)
  else
  if (Shift = [ssCtrl, ssShift]) then
    Label1.Caption := ´[CTRL] + [SHIFT] + ´+Chr(Key)
  else
  if (Shift = [ssCtrl, ssShift, ssAlt]) then
    Label1.Caption := ´[CTRL] + [ALT] + [SHIFT] + ´+Chr(Key);

  // avaliando os ´atalhos´...
  if (Shift = [ssCtrl]) and (Chr(Key)=´A´) then
    Label1.Caption := ´o atalho [CTRL] + A NÃO FOI DEFINIDO´
  else
  if (Shift = [ssCtrl]) and (Chr(Key)=´B´) then
    ShowMessage(´[CTRL] + B chama esta mensagem´);
  if (Shift = [ssCtrl, ssAlt]) and (Chr(Key)=´C´) then
    ShowMessage(´[CTRL] + [ALT] + C chama esta mensagem´);
end;



GOSTEI 0
Lenasi

Lenasi

25/08/2009

tente assim:
procedure TFormX.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Shift = [ssCtrl]) then
    Label1.Caption := ´[CTRL] + ´+Chr(Key)
  else
  if (Shift = [ssAlt]) then
    Label1.Caption := ´[ALT] + ´+Chr(Key)
  else
  if (Shift = [ssShift]) then
    Label1.Caption := ´[SHIFT] + ´+Chr(Key)
  else
  if (Shift = [ssCtrl, ssAlt]) then
    Label1.Caption := ´[CTRL] + [ALT] + ´+Chr(Key)
  else
  if (Shift = [ssShift, ssAlt]) then
    Label1.Caption := ´[SHIFT] + [ALT] + ´+Chr(Key)
  else
  if (Shift = [ssCtrl, ssShift]) then
    Label1.Caption := ´[CTRL] + [SHIFT] + ´+Chr(Key)
  else
  if (Shift = [ssCtrl, ssShift, ssAlt]) then
    Label1.Caption := ´[CTRL] + [ALT] + [SHIFT] + ´+Chr(Key);

  // avaliando os ´atalhos´...
  if (Shift = [ssCtrl]) and (Chr(Key)=´A´) then
    Label1.Caption := ´o atalho [CTRL] + A NÃO FOI DEFINIDO´
  else
  if (Shift = [ssCtrl]) and (Chr(Key)=´B´) then
    ShowMessage(´[CTRL] + B chama esta mensagem´);
  if (Shift = [ssCtrl, ssAlt]) and (Chr(Key)=´C´) then
    ShowMessage(´[CTRL] + [ALT] + C chama esta mensagem´);
end;



PERFEITO AMIGO. DEU CERTO.
MAIS UM RESOLVIDO....
MAIS UM ADQUIRIDO COMO APRENDIZADO...


GOSTEI 0
POSTAR