pro_imaj Posted March 21, 2016 Share Posted March 21, 2016 Merhaba; Bir formda 2 adet Container var. Bunlardan bazı şartlarda birini üste diğerini alta getirmek istiyorum. Bu işlemide yaparken Loading Container'i göstermek istiyorum. procedure TMainForm.UniButton1Click(Sender: TObject); begin Loading_Container.Visible:= True; Genel_Container.Visible := False; ShowMessage('a'); Sleep(6000); end; Yukarıdaki kod bloğunda önce "6000" kadar bekliyor ve sonra diğer işlemler yapıyor. Önce üstteki kodların çalışması sonrada 6000 kadar durmasını istiyorum normal olarak. Bu sorunu nasıl çözebilirim. Teşekkürler. Quote Link to comment Share on other sites More sharing options...
Administrators Farshad Mohajeri Posted March 21, 2016 Administrators Share Posted March 21, 2016 Callback kullanmanız lazım. ShowMessage('a', procedure () begin sleep(6000); end;) Bunu ezbere yazdım. gerçek kodlar için ilgili demolara bakın. Quote Link to comment Share on other sites More sharing options...
pro_imaj Posted March 21, 2016 Author Share Posted March 21, 2016 Cevap için teşekkür ederim. Bahsettiğiniz gibi kodu çalıştıramadım. Demolarda mesajlar için örnekler var ve onlara hep {$ifdef COMPILER_12_UP} gibi değerler eklenmiş, çok anlayamadım. Quote Link to comment Share on other sites More sharing options...
bugra Posted March 24, 2016 Share Posted March 24, 2016 Merhabalar; Bunu deneyin: ShowMessage('Mesaj metni', procedure(Sender: TComponent; Res: Integer) begin Sleep(6000); //Sleepten sonra çalışacak olan kodlar buraya gelecek. end); Quote Link to comment Share on other sites More sharing options...
pro_imaj Posted March 26, 2016 Author Share Posted March 26, 2016 Merhabalar; Bunu deneyin: ShowMessage('Mesaj metni', procedure(Sender: TComponent; Res: Integer) begin Sleep(6000); //Sleepten sonra çalışacak olan kodlar buraya gelecek. end); Neden mesaj verdirdiğimizi anlayamıyorum. Ekrana mesaj verdirmek istemiyorum ki! Quote Link to comment Share on other sites More sharing options...
bugra Posted March 28, 2016 Share Posted March 28, 2016 İlk yönten olarak Sleep yerine timer kullanabilirsiniz. Timer'ın RunOnce property'sini true yapın. enable'ı false yapın. Timer intervalini de 6000 ms olarak değiştirin. Button'un onClick eventinde çalıştırmak istediğiniz ilk kodu yazın ve Timer'ın enable değerini true yapın. procedure TMainForm.UniButton1Click(Sender: TObject); begin UniContainerPanel1.Visible:= false; UniContainerPanel2.Visible:= true; UniTimer1.Enabled := true; end; OnTimer eventinde de Timer'ın bitiminde çalışacak kodu yazın. procedure TMainForm.UniTimer1Timer(Sender: TObject); begin UniContainerPanel1.Visible:= false; UniContainerPanel2.Visible:= true; end; Bir diğer seçenek ise AjaxRequest ve AjaxCallBack'i kullanmak olabilir. Button'un UniEvent'ini açın ve ajaxRequest kısmına aşağıdaki kodu yazın. function ajaxRequest(sender, url, data) { MainForm.UniContainerPanel1.setVisible( false ); MainForm.UniContainerPanel2.setVisible( true ); } ajaxCallback kısmına da aşağıdaki kodu yazın function ajaxCallback(sender, response) { MainForm.UniContainerPanel1.setVisible( true ); MainForm.UniContainerPanel2.setVisible( false ); } button onClick eventine sleep(6000); kodunu ekleyip sonrasinda atıyorum showmessage(); fonksiyonuyla ekranda mesaj çıkarmak isterseniz. Sırasıyla önce request çalışacak sonra 6000 ms bekleyecek, daha sonra da ajaxcallback ile birlikte showmessage çalışacaktır. procedure TMainForm.UniButton1Click(Sender: TObject); begin Sleep(6000); ShowMessage('6000 ms bekledikten sonra buraya geldi'); end; Not: UniGui'de delphi tarafında yazılan kodlar server'a gönderilir ve server'da işlendikten sonra server'dan toplu bir cevap gelir. Yazdığınız kodda server container visible'larının değişmesi isteğinin cevabı sleep kodunun cevabıyla birlikte döndüğünden sistem kodları aynı anda değerlendirip sleep işleminin bitmesini bekliyor. Quote Link to comment Share on other sites More sharing options...
pro_imaj Posted March 28, 2016 Author Share Posted March 28, 2016 Not: UniGui'de delphi tarafında yazılan kodlar server'a gönderilir ve server'da işlendikten sonra server'dan toplu bir cevap gelir. Yazdığınız kodda server container visible'larının değişmesi isteğinin cevabı sleep kodunun cevabıyla birlikte döndüğünden sistem kodları aynı anda değerlendirip sleep işleminin bitmesini bekliyor. Yazdığınız not kısmı balık tutmayı öğretti çok teşekkür ederim. İyi çalışmalar. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.