PDA

Ver la Versión Completa : Como seleccionar con un click una fila del dbgrid.


Niiña
28-09-2011, 22:57:01
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
que un campo de cualquier fila se agregue o aparezca en un Edit en otro Formulario..?
Hola Niiña.

Algo parecido se trató aquí (http://www.clubdelphi.com/foros/showthread.php?t=75608&highlight=HoraSalida). Adaptando a tu caso la propuesta de roman del enlace anterior, creo que podrías hacer algo parecido a esto:

Form1 (receptor):

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):

...
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
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.