Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: ClickHandler mehrmals benutzten?

  Alt 25. Jan 2014, 16:47
Jo, obwohl, so ist es schöner zu benutzen
Delphi-Quellcode:
type
  IUIToolbarClickHandler = interface(NSObject)
  ['{6D8473BD-461C-479D-ADF6-59F933EDA57B}']
    procedure Click; cdecl;
  end;

  THandlerProc = reference to procedure;

  TUIToolBarClickHandler = class(TOCLocal)
  private
    FHandler: THandlerProc;
  protected
    function GetObjectiveCClass: PTypeInfo; override;
    constructor Create( Handler : THandlerProc );
  public
    class function Construct( Handler : THandlerProc ) : IUIToolbarClickHandler;
    procedure Click; cdecl;
  end;

class function TUIToolBarClickHandler.Construct( AHandler : THandlerProc ) : IUIToolbarClickHandler;
begin
  Result := Self.Create( AHandler );
end;

constructor TUIToolBarClickHandler.Create( AHandler : THandlerProc );
begin
  inherited Create;
  FHandler := AHandler;
end;

function TUIToolBarClickHandler.GetObjectiveCClass;
begin
 Result:= TypeInfo(IUIToolbarClickHandler);
end;

procedure TUIToolBarClickHandler.Click;
begin
  if Assigned( FHandler ) then
    FHandler(); // mit Klammern ist auf jeden Fall die procedure gemeint und nicht der Variablenwert ;o)
end;
und dann nur noch
Delphi-Quellcode:
var
  HelloWorldHandler : IUIToolbarClickHandler;

HelloWorldHandler := TUIToolBarClickHandler.Construct(
  procedure
  begin
    ShowMessage( 'Hello World' );
  end );
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (25. Jan 2014 um 16:50 Uhr)
  Mit Zitat antworten Zitat