En realidad lo que dice
guillotmarc acerca de la "publicidad" de las componentes de un formulario es completamente cierto y sólo lleva a malas prácticas de programación que posteriormente dan dolores e cabeza.
Si un formulario tiene un Edit edtTalleres, la propiedad pública debiera ser el texto del control y no el control mismo.
En el caso concreto que nos ocupa entiendo lo siguiente:
Un formulario contiene una rejilla para visualizar los datos pero en lugar de editar éstos en la misma rejilla se desea abrir un formulario de captura, situación por demás normal ya que en muchas ocasiones la rejillasólo muestra unos cuantos de los campos a fin de que el usuario los pueda identificar.
Ahora bien, "normalmente", el forumulario de captura de datos contiene componente TDBEdit en lugar de simples TEdit (como en el presente caso) y dichos TDBEdit (u otros controles DB) están ligados a componentes DataSource localizados en un módulo de datos, como indica
cadetill
Aunque de alguna manera también así accedemos a los controles de otro módulo (el datasource), en este caso, un módulo de datos, me parece apropiado y hasta necesario (¿de qué otra forma hacemos el enlace?)
Pero si por las razones que fueren, se insiste o se deben utilizar TEdits normales entonces lo más correcto, desde mi punto de vsta, sería, como mencioné arriba, publicar el texto de dichos controles:
Código:
type
TForm3 = class(TForm)
private
function GetTalleres: String;
procedure SetTalleres(Value: String);
public
property Talleres: String read GetTalleres write SetTalleres;
end;
implementation
function TForm3.GetTalleres: String;
begin
Result :=edtTalleres.Text;
end;
procedure TForm3.SetTalleres(Value: String);
begin
edtTalleres.Text := Value;
end;
end.
De esta forma, cuando desde el formulario con la rejilla deseemos editar los datos de un registro pondríamos:
Código:
with TForm.Create(nil) do
begin
Talleres := Table1.FieldByName('Talleres').AsString;
{ Otros campos }
if ShowModal = ID_OK then
begin
Table1.FieldByName('Talleres').AsString := Talleres;
{ Otros campos }
Table1.Post;
end;
Free;
end;
Así, el formulario con la rejilla usa del formulario de datos lo único que debe saber: sus datos; y no sus controles.
// Saludos