Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-09-2007
pfsoft pfsoft is offline
Miembro
 
Registrado: ene 2004
Ubicación: Cádiz - España
Posts: 24
Poder: 0
pfsoft Va por buen camino
¿Cómo cerrar un Grid desde el OnKeyDown?

Wuenas.

Pues eso, que si alguna alma caritativa sabe como cerrar (remover, borrar, ...) un Grid por código desde el evento OnKeyDown del mismo.

Gracias anticipadas.

Pedro J.Fdez.
__________________
Un Saludo desde San Fernando (Cádiz) ESPAÑA.

Pedro J.Fdez.
pedrofdez@ono.com
pfsoftware@ono.com
Responder Con Cita
  #2  
Antiguo 11-09-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
No entiendo muy bien lo que quieres decir con 'cerrar', 'remover' o 'borrar' el DBGrid ?

Cerrar, se cierra el DataSet asociado al mismo, con lo que el DBGrid deja de mostrar dato alguno.

Remover no lo remueves hasta que cierras el Form y se libera tanto el DBGrid como el Form (al menos eso sería lo lógico). Si lo que quieres hacer es crear y destruir un DBGrid en tiempo de ejecución, no le veo la utilidad concreta.

Borrar el DBGrid valdría la explicación con respecto a Remover.

Además podrías (dependiendo de lo que quieras hacer), 'ocultar ' el DBGrid con lo cual parecería que lo has 'Borrado' o 'Removido', poniendo su propiedad Visible a False. En cualquiero de estos casos también de aconsejaría deshabilitar el DataSet asociado (con un simple Close del DataSet).

Cualquiera de estas posibilidades, sin más las puedes hacer en cualquiera de los eventos propios del DBGrid, por ejemplo el evento OnKeyDown.

Código Delphi [-]
procedure TForm.DBGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Case Key of
    VK_ESCAPE :
      begin
        ////
        DBGrid1.Visible := False;
        ////
        DBGrid1.DataSource.DataSet.Close;
        ////
      end;
  end;
end;

Si no es esto lo que pedías, no entendí tu pregunta.

Saludos
__________________
Piensa siempre en positivo !
Responder Con Cita
  #3  
Antiguo 11-09-2007
pfsoft pfsoft is offline
Miembro
 
Registrado: ene 2004
Ubicación: Cádiz - España
Posts: 24
Poder: 0
pfsoft Va por buen camino
Ejemplo de lo que hago y "kaska"

Cojo un Grid de la paleta de componentes y lo suelto enel formulario, sin enlazar con DataSet alguno, sólo lo que he dicho. En el evento OnKeyDown del Grid pongo lo siguiente:

if (Key = VK_F4) and (ssCtrl is Shift) then
DBGrid1.Free;

Sale Error Access violation.....


?????
__________________
Un Saludo desde San Fernando (Cádiz) ESPAÑA.

Pedro J.Fdez.
pedrofdez@ono.com
pfsoftware@ono.com
Responder Con Cita
  #4  
Antiguo 11-09-2007
pfsoft pfsoft is offline
Miembro
 
Registrado: ene 2004
Ubicación: Cádiz - España
Posts: 24
Poder: 0
pfsoft Va por buen camino
Correción

no es ssCtrl is Shift, lo correcto es ssCtrl in Shift. Pero no és por ésto por lo que falla. Es que me he equivocado al escribirlo en el foro.
__________________
Un Saludo desde San Fernando (Cádiz) ESPAÑA.

Pedro J.Fdez.
pedrofdez@ono.com
pfsoftware@ono.com
Responder Con Cita
  #5  
Antiguo 11-09-2007
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 24
BlueSteel Va por buen camino
Hola

Podrias acrarar si es un StringGrid o un DBGrid..... existe una gran diferencia...

si es un StringGrid... lo que puedes hacer es lo sgtes

para borrar todo debes poner algo así

Código Delphi [-]
procedure TForm1.Limpia_Items;
Var
   i : Integer;
Begin
     For i := 0 To StringGrid1.RowCount -1 Do
        StringGrid1.Rows[i].Clear;
     StringGrid1.RowCount := 1;
End;

declaro un procedimiento para limpiar el StringGrid... y este proceso lo realiza independiente de cuantas filas tenga tu StringGrid

Espero que te sirva.. ahh.. y debes explicar mejor lo que quieres hacer.. así uno no anda adivinando...

me falto.. para limpiar en el evento onkeydown, solo debes poner el nombre del procedimiento anterior...

Código Delphi [-]
procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
      Limpia_Items;
end;

y con eso estaria listoko
__________________
BlueSteel
Responder Con Cita
  #6  
Antiguo 11-09-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Entiendo que lo que utiliza pfsoft es un TDBGrid.

La verdad es que probé lo que dice y es cierto : dá error. Intentas poner un DBGrid en un form sin más, y después intentas hacer un Free del DBGrid en tiempo de ejecución (sin cerrar el propio form), y salta un error.

No sé el porqué, así que no pude dar mayores explicaciones.

Por otro lado, tal y como dije, lo que no sé es por qué hacer un Free del DBGrid en tiempo de ejecución. Pero en eso no me meto.

La solución que yo veo de momento (pero que no soluciona el problema planteado), es poner el Visible := False
__________________
Piensa siempre en positivo !
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
¿Cómo cerrar otra aplicación desde la mía? Alcolea Varios 1 22-03-2007 03:02:35
Como vuelvo el foco a una grilla despues del ONKEYDOWN Ericato Varios 3 12-03-2007 16:40:17
¿Como cerrar el explorer.exe desde el que se llamó a mi aplicación? jumasuro API de Windows 0 08-02-2007 20:54:50
Cómo cerrar otra aplicacion desde mi aplicacion en Delphi 7 Gaby123 API de Windows 5 04-01-2007 22:44:51
Como cerrar le IE desde el còdigo?... Sinaloense OOP 2 25-05-2004 08:29:53


La franja horaria es GMT +2. Ahora son las 02:58:09.


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