iOS ve Android için Ayrı form tasarımı?

FireMonkey ve Mobil uygulama (iOS, Android, Windows Phone) ile ilgili sorularınızı bu foruma sorabilirsiniz.
Cevapla
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

iOS ve Android için Ayrı form tasarımı?

Mesaj gönderen mussimsek »

Merhaba,

XE8'de ufak bir proje yaptım. Bunu Android'de de çalıştırmak istiyorum. Ancak kullandığım bir component sadece iOS destekliyor. {$IFDEF IOS} gibi bir kullanım yaptım ama yine de hata veriyor. Bu componenti android tarafında tamamen silmenin bir yolu var mıdır?

Kolay gelsin.
Kullanıcı avatarı
barisatalay
Üye
Mesajlar: 398
Kayıt: 02 Nis 2013 05:43
İletişim:

Re: iOS ve Android için Ayrı form tasarımı?

Mesaj gönderen barisatalay »

Componenti derlerken target platformdan androidi silmeyi denediniz mi ?
Kullanıcı avatarı
fesiharslan
Üye
Mesajlar: 591
Kayıt: 20 Eki 2006 11:37
Konum: Erzurum
İletişim:

Re: iOS ve Android için Ayrı form tasarımı?

Mesaj gönderen fesiharslan »

Merhaba Mustafa Hocam;
Kullandığınız component'in .pas dosyaları var ise ve bu .pas dosyaları ana uygulamanızın Uses kısmında referans gösteriliyorsa;
.pas dosyalarını tek tek açıp güncelleme yapmanız gerekecektir.
Çünkü ana uygulamayı Android platformunda build ettiğinizde,
compiler, o paslarda geçen metodları ve özellikleri kullanmamanıza rağmen, Uses kısmındaki bütün referansları yeniden derler.

Uses, Private veya public ve metodlar içerisinde direktifler kullanmak gerekecektir.
Aşağıda Android ve iOS için basit bir kod örneği gösterdim.
Umarım yol gösterir.

Kod: Tümünü seç

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs
{$IFDEF IOS}
    ,iOSapi.Foundation, iOSapi.UIKit, iOSapi.CocoaTypes
{$ENDIF}
{$IFDEF ANDROID}
  ,Androidapi.JNI.GraphicsContentViewText,
  Androidapi.Helpers
{$ENDIF}
    ;

type
  TForm1 = class(TForm)
  private
{$IF DEFINED(iOS) or DEFINED(ANDROID)}
    procedure DosyaAç(DosyaAdı: String);
{$ENDIF}
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.fmx}

{$IFDEF ANDROID}
procedure TForm1.DosyaAç(DosyaAdı: String);
var
  i: JIntent;
begin
  i := TJIntent.Create;
  i.setAction(TJIntent.JavaClass.ACTION_VIEW);
  i.setData(StrToJURI(DosyaAdı));
  SharedActivity.startActivity(i);
  // ....
  // ....
end;
{$ENDIF}

{$IFDEF IOS}
procedure TForm1.DosyaAç(DosyaAdı: String);
var
  url: NSURL;
begin
  url := TNSURL.Wrap(TNSURL.OCClass.fileURLWithPath(NSStr(DosyaAdı)));
  // ....
  // ....
end;
{$ENDIF}

end.
Cevapla