Ver Mensaje Individual
  #3  
Antiguo 27-01-2005
oworty oworty is offline
Registrado
 
Registrado: nov 2004
Posts: 9
Reputación: 0
oworty Va por buen camino
Smile

Antes de nada muchas gracias por tu respuesta.


No he puesto todo el codigo fuente del objeto para no agrandar el mensaje. Necesito poner la verificacion para que si en tiempo de diseño o en tiempo de ejecucion se dice que la columna autoajustable es una que realmente no existe que no deje seguir. Claro el mejor sitio es este en el metodo SetColumnAutoSize para que nunca tome un valor incorrecto.

Segun me ha parecido entender en tu mensaje, me dices que en el SetCoulmnAutoSize no ponga la verificacion y que luego la controle en otro sitio, ese sitio no seria en el ResizeColumns(en mi componente se llama ValidateSizeableColumn) porque el aun no tendria las columnas, y además debería volver a poner mi FColumnAutoSize a -1 y no quiero ir cambiando tanto el field, pretendo que sea todos los valores por el usuario.

Sin embargo no sabia que el metodo Loaded se lanza justo y cuando se carga un componente y este ya ha tomado todos los valores del tiempo de diseño, sabiendo esto puedo, poner aquí la verificacion que me has dicho de si no existen las columnas.

Tal vez otra solucion seria poner un estado o intentar reutilizar el de de tcomponent para ver si el componente se esta cargando y si es asi permitir la escritura de mi campo FColumnAutoSize pese que no tenga las columnas porque estas vendrán luego.

De nuevo gracias por todo y por darme pistar e ideas nuevas, voy a ver si les saco provecho, ya te contare.

Código:
  
procedure TDBGridOrca.SetColumnAutoSize(const Value: Integer);
begin
  if Value = FColumnAutoSize then Exit;
  if Columns.Count = 0 then Exit;
  if Value > (Columns.Count - 1) then
	raise Exception.Create('No existe la columna.');
  FColumnAutoSize := Value;
	
  LayoutChanged;
end;

procedure TDBGridOrca.LayoutChanged;
begin
  inherited;
  ValidateSizeableColumn();
end;
Responder Con Cita