Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-05-2013
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Problema solucionado.

El problema no venia por el visible en false, venia porque en otro proceso destruía la columna en cuestión y evidentemente list index out of bounds.

Poco a poco iremos aprendiendo más cosillas los que nos dedicamos a esto en plan hobby, hay que darse de bruces con el suelo varias veces para saber que este está duro.

Gracias a todos y perdonad.

Josep
Responder Con Cita
  #2  
Antiguo 08-05-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por jafera Ver Mensaje
Problema solucionado.

El problema no venia por el visible en false, venia porque en otro proceso destruía la columna en cuestión y evidentemente list index out of bounds.
¡Qué bien! Pero no estaría mal que explicaras con más detalle cómo es que ese otro proceso repercutía en el código que mostraste al principio. Puede servir a otros en alguna situación similar.
Responder Con Cita
  #3  
Antiguo 08-05-2013
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Correcto Al.

En el DataModule tengo las tablas, pues bien en el after delete de la tabla que guarda las lineas del proceso tenia puesto esto:

Código Delphi [-]
If F_Pagues.DBEdit3.Text = '0' then 
begin 
  F_Pagues.JvDBUltimGrid1.Columns[15].Destroy; 
  L_PaguesDIA_BAIXA.Value:= 0; 
  F_Pagues.DBEdit3.Font.Color:=clBlack; 
  F_Pagues.DBEdit3.Color:=clWindow; 
end

y evidentemente la columna era destruida y era imposible hacera "invisible".

Saludos

Josep
Responder Con Cita
  #4  
Antiguo 08-05-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Comprendido.

Aunque un módulo de datos no tiene por qué "ver" a la interfaz de usuario (sólo al revés).
Responder Con Cita
  #5  
Antiguo 08-05-2013
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 585
Poder: 20
jafera Va por buen camino
Gracias Al.

Lo que yo decia, tengo que picar mucha piedra para sacar una pepita de oro.

Posiblemente tu comentario tiene su razón, cosa que desconocia por autodidacta pero siempre he hecho cosas así, de mandar desde el datamodule instrucciones al formulario.

Intentaré no mezclar interfaces en un futuro.

Repito gracias por el comentario, quiero ser el "mejor programador novato de delphi"

Saludos

Josep
Responder Con Cita
  #6  
Antiguo 08-05-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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
Cita:
Empezado por jafera Ver Mensaje
...
Posiblemente tu comentario tiene su razón, cosa que desconocia por autodidacta pero siempre he hecho cosas así, de mandar desde el datamodule instrucciones al formulario.
...
Hola Josep.

Si que la tiene...

Un modo de utilizar los eventos de los componentes que residen en tu TDataModule sin que este "vea" al form es definir los métodos dentro de él.

Ajustando el ejemplo a tu último código, sería:
Código Delphi [-]
...
type
  TDataSetEvent = procedure(DataSet: TDataSet) of object;
  TtuForm = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    ...
    procedure FormDestroy(Sender: TObject);
  private
    FOldEvent : TDataSetEvent;
    procedure DataSetAfterDelete(DataSet: TDataSet);
  public
  end; 
...

implementation

uses u_TuDataModule;

procedure TTuForm.DataSetAfterDelete(aDataSet: TDataSet);
begin
  JvDBUltimGrid1.Columns[15].Visible := False;
  tuDataModule.L_PaguesDIA_BAIXA.Value:= 0; // supongo que pertenece al datamodule...
  DBEdit3.Font.Color:=clBlack;
  DBEdit3.Color:=clWindow;
end;

procedure TFTuFormFormCreate(Sender: TObject);
begin
   // (En este punto supongo al DataModule ya creado)
  
  // Si ya hay asignado un método, resguardarlo
  if Assigned(tuDataModule.DataSet.AfterDelete) then
    FOldEvent := tuDataModule.DataSet.AfterDelete;

  // Asignar el nuevo método 
  tuDataModule.DataSet.AfterDelete := DataSetAfterDelete;
  tuDataModule.DataSet.Open
end;

...

procedure TTuForm.FormDestroy(Sender: TObject);
begin
  // Restaurar el evento a su condición anterior
  if Assigned(FOldEvent) then
    tuDataModule.DataSet.AfterDelete := FOldEvent;
end;
end.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 09-05-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.610
Poder: 32
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por ecfisa Ver Mensaje
Un modo de utilizar los eventos de los componentes que residen en tu TDataModule sin que este "vea" al form es definir los métodos dentro de él.

Ajustando el ejemplo a tu último código, sería...
Muy bien explicado, ecfisa.

Que es, permitiéndome un poco de "publicidad", similar a lo que hace la propiedad DataSetEvents del DataSource extendido:
Cita:
Empezado por Al González Ver Mensaje
Deriva del típico TDataSource que viene de fábrica, usado cotidianamente en la mayoría de las aplicaciones, sólo que añade dos útiles propiedades:
  • DataSetCloned — Para crear en tiempo de ejecución un "clon" del DataSet asignado. Uno o más formularios pueden trabajar y hacer lo que sea con sus respectivos DataSet clones, sin tocar el DataSet original. Nada de lo que haga un formulario con el DataSet interferirá con el buen funcionamiento de otros formularios que usen el mismo DataSet (porque cada formulario usa en realidad una copia).
  • DataSetEvents — Para trabajar con los eventos del DataSet asignado, pero en el "ámbito" del componente. El DataSet puesto en un módulo de datos, mientras que dentro de un formulario y unidad aparte un componente TghDataSource le establece manejadores de eventos BeforeXXX y AfterXXX que son ejecutados sólo con ese formulario (eventos del DataSet particulares por formulario).
Estas dos propiedades son independientes (puede usarse DataSetEvents sin clonar el conjunto de datos). Con la ventaja de que el componente hace todo el trabajo sucio. Enlace y rústico video.

Saludos.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
error list index out of bounds bothy Varios 2 16-04-2010 10:00:19
Pregunta Combobox, selección del item sin hacer click NPIdea OOP 2 15-01-2010 07:42:14
Error List index out of bounds (14) AMINOA2R Firebird e Interbase 3 30-09-2005 00:32:57
Selección automática item combobox neon OOP 0 24-02-2005 13:59:22
Error: List Index Out Bounds() MasterXP SQL 4 18-02-2005 06:41:06


La franja horaria es GMT +2. Ahora son las 00:15:34.


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