Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-03-2010
antonio302050 antonio302050 is offline
Miembro
 
Registrado: dic 2009
Posts: 26
Poder: 0
antonio302050 Va por buen camino
Como puedo bloquear/inabilitar el boton cerrar y maximizar de una ventana

bueno mi problema es este

estoy programando un juego en delphi y necesito q el juego se cierre mediante otro boton 'salir' q yo programe y no por el boton cerrar de la ventana.
necesito bloquear/inabilitar el boton cerrar y el boton maximizar de una ventana
y necesito bloquear el boton maximizar porque el formulario del juego solo tiene q tener un tamaño especifico.
les agradezco la ayuda de antemano
Responder Con Cita
  #2  
Antiguo 20-03-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Podrías ponerle borde bsNone para que no aparezca ningún icono no borde qué arrastrar.

// Saludos
Responder Con Cita
  #3  
Antiguo 20-03-2010
antonio302050 antonio302050 is offline
Miembro
 
Registrado: dic 2009
Posts: 26
Poder: 0
antonio302050 Va por buen camino
si es una buena idea
pero yo quiero que formulario tenga borde depende del Sistema Operativo,ademas necesito el boton minimizar.
tambien quisiera aprender como bloquear/inabilitar los botones de cerrar y maximizar para conocimiento
Responder Con Cita
  #4  
Antiguo 20-03-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ahí va:

Código Delphi [-]
procedure EnableSysCloseItem(Handle: HWND; Enable: Boolean);
const
  Flags : array[Boolean] of Integer = (MF_GRAYED, MF_ENABLED);

var
  SysMenu : HMENU;

begin
  SysMenu := GetSystemMenu(Handle, false);
  EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or Flags[Enable]);
end;

Te sirve para habilitar (true) o inhabilitar (false) el icono de cerrar de la ventana cuyo identificador (handle) le pases.

// Saludos
Responder Con Cita
  #5  
Antiguo 20-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Roman, por enésima vez te digo... ¿por qué no supe eso antes?
Yo siempre usaba el CloseQuery de los form para inhabilitar el cierre dependiendo de alguna condición.
Me voy a copiar tu código

PD: pregunto, ¿no sería bueno liberar el handle después?
Responder Con Cita
  #6  
Antiguo 22-03-2010
antonio302050 antonio302050 is offline
Miembro
 
Registrado: dic 2009
Posts: 26
Poder: 0
antonio302050 Va por buen camino
gracias roman.
muy bueno tu procedimiento,
una pregunta como puedo bloquear/inabilitar el boton maximizar ?
porque tu procedimiento solo bloquea el boton cerrar
Responder Con Cita
  #7  
Antiguo 22-03-2010
antonio302050 antonio302050 is offline
Miembro
 
Registrado: dic 2009
Posts: 26
Poder: 0
antonio302050 Va por buen camino
BrunoBsso sabes, nunca se me habia pasadopor la cabeza q hacia el evento CloseQuery,
es bueno aprender cosas nuevas , gracias
Responder Con Cita
  #8  
Antiguo 22-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Cita:
Empezado por antonio302050 Ver Mensaje
gracias roman.
muy bueno tu procedimiento,
una pregunta como puedo bloquear/inabilitar el boton maximizar ?
porque tu procedimiento solo bloquea el boton cerrar
Código Delphi [-]
procedure HabilitarSysMaximizeItem(Form:TForm; Habilitar:Boolean);
begin
  case Habilitar of
    TRUE:  Form.BorderIcons:=Form.BorderIcons+[biMaximize];
    FALSE: Form.BorderIcons:=Form.BorderIcons-[biMaximize];
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  HabilitarSysMaximizeItem(Self,TRUE);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  HabilitarSysMaximizeItem(Self,FALSE);
end;
Ahí tenés cómo habilitar e inhabilitar el botón Maximizar.
Saludos!!
Responder Con Cita
  #9  
Antiguo 22-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Cita:
Empezado por antonio302050 Ver Mensaje
BrunoBsso sabes, nunca se me habia pasadopor la cabeza q hacia el evento CloseQuery,
es bueno aprender cosas nuevas , gracias
Por si todavía te queda alguna duda, el OnCloseQuery (significa CuandoPidenCerrarlo más o menos) lo que hace es dispararse cuando alguien intenta cerrarlo y si está asignado ejecuta lo que pidas, luego verifica si vos permitís cerrarlo (el pparámetro CanClose) y si es TRUE lo cierra, sino simplemente no se cierra.
Ejemplo:
Un formulario con un TRadioGroup con 2 items. Cerrar (índice 0) permite cerrarlo y No Cerrar (índice 1) obviamente no lo permite. El evento OnCloseQuery lo verificará todo.
Código Delphi [-]
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  case RadioGroup1.ItemIndex of
    0: CanClose:=True; //Le permito cerrar
    1: CanClose:=False; //No le permito cerrar
  end;
end;
Saludos!
Responder Con Cita
  #10  
Antiguo 27-03-2010
antonio302050 antonio302050 is offline
Miembro
 
Registrado: dic 2009
Posts: 26
Poder: 0
antonio302050 Va por buen camino
Cita:
Empezado por BrunoBsso Ver Mensaje
Código Delphi [-]procedure HabilitarSysMaximizeItem(Form:TForm; Habilitar:Boolean);
begin
case Habilitar of
TRUE: Form.BorderIcons:=Form.BorderIcons+[biMaximize];
FALSE: Form.BorderIcons:=Form.BorderIcons-[biMaximize];
end;end;
procedure TForm1.Button1Click(Sender: TObject);
begin
HabilitarSysMaximizeItem(Self,TRUE);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
HabilitarSysMaximizeItem(Self,FALSE);
end;
Ahí tenés cómo habilitar e inhabilitar el botón Maximizar.
Saludos!!
Gracias, me parece muy bueno tu procedimiento es exactamente lo q necesitaba, para bloquear el boton maximizar.
sabes me va aservir de mucho para el juego q estoy programando
ya que yo queria q el juego solo tenga las dimensiones de 800x600.
Saludos.
Responder Con Cita
  #11  
Antiguo 27-03-2010
antonio302050 antonio302050 is offline
Miembro
 
Registrado: dic 2009
Posts: 26
Poder: 0
antonio302050 Va por buen camino
Cita:
Empezado por BrunoBsso Ver Mensaje
Por si todavía te queda alguna duda, el OnCloseQuery (significa CuandoPidenCerrarlo más o menos) lo que hace es dispararse cuando alguien intenta cerrarlo y si está asignado ejecuta lo que pidas, luego verifica si vos permitís cerrarlo (el pparámetro CanClose) y si es TRUE lo cierra, sino simplemente no se cierra.
Ejemplo:
Un formulario con un TRadioGroup con 2 items. Cerrar (índice 0) permite cerrarlo y No Cerrar (índice 1) obviamente no lo permite. El evento OnCloseQuery lo verificará todo.

Código Delphi [-]
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
case RadioGroup1.ItemIndex of
0: CanClose:=True; //Le permito cerrar
1: CanClose:=False; //No le permito cerrar
end;
end;




Saludos!
Como ya lo dije antes es bueno aprender algo nuevo todos los dias, y saber manejar los eventos de los formularios es algo importante ,algo q aprendi ayer fue usar el evento OnShow.. Tu ejemplo de como usar el evento OnCloseQuery es muy bueno de seguro me va ser muy ùtil, gracias.
Saludos .
Responder Con Cita
  #12  
Antiguo 27-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Pero no hay por qué!
Mirá mi firma y vas a entender mi ideología
Saludos!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
No cerrar la ventana cuando le doy click al boton de la barra de titulo lostprophets Varios 5 15-05-2007 00:14:18
bloquear el boton [X] para cerrar una ventana juanmdq HTML, Javascript y otros 3 19-12-2005 23:17:04
ayuda... quitar la barra de herramientas y ajustar tamaño ventana y botón maximizar. gontxalo Internet 6 23-05-2005 15:35:22
ayuda... tamaño ventana y botón maximizar. gontxalo OOP 0 18-05-2005 18:32:52
Como puedo saber si se le ha dado al botón de minimizar en una ventana? lolobs Varios 3 10-09-2003 12:44:33


La franja horaria es GMT +2. Ahora son las 17:33:59.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi