Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Funciones desde otras Form (https://www.clubdelphi.com/foros/showthread.php?t=66635)

Lenny 04-03-2010 15:57:57

Funciones desde otras Form
 
Hola y muchas gracias de antemano, tengo una duda.

Tengo varios "códigos" que me gustaría usar en más de una Form, por ejemplo:


Código Delphi [-]
procedure  TEmpresas.ColorOn;
var
  i: integer;
begin
  for i := 0 to  Pred(ComponentCount) do
  begin
    if Components[i] is TDBEdit  then
      begin
        TDBEdit(Components[i]).Color := $FBEFEF;
       end;
  end;
end;
La idea es crear otra Form que contenga todos estos códigos, para no tener que reescribirlos por cada ventana, ahora la pregunta, por el momento hago el llamado desde una Form pero al ejecutarlo los cambios los hace en el Form desde el cual fue llamado, ¿Que debo hacer para que este código cambie las propiedades solo del Form desde el cual fue llamado?, e leído algo de DLL y BPL, pero no tengo idea como se usan, ¿Seria mejor así? y si es así... ¿Cómo?.

De antemano muchísimas gracias :p

movorack 04-03-2010 16:12:54

Hola, Pasale el componente o variable como parametro al procedimiento o función:

Código Delphi [-]
//En el form1
procedure TForm1.CambiarTexto(Edit : TEDit; Texto : String);
begin
  Edit.text := Texto;
end;

//En el form 2
procedure TForm2.ButtonClick1(Sender : TObject);
begin
  Form2.CambiarTexto(Edit1, 'Cualquier cosa');
end;

Saludos!

Caro 04-03-2010 16:20:13

Hola Lenny, tienes que pasar como parámetro el formulario.

Código Delphi [-]
procedure TForm1.ColorOn(form : TForm);
var
  i: integer;
begin
  for i := 0 to  Pred(form.ComponentCount) do
  begin
    if form.Components[i] is TDBEdit  then
      begin
        TDBEdit(form.Components[i]).Color := $FBEFEF;
       end;
  end;
end;

Saluditos

Lenny 04-03-2010 16:57:32

Aun no me resulta...
 
Muchas gracias por responder, aun toy algo complicado.

Lo que me dices Caro Funciona pero me pide algo entre (), sorry por la ingorancia lo deje asi:

Código Delphi [-]
procedure TEmpresas.ColorOn(form : TForm);
var
  i: integer;
begin
  for i := 0 to  Pred(form.ComponentCount) do
  begin
    if form.Components[i] is TDBEdit  then
      begin
        TDBEdit(form.Components[i]).Color := $FBEFEF;
       end;
  end;
end;

y desde la otra Form lo llamo asi:

Código Delphi [-]
Empresas.ColorOn;

me manda error, de echo me sale que devo escribir algo entre()

Código Delphi [-]
Empresas.ColorOn();

¿Devo colocar algo entre()? ¿que?

Perdon por la ignorancia, quizas sea muy tonta la pregunta, de antemano muchas gracias....

Caro 04-03-2010 17:10:21

Hola de nuevo Lenny, si debes pasarle el formulario del cual quieres que recorra todos sus componentes y haga el cambio, en tu caso, puedes colocar Self, que haría referencia al formulario actual.

Código Delphi [-]
  Empresas.ColorOn(Self);

Saluditos

Lenny 04-03-2010 17:21:25

Muchisimas gracias!!!
 
Muchísimas gracias!!! resulto impecable, me has ahorrado líneas y líneas de código, me permitirá mejorar el soft que estoy haciendo y corregir y mejorar anteriores, de veras gracias por compartir con nosotros ampliando nuestros conocimientos, ojala que esta info sea de utilidad a otras personas del foro, Byes y gracias nuevamente!!!


La franja horaria es GMT +2. Ahora son las 15:13:37.

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