Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Uso de dbgrid (https://www.clubdelphi.com/foros/showthread.php?t=91625)

Dergon 21-03-2017 16:55:37

Uso de dbgrid
 
Buenas tardes amigos y colegas,estaba necesitando una ayuda en un projecto que estoy realizando,estoy haciendo un cadastro de clientes en la cual tambien tiene fotos,e conseguido que al pasar al siguiente registro con el dbnavigator el busque la imagen y lo muestre,pero lo que no estoy consiguiendo hacer es que si seleciono un registro en el dbgrid pueda mudar la foto igual como el dbnavigator.

orodriguezca 21-03-2017 17:18:14

Sería bueno que colocaras algo más de información sobre tu proyecto: base de datos, componente para mostrar la foto, algo de código, etc. Sin embargo, haciendo de adivino, supongo que la foto la muestras haciendo uso de los eventos en los botones del dbNavigator. Si adiviné te sugiero que mejor traslades el código que muestra la foto al evento onAfterScroll del dataSet que tiene los datos.

Dergon 21-03-2017 19:01:06

Código Delphi [-]
procedure Tfrmcliente.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
var 
  ultcod:Integer; //variable de conteo
begin
  if dm_dados.ds_cliente.State in [dsinsert] then 
  begin
    tbl_auxiliar_cliente.Open;
    tbl_auxiliar_cliente.Last; 
    ultcod:=tbl_auxiliar_clienteCLI_CODIGO.Value + 1;
    dm_dados.tbl_clienteCLI_CODIGO.Value:=ultcod;
    tbl_auxiliar_cliente.Close;
    DBEdit2.SetFocus;
    dm_dados.tbl_clienteCLI_FOTO.Value:='C:\Estoque\iconos\sem_imagem.jpg';
    foto.Picture.LoadFromFile(dm_dados.tbl_clienteCLI_FOTO.Value);
  end
  else
    FOTO.Picture.LoadFromFile(dm_dados.tbl_clienteCLI_FOTO.Value);
end;
este es el codigo en la hora de usar el dbnavigator el busca directamente la foto,si voy en siguiente registro,o anterior registro funciona ok,pero si seleciono directamente el cliente en mi dbgrid el no muda la foto,en cual evento puedo colocar el codigo que busca la imagen,en los eventos del dbgrid.

ElKurgan 22-03-2017 07:20:41

Si es un DBGRID (y no un StringGrid ni nada parecido), estará asociado a un TDataSource.

Pues en el componente DataSource capturas el Evento "OnChange" y pones ahí el código que quieras

Un saludo

Dergon 22-03-2017 13:54:15

Solucionado
 
Muchas gracias por tomarse su tiémpo en responder,la solución fue colocando el Código en el siguiente evento del dbgrid "OnCelClick".

movorack 22-03-2017 16:03:43

Hola Dergon,

Imagina que en un futuro alguna funcionalidad o componente de tu programa mueve el cursor a otro registro sin hacer click en la DBGrid. Entonces verás que el resultado que ahora tienes no funciona.

Lo recomendable es que muevas el código o el llamado a un evento con ese código a un evento del DataSet o DataSource. Así cuando cualquier otro evento mueva el cursor del dataset, el código se disparará y obtendrás el resultado esperado.

De la manera que lo hiciste funciona, Si, pero lo que te dijeron los dos usuarios antes que yo es algo mas optimo.

Dergon 22-03-2017 16:40:19

estas en lo correcto,de la siguiente manera que publique mas arriba,solo haciendo click al registro funcionaba,pero al navegar con el cursor no iba la cosa,pero ya logre entender mejor y lo hice de la manera correcta,nuevamente muchas gracias a todos.


La franja horaria es GMT +2. Ahora son las 22:42:43.

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