Delphi Can
MessageDlg Evet/Hayır Yazdırma - 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ığı: MessageDlg Evet/Hayır Yazdırma (/showthread.php?tid=1901)

Sayfalar: 1 2 3


Cvp: MessageDlg Evet/Hayır Yazdırma - Tuğrul HELVACI - 31-01-2018

(31-01-2018, Saat: 09:41)elixir84 Adlı Kullanıcıdan Alıntı:
(30-01-2018, Saat: 20:17)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Merhaba,
Compile ile derlediyseniz veya doğrudan çalıştırdıysanız olamama ihtimali yüksektir.
Projeyi önce Build edin, daha sonra cihaz üzerinde çalıştırın.

[dcc32 Warning] girispas.pas(442): W1000 Symbol 'MessageDlg' is deprecated: 'Use FMX.DialogService methods'

[dcc32 Warning] girispas.pas(616): W1000 Symbol 'InputQuery' is deprecated: 'Use FMX.DialogService methods'

Build ettiğimde üsteki hataları verdi. Uygulama çalışıyor ama Yes/No Olarak.

SimaWB'nin önerisini dikkate almanız faydalı olacaktır.


Cvp: MessageDlg Evet/Hayır Yazdırma - Halil Han BADEM - 31-01-2018

var
 ASync: IFMXDialogServiceAsync;
begin
 if TPlatformServices.Current.SupportsPlatformService(IFMXDialogServiceAsync, IInterface(ASync)) then
 begin
  ASync.MessageDialogAsync('Bu verileri silmek istediğinize emin misiniz?', System.UITypes.TMsgDlgType.mtInformation,
  [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], TMsgDlgBtn.mbNo,0,
   procedure(const AResult: TModalResult)
   begin
    case AResult of
      mrYes:
     begin
       HareketlerView.Items.Clear; ///Görmeyin
       QrHareketler.Close; ///Görmeyin
       QrHareketler.SQL.Text := 'DELETE FROM tblhareketler';  ///Görmeyin
       QrHareketler.Open; ///Görmeyin
     end;
      mrNo:
     begin
      HareketlerViewPullRefresh(sender); ///Görmeyin
     end;
    end;
   end
  );
 end;
end;


Daha 3 gün önce yazmıştım. Evet/Hayır meselesine gelince onu bende düzenledim olmadı.


Cvp: MessageDlg Evet/Hayır Yazdırma - Fesih ARSLAN - 02-02-2018

(30-01-2018, Saat: 15:57)elixir84 Adlı Kullanıcıdan Alıntı:
MessageDlg('İşlem Yapmak İstermisiniz ?', System.UITypes.TMsgDlgType.mtInformation,
    [
      System.UITypes.TMsgDlgBtn.mbYes,
      System.UITypes.TMsgDlgBtn.mbNo
    ], 0,
      procedure(const AResult: TModalResult)
      begin
        case AResult
          of
          mrYES:
            BEGIN
            //işlem
            END;
          mrNo:
          BEGIN
           //işlem
          END;
        end;
      end
    )

firemonkey MessageDlg da butanların isimlerine müdahale edebiliyormuyuz. Yes/No Yerine Evet/Hayır gibi.

Bu konu ile ilgili bir makale (Delphi Sabitlerinin Türkçe'ye Çevrilmesi) oluşturdum. Makalemiz, VIP Makale bölümünde olduğundan yalnızca 201 puana sahip Acemi ve daha üst gruba sahip üyelerimiz tarafından görüntülenebiliyor. Siz henüz bu puana ulaşamadığınızdan, VIP Makaleyi de göremiyorsunuzdur. 
Makalenin oluşumuna vesile olduğunuzdan dolayı bir defaya mahsus olmak üzere (bu konuda prensip olarak toleransımız yoktur), ÖM ile makaleyi sizinle paylaşıyorum.


Cvp: MessageDlg Evet/Hayır Yazdırma - elixir84 - 02-02-2018

(02-02-2018, Saat: 10:46)Fesih ARSLAN Adlı Kullanıcıdan Alıntı:
(30-01-2018, Saat: 15:57)elixir84 Adlı Kullanıcıdan Alıntı:
MessageDlg('İşlem Yapmak İstermisiniz ?', System.UITypes.TMsgDlgType.mtInformation,
    [
      System.UITypes.TMsgDlgBtn.mbYes,
      System.UITypes.TMsgDlgBtn.mbNo
    ], 0,
      procedure(const AResult: TModalResult)
      begin
        case AResult
          of
          mrYES:
            BEGIN
            //işlem
            END;
          mrNo:
          BEGIN
           //işlem
          END;
        end;
      end
    )

firemonkey MessageDlg da butanların isimlerine müdahale edebiliyormuyuz. Yes/No Yerine Evet/Hayır gibi.

Bu konu ile ilgili bir makale (Delphi Sabitlerinin Türkçe'ye Çevrilmesi) oluşturdum. Makalemiz, VIP Makale bölümünde olduğundan yalnızca 201 puana sahip Acemi ve daha üst gruba sahip üyelerimiz tarafından görüntülenebiliyor. Siz henüz bu puana ulaşamadığınızdan, VIP Makaleyi de göremiyorsunuzdur. 
Makalenin oluşumuna vesile olduğunuzdan dolayı bir defaya mahsus olmak üzere (bu konuda prensip olarak toleransımız yoktur), ÖM ile makaleyi sizinle paylaşıyorum.

Teşekkürler makale ye göre yaptım.Yes/No Problemi çözüldü. (305 Özel karakterler listesine nerden ulaşabilirim.)


Cvp: MessageDlg Evet/Hayır Yazdırma - savasabd - 02-02-2018

Hocam burada mevcut.


Cvp: MessageDlg Evet/Hayır Yazdırma - emozgun - 22-07-2020

(31-01-2018, Saat: 18:42)Halil Han Badem Adlı Kullanıcıdan Alıntı:
var
 ASync: IFMXDialogServiceAsync;
begin
 if TPlatformServices.Current.SupportsPlatformService(IFMXDialogServiceAsync, IInterface(ASync)) then
 begin
  ASync.MessageDialogAsync('Bu verileri silmek istediğinize emin misiniz?', System.UITypes.TMsgDlgType.mtInformation,
  [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], TMsgDlgBtn.mbNo,0,
   procedure(const AResult: TModalResult)
   begin
    case AResult of
      mrYes:
     begin
       HareketlerView.Items.Clear; ///Görmeyin
       QrHareketler.Close; ///Görmeyin
       QrHareketler.SQL.Text := 'DELETE FROM tblhareketler';  ///Görmeyin
       QrHareketler.Open; ///Görmeyin
     end;
      mrNo:
     begin
      HareketlerViewPullRefresh(sender); ///Görmeyin
     end;
    end;
   end
  );
 end;
end;


Daha 3 gün önce yazmıştım. Evet/Hayır meselesine gelince onu bende düzenledim olmadı.

İlginçtir MessageDialogAsync procedure'u case ile çalışmıyor, if-then ile çalışıyor. Bilginize.. 

  if TPlatformServices.Current.SupportsPlatformService(IFMXDialogServiceAsync, IInterface(ASync)) then begin
   ASync.MessageDialogAsync(
     'Bu verileri silmek istediğinize emin misiniz?', System.UITypes.TMsgDlgType.mtInformation,
     [
        System.UITypes.TMsgDlgBtn.mbYes,
        System.UITypes.TMsgDlgBtn.mbNo
      ],
     TMsgDlgBtn.mbNo,0,
     procedure(const AResult: TModalResult)
     begin
       if(AResult = mrYes) then begin Showmessage('evet');  end;
       if(AResult = mrNo ) then begin Showmessage('hayır'); end;
     end
     );
 end;



Cvp: MessageDlg Evet/Hayır Yazdırma - Halil Han BADEM - 22-07-2020

(22-07-2020, Saat: 06:43)emozgun Adlı Kullanıcıdan Alıntı:
(31-01-2018, Saat: 18:42)Halil Han Badem Adlı Kullanıcıdan Alıntı:
var
 ASync: IFMXDialogServiceAsync;
begin
 if TPlatformServices.Current.SupportsPlatformService(IFMXDialogServiceAsync, IInterface(ASync)) then
 begin
  ASync.MessageDialogAsync('Bu verileri silmek istediğinize emin misiniz?', System.UITypes.TMsgDlgType.mtInformation,
  [System.UITypes.TMsgDlgBtn.mbYes, System.UITypes.TMsgDlgBtn.mbNo], TMsgDlgBtn.mbNo,0,
   procedure(const AResult: TModalResult)
   begin
    case AResult of
      mrYes:
     begin
       HareketlerView.Items.Clear; ///Görmeyin
       QrHareketler.Close; ///Görmeyin
       QrHareketler.SQL.Text := 'DELETE FROM tblhareketler';  ///Görmeyin
       QrHareketler.Open; ///Görmeyin
     end;
      mrNo:
     begin
      HareketlerViewPullRefresh(sender); ///Görmeyin
     end;
    end;
   end
  );
 end;
end;


Daha 3 gün önce yazmıştım. Evet/Hayır meselesine gelince onu bende düzenledim olmadı.

İlginçtir MessageDialogAsync procedure'u case ile çalışmıyor, if-then ile çalışıyor. Bilginize.. 

  if TPlatformServices.Current.SupportsPlatformService(IFMXDialogServiceAsync, IInterface(ASync)) then begin
   ASync.MessageDialogAsync(
     'Bu verileri silmek istediğinize emin misiniz?', System.UITypes.TMsgDlgType.mtInformation,
     [
        System.UITypes.TMsgDlgBtn.mbYes,
        System.UITypes.TMsgDlgBtn.mbNo
      ],
     TMsgDlgBtn.mbNo,0,
     procedure(const AResult: TModalResult)
     begin
       if(AResult = mrYes) then begin Showmessage('evet');  end;
       if(AResult = mrNo ) then begin Showmessage('hayır'); end;
     end
     );
 end;

Merhaba,
o zaman yaptığımda gayet stabil çalışıyordu. Güncelleme ile değişiklik gelmiş olabilir. 10.1 ile geliştiriyordum o zamanlar.


Cvp: MessageDlg Evet/Hayır Yazdırma - emozgun - 08-08-2020

Merhabalar Fesih bey, gönderdiğiniz yazıları inceledim. Blocking dialogs not implemented on this platform on Android PlatformFiremonkey Android Uygulama KapanıyorFiremonkey MessageDlg TürkçeleştirmekBerlin What's New- Simplified Dialog API
Windows için FMX'te yazılmış uygulamayı Android'e aktarmaya başlayınca en başta ileti meselesini hala çözemedim. Windows'ta modal çalışan iletilere göre yazılmış uygulamayı Android için asenkron iletilere göre değiştirmemek için çok direndim. Bu 
https://stackoverflow.com/questions/43857135/how-to-properly-mimic-a-modal-dialog-and-wait-for-input
çözümü de denedim fakat bir türlü modal yapamadım. 
* Async komutlar durmadan geçiyor, ya her evet-hayır için kodları dağıtmak veya bekletici ilave etmek gerekiyor. Sync olanlar duruyor fakat Android'de Dialog ve inputquery iletilerini göstermiyor.
** FMX.Consts ile düğmeler ve varsa bağlık türkçeleşiyor. İngilizce vs Windows'larda düğmeler ingilizce oluyor (TDialogServiceAsync.MessageDialog hariç)
Ayrıca FMX.DialogService.TDialogService.MessageDialog komutu platforma göre hem asyn hem de sync çalışabiliyor.

Bu durumda tek çözüm Procedure kısmı içine AResult = mrYes ve mrNo arasına alt producedure'ler olarak dağıtmak kaldı, sizce de öyle mi? Ya da başka bir yol tavsiye edebilir misiniz?


Cvp: MessageDlg Evet/Hayır Yazdırma - Fesih ARSLAN - 10-08-2020

(08-08-2020, Saat: 11:14)emozgun Adlı Kullanıcıdan Alıntı: Merhabalar Fesih bey, gönderdiğiniz yazıları inceledim. Blocking dialogs not implemented on this platform on Android PlatformFiremonkey Android Uygulama KapanıyorFiremonkey MessageDlg TürkçeleştirmekBerlin What's New- Simplified Dialog API
Windows için FMX'te yazılmış uygulamayı Android'e aktarmaya başlayınca en başta ileti meselesini hala çözemedim. Windows'ta modal çalışan iletilere göre yazılmış uygulamayı Android için asenkron iletilere göre değiştirmemek için çok direndim. Bu 
https://stackoverflow.com/questions/43857135/how-to-properly-mimic-a-modal-dialog-and-wait-for-input
çözümü de denedim fakat bir türlü modal yapamadım. 
* Async komutlar durmadan geçiyor, ya her evet-hayır için kodları dağıtmak veya bekletici ilave etmek gerekiyor. Sync olanlar duruyor fakat Android'de Dialog ve inputquery iletilerini göstermiyor.
** FMX.Consts ile düğmeler ve varsa bağlık türkçeleşiyor. İngilizce vs Windows'larda düğmeler ingilizce oluyor (TDialogServiceAsync.MessageDialog hariç)
Ayrıca FMX.DialogService.TDialogService.MessageDialog komutu platforma göre hem asyn hem de sync çalışabiliyor.

Bu durumda tek çözüm Procedure kısmı içine AResult = mrYes ve mrNo arasına alt producedure'ler olarak dağıtmak kaldı, sizce de öyle mi? Ya da başka bir yol tavsiye edebilir misiniz?

Merhaba @emozgun bey,
Bu kadar derinlemesine inceleme ve test sürecine ilave olarak söyleyecek bir tavsiyem yok. 
İşletim sisteminin doğası gereği bu davranışı gösteriyor. 
İllede modal kullanılacaksa, özel bir pencere veya frame tasarlamak daha doğru olacaktır.


MessageDlg Evet/Hayır Yazdırma - hayalyilmaz43 - 10-08-2020

bildiğim kadarıyla artık android de tform u transparent yapamıyoruz, sadece popup transparent olabiliyor, popup içine rectangle ile yapılabilir, veya tform arkasına timage konularak, dialoğu açan formdan makescreenshot yapıp timage ye eklenirse sanki pencere önünde açılmış hissiyatıda veriyor.