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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-10-2014
principiodual principiodual is offline
Miembro
NULL
 
Registrado: ago 2014
Posts: 26
Poder: 0
principiodual Va por buen camino
Obtener dato de una celda especifica DBGRID

Buenas tardes a todos, he tenido que crear un tema ya que he visitado varios link que se acercan a lo que busco o pero ninguno hace realmente lo que busco y por falta de sintaxis no he podido resolverlo yo mismo lamentablemente... Explico el asunto a ver si alguién me puede ayudar o por lo menos orientar. Muchas gracias de ante mano.

En primera instancia buscaba alguna manera de obtener el valor de una celda en la que haga clic dentro de un DBGRID, no de la manera en que muchos piensan.

en el evento Oncellclick del DBGRID Y PONGO:

Código Delphi [-]
DATO_CAPTURADO:=Form5.DBGrid1.DataSource.DataSet.FieldByName('CODMONEDA').AsInteger;

Porque siempre voy a capturar el valor CODMONEDA según la fila donde me posicione... pero en mi caso tengo 4 campos en mi tabla
CODMONEDA,FECHAINICIAL, FECHAFINAL, NATURALEZACUENTA...

yo lo que deseo es que si me posiciono con el mouse y doy clic en una celda por ejemplo FECHAFINAL, el tome el valor de la fecha, no siempre del mismo dato, sino que dependiendo del dato donde de clic sea el dato que obtengo.

pero como al parecer no existe un tema que toque esto, me iría por lo más fácil que sería tomar el indice o la posición de la celda, es decir
si me posiciono en la celda de la columna FECHAFINAL, en ves de traerme el dato que sería por ejemplo un: 12/12/2012, me traería un 3, ya
que es la tercera posición de la fila en la que esté posicionado y haría algo como esto:

IF POSICIÓN_OBTENIDA = 1 then DATO_CAPTURADO:=Form5.DBGrid1.DataSource.DataSet.FieldByName('CODMONEDA').AsInteger
ELSE IF POSICIÓN_OBTENIDA = 2 DATO_CAPTURADO:=Form5.DBGrid1.DataSource.DataSet.FieldByName('FECHAINICIAL').AsInteger
ELSE etc.. etc...


y de esa manera obtener de una forma menos decorosa el dato que requiero... espero no sea tan difícil obtener la posición de la celda en la
que se de clic...

Este método que desarrollo el amigo ECFISA, funciona a la perfección y fue lo mas cercano a lo que busco que encontré salvo con la cuestión
de que el dato no lo obtengo por eventos de OncellClick que sería lo ideal sino por datos ingresados por el usuario o datos predefinidos, estoy buscando la manera de adaptarlo a lo que busco que es, en ves de asignarle datos de filas y columnas fijos, lo obtenga directamente en el evento Oncellclick dando click con el mouse y de esa manera pueda traerme ya sea el valor o la posición por lo menos del campo, para seguir
avanzando, espero haberme podido explicar bien. Muchas gracias a quién pueda por lo menos orientarme, saludos a todos.

Ejemplo de codigo de ECFISA...

Código Delphi [-]

TDBGridExt = class(TDBGrid);               //para detectar valores en celdas navigator.


 private
    { Private declarations }
  function DBgridColFil(ACol,AFil: integer; GE: TDBGridExt): string;   


//----------------------------------------------------------------------------//
//---FUNCIÓN PARA CAPTURAR LA POSICIÓN EN LA QUE SE HACE CLIC DE UNA CELDA----//
//----------------------------------------------------------------------------//


function TForm3.DBgridColFil(ACol, AFil: integer; GE: TDBGridExt): string;
begin
  Result:= '';
  GE.DataSource.DataSet.MoveBy(1 - GE.Row); //  DataSet en fila 1 del DBGrid
  // Verifocar validez de ACol y AFil
  if (AFil > 0)and(ACol > 0)and(AFil < GE.RowCount)and(ACol < GE.ColCount) then
  begin
    GE.DataSource.DataSet.MoveBy(Afil-1); // Posicionarse en  AFil
    GE.Refresh;
    GE.FocusCell(ACol,AFil,True);         // Foco en la celda
    GE.SetFocus;
    Result:= GE.SelectedField.AsString;
    Edit1.text:= Result;
  end
  else
    raise Exception.Create('Selección fuera de rango');
end;

//----------------------------------------------------------------------------//
//----------------------------------------------------------------------------//
//----------------------------------------------------------------------------//


procedure TForm3.Button1Click(Sender: TObject);
begin
 Caption:= DBGridColFil(StrToInt(Edit1.Text),StrToInt(Edit2.Text), TDBGridExt(DBGrid1));
end;
Responder Con Cita
 



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 Celda Del Dbgrid sandra mendoza Varios 15 10-10-2014 22:05:31
Obtener el valor de la celda de un DBGrid GerTorresM Varios 1 25-11-2010 17:19:24
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
Obtener el valor de una celda de dbgrid gescoto99 OOP 3 31-03-2004 22:47:16


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