Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ayuda con un grid!!! (https://www.clubdelphi.com/foros/showthread.php?t=12276)

dsa132132 12-07-2004 01:06:46

Ayuda con un grid!!!
 
Mi problema es el siguiente;

En un formulario de mi aplicación tengo un grid n el que visualizo la tabla de los abonados de una base de datos.

Por otra parte, en el mismo formulario, tengo un boton que efectúa la busqueda de un abonado.

Lo que quiero es que al efectuar la busqueda del abonado quede resaltado en el grid para ver toda su información.



no se si me he explicado bien, quiero que el abonado sober el que realizo la busqueda quede señalado en el BDGrid. Se puede hacer?



Os doy el código de la busqueda para ver si alguien me lo puede resolver;





DMAbonados.QBabonado.close;

DMAbonados.QBabonado.SQL.Clear;

DMAbonados.QBabonado.SQL.Add('Select * from abonado where nombre=:nombre');

DMAbonados.QBabonado.ParamByName('nombre').value:=edit5.text;

DMAbonados.QBabonado.open;



Gracias.

Ruben_Cu 12-07-2004 01:58:34

Hola, aqui te envio unas líneas que te pueden servir, debes poner la propiedad DefaultDrawing del dbgrid a true.
El color lo puedes cambiar a tu gusto, es pero te sirva.
Código PHP:

implementation
 type
  TCustomDBGrid1 
= class(TCustomDBGrid);
{
$R *.dfm}

procedure TForm1.DBGrid1DrawColumnCell(SenderTObject; const RectTRect;
  
DataColIntegerColumnTColumnStateTGridDrawState);
begin

  with TCustomDBGrid1
(sender) do begin
    
if DataLink.ActiveRecord Row 1 then begin
      Canvas
.Brush.Color := claqua;
      
Canvas.Pen.Color := claqua;
    
end;

    
DefaultDrawColumnCell(RectDatacolColumnState);
  
end;
end

Saludos

jachguate 12-07-2004 05:25:58

No estoy seguro de lo que queres hacer. Entiendo que el resultado del Query, luego, queres ubicarlo en otro dataset.

Es asi?

Podes valerte del método Findkey.

Supongamos que además del qbAbonado, tenes un Grid asociado al DataSet tAbonado.

Entonces quedaría algo como:

Código Delphi [-]
  with DMAbonados.QBAbonado do
  Begin
    ParamByName('nombre').Value := Edit5.Text;
    Open;
  end;
  try
    if not DMAbonados.qbAbonado.IsEmpty Then
      tAbonado.FindKey([DMAbonados.qbAbonado.FieldByName('codigo').AsInteger])
     else
       ShowMessage('No hay coincidencias!');
  finally
    DMAbonados.qbAbonado.Close;
  end;

Como ves, he tenido el cuidado de cerrar qbAbonado, que quizas no sea necesario en tu caso (depende de si lo usas para algo mas). Tampoco he modificado su propiedad SQL suponiendo que lo utilizarás solo para este tipo de consultas... pero también eso puede variar en tu caso.

Hasta luego.

;)

marto 12-07-2004 11:01:43

Wop!

Otra opción es, en lugar de ejecutar otra query hacer un locate directamente sobre el dataset del grid.
Código Delphi [-]
  Grid.DataSource.DataSet.Locate('nombre', edit5.Text, []);

dsa132132 12-07-2004 12:13:26

GRacias!!!!!!!!
 
Muchas gracias a todos por vuestra ayuda!!! Este foro es realmente bueno y eficaz.

GRACIAS!!!


La franja horaria es GMT +2. Ahora son las 11:21:37.

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