Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ayuda con TColumn (https://www.clubdelphi.com/foros/showthread.php?t=42580)

pelaorb68 17-04-2007 21:05:24

Ayuda con TColumn
 
Hola a todos, necesito de vuestras ayudas nuevamente.
Quiero agregar un par de propiedades a un TColumn. Hice lo siguiente pero me da error en RunTime:

Código Delphi [-]
type
  TRBColumn = class(TColumn)
  private
     FField1 : string;
     FField2 : string;
  public
    property Field1: string read FField1 write FField1;
    property Field2: string read FField2 write FField2;
  end;
 
  TfrmMB = class(TForm)
    DBGrilla: TDBGrid;
    .
    .
    .

procedure TfrmMB.CrearColumnas;
var
  Columna : TColumn;
begin
  Columna := DBGrilla.Columns.Add;
  Columna.Title.Caption   := 'xxxx';
  Columna.Alignment := taCenter;
 
  TRBColumn(Columna).Field1 := 'yy'; <--- Error: EAccessViolation
  TRBColumn(Columna).Field2 := 'zz';
end;

Me pueden ayudar please........qué estoy haciendo mal?

Saludos y desde ya muchas gracias

luisgutierrezb 17-04-2007 23:01:39

a simple vista, veo que columna no tiene las propiedades field1 y field2, por mucho cast que le hagas al crear la columna no tiene esas propiedades por lo tanto no se las puedes asignar, prueba lo contrario, crear TRBColumn y asignarlas a TColumn, si no es mucha indiscrecion, que tratas de hacer? a lo mejor hay una manera mas facil

pelaorb68 17-04-2007 23:22:14

gracias por tu tiempo luis......Lo que quiero es poder tener algunas nuevas propiedades por columnas del DBGrid. Por ejemplo, quiero definir si la columna(s) que estoy agregando servirá para hacer sort y/o filtro y/o otra cosa.

Actualmente, no me sirve chequer el Numero de Columna para hacer tal o cual cosa, porque la grilla se puede cargar con difenrentes columnas, dependiendo del query asociado en distinto momento.

No sé si me explico....

Es por eso que me gustaría tener alguna porpiedades adicionales para la columna.....

luisgutierrezb 18-04-2007 01:11:03

entonces intenta crear tus TRBColumn y asignalas al DBGrid, porque por lo que veo agarras las columnas del grid y las asignas al TRBColumn, algo que tambien te puede servir es que hagas por ejemplo un TList o un TCollection y tu TRBColumn pero donde tu pongas las columnas y aparte tengas las propiedades, algo asi como

Código Delphi [-]
type
  TRBColumn = class(TOBject)
  private
     FField1 : string;
     FField2 : string;
     FColumn: TColumn;
  public
    property Field1: string read FField1 write FField1;
    property Field2: string read FField2 write FField2;
    Property Columna:TColumn read FColumn write FColumn;
  end;

tienes que inicializar la columna y demas, no me acuerdo si en la pagina de delphi.about.com vi como utilizar la propiedad tag para "direccionarla" a un objeto o componente que es algo que tambien te podria servir

pelaorb68 18-04-2007 01:19:11

Gracias por tu ayuda luis, voy a intentar con lo que me dices.....

Mil gracias.

camgom 18-04-2007 19:55:29

Ayuda con TColumn
 
Existe un en delphi wue permite "engañar" al compilador con una superposicion.

Simplemente en types declara tu clase para TColumn y declara que hereda de la clase original TColumn aclarando la unit de donde proviene la original (en este momento no me acuerdo de cual unit se saca la clase TColumn orignal por lo que la voy a nombrar "unitcl")

type

TColumn=class(unitcl.TColumn)
private
FField1:string;
FField2: string;
public
property Field1:string write FField1 read FField1;
property Field2:string write FField2 read FField2;
end;

Declara esta clase antes de la declaración de clase de la ventana donde necesitas o utilizas el control.

Al momento de trabajar con el objeto simplemente utilizala como cualquier otra clase.

...
dbgrid.column[0].field1:='a';
...
Es de aclarar que esta superposición solo funciona para el código, no para el diseño de la ventana y mucho menos para el inspector de objetos.


La franja horaria es GMT +2. Ahora son las 02:57: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