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.
  • 相关阅读:
    Axure学习二:基础教程
    Axure 学习一:基础知识详解参考文档
    iOS 加载动态库报错问题
    iOS 9 之 Spotlight框架
    iOS 之 新功能、扩展
    mysql慢查询
    php curl多线程抓取网页
    php读取qqwry.dat ip地址定位文件的类
    php比较加赋值语句
    yaf在windows7下32位的安装教程
  • 原文地址:https://www.cnblogs.com/cnsoft/p/3082942.html
Copyright © 2011-2022 走看看