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 28-10-2008
Avatar de sandra mendoza
sandra mendoza sandra mendoza is offline
Miembro
 
Registrado: feb 2008
Posts: 24
Poder: 0
sandra mendoza Va por buen camino
Capturar Dato En Celda Del Dbgrid

Buenas tardes.

Necesito que al dar doble click en una celda donde esta el codigo de un articulo, pueda capturar ese dato ya sea en un label o un edit, para poder hacer otro proceso con ese dato. ¿Es posible? ¿Que sentencia debo utilizar?

Muchas gracias
Responder Con Cita
  #2  
Antiguo 28-10-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
El dbgrid solo muestra, lo que interesa es de donde saca esa infromacion.
La infromacion viene de un query o un table, ahi es donde hay que conseguir ese dato.
Ahora pregunto: Por que no un DBedit ?.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 28-10-2008
Avatar de sandra mendoza
sandra mendoza sandra mendoza is offline
Miembro
 
Registrado: feb 2008
Posts: 24
Poder: 0
sandra mendoza Va por buen camino
Pues mira, estoy haciendo un inventario que se refleja en el dbgrid que esta conectado a un query, la idea es q el usuario al dar doble click en la celda donde figura el articulo pueda ver mas detalles de este. El dbgrid tendra alguna propiedad en donde yo pueda copiar el dato que tenga escrito?
Responder Con Cita
  #4  
Antiguo 28-10-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Este hace exactamente lo que quieres.
Dale doble click al dbgrid y saldrá el dato que falta de la tabla, tanto en el edit como en el label, así te servirá de ejemplo.
Saludos
__________________
Siempre Novato

Última edición por Caral fecha: 19-11-2008 a las 18:54:44.
Responder Con Cita
  #5  
Antiguo 28-10-2008
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 21
StartKill Va por buen camino
Saludos,

Perfecto, me lo arrancaste de los dedos Caral.

Mas deseo aportar lo que sigue:

Código Delphi [-]
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
   // aqui se usa el numero que corresponde al campo que se quiere mostrar
   // en edit
   //Edit1.Text:= ADOQuery1.Fields[2].AsString;
   // en label
   //Label3.Caption:= ADOQuery1.Fields[2].AsString;

 // la idea es que los nombres de campos esten en el editor de campos
  // de esa forma nos dirigimos directo al campo
  // y si por alguna razon se cambia el orden de los campos
  // estos nos siguan dando los valores correctos
   
   Edit1.Text:= ADOQuery1Otros,asString;
   Label3.Caption:= ADOQuery1Otros.AsString;

end;

Your friend

StartKill
Lima-Perú

Última edición por StartKill fecha: 28-10-2008 a las 20:28:54. Razón: Tipografia
Responder Con Cita
  #6  
Antiguo 28-10-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Buen aporte StartKill.
Para mi el problema de poner los campos en el editor es que nos forzamos a tener un query por consulta.
Yo suelo tener un query para varias consultas asi solo me dedico al sql olvidandome de que query es el que uso.
Aun asi me gusta que ampliaras el contenido, aprendemos mas todos.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #7  
Antiguo 29-10-2008
pablopessoa pablopessoa is offline
Miembro
 
Registrado: may 2008
Ubicación: Argentina
Posts: 162
Poder: 16
pablopessoa Va por buen camino
hola sandra mendoza, argentina? yo tb!!! saludos.

si bien ya han dado varias respuestas, queria hacer un aporte chiquito que capas tb te sirve. Yo muchas veces saco los datos del dbgrid( ya sea en los eventos OnClick u OnDoubleClick como tb cuando das la posibilidad de seleccionar una fila) de la siguiente forma :

Código Delphi [-]

label1.caption:=DBGrid1.DataSource.DataSet.FieldByName('nombreCampo').AsString;

Espero sirva mi aporte, saludos a todos!!
Responder Con Cita
  #8  
Antiguo 29-10-2008
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Todos los aportes son buenos, aqui estamos para aprender unos de los otros.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #9  
Antiguo 29-10-2008
Avatar de sandra mendoza
sandra mendoza sandra mendoza is offline
Miembro
 
Registrado: feb 2008
Posts: 24
Poder: 0
sandra mendoza Va por buen camino
Muchas gracias por todos sus aportes. Siempre me salvan!!!
Responder Con Cita
  #10  
Antiguo 14-11-2010
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 21
JXJ Va por buen camino
Question

tengo una duda con esto

label1.caption:=DBGrid1.DataSource.DataSet.FieldByName('nombreCampo').AsString;

en que evento del dbgrid coloco ese codigo

si yo quiero desplazarme en dentro del dbgrid usando
las teclas up down.
las teclas de las flechas Arriba y Abajo

me interesa que se muestre esa informacion segun
el campo. de la fila que tiene el foco.

no se a lo mejor un evento onrowfocus

onrowfocus
begin
label1.caption:=DBGrid1.DataSource.DataSet.FieldByName('nombreCampo').AsString;

end
Responder Con Cita
  #11  
Antiguo 15-11-2010
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 JXJ.

La podrías poner en el evento OnDrawDataCell por ejemplo.
Código Delphi [-]
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
begin
  if gdSelected in State then
    Label1.Caption:= DBGrid1.DataSource.DataSet.FieldByName('NombreCampo').AsString;
end;

Ahora si tu intención como decis, es sólamente mostrar esa información, me parece más adecuado usar un TDBText.

Saludos.
Responder Con Cita
  #12  
Antiguo 10-10-2014
principiodual principiodual is offline
Miembro
NULL
 
Registrado: ago 2014
Posts: 26
Poder: 0
principiodual Va por buen camino
Capturar valor dependiendo del mouse

Hola, he estado visitando varios temas, pero veo que este se acerca más a lo que busco pero salvo una diferencia que es la misma que siempre veo en este tipo de temas...

Yo necesito tomar el valor de no un campo previamente definido sino de cualquier campo donde haga clic, por ejemplo.

tengo una tabla con cuatro campos uno es CODMONEDA, FECHAINICIAL, FECHAFINAL, TASACAMBIO y si deseo colocar el mouse en la casilla de datos por ejemplo de FECHAFINAL me tome ese valor, y si después lo deseo poner en CODMONEDA me tome ese valor...

Es decir no me sirve como lo explican aquí ya que se basa siempe en tomar por ejemplo el mismo valor (CODMONEDA) pero de la fila donde se de el clic.
No se si me explico, si alguién me puede ayudar muchas gracias, sigo investigando mas acerca de los eventos de GRID. Saludos.

Última edición por principiodual fecha: 10-10-2014 a las 16:42:14.
Responder Con Cita
  #13  
Antiguo 10-10-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que es lo mismo que estás pidiendo, ¿por qué no te sirve?
Responder Con Cita
  #14  
Antiguo 10-10-2014
principiodual principiodual is offline
Miembro
NULL
 
Registrado: ago 2014
Posts: 26
Poder: 0
principiodual Va por buen camino
por ejemplo este código...

Código Delphi [-]
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;   Field: TField; State: TGridDrawState);
 begin   if gdSelected in State then     
Label1.Caption:= DBGrid1.DataSource.DataSet.FieldByName('NombreCampo').AsString; 
end;

el va a tomar solo el valor del NombreCampo en la fila donde de clic, en mi caso no es un campo fijo, sino el mismo
campo sobre el que se de clic, es decir solo tomará el valor del dato NombreCampo si se le da click encima de ese campo.
por eso no me sirve me imagino debo trabajar con alguna propiedad que use el Field pero trabaje directamente con el
valor de la celda.

Código Delphi [-]
//THackDBGrid = class(TDBGrid) //refresh datagrid data - preserve row position

 var
 rowDelta: Integer; row: integer;
 recNo: integer; ds : TDataSet;
  begin ds := THackDBGrid(DBGrid1).DataSource.DataSet;
  rowDelta := -1 + THackDBGrid(DBGrid1).Row;
  row := ds.RecNo; ds.Refresh;
  with ds do begin DisableControls;
  RecNo := row; MoveBy(-rowDelta) ;
  MoveBy(rowDelta) ;
  EnableControls;

  ShowMessage(IntToStr(rowDelta));
  ShowMessage(IntToStr(row));
  ShowMessage(IntToStr(recNo));

Este código lo encontre en otra página, pero el chico lo usa para el caso de calcular posiciones, lo he
intentado llevar a lo que quiero pero no lo entiendo del todo lamentablemente.

Última edición por principiodual fecha: 10-10-2014 a las 17:22:19.
Responder Con Cita
  #15  
Antiguo 10-10-2014
principiodual principiodual is offline
Miembro
NULL
 
Registrado: ago 2014
Posts: 26
Poder: 0
principiodual Va por buen camino
Si alguién me pudiera ayudar, la unica forma que se me ocurre después de probar métodos y formas que no funcionan por lo menos para mi caso, tengo una idea de hacerlo y se que va a funcionar, pero necesitaría capturar la posición...

como puedo a través del posicionamiento o un clic en una celda del DBGRID capturar el número de columna, ya que no encuentro un método efectivo para obtener el valor de dicha celda, pienso que quizás sea mucho más fácil capturar el número de la columna en la que se hace clic y así por lo menos yo desarrollar mediante un if, que dato de los cuatro campos para mi tabla voy a traerme.

algo así como; doy clic aquí y obtengo el valor 4, entonces estoy dando clic en la columna de NATURALEZACUENTA que es el campo... y hago mis if...

if posición_campo = 4 then
valorcelda:=Form5.DBGRID1.Datasource.Dataset.Fieldbyname('NATURALEZACUENTA').aSsTRING
ELSE
if posición_campo = 3 then
valorcelda:=Form5.DBGRID1.Datasource.Dataset.Fieldbyname('FECHAFINAL').aSsTRING
ELSE
.... ETC, ETC.

Algo así, se que me funcionaría ya que no puedo obtener el valor directo dando clic en el campo que sea, solo me faltaría la sintaxis para uno poder obtener no el valor de la celda sino la posición de la misma...


espero haberme podido expicar bien y alguién me pueda ayuda, de todas maneras sigo investigando, muchas gracias.
Responder Con Cita
  #16  
Antiguo 10-10-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No olvides poner las etiquetas al código para que se vea correctamente, gracias

Lo mejor que puedes hacer es crear un hilo nuevo haciendo la pregunta lo más clara posible.
Así lo verán todos, ya que ten en cuenta ahora has contestado en un hilo existente desde hace años y nadie recibe mensajes de lo que has escrito, salvo los que participan en este hilo.

Y no olvides 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
Capturar Dato en un Prompt Gaim2205 Varios 1 13-09-2007 20:31:20
Capturar un dato de un dbgrid SaLvaGe Conexión con bases de datos 5 15-09-2005 19:26:17
Codigo para ingresar un dato a una celda de un DBGRID Memphis Conexión con bases de datos 2 25-01-2005 02:11:46
Como saber el Dato Capturado en Celda de un dbGrid. AGAG4 Varios 3 21-01-2005 23:11:44
Como Pintar Solo la Celda y No Toda la Columna de la Celda de un dbGrid?? AGAG4 Varios 11 15-11-2004 20:53:28


La franja horaria es GMT +2. Ahora son las 17:16:57.


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