zoukankan      html  css  js  c++  java
  • Native iOS Control Delphi XE4

    Used in the Delphi Firemonkey Platform is very large, and is well organized. Of course Button, alone Firemonkey, and written.However, under certain circumstances in the OS the Native Control, because you will inevitably need to use a different API, about how to use the Native Control to learn.

    //
    //  XE4 & iOS Button Example
    //
    //   http://blog.naver.com/simonsayz
    //
    // Ref.
    //   SampleNiblessApp  :  http://rvelthuis.de/zips/sampleniblessapp.7z
    //   CCR.NSAlertHelper :  http://code.google.com/p/delphi-foundations/
    //   Delegate Example  :  http://blogs.embarcadero.com/teamj/2013/05/09/3817/
    //   XE2, Free Pascal  :  http://blog.naver.com/simonsayz/120162838290
    //   Source to Html    :  http://www.duketown.com/marcel/hyperdelphi.shtml
    //
    unit Unit1;
    
    interface
    
    uses
      System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
      FMX.Platform.iOS, FMX.Layouts, FMX.Memo,
      //
      System.TypInfo,
      Macapi.ObjectiveC,
      Macapi.ObjCRuntime,
      iOSapi.CocoaTypes,
      iOSapi.foundation,
      iOSapi.uikit,
      iOSapi.CoreGraphics;
    
    type
      //
      IBtnDelegate = interface(NSObject)
       procedure BtnPressed; cdecl;
      end;
      //
      TBtnDelegate = class(TOCLocal)
      Private
       Finx   : Integer;
       FMemo  : TMemo;
      Public
       constructor Create( inx : integer; memo : TMemo );
       function  GetObjectiveCClass : PTypeInfo; override;
       procedure BtnPressed; cdecl;
      end;
      //
      TForm1 = class(TForm)
        Button1: TButton;
        Memo1: TMemo;
        procedure Button1Click(Sender: TObject);
      private
      public
       BtnDelegate : TBtnDelegate;
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.fmx}
    
    Constructor TBtnDelegate.Create ( inx : integer; memo : TMemo );
     begin
      inherited Create;
      Self.Finx  := 10;
      Self.Fmemo := Memo;
     end;
    
    function  TBtnDelegate.GetObjectiveCClass : PTypeInfo;
     begin
      Result := TypeInfo(IBtnDelegate);
     end;
    
    //
    procedure TBtnDelegate.BtnPressed;
     begin
      inc(Finx);
      FMemo.Lines.add('iOS Btn Pressed '+IntToStr(Finx));
     end;
    
    //
    procedure TForm1.Button1Click(Sender: TObject);
     Var
      Btn         : UIButton;
    begin
     //
     Memo1.Lines.Add('FMX Btn Pressed');
     //
     Btn := TUIButton.Wrap( TUIButton.OCClass.buttonWithType(UIButtonTypeRoundedRect) );
     //
     Btn.setFrame ( CGRectMake(40,130,240,100) );
     Btn.setTitle (NSStr('iOS UIButton Pressed'),UIControlStateNormal);
     //
     BtnDelegate := TBtnDelegate.Create(10,Memo1);
     //
     Btn.addTarget( BtnDelegate.GetObjectID,       // target
                    sel_getUid('BtnPressed'),      // action
                    UIControlEventTouchDown);      // event
     //
     WindowHandleToPlatform(Self.Handle).View.addSubview(Btn);  //亮点啊!!!cnsoft mark
    
    end;
    
    end.
  • 相关阅读:
    强化学习 相关资源
    Log4j输出文件到目的地
    httpclient 封装post 和get
    Cookie 和Session区别
    day09 request 和response
    Jmeter 断言
    Jmeter自学笔记10----性能测试基础实战
    Jmeter 目录
    性能测试解惑之并发压力
    设计模式,就是那个抽象工厂没写
  • 原文地址:https://www.cnblogs.com/cnsoft/p/3082942.html
Copyright © 2011-2022 走看看