PDA

Ver la Versión Completa : Código de Delphi a C++


Ledian_Fdez
10-02-2010, 19:20:26
Holas amigos de este foro:

Intento evitar que me cierren el formulario a través de Alt+F4. En Delphi lo evitaba de esta manera:

procedure TFrmLogin.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ssAlt in Shift then Abort;
end;

gracias de antemano

Salu2;
un delphiano

rgstuamigo
10-02-2010, 20:14:05
Y por que no usas el evento OnCloseQuery del formualrio y haces esto:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
{La variable CanClose viene por defecto con true, eso quiere decir que el formulario se cerrará
Para evitar el cierre modifico su valor a False y ya...}
CanClose:=False;//<--Esto hace que no se cierre el formulario
ShowMessage('No puede cerrar la ventana');
end;
Aunque :rolleyes: lo mejor es pregusntarle al usuario haciendo esto en el mismo evento:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if MessageBox(Handle,'Esta usted seguro de cerrar?','Cerrando...',MB_YESNO)=mrNo then
CanClose:=False;
end;
.
Saludos...:)

Ledian_Fdez
11-02-2010, 14:28:14
Realmente ese no soluciona mi problema, ya que quiero forzar que cierren el formulario a través de los botones. Es el formulario de loguearse. Y solo me falta cuando usan el (Alt+F4).

Salu2,
Ledian.

rgstuamigo
11-02-2010, 17:41:38
Realmente ese no soluciona mi problema, ya que quiero forzar que cierren el formulario a través de los botones. Es el formulario de loguearse. Y solo me falta cuando usan el (Alt+F4).

Salu2,
Ledian.
Solo por curiosidad me gustaria saber por que quieres evitar que cierren el formulario con Alt+F4?
Ten en cuenta que para los que usamos Windows como sistema Operativo,ésta es una forma estandar y facil de cerrar las ventanas.;).
Ahora el código que pones en el primer post que esta hecho en delphi lo que hace es abortar cuando se presiona la tecla Alt, lo cual personalmente no lo veo muy adecuado especialmente cuando en el formulario existe algun Menú y quiero acceder a algun item usando los atajos del teclado, pero si es tu forma de programar y es lo que pretendes hacer en C++Builder pues tal código se traduce asi:
void __fastcall TFrmLogin::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Shift.Contains(ssAlt)) Abort();
}

Aunque sería mejor si fuera asi:
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Shift.Contains(ssAlt)&& Key==VK_F4) Abort();
}

Saludos...:)

Ledian_Fdez
11-02-2010, 20:56:00
Ok ... Ahora si me pincha !!! :D