Ver Mensaje Individual
  #3  
Antiguo 29-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Este es un tipico caso de herencia.. donde todos tus forms tienen que hacer lo mismo..

Podrias hacer algo asi:


Código Delphi [-]
unit UBaseForm;

interface

uses
  Forms,
  Controls;

type
  TBaseForm = class(TForm)
  public
    procedure ToggleControls(const IsEnabled: Boolean); overload; virtual;
    procedure ToggleControls(const IsEnabled: Boolean; const ControlClass: TControlClass); overload; virtual;
  end;

implementation

{ TBaseForm }

procedure TBaseForm.ToggleControls(const IsEnabled: Boolean);
var
  I: Integer;
begin
  for I := 0 to ControlCount - 1 do
    Controls[i].Enabled := IsEnabled;
end;

procedure TBaseForm.ToggleControls(const IsEnabled: Boolean; const ControlClass: TControlClass);
var
  I: Integer;
begin
  for I := 0 to ControlCount - 1 do
    if Controls[i].ClassType = ControlClass then
      Controls[i].Enabled := IsEnabled;
end;

Ejemplo de uso:


Código Delphi [-]
unit Main;

interface

uses
  UBaseForm,
  Windows,
  Messages,
  SysUtils,
  Variants,
  Classes,
  Graphics,
  Controls,
  Forms,
  Dialogs,
  StdCtrls;

type
  TForm1 = class(TBaseForm) // --> Ahora tu ancestro es TBaseForm
    Edit1: TEdit;
    Memo1: TMemo;
    btnDisable: TButton;
    btnEnable: TButton;
    Button1: TButton;
    Edit2: TEdit;
    procedure btnDisableClick(Sender: TObject);
    procedure btnEnableClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btnDisableClick(Sender: TObject);
begin
  // deshabilitar todos los controles
  ToggleControls(False);

  // este boton lo dejo siempre habilitado, sino no puedo hacer mas nada
  btnEnable.Enabled := True;
end;

procedure TForm1.btnEnableClick(Sender: TObject);
begin
  // Habilitar todos los controles
  ToggleControls(True);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // solo Edits, invertir el valor
  ToggleControls(not Edit1.Enabled, TEdit);
end;

end.
Responder Con Cita