Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como seleccionar con un click una fila del dbgrid. (https://www.clubdelphi.com/foros/showthread.php?t=75937)

Niiña 28-09-2011 22:57:01

Como seleccionar con un click una fila del dbgrid.
 
Holaa.. Quisiera saber como puedo seleccionar una fila del dbgrid haciendo click o enter en un Formulario, y que un campo de cualquier fila se agregue o aparezca en un Edit en otro Formulario..?

oscarac 28-09-2011 23:00:25

hola
puedes ser mas especifica?
que base de datos usas que componentes usas, etc etc
como lo estas haciendo
puedes usar dbedits asociados a una dataset

ecfisa 28-09-2011 23:47:33

Cita:

que un campo de cualquier fila se agregue o aparezca en un Edit en otro Formulario..?
Hola Niiña.

Algo parecido se trató aquí. Adaptando a tu caso la propuesta de roman del enlace anterior, creo que podrías hacer algo parecido a esto:

Form1 (receptor):
Código Delphi [-]
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormShow(Sender: TObject);
  private
    procedure ValueChange(Value: string);
  public
  end;

var
  Form1: TForm1;

implementation 

uses Unit2;

procedure TForm1.FormShow(Sender: TObject);
begin
  with TForm2.Create(Self) do
  begin
    FieldChange:= ValueChange;
    Show;
  end;
end;

procedure TForm1.ValueChange(Value: string);
begin
  Edit1.Text:= Value;
end;
...

Form2 (emisor):
Código Delphi [-]
...
type
  TFieldChange = procedure(Value: string) of object;
  TForm2 = class(TForm)
    ...
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    procedure DBGrid1CellClick(Column: TColumn);
  private
    FFieldOnChange: TFieldChange;
  public
    property FieldChange: TFieldChange read FFieldOnChange
      write FFieldOnChange;
  end;

var
  Form2: TForm2;

implementation 

{ DBGrid OnCellClick }
procedure TForm2.DBGrid1CellClick(Column: TColumn);
begin
 if Assigned(FFieldOnChange) then
    FFieldOnChange(DBGrid1.SelectedField.AsString);
end;
...
En este caso usé el evento OnCellClick del DBGrid pero podrías usar el OnClick de un TButton, etc.

Un saludo.

Niiña 29-09-2011 00:20:31

Estoy utilizando la base de datos en Firebird.
Tengo un Form1 como base y lo conecto a la base de datos con los componentes TiBConnection, TSQLtransaction, TSQLQuery, y TDatasource , luego agrego un nuevo Form2 lo conecto por medio de un boton.

Al Form2 le agrego un TDBGrid1 y un TEdit1, con el SQLQuery muestro la consulta que necesito..
En el Edit1 voy escribiendo el campo con el nombre que quiero..

Necesito es saber como pasar esa fila o un campo de la fila que se esta seleccionando en el DBGrid con un click o enter y pase la información a un Edit que tengo en el primer Form1 que tengo como base.

Nota: Los Formularios los cree con distinta conexión pero le asigne la misma base de datos.. "No se si tenga problemas con eso cuando quiera pasar la información de la fila del DBGrid de un form al Edit del otro form" .

Por Favor espero Respuestas.. :(

ecfisa 29-09-2011 00:48:25

Cita:

Empezado por Niiña (Mensaje 413846)
Estoy utilizando la base de datos en Firebird.
Tengo un Form1 como base y lo conecto a la base de datos con los componentes TiBConnection, TSQLtransaction, TSQLQuery, y TDatasource , luego agrego un nuevo Form2 lo conecto por medio de un boton.

Al Form2 le agrego un TDBGrid1 y un TEdit1, con el SQLQuery muestro la consulta que necesito..
En el Edit1 voy escribiendo el campo con el nombre que quiero..

Necesito es saber como pasar esa fila o un campo de la fila que se esta seleccionando en el DBGrid con un click o enter y pase la información a un Edit que tengo en el primer Form1 que tengo como base.

Nota: Los Formularios los cree con distinta conexión pero le asigne la misma base de datos.. "No se si tenga problemas con eso cuando quiera pasar la información de la fila del DBGrid de un form al Edit del otro form" .

Por Favor espero Respuestas.. :(

Hola.

Precisamente eso hace el código que te puse en el mensaje anterior, pasar el valor del campo seleccionado en DBGrid1 ubicado en Form2 a la propiedad Text de Edit1 que está en Form1... ;)

Un saludo.

Niiña 29-09-2011 23:48:21

Hola..

Intente correr el programa con este código pero me da error.

El error es: "Wrong number of parameters specified for call to "Valuechange".

procedure TForm1.FormShow(Sender: TObject);
begin
with TForm2.Create(Self) do
begin
FieldChange:= ValueChange; <--- aquí se que hay que colocar el parámetro pero he intentado colocar varios y nada..
Show;
end;
end;

No se resolverlo ..

ecfisa 30-09-2011 00:59:21

Hola Niiña.

Te adjunto un demo para que lo revises con tranquilidad.

Para evitar problemas de contraseña y unificar criterios, no utilizé Firebird sino BDE con la tabla Country.DB que viene con Delphi por defecto.
Si querés, podés eliminar el TTable y añadir IBDatabase, IBTransaction, IBQuery o IBDataSet, asignarle el nuevo TDataSet al TDataSource con que se relaciona el DBGrid y funcionará del mismo modo.

Cualquier dificultad, no dudes en avisarme.

Un saludo.

Niiña 30-09-2011 05:11:42

Gracias.. :) ! Deja revisar.


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

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