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.
  • 相关阅读:
    在注册表中添加windows鼠标右键菜单
    关于MVC中无法将类型为“System.Int32”的对象强制转换为类型“System.String”的问题。
    dns
    ntp
    研究比对搞定博客 canvas-nest.js
    linux 添加ssh和开启ssh服务apt管理的ubuntu
    xshll 连接ubuntu出现 ssh服务器拒绝了密码
    yum和rpm
    服务器无法远程连接原因分析
    关于服务器卡顿的几个原因
  • 原文地址:https://www.cnblogs.com/cnsoft/p/3082942.html
Copyright © 2011-2022 走看看