Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-11-2010
Choclito Choclito is offline
Miembro
 
Registrado: jul 2004
Posts: 169
Poder: 20
Choclito Va por buen camino
Exclamation Controlar evento dobleclik de listview

Buenos dias amigos del foro, decirles que como siempre con los post del foro uno aprende mas sobre programación.
Antes comentarles el motivo de este post, tengo un listview q me muestra iconos de camas dependiendo el campo de una de mi tabla en firebird ahora lo que hice con la ayuda de los post del foro, es que al hacer dobre click sobre un icono valido me muestra un form de registro de datos de los pacientes a esa cama, el codigo en el evento doble click es el siguiente:
Código Delphi [-]
procedure TF_Registro_Internacion.ListView1DblClick(Sender: TObject);
var seleccionado:string;
begin
 seleccionado:='';
seleccionado:=listview1.Selected.Caption;

 if seleccionado<>'' then
 begin
  if listview1.Selected.ImageIndex=1 then
  begin
          modulo_dir_medica.MDOQ_Nro.Close;
     modulo_dir_medica.MDOQ_Nro.ParamByName('tipo').AsInteger:=tipo.KeyValue;
     modulo_dir_medica.MDOQ_Nro.ParamByName('sala_cama').AsString:=listview1.Selected.Caption;
     modulo_dir_medica.MDOQ_Nro.Open;

        f_internaciones:=tf_internaciones.Create(Self);
    try
     f_internaciones.nro:=modulo_dir_medica.MDOQ_Nro.FieldByName('nro').AsInteger;
     f_internaciones.Edit1.Text:=seleccionado;
     f_internaciones.Edit2.Text:=tipo.Text;
     f_internaciones.ShowModal;
    finally
    f_internaciones.Release;
    end;

    end
 end
 else
//mensaje a mostrar 
end;
El problema es que cuando hago doble click en un espacio en blanco del listview me sale un error :access violation at adress 0065FAA3 in module SIHCA:exe
y en el codigo me marca la siguiente linea :
Código Delphi [-]
seleccionado:=listview1.Selected.Caption;
entiendo que cuando hago doble click en un espacio en blanco la linea anterior no tendria q mostrar texto pero no se controlar este error q se genera, les estare muy agradecido por la ayuda que me brinden amigos del foro
Responder Con Cita
  #2  
Antiguo 23-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Creo que te podes valer de la propiedad ItemFocused del ListView:
Código Delphi [-]
 if ListView1.ItemFocused = nil then
   Exit;
 ...

Saludos.
Responder Con Cita
  #3  
Antiguo 24-11-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Podria validar si existe un item seleccionado...

Código Delphi [-]

if Not Assigned(Listview1.Selected) Then
   Exit;

seleccionado:='';
seleccionado:=listview1.Selected.Caption;

Saludos...
Responder Con Cita
  #4  
Antiguo 24-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Y como no hay dos sin tres... otra forma más:

Código Delphi [-]
  ...
  if ListView1.ItemIndex = -1 then
    Exit;
  ...

Un saludo.
Responder Con Cita
  #5  
Antiguo 24-11-2010
Choclito Choclito is offline
Miembro
 
Registrado: jul 2004
Posts: 169
Poder: 20
Choclito Va por buen camino
Gracias por los mensajes

Amigos del foro muchas gracias, probare el codigo y les comento como me fue
Responder Con Cita
  #6  
Antiguo 24-11-2010
Choclito Choclito is offline
Miembro
 
Registrado: jul 2004
Posts: 169
Poder: 20
Choclito Va por buen camino
Error solucionado

Con buenas noticias ya puedo controlar el error que daba y lo solucione con el codigo propuesto por el amigo cloayza el cual es el siguiente
Código Delphi [-]
procedure TF_Registro_Internacion.ListView1DblClick(Sender: TObject);
var seleccionado:string;
begin
 seleccionado:='';
//if ListView1.ItemFocused = nil then
if Not Assigned(Listview1.Selected) Then
  exit;
              MB_OK + MB_ICONINFORMATION)
else
begin
seleccionado:=listview1.Selected.Caption;
 if seleccionado<>'' then
 begin
  if listview1.Selected.ImageIndex=1 then
  begin
          modulo_dir_medica.MDOQ_Nro.Close;
     modulo_dir_medica.MDOQ_Nro.ParamByName('tipo').AsInteger:=tipo.KeyValue;
     modulo_dir_medica.MDOQ_Nro.ParamByName('sala_cama').AsString:=listview1.Selected.Caption;
     modulo_dir_medica.MDOQ_Nro.Open;

        f_internaciones:=tf_internaciones.Create(Self);
    try
     f_internaciones.nro:=modulo_dir_medica.MDOQ_Nro.FieldByName('nro').AsInteger;
     f_internaciones.Edit1.Text:=seleccionado;
     f_internaciones.Edit2.Text:=tipo.Text;
     f_internaciones.ShowModal;
    finally
    f_internaciones.Release;
    end;

    end
 end
 else
  MsgBox ('Hospital Cristo de las Americas','Debe seleccionar Sala y Cama Habil para registrar...',
              MB_OK + MB_ICONINFORMATION)

  end;
end;
Muchas gracias amigos del foro
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
Evento adecuado para controlar si el software está registrado vejerf Varios 19 09-02-2009 17:08:34
Listview... con ADO Victor Vega SQL 10 08-09-2007 05:43:35
Uso de ListView lucero_chivas C++ Builder 3 27-09-2006 17:38:00
Llamar evento desde otro evento nachito_tuc OOP 1 23-08-2006 21:37:43
Controlar pc en red mrmanuel Varios 11 07-04-2004 10:02:23


La franja horaria es GMT +2. Ahora son las 20:12:41.


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