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.
  • 相关阅读:
    Ubuntu安装php7.0环境
    PHP-FPM参数详情
    phpize是干嘛的
    Ubuntu忘记密码
    Ubuntu下面删除和卸载软件
    Js验证正则表达式
    JS发送验证码;并设置cookie
    Shell脚本之sed的使用
    Bash基本功能:输入输出重定向
    shell常用快捷键
  • 原文地址:https://www.cnblogs.com/cnsoft/p/3082942.html
Copyright © 2011-2022 走看看