Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Lazarus, FreePascal, Kylix, etc. (https://www.clubdelphi.com/foros/forumdisplay.php?f=14)
-   -   Seleccionar ítem del TDBGrid Tform1 a TForm2 (https://www.clubdelphi.com/foros/showthread.php?t=87315)

Minoru 11-12-2014 22:07:55

Seleccionar ítem del TDBGrid Tform1 a TForm2
 
1 Archivos Adjunto(s)
Antes que nada quisiera agradecer a la comunidad por la ayuda anterior, me sorprendió la rapidez y la buena respuesta.
y bueno a seguir aprendiendo!! haber si con sus ayudas puedo aprender algo nuevo hoy. :)

bueno siguiente problema, ya tengo todos los datos que necesito en el TDBgrid del TForm1.
quisiera seleccionar un cliente y que los datos de esa persona se muestren en el TForm2, ya sea el NOMBRE, TELEFONO, CELULAR

Muchas gracias de antemano.

Codigo Fuente:
https://www.dropbox.com/s/6grawxspvi...er1.1.rar?dl=0

-------------
Metas:
Crear tablas en una BD Firebird - Solucionado
Conectar BD con Lazarus - Solucionado
Mostrar Resultados en Grid - Solucionado
Filtrar los datos por Búsqueda y Orden – Solucionado
Solución al Problema (MEMO) – Solucionado por ecfisa (v1.0)
Pasar Datos del TDBGrid del form1 a Form2 - Pendiente (v1.1)

ecfisa 12-12-2014 05:45:57

Hola Minoru.

Podes hacer,
Código Delphi [-]
(***   Unit1   ***)
...

implementation

uses Unit2;

// (Usé el evento OnDblClick del DBGrid pero podrías usar cualquier otro)
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
  if not Assigned(Form2) then
     Form2:= TForm2.Create(Self);
  with Form2 do
  begin
    EditNombre.Text:= SQLQ.FieldByName('NOMBRES').AsString;
    EditTel.Text   := SQLQ.FieldByName('TELEFONO').AsString;
    EditCel.Text   := SQLQ.FieldByName('CELULAR').AsString;
    EditNS.Text    := SQLQ.FieldByName('NS').AsString;
    EditFalla.Text := SQLQ.FieldByName('FALLA').AsString;
    Show;
   end
end;    
...
De todos modos no es la forma de trabajo que te recomendaría... Mejor sería que usaras un módulo de datos para depositar tus componentes de conexión a bd.
Conectando ambos formularios a él, en Form2 podrías usar DBEdits y disponer de la información de forma automática (sin tener que pasarla previamente como en el caso de los Edits).

Saludos :)

Minoru 12-12-2014 18:41:00

muchas gracias otra vez por tu ayuda!! T_T
si funciono, me gustaría aprender como tu dices de esa forma. no hay algún ejemplo que tengas por hay de código para aprender a usar esos métodos? disculpa mi ignorancia :(

ecfisa 12-12-2014 20:55:59

Hola Minoru.

Intentaré explicarlo lo mejor posible sobre el ejemplo que trabajas.

1) Agrega un módulo de datos: Archivo->Nuevo->Modulo de datos. (vg.: Unit3)
2) Pone en él el TIBConnection, el TSQLTransaction y el TSQLQuery.

3) Quitar los componentes de datos de los formularios.
4) Agregar el modulo de datos (Unit3) a la cláusula uses de los forms en que vaya a ser requerido
Código Delphi [-]
...
uses ..., Unit3;

5) Agregar un TDataSource al form y asociar la propiedad DataSet del TDataSource al TSQLQuery:

Luego vas a tener que indicar el origen en cada referencia a los datos de este modo:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
  with DataModule1 do
  begin
    sqlq.Active:=False;
    sqlq.sql.text:= 'SELECT CLIENTES.CODIGO,REPARACIONES.CODIGO, ...';
    sqlq.Active:=True;
    sqlq.FilterOptions := [foCaseInsensitive];
    sqlq.Filter := 'NOMBRES=' + QuotedStr('*'+text1.text+'*');
    sqlq.Filtered := true;
    sqlq.First;
  end;
end;
Y la llamada a Form2, sería solamente:
Código Delphi [-]
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
  if not Assigned(Form2) then
     Form2:= TForm2.Create(Self);
  Form2.Show;
 end;

Por último en Form2 agrega otro TDataSource, enlazalo con el TSQLQuery (igual que en 5) y reemplaza los TEdit por TDBEdit, poniendo en todos la propiedad DataSource igual a DataSource1 y en la propiedad DataField el nombre de campo que corresponda.

Quedaría mas o menos así:


Espero haber sido claro, cualquier duda consulta nuevamente.

Saludos :)

Minoru 12-12-2014 22:43:37

realmente me impresiona tus conocimientos y mas me impresiona la rápida respuesta. jejeje. aveces uno hace una consulta en los foro y pasan meses cuando recibes una respuesta. y aveces ya lo solucionaste o la ayuda no es buena. pero aquí contigo me has ayudado un montón. ahora aplico lo que me has enseñado. muchas gracias por las molestias. :)


La franja horaria es GMT +2. Ahora son las 09:42:19.

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