PDA

Ver la Versión Completa : Como declarar DeleteRow de StringGrid


mRoman
20-07-2021, 22:07:00
Hola amigos buenas tardes.

Trabajo Delphi6, FB 2.0, Win10.

Estoy investigando como borrar una linea de un StringGrid, he consultado estos links

https://stackoverflow.com/questions/16351109/how-do-i-delete-a-tstringgrid-row
http://www.clubdelphi.com/foros/showthread.php?t=36452

Pero mis conocimientos en Delphi no son muy amplios, sinceramente no se donde declarar esto,...

Alguien me pudiera explicar como se debe hacer...o sea ahi lo explica lo q se debe hacer, pero donde? en un archivo .PAS nuevo? o que?.

Los leo.

Gracias por su tiempo compañeros.

Saludos.

ecfisa
20-07-2021, 22:27:09
Hola.

Se trata de desproteger la clase TStringGrid para acceder a los métodos protegidos, por ejemplo:


...
interface

uses ..., Grids;

type
TStringGrid = class( Grids.TStringGrid ); // clase desprotegida

TForm1 = class( TForm )
StringGrid1: TStringGrid;
...
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

...
begin
StringGrid1.DeleteColumn( StringGrid1.Col ); // borra columna actual
StringGrid1.DeleteRow( StringGrid1.Row ); // borra fila actual
end;


El las versiones de Delphi mas actuales deberás usar

...
uses ..., Vcl.Grids;

type
TStringGrid = class( Vcl.Grids.TStringGrid );
...


Saludos :)

mRoman
20-07-2021, 22:56:52
Hola.

Se trata de desproteger la clase TStringGrid para acceder a los métodos protegidos, por ejemplo:


...
interface

uses ..., Grids;

type
TStringGrid = class( Grids.TStringGrid ); // clase desprotegida

TForm1 = class( TForm )
StringGrid1: TStringGrid;
...
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

...
begin
StringGrid1.DeleteColumn( StringGrid1.Col ); // borra columna actual
StringGrid1.DeleteRow( StringGrid1.Row ); // borra fila actual
end;


El las versiones de Delphi mas actuales deberás usar

...
uses ..., Vcl.Grids;

type
TStringGrid = class( Vcl.Grids.TStringGrid );
...


Saludos :)

Gracias Daniel por contestar.

Entiendo lo que me comentas, pero debo abrir un nuevo FORM, UNIT...es que esa parte no me queda claro.

Gracias.

P:D. OK...ya hice las modificaciones y ya veo la propiedad DeleteRow.

manelb
21-07-2021, 07:24:50
Referente a la solución que propone ecfisa, leí hace un tiempo un artículo de Ian Marteens propuesto por ElKurgan que hablaba sobre el tema: Clases Interpuestas (http://www.clubdelphi.com/foros/showpost.php?p=534282&postcount=7)

Me pareció muy interesante y lo he utilizado en algunas ocasiones.
Espero sea de interés refrescarlo.

Saludos