segunda-feira, 22 de dezembro de 2014

hacknfortes

Inscrições em Janeiro de 2015!


Anonymous Methods + Class Helper Delphi + Métodos de Class


Caros, mostrarei como otimizar a chamada dos seus formulários utilizando (Anonymous Methods + Class Helper Delphi + Métodos de Class);

- Crie uma unit, na seção type adicione;

  TMetodo = reference to procedure(Form: TForm);

  TFormsHelper = class helper for TForm
    class function ShowF(Metodo: TMetodo): TModalResult;
  end;
 
- Implementação;

class function TFormsHelper.ShowF(Metodo: TMetodo): TModalResult;
var
  loForm: TForm;
begin
  Result:= mrNone;
  loForm:= Self.Create(Application);
  with loForm do
  begin
    try
      if Assigned(Metodo) then
        Metodo(loForm);
      ShowModal;
    finally
      Result:= ModalResult;
      Free;
    end;
  end;
end;

- Para utilizar o método basta adicionar a unit ao seu form
- Exemplo;

procedure TMain.Button1Click(Sender: TObject);
begin
  if TMeuForm.ShowF(procedure(Form: TForm)
                  begin
                    with TMeuForm(Form) do
                    begin
                      //Suas implementações, exemplo abaixo
                      //Edit1.Text:= 'Develop 001';
                      //Edit2.Text:= 'Develop 002';
                      //Edit3.Text:= 'Develop 003';
                    end;
                  end) = mrOk then ShowMessage('Salvou')
  else ShowMessage('Cancelou');
end;

sábado, 20 de dezembro de 2014

Anonymous Methods + Class Helper Delphi



Caros, uma união perfeita, que pode melhorar e simplificar bastante nossa vida no desenvolvimento de aplicações utilizando Delphi, mostrarei um exemplo pratico utilizando a classe TDataSet;

- Crie uma unit, na seção type adicione;

  TMetodoDataSet = reference to procedure(Table: TDataSet);

  TDataSetHelper = class helper for TDataSet
    procedure Eoff(Metodo: TMetodoDataSet);
  end;

- Implementação;

{ TDataSetHelper }

  procedure TDataSetHelper.Eoff(Metodo: TMetodoDataSet);
  begin
    DisableControls;
    try
      First;
      while not Eof do
      begin
        Metodo(Self);
        Next;
      end;
    finally
      EnableControls;
    end;
  end;

- Para utilizar o método basta adicionar a unit ao seu form
- Exemplo;

  with FDMemTable1 do
  begin
    with FieldDefs do
    begin
      Add('cod', ftInteger);
      Add('nome', ftString, 20);
    end;
    CreateDataSet;
    AppendRecord([1, 'Develop 001']);
    AppendRecord([2, 'Develop 002']);
    AppendRecord([3, 'Develop 003']);
    AppendRecord([4, 'Develop 004']);
  end;

- Exemplo:

  FDMemTable1.eoff(procedure(Table: TDataSet)
                   begin
                     ShowMessage(Table.FieldByName('nome').AsString)
                   end)