Ver Mensaje Individual
  #8  
Antiguo 14-10-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Reputación: 26
guillotmarc Va por buen camino
Hola.

La verdad es que siempre me ha parecido increible que los componentes de un formulario esten declarados en una sección pública que permite a otros formularios acceder a ellos.

En mi opinión un formulario nunca deberia poder acceder a los componentes de otros (quizá en algún caso muy concreto pueda ser adecuado, pero no se me ocurre ninguno).

Lo correcto, a mi modo de ver, es declarar una función Insertar en el formulario, y que los otros formularios accedan a esa función y no a los componentes.

Código:
type
  TForm2 = class(TForm)
  ...
  ...
  public
    procedure AnadirValor(Texto: String);
  ...
  ...

implementation
  
  procedure TForm2.AnadirValor(Texto: String);
  begin
    dbgrid1.ReadOnly := false;
    table1.insert;
    table1.FieldByName('Talleres').assString := Edit1.Text
    table1.post;
    dbgrid1.ReadOnly := true;
  end;
Ahora para ejecutar esa acción, podemos hacer desde otro Formulario :

Hijo.AnadirValor(Edit1.Text);

Aunque si vas a utilizar una variable Hijo, ten en cuenta que ocurrirá cuando tengas abiertas dos veces un formulario de ese tipo. La variable Hijo solo te apuntará a una de ellas. (¿ cual será ?, ¿ la ultima abierta ?, debes tenerlo controlado). La propuesta de Roman, es un buen ejemplo en el que se tiene controlado el formulario hijo, aunque puede haber varios de ellos.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 14-10-2003 a las 21:49:58.
Responder Con Cita