![]() |
|
Blocking dialogs not implemented on this platform on Android Platform - Baskı Önizleme +- Delphi Can (https://www.delphican.com) +-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3) +--- Forum: Mobil Platform - FireMonkey (FMX) (https://www.delphican.com/forumdisplay.php?fid=7) +--- Konu Başlığı: Blocking dialogs not implemented on this platform on Android Platform (/showthread.php?tid=1810) |
Blocking dialogs not implemented on this platform on Android Platform - quiet1day - 11-01-2018 ![]() FmxExpress'in yaptığı DrawApp uygulamasında ( çizim ) çizilenleri kaydetme olayında resimde görünen hata meydana geliyor kaydetme işlemi olmuyor. Konu ile ilgili pek fazla döküman yok bilen de ayrıntılı anlatırsa uygun olur teşekkürler uygulama http://dosya.co/wmslh3lbx40s/DrawApp.rar.html Cvp: Blocking dialogs not implemented on this platform on Android Platform - Fesih ARSLAN - 12-01-2018 (11-01-2018, Saat: 23:57)Paranoyaq Adlı Kullanıcıdan Alıntı: Merhaba, Uygulamayı doğrudan paylaşmaktan ziyade yalnızca hatanın oluştuğu (Message) kısmı paylaşırsanız, eminim daha çok yardımcı olabiliriz. Cvp: Blocking dialogs not implemented on this platform on Android Platform - Abdullah ILGAZ - 12-01-2018 Merhaba, VCL'den alışık olduğunuz MessageDLG kütüphanesine ait birçok input ve show popup mesajlarının desteği FMX üzerinde bulunmuyor. Bunun yerine metodu override ederek özel olarak çağırabiliyorsunuz. Kendi yazmış olduğum metodları paylaşıyorum, size yardımcı olacaktır. GitHub üzerinden erişmek için: https://github.com/ilgazdc/MessageDlgFMXDemo // Yapsın mı? Evet, Hayır (true - false döner) function AIMessageDlg(Question: String): Boolean; var Res: Boolean; begin MessageDlg(Question, System.UITypes.TMsgDlgType.mtInformation, [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], 0, procedure(const AResult: TModalResult) begin case AResult of mrYes: Res := true; mrNo: Res := False; end; end); Result := Res; end; // Yukarıda bir TProcedure çalışır. Yanıt evet olması durumunda tetiklenir. procedure AIMessageDlgV2(Question: String; ExecuteProcedure: TProcedure); begin MessageDlg(Question, System.UITypes.TMsgDlgType.mtInformation, [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], 0, procedure(const AResult: TModalResult) begin case AResult of mrYes: ExecuteProcedure; mrNo: Exit; end; end); end; // Doğru yanıt verilmesi durumunda 2. parametredeki action aktif edilir. procedure AIConfirmBox(Question: String; Action: TAction); begin MessageDlg(Question, System.UITypes.TMsgDlgType.mtInformation, [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], 0, procedure(const AResult: TModalResult) begin case AResult of mrYes: Action.Execute; mrNo: Exit; end; end); end; // TActionList'te iki farklı eylem denetlenir. Dönüş metodları 2. ve 3. parametreler. procedure AIMsgDlgYesNo(Question: String; YesAction: TAction; NoAction: TAction); begin MessageDlg(Question, System.UITypes.TMsgDlgType.mtInformation, [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], 0, procedure(const AResult: TModalResult) begin case AResult of mrYes: YesAction.Execute; mrNo: NoAction.Execute; end; end); end; Cvp: Blocking dialogs not implemented on this platform on Android Platform - Fesih ARSLAN - 16-01-2018 Merhaba, Daha önce de bir çok mesajımda belirttiğim gibi mobil platform, VCL uygulamalar gibi dayanıklı değil. En ufak bir hatada kırılıyor. FMX gelişim sürecinde Embarcadero'nun en taktir ettiği yönü; yüzlerce SDK sürümü ve On Binlerce cihaz çözünürlüğü ve hassasiyetlerine rağmen bu mimarinin doğru olduğunu ve geleceği olduğunu vermiş olduğu çok hızlı desteklerle ispatlamış olmasıdır. FMX mesajlar değişen SDK'lar karşısında bir çok değişim geçirdi. Bazı mesaj servisleri kullanılmamaya ve bazı yeni mesaj sınıfları da bu ihtiyaçlar doğrultusunda kullanılmamaya başlandı. Gelmiş olduğu son sancılı dönemleri de atlattığını ve çok stabil bir yapıya kavuştuğunu; sık gözlemleyen tüm özelliklerini bire bir her patformda test eden biri olarak, içtenlik ve samimiyetimle söyleyebilirim. FMX mimarisi çok hızlı değişiyor çok hızlı gelişiyor. Anlatmak istediğim (yine o an geliyor reklam her lafı Kitaba bağlıyorum ya.) doğru ve güncel bir bilgi kaynağına ihtiyaç var. Neyse lafı çok uzatmayayım. Bu aralar çok zamanım olmadığından paylaşmış olduğunuz kodlara da geç göz gezdirmiş oldum. InputBox fonksiyonunu aşağıdaki şekilde kullanırsanız, bir sorun olmayacaktır. Uses kısmını aşağıdaki referansı ekleyin. uses FMX.DialogService; Kod kısmı: procedure Tdrawmaindemo1frm.SpeedButton1Click(Sender: TObject);
var
sfile: string;
fs: TFileStream;
begin
TDialogService.InputQuery('Dosya Kaydetme İşlemi', ['Dosya Adı'],
['Deneme.jpg'],
procedure(const AResult: TModalResult; const AValues: array of string)
begin
case AResult of
mrOK:
begin
if (AValues[0].Trim <> '') then
begin
sfile := System.IOUtils.TPath.Combine
(System.IOUtils.TPath.GetDocumentsPath(), AValues[0]);
fs := TFileStream.Create(sfile, fmCreate);
try
fdrawbox.SaveToJPEGStream(fs);
finally
fs.DisposeOf;
end;
end;
end;
end;
end);
end;
![]() ![]() Blocking dialogs not implemented on this platform on Android Platform - quiet1day - 17-01-2018 Fesih ve Abdullah Bey ayrı ayrı teşekkür ediyorum hocam Allah razı olsun. İyi çalışmalar. +rep |