Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
UniGUI de showmodal
#1
Merhaba

UniGUI de formun showmodal olayı farklı çalışıyor galiba.
Aynı formu 2 defa çağırdığımda, 1. form görünmeden form 2. haliyle geliyor. 

Bunu çözmenin bir yolu var mı?
Cevapla
#2
Benzer problem kendi formunda da tekrar etti.

ShowMessage('ok 1');
ShowMessage('ok 2');
ShowMessage('ok 3');

yazdığımda sadece Ok 3 mesajı geliyor.
Bu hata mı? Trial sürümü ile yaptığımdan olabilir mi?
Cevapla
#3
Merhaba ,
Her ne kadar UniGUI bizlere masaüstü konforunda yazılım geliştirme imkanı sunuyor olsa da , web uygulama mimarilerine bağımlı olarak bazı kurallara tabidir,
Kodlarımız kullanıcı arayüzüyle etkileşime girecek ise mutlaka prosedürel yapıda parçalanmalıdır (sebebini yazımın devamında detaylandıracağım), web uygulamalarının doğaları gereği tamamen istek/cevap yapısında olurlar, daha iyi anlamanız için UniGUI uygulamanızı chrome yada firefox ile açıp f12 ile geliştirici moduna alıp Network/Ağ sekmesinden yaptığınız her hareketin birer istek ve cevap olarak tarayıcı tarafından işlendiğini gözlemleyebilirsiniz.
Yani ;
Bir buton altına yazılan kodlar bir Ajax çağrısı ile sunucu tarafında tetiklenir, sunucu tarafındaki kodunuz o prosedür sona erene kadar işletilir ve işlem sonucunda ilgili ajax çağrısına asenkron bir yapıda CallBack denilen geri dönüş işlemi gerçekleştirilir, yani ilgili istek cevabı gelene kadar tarayıcıda hiç bir işlem devam etmez, aynı şekilde gelen istek karşısında sunucu tarafında işletilmeye başlanan kod bloğunuz tamamlanana kadar ilgili istek sonuçlanmaz, buda demek oluyor ki siz işletilen kodunuz arasında kullanıcıya bir soru sorup o sorunun cevabına göre kodunuzu bildiğiniz yöntemlerle akıtamazsınız bunun için UniGUI deki, MessageDlg , ShowMessage , ShowModal gibi yapılarca CallBack prosedürel parametreleri yer alır.

Bu özetle şuna imkan tanır , kullanıcıdan yanıt beklenen bir etkileşimi ekrana yollarken, kullanıcının ektileşime tepki vermesiyle işletilecek yeni bir prosedür çağrımı yapılmalıdır.

Basit bir kod şöyle görünür , UniButton1 nesnesinin sunucu tarafında ki OnClick olayına ekrana bir mesaj dialog açmasını ve sonucunu UniMemo1 nesnesi içine yazmasını istedik,

procedure TMainForm.UniButton1Click(Sender: TObject);
begin
   MessageDlg('Devam edilsin mi ?', mtConfirmation, [mbYesNo],
          procedure(Sender: TComponent; Res: Integer)
          begin
            UniMemo1.Lines.Add('Basılan Tuş: '+IntToStr(Res));
          end
end;

Bu kod bitene kadar çalışır , kullanıcının ne cevap vereceğinin önemi yoktur kod akar gider. ancak MessageDlg için 4 üncü parametresine bakın, bir prosedür parametre alır direk prosedürü de yazabilirsiniz (örnekte olduğu gibi) bu sayede ara yüzde kullanıcının tepkisine göre bu prosedür ayrı bir çağrıda çalıştırılır. programlarınızı bu şekilde kurgulamalısınız. ShowModal ile açılan formlarda aynı şekilde altında işleme devam eden kodlarınız olmamalı CallBack prosedürüne göre dallandırmalısınız.
Cevapla
#4
Teşekkür ederim ama tam çözemedim.
Hata veya bilgi mesajlarını kendi yaptığım form ile göstermek istiyorum. Formda hatanın türüne göre farklı resim ve resimlerle gelmesini istiyorum.
"kod akar gider" diyorsunuz, Mesaj formunu showmodal yaptıktan sonra, formdan dönen sonucu (hangi tuşa basıldığı veya farklı bir giriş için kullandığım formdaki bilgileri alarak) nasıl devam ettireceğim?
Cevapla
#5
(12-04-2021, Saat: 14:00)m_ekici Adlı Kullanıcıdan Alıntı: Benzer problem kendi formunda da tekrar etti.

ShowMessage('ok 1');
ShowMessage('ok 2');
ShowMessage('ok 3');

yazdığımda sadece Ok 3 mesajı geliyor.
Bu hata mı? Trial sürümü ile yaptığımdan olabilir mi?

Aslında bir hatanız yok. Sadece eksik bir nokta var. UniGUI nin web uygulaması öntanımlı olarak eşzamansız çalışır. Siz butona tıkladığınız anda karşı tarafa aşağıdaki script çalıştırmak üzere gönderilir. Burada göreceğiniz en son "Ok 3" ibareli mesajdır.

Ext.Msg.show({title:"New Application",msg:"ok 1",buttons:Ext.MessageBox.OK});
Ext.Msg.show({title:"New Application",msg:"ok 2",buttons:Ext.MessageBox.OK});
Ext.Msg.show({title:"New Application",msg:"ok 3",buttons:Ext.MessageBox.OK});

Unigui uygulamanızı Windows uygulaması gibi etkileşimli çalıştırma istiyorsanız UniMainModule -> EnableSynchronousOperations özelliğini True yapın.

Senkron ve Asenkron işlemler için uniGUI Developer Manual sayfasını kontrol edin. Burada showModal olayları konusunda istediğiniz örnekler olacaktır.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  unigui formlarını ayrı dosya da tutmak mdagli2003 0 257 13-02-2024, Saat: 15:50
Son Yorum: mdagli2003
  UniGUI'ye Genel Bakış vkamadan 67 80.664 13-02-2024, Saat: 14:06
Son Yorum: mdagli2003
  unigui mobile geolocation bydelphi 1 257 19-01-2024, Saat: 17:18
Son Yorum: delphi.developer
  Unigui ile E-imza bydelphi 5 781 21-10-2023, Saat: 16:50
Son Yorum: bydelphi
  unigui circle-progress çizimi mdagli2003 1 414 25-09-2023, Saat: 18:47
Son Yorum: hi_selamlar



Konuyu Okuyanlar: 1 Ziyaretçi