Array
(
)

problemas com bloqueio de teclas

Mahdak
   - 14 mar 2006

pessoal tenho um Form do tipo fsNormal... gostaria de bloquear a combinação de teclas Alt+F4 nele, porem nao pode ser por nenum tipo de exemplo do tipo os abaixo:

Obs: se trata de um form de Login que é chamado pelo formulario principal (fsMDIForm) no OnCreate...
O restante dos formularios sao MDIChild, entao se eu usar algum desses exemplos abaixo, nao consigo acessar os Forms MDIChild.

Quem puder me ajudar... fico grato...

Abraços a todos...

#Código


-------------------EXEMPLO 1 --------------------------------------------
procedure TLogin.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := False;
end;
-----------------------------------------------------------------------------

------------------EXEMPLO 2 ---------------------------------------------
public
{ Public declarations }
fecha: Boolean;
end;

implementation

{$R *.DFM}

Function GetStateK (Key: integer): boolean;
begin
Result := Odd (GetKeyState (Key));
end;

procedure Tfrm_HIP.FormClose(Sender: TObject; var Action: TCloseAction);
begin
If Not fecha Then
Action := caNone Else
Action := caFree;
end;

procedure Tfrm_HIP.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
If GetStateK (VK_LMENU) And (Key = VK_F4) Then
fecha
--------------------------------------------------------------------------------





Mahdak
   - 15 mar 2006

Up :shock:


Paullsoftware
   - 15 mar 2006

cara faz assim:

no form cria uma variável global:
#Código

var
Form1 : TForm1;
....
wFechar : Boolean;

no onCreate do Form faz...
#Código
wFechar := False;


no OnCloseQuery Faça:
#Código
CanClose := wFechar;


se tratando de um form login, vc tem o código que localiza o usuário e senha, então, no botão ´Entrar, Logar, Ok...´ quando os dados são Checados, coloque no final do código:
#Código
wFechar := True;
Close;


pronto, faz um teste ai! :wink:


Mahdak
   - 15 mar 2006

resolvido...
valleu!!!!