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.
  • 相关阅读:
    Information retrieval (IR class2)
    HTML随笔
    Evaluating Automatically Generated timelines from the Web (paper1)
    Kali 2020.1版本安装
    SystemTap
    Linux之IDIDID
    调试&内核探针
    Return-to-dl-resolve
    转载!
    一张图系列之函数重定位
  • 原文地址:https://www.cnblogs.com/cnsoft/p/3082942.html
Copyright © 2011-2022 走看看