Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-09-2011
ezequiel913 ezequiel913 is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 39
Poder: 0
ezequiel913 Va por buen camino
Como asignar registro de dbgrid en StringGrid?

Hola Gente!!

Queria saber como asignar la tupla que esta seleccionada en el DBGrid a un StringGrid? Por que quiero hacer esto? bueno el tema es el siguiente, hago una consulta que busca todos los articulos de la tabla materiales y los muestra en un DBGrid, y quiero poder seleccionar una tupla y presionar un boton y agregar esa tupla seleccionada en el StringGrid. Tambien quiero saber si se puede seleccionar un registro en el StringGrid y eliminarlo?

bueno eso seria todo, y creo que fui bastante claro con lo que necesito. sino se entienden avisenme.

saludos.
Responder Con Cita
  #2  
Antiguo 24-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El stringGrid trabaja por celdas.
Cada celda representa un espacio donde se colocara la informacion, por ejemplo el titulo:
Código Delphi [-]
   SGrid.Cells[0,0] := 'Código';
   SGrid.Cells[1,0] := 'Descripción';
   SGrid.Cells[2,0] := '# Pieza';
   SGrid.Cells[3,0] := 'Cantidad';
Y asi con todo lo demas.
En el caso de la informacion de la tabla simplemente se coloca el dato.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 24-09-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
Hola ezequiel913.

Por favor para la próxima un hilo para cada pregunta

Cita:
Queria saber como asignar la tupla que esta seleccionada en el DBGrid a un StringGrid?
Código Delphi [-]
var
  i: Integer;
begin
  for i:= 0 to DBGrid1.Columns.Count-1 do
   with StringGrid1 do
     Cells[FixedCols+i,Row]:= DBGrid1.Columns[i].Field.AsString;

Cita:
quiero saber si se puede seleccionar un registro en el StringGrid y eliminarlo?
Creo que te referis a una fila.
Código Delphi [-]
...
type
  TStringGrid = class(Grids.TStringGrid);
...
implementation
...
begin
 StringGrid1.DeleteRow(StringGrid1.Row); // Borra fila actual.
end;

Saludos.

Edito: No había visto tu respuesta amigo, disculpas. Aunque es mas o menos lo mismo que le acabas de sugerir.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 24-09-2011 a las 01:00:47.
Responder Con Cita
  #4  
Antiguo 24-09-2011
ezequiel913 ezequiel913 is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 39
Poder: 0
ezequiel913 Va por buen camino
Cita:
Empezado por Caral Ver Mensaje
Hola
El stringGrid trabaja por celdas.
Cada celda representa un espacio donde se colocara la informacion, por ejemplo el titulo:
Código Delphi [-] SGrid.Cells[0,0] := 'Código'; SGrid.Cells[1,0] := 'Descripción'; SGrid.Cells[2,0] := '# Pieza'; SGrid.Cells[3,0] := 'Cantidad';

Y asi con todo lo demas.
En el caso de la informacion de la tabla simplemente se coloca el dato.
Saludos
Hola Caral!!

Los nombres de las columnas del StringGrid los pongo en tiempo de Diseño, lo que quiero saber es como asignar el registro que esta seleccionado en el DBGrid al StringGrid. osea vos me podes decir que es mas facil, recorrer la tabla y asignar directamente en el StringGrid, pero yo necesito mostrar esos datos en el DBGrid y seleccionar el registro que quiero y asignarlo al StringGrid, una ves que asigne todos los registros que necesito en el StringGrid los tengo que guardar en otra tabla, osea a los datos que estan en el DBGrid cuando los paso al StringGrid les agrego unos atributos mas, para poderlos guardar en otra tabla. saludos, espero que hayas entendido bien.

saludos, gracias.
Responder Con Cita
  #5  
Antiguo 24-09-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
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 ezequiel913 Ver Mensaje
[...] a los datos que estan en el DBGrid cuando los paso al StringGrid les agrego unos atributos mas, para poderlos guardar en otra tabla.
Hola, tal vez me perdí de algo pero, si es como entiendo, ¿por qué mejor no usas dos DBGrids? Supongo que para no enviar a la base de datos la información sino hasta que el usuario haya terminado de seleccionar los registros que desea. Si este fuera el caso, podrías usar un TClientDataSet que te permite mantener los registros en memoria antes de guardarlos.

Saludos.

Al González.
Responder Con Cita
  #6  
Antiguo 24-09-2011
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Recuerda una cosa:
El dbgrid obtiene sus datos de un dataset, osea un table o un query, estos son los que tienen los datos, NO el dbgrid que solo los muestra.
Sabiendo esto tienes que obtener esa información del dataset y pasársela al stringrid.
Es muy sencillo, si es lo que estoy entendiendo.
Si no te queda claro algo no te preocupes, sigue preguntando.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 24-09-2011
ezequiel913 ezequiel913 is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 39
Poder: 0
ezequiel913 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola ezequiel913.

Por favor para la próxima un hilo para cada pregunta


Código Delphi [-]var i: Integer; begin for i:= 0 to DBGrid1.Columns.Count-1 do with StringGrid1 do Cells[FixedCols+i,Row]:= DBGrid1.Columns[i].Field.AsString;



Creo que te referis a una fila.
Código Delphi [-]... type TStringGrid = class(Grids.TStringGrid); ... implementation ... begin StringGrid1.DeleteRow(StringGrid1.Row); // Borra fila actual. end;


Saludos.

Edito: No había visto tu respuesta amigo, disculpas. Aunque es mas o menos lo mismo que le acabas de sugerir.

Muchas Gracias Ecfisa, pude resolver el tema que tenia.

Saludos!!!
Responder Con Cita
  #8  
Antiguo 24-09-2011
ezequiel913 ezequiel913 is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 39
Poder: 0
ezequiel913 Va por buen camino
Gracias Caral y Al Gonzalez por la contestacion y el tiempo utilizado.

saludos.!!!
Responder Con Cita
  #9  
Antiguo 24-09-2011
ezequiel913 ezequiel913 is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 39
Poder: 0
ezequiel913 Va por buen camino
Código Delphi [-]
...
type
  TStringGrid = class(Grids.TStringGrid);
...
implementation
...
begin
 StringGrid1.DeleteRow(StringGrid1.Row); // Borra fila actual.
end;

Hola Ecfisa!! queria saber si me podes explicar un poco mas este procedimiento, osea lo que yo quiero es poder eliminar la fila del StringGrid que esta seleccionada.

Saludos. Gracias!!
Responder Con Cita
  #10  
Antiguo 24-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No soy Ecfisa, pero te lo explicaré, es fácil:
Código Delphi [-]
StringGrid1.DeleteRow(StringGrid1.Row); // Borra fila actual.

StringGrid1.Row devuelve el número de fila donde está posicionado el
cursor en el grid, o sea, en la fila de la celda donde está.
Imagina que está posicionado en la fila 2.

Es lo mismo el código anterior, que hacer directamente:
Código Delphi [-]
stringgrid1.DeleteRow(2);
Responder Con Cita
  #11  
Antiguo 24-09-2011
ezequiel913 ezequiel913 is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 39
Poder: 0
ezequiel913 Va por buen camino
Gracias Casimiro Notevi!!!
me ayudo mucho tu explicacion.

Saludos!!

Última edición por ezequiel913 fecha: 24-09-2011 a las 23:16:18. Razón: error de nombre
Responder Con Cita
  #12  
Antiguo 25-09-2011
ezequiel913 ezequiel913 is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 39
Poder: 0
ezequiel913 Va por buen camino
Por mis amigos

Cita:
Empezado por ezequiel913 Ver Mensaje
Gracias Casimiro Notevi!!!
me ayudo mucho tu explicacion.
esto se lo dedico a mi NOVIA SOL que la re amo,y perdon roge por no lllevarte al asado
Saludos!!
Responder Con Cita
  #13  
Antiguo 27-09-2011
ezequiel913 ezequiel913 is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 39
Poder: 0
ezequiel913 Va por buen camino
Problema al borrar una linea del StringGrid!

Hola Gente!!

bueno el tema que tengo es que me elimina mal la fila que selecciono. como es esto??

selecciono una fila del StringGrid y apretó el botón borrar me borra la fila que seleccione pero parece que la deja almacenada en algun lado, una vez que la borre y despues la quiero cargar de vuelta tengo una validacion que no me deja entrar 2 filas iguales, osea me dice que ya fue cargada esa fila, pero no tiene que ser asi, por que yo la borre con anterioridad, eso quiere decir que no me borro del todo la fila que le dije antes. por que en algun lado quedo registrado sino no me tendria que decir que ya fue cargado.

este es el codigo de borrar que tengo:

Código Delphi [-]
  If (SG.Cells[1,SG.Row] = '') or (SG.Row = 0) Then Begin

   Application.MessageBox('No se puede eliminar esta fila','Mensaje');
   Exit;
  End
  Else begin

     SG.DeleteRow(SG.Row);
  
   end;


bueno espero que se entienda lo que queiro decir.

saludos!!!
Responder Con Cita
  #14  
Antiguo 27-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Pues no, no se entiende

En tu código dice:

Código Delphi [-]
If (SG.Cells[1,SG.Row] = '') or (SG.Row = '0') Then
Begin
  Application.MessageBox('No se puede eliminar esta fila','Mensaje');    
  Exit;   
End   
Else 
begin       
  SG.DeleteRow(SG.Row);       
end;
Resumiendo: si la celda está vacía o tiene un cero, saca un mensaje y sale. NO borra.
Si tiene algo escrito distinto de '' y distinto de cero, (que por cierto tendrás que poner el cero entre comillas porque el stringgrid sólo almacena cadenas)
entonces sí la borra.

¿Y cuál es el problema entonces?
Responder Con Cita
  #15  
Antiguo 28-09-2011
ezequiel913 ezequiel913 is offline
Miembro
NULL
 
Registrado: may 2011
Posts: 39
Poder: 0
ezequiel913 Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Pues no, no se entiende

En tu código dice:

Código Delphi [-]
If (SG.Cells[1,SG.Row] = '') or (SG.Row = '0') Then
Begin
  Application.MessageBox('No se puede eliminar esta fila','Mensaje');    
  Exit;   
End   
Else 
begin       
  SG.DeleteRow(SG.Row);       
end;
Resumiendo: si la celda está vacía o tiene un cero, saca un mensaje y sale. NO borra.
Si tiene algo escrito distinto de '' y distinto de cero, (que por cierto tendrás que poner el cero entre comillas porque el stringgrid sólo almacena cadenas)
entonces sí la borra.

¿Y cuál es el problema entonces?

Lo que esta dentro del IF es para que no borre una linea que esta vacía y tampoco para que no borre la linea donde están los títulos de las columnas.

el tema es así:
- tengo que ingresar datos de productos en un StringGrid con su respectiva cantidad, si quiero ingresar mas cantidad del mismo producto solo modifico la columna de cantidad. si por alguna razón elimino este producto y después lo quiero ingresar devuelta me dice que ya fue cargado anteriormente, eso quiere decir que en algún lado quedo registrado ese Producto en el StringGrid o en otro lado.
Tengo que poder cargar productos y eliminarlos cuantas veces quiera, y si ya fue eliminado del StringGrid poder volver a cargarlo sin ningún problema.

sino se entiende avísame de vuelta.

saludos
Responder Con Cita
  #16  
Antiguo 28-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por ezequiel913 Ver Mensaje
si por alguna razón elimino este producto y después lo quiero ingresar devuelta me dice que ya fue cargado anteriormente, eso quiere decir que en algún lado quedo registrado ese Producto en el StringGrid o en otro lado.
Ahora sí te he entendido, entonces estaba bien el código que has puesto.
¿Y cómo cargas los datos en el stringgrid?, ¿qué control haces antes y durante la carga?

Es que un stringgrid no hace nada, son simples cadenas de textos que colocas en las celdas que te parece, no tiene ningún control de ningún tipo.
Responder Con Cita
  #17  
Antiguo 28-09-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
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
Insisto, ¿por qué no usar esto?
Responder Con Cita
  #18  
Antiguo 28-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Al González Ver Mensaje
Insisto, ¿por qué no usar esto?
Desde luego que es la mejor opción, porque lo que está intentando conseguir ezequiel913 es demasiado engorroso de sincronizar correctamente. Y con la opción de Al González está sincronizado automáticamente, o como mínimo, te ahorras de estar copiando datos de un lado para otro.
Responder Con Cita
  #19  
Antiguo 28-09-2011
Niiña Niiña is offline
Miembro
NULL
 
Registrado: sep 2011
Posts: 36
Poder: 0
Niiña Va por buen camino
Como seleccionar con un click una fila selecciona en el dbgrid.

Holaa.. Quisiera saber como seleccionar una fila del dbgrid haciendo click en un Form y agregarlo o que aparezca en un Edit en otro Form..?

Última edición por Niiña fecha: 28-09-2011 a las 20:45:54.
Responder Con Cita
  #20  
Antiguo 28-09-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.052
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola Niiña, por favor, revisa nuestra guía de estilo, gracias.
Responder Con Cita
Respuesta



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
Como Asignar los campos a un DbGrid en tiempo de ejecucion oscarac Varios 5 03-06-2011 05:55:59
Si DBGrid no lo permite como trabajar con StringGrid Kenobi Varios 1 26-02-2008 16:00:22
Cómo asignar un valor a una celda de un DBGrid bellota Varios 9 20-06-2006 20:55:29
COMO CREAR UN dbGRID ESTILO CLIPPER stringgrid ASAPLTDA OOP 1 16-04-2006 16:05:48
como asignar un valor a una columna en un dbgrid Shidalis Varios 4 18-07-2005 23:50:46


La franja horaria es GMT +2. Ahora son las 22:39:08.


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
Copyright 1996-2007 Club Delphi