Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   eliminar un registro de un stringgrid (https://www.clubdelphi.com/foros/showthread.php?t=69819)

ingabraham 10-09-2010 22:00:19

eliminar un registro de un stringgrid
 
sencilla la pregunta
como elimino un registro de un stringgrid?

ecfisa 10-09-2010 22:16:12

Hola ingabraham.

El TStringGrid no trabaja con registros sino con celdas que a las que se accede por filas y columnas.

Te pongo algunos ejemplos de borrado de celdas:
Código Delphi [-]
begin
 StringGrid1.Cells[Col, Fil]:= ''; // elimina valor de una celda
 StringGrid1.Cols[Col].Clear; // elimina valores de una columna
 StringGrid1.Rows[Fil].Clear; // elimina valores de una fila
end;

Donde Col y Fil son respectivamente número de columna y número de fila.
Para borrar toda una fila o columna también es posible hacerlo con la propiedad Cells y una variable incremental en la posición de la fila o columna según se precise. Usando como cota inferior 0 y StringGrid.Cols.Count -1 ó StringGrid.Rows.Count-1 como superior; por ejemplo.


Saludos. :)

Caro 11-09-2010 05:23:40

Hola ingabraham, para borrar una fila, lo que puedes hacer es desproteger el StringGrid y utilizar el procedimiento DeleteRow.

Código Delphi [-]
type
  TStringGrid = class(Grids.TStringGrid);
 
....................................................
 
  StringGrid1.DeleteRow(StringGrid1.Row); //Para eliminar la fila actual

Saluditos

ecfisa 11-09-2010 19:41:31

Cita:

Empezado por Caro (Mensaje 376061)
Hola ingabraham, para borrar una fila, lo que puedes hacer es desproteger el StringGrid y utilizar el procedimiento DeleteRow.
Saluditos

Muy interesante ...

Nunca había usado el procedimiento DeleteRow de TCustomGrid, veo que también está DeleteColumn.

No uso casi nunca el StringGrid, voy a tener que revisarlo un poco más...

Gracias por la info Caro. :)

Saludos.

ingabraham 15-09-2010 00:45:07

ok, resulta con este codigo elimino .
Código Delphi [-]
type
  TStringGrid = class(Grids.TStringGrid);
 
....................................................
 //en un boton o en un menu derecho de la grilla.
  StringGrid1.DeleteRow(StringGrid1.Row); //Para eliminar la fila actual

pero existe un problema, al ingresar un nuevo registro me vuelve a colocar el ultimo que elimine.

osea puedo eliminar uno,dos, tres registro
pero al momento de agregar uno nuevo, tambien me agrega el ultimo que elimine.

como hago?

Caral 15-09-2010 00:49:11

Hola
Me da la impresion de que los registros los traes de una tabla.
El codigo NO elimina ningun registro, lo que hace es eliminar la linea donde aparece en el StringGrid, osea, no lo muestra nada mas.
Para eliminar el registro ya se tiene que ir directamente a la tabla.
Saludos

ingabraham 15-09-2010 01:38:48

tengo unas casillas de textp
nombre dir tel sexo
y eso es lo q agrego ala grilla. no los traigo de ninguna parte.

ecfisa 15-09-2010 02:28:13

Cita:

Empezado por ingabraham (Mensaje 376471)
pero existe un problema, al ingresar un nuevo registro me vuelve a colocar el ultimo que elimine.
osea puedo eliminar uno,dos, tres registro
pero al momento de agregar uno nuevo, tambien me agrega el ultimo que elimine.
como hago?

Podrías poner el código donde agregas la nueva Fila (Row) ?

Saludos. :)

ingabraham 15-09-2010 02:40:55

no

incremento un rowCount
Rejilla.rows[i][0] := de cada columna
incremento consecutivofilas


listo.-

------------------------------
al eliminar hago.
StringGrid1.DeleteRow(StringGrid1.Row);
decremento consecutivofilas

ecfisa 15-09-2010 02:58:55

Cita:

Empezado por ingabraham (Mensaje 376479)
no

incremento un rowCount
Rejilla.rows[i][0] := de cada columna
incremento consecutivofilas


listo.-

No entiendo la lógica de lo que escribiste.
¿ Que valores toma la variable i ?, consecutivofilas que es, ¿ una variable ?
¿ rows[i][0]:= a que cosa ?
A primera vista pareciera que altera todos los valores de la columna 0 y agrega una fila...


Sería más sencillo ayudarte si ponés el código.

Saludos.

ecfisa 15-09-2010 03:33:17

Me quedé tratando de deducir que es lo que te pasaba...

Cita:

pero al momento de agregar uno nuevo, tambien me agrega el ultimo que elimine
El problema no lo podés tener al agregar una línea, es demasiado trivial:
Código Delphi [-]
  StringGrid1.RowCount:= StringGrid1.RowCount +1;

Así que debe ser al insertár una línea. Si no inferí mal, mi apellido desde ahora será Holmes :D.
El código:
Código Delphi [-]
procedure TForm1.InsertarFila(Index: Integer);
var
  i: Integer;
begin
  with StringGrid1 do
  begin
    RowCount:= RowCount +1;
    for i:= RowCount-1 downto Index do
       Rows[i]:= Rows[i-1];
    Rows[Index].Clear;
  end;
end;

Saludos. :)

Caral 15-09-2010 05:07:31

Hola
Cita:

Empezado por ingabraham (Mensaje 376476)
tengo unas casillas de textp
nombre dir tel sexo
y eso es lo q agrego ala grilla. no los traigo de ninguna parte.

Bien: si dices que no los traes de ninguna parte entonces como explicas esto:
Cita:

Empezado por ingabraham (Mensaje 376471)
pero existe un problema, al ingresar un nuevo registro me vuelve a colocar el ultimo que elimine.

osea puedo eliminar uno,dos, tres registro
pero al momento de agregar uno nuevo, tambien me agrega el ultimo que elimine.

Si eliminas algo ya no esta, osea muerto...........
Traes, por que traes los datos de algun lado, en este caso de las supuestas
casillas de textp.
Ahora me pregunto:
Que clase de casillas de texto contienen o guardan los datos ya eliminados?, para mi, ninguna.
El concepto esta mal planteado:
1- Los datos provienen de Edits.
2- Los datos son pasados a StringGrid
3- Los datos son actualizados en los edits.
4- Los datos quieren ser borrados en el StringGrid.
Donde estan los datos?.
Donde se guardan los Datos?.
Por que para mi si no se guardan en algun lado simplemente no estan, entonces como se repiten?.
NO entiendo nada y mucho menos que digas: ''no los traigo de ninguna parte''.
Saludos

ecfisa 15-09-2010 05:12:12

Cita:

Empezado por Caral (Mensaje 376485)
Hola

Bien: si dices que no los traes de ninguna parte entonces como explicas esto:

Si eliminas algo ya no esta, osea muerto...........
Traes, por que traes los datos de algun lado, en este caso de las supuestas
casillas de textp.
Ahora me pregunto:
Que clase de casillas de texto contienen o guardan los datos ya eliminados?, para mi, ninguna.
El concepto esta mal planteado:
1- Los datos provienen de Edits.
2- Los datos son pasados a StringGrid
3- Los datos son actualizados en los edits.
4- Los datos quieren ser borrados en el StringGrid.
Donde estan los datos?.
Donde se guardan los Datos?.
Por que para mi si no se guardan en algun lado simplemente no estan, entonces como se repiten?.
NO entiendo nada y mucho menos que digas: ''no los traigo de ninguna parte''.
Saludos

Esta lógica sí la entiendo... :D

Saludos. :)

Caral 15-09-2010 05:18:03

Hola
Amigo, lo poco que se de esto que llaman programación es que es pura y absoluta lógica.
Si la usas entonces hasta el código mas complejo se podrá entender.
Lo que no se puede hacer es tener manzanas y después de comértelas que aparezcan otra vez por arte de magia.
Por eso digo que el planteamiento esta mal hecho.
NUNCA, pero NUNCA llegaremos a entender el problema y en mi caso a TRATAR de ayudar si el mago no nos enseña su secreto.:rolleyes:
Saludos


La franja horaria es GMT +2. Ahora son las 01:03:45.

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