Query yüklenirken flash animasyon

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
a.mikayil
Üye
Mesajlar: 83
Kayıt: 07 Ağu 2010 01:55

Query yüklenirken flash animasyon

Mesaj gönderen a.mikayil »

Merhaba arkadaşlar. Geliştirdiğim uygulamda raporlama zamanı verinin fazlalığından dolayı bazen 10 saniyeye kadar bir bekleme oluyor. Bi çok yazılımlarda yükleme süresinde her hangi bir animasyon oynatılıyor. En çok sevdiğimse dönen tekerlek. Her halde böyle durumlarda kullanılan animasyonlara preloader deniyor. Acaba hiç kullanan oldu mu. Nasıl yaparım da animasyonu sadece Query çalıştığı sürece oynatırım. Ben ShockWave kurdum da pek kullanmasını bilmiyorum. Lütfen bilgisi olan varsa bana detaylı anlatabilir mi?
İstikrar sürsün, Türkiye'm büyüsün inşallah.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Query yüklenirken flash animasyon

Mesaj gönderen sabanakman »

Bu animasyonu .avi biçimine çevirip Animate bileşeni ile zahmetsiz olarak kullanabilirsiniz.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Query yüklenirken flash animasyon

Mesaj gönderen thelvaci »

Bu sorunuzun ideal cevabı thread'lerdedir. Windows altında her bir uygulama en az bir thread'e sahiptir ki buna main thread adı verilir. Yazdığımız tüm kodlar bu thread içinde round robin algoritmasına göre çalıştırılırlar. Uzun zaman alacak olan kodların yazılması ana thread'i çok meşgul edeceğinden ve dolayısı ile mesaj kuyruğuna bakma işlemine engel olacağından uygulamamız donmuş-yanıt vermiyor gibi görünecektir. Bu durum özellikle uzun süren query'lerin çalıştırılması sırasında karşımıza çıkar. Bu tarz durumların en makul çözümü uzun süren kod parçalarını uygulamanın ana thread'inin haricinde başka bir thread'in içinde çalıştırmak olacaktır. Bu durumda, uygulamamamızın ana thread'i mesaj kuyruğunu okuyabilecek ve işletim sistemi mesajlarına tepki verebilecektir. Dolayısı ile kilitlenme hissi oluşmayacaktır.

Kısacası; query'inizi bir thread içinde çalışacak halde tasarlarsanız hem donma hissi uyandırmamış olacaksınız; hem de query çalışırken ana thread'de istediğinizi yapabileceksiniz, buna bir flash animasyonu oynatmakta dahil.
Kullanıcı avatarı
a.mikayil
Üye
Mesajlar: 83
Kayıt: 07 Ağu 2010 01:55

Re: Query yüklenirken flash animasyon

Mesaj gönderen a.mikayil »

Yanıtınıza göre teşekkür ederim. Ama maalesef ben hiç threadlerle çalışmadığım için dediğiniz "ana threadın haricinde" kavramını da anlayamadım. İsterseniz ben Query'yi çalıştırma kodumu yazayım da siz ona uygun bir çözüm kodunu yazın.Kod şöyle

Kod: Tümünü seç

      Application.CreateForm(TfRPView, Report[aciq]);
      with Report[aciq] do
      begin // with form raport
        Caption := inttostr(aciq) + '-' + Caption + (Sender as TMenuItem).Hint;
        Label_IDr.Caption := inttostr(aciq);
        LabelRPName.Caption := (Sender as TMenuItem).Name;
        LabelMenuTag.Caption := IntToStr((Sender as TMenuItem).Tag);
        DBGridRP.DataSource.DataSet := QRp;
        LabelSearchPeriod.Visible := False;
        ShowSearchCrits(aciq);
        try
          with QRp do
          begin // with AQ_GRID_RAB zapros
            Screen.Cursor := crBlueBusy;
            SQL.Clear;
            Active := False;
            SQL.Append('SELECT  DR.DRCODE, DR.DRNAME, DRS.DRSPECFULLNAME, DRL.DRLEVEL, HS.HOSPFULLNAME,PT.PAIDTYPE,');

            SQL.Append(
              ' RG.REGIONNAME, ROUND(SUM(ISNULL(TOTALPRESC.DRUGPRICESUM, 0)),2) AS TOTALPRESC,ROUND(DR.DEBT,2) AS DEBT'
              );
            SQL.Append(' FROM LAZS_HOSPITALS AS HS INNER JOIN');
            SQL.Append(' LAZS_REGIONS AS RG ON HS.REGIONID = RG.REGIONID INNER JOIN');
            SQL.Append(' LAZS_DOCTORS AS DR ON HS.HOSPID = DR.HOSPID INNER JOIN');
            SQL.Append(' LAZS_PAIDTYPE AS PT ON PT.PAIDTYPEID=DR.PAIDTYPEID INNER JOIN');
            SQL.Append(' LAZS_DRSPECS AS DRS ON DR.DRSPECID = DRS.DRSPECID INNER JOIN');
            SQL.Append(' LAZS_DRLEVELS AS DRL ON DR.DRLEVELID = DRL.DRLEVELID LEFT OUTER JOIN');
            SQL.Append(' (SELECT  INVD.DRUGPRICESUM, INV.DRID');
            SQL.Append(' FROM AZS_INVOICE AS INV INNER JOIN');
            SQL.Append(
              ' AZS_INVOICEDET AS INVD ON INV.INVID = INVD.INVID) AS TOTALPRESC ON DR.DRID = TOTALPRESC.DRID     ');
            if fSearchParam.EditFilter.Text <> '' then
              SQL.Append('WHERE DR.DRSTAT=1 ' + fSearchParam.EditFilter.Text);
            SQL.Append(
              ' GROUP BY DR.DRCODE, DR.DRNAME, DRS.DRSPECFULLNAME, DRL.DRLEVEL, HS.HOSPFULLNAME, RG.REGIONNAME ,DR.DEBT,PT.PAIDTYPE');
            Active := True;
          end;
          // with AQ_GRID_RAB 
        except
          MsgdlE('Main query is not right', 3, 3, 0);
        end; // try AQ_GRID_RAB zapros
        ButtonTitleCapt.Click;
        with ESHEx2ExcelRab do
        begin
          DataPipe := DBGridRP.DataSource;
          Title.Clear;
          Title.Append('Doctors' list');
          Title.Append('');
          Title.Append('');
        end;
        WindowState := wsMaximized;
        Visible := True;
      end;

bir de burada Flash animasyonu nasıl oynata bilirim. Yani nerede ne yazarsam daha uygun olur. İstediğim animasyonun sadece yüklenme süresince oynaması
İstikrar sürsün, Türkiye'm büyüsün inşallah.
thelvaci
Kıdemli Üye
Mesajlar: 770
Kayıt: 11 Tem 2010 07:17
Konum: Istanbul
İletişim:

Re: Query yüklenirken flash animasyon

Mesaj gönderen thelvaci »

O halde bende sizinle bir link paylaşayım. Thread'ler hakkında bir kaç nacizane malümat bulabilirsiniz.

http://www.tugrulhelvaci.com/?tag=thread

Ayrıca TShockwaveFlash nesnesinin Movie isimli property'si herhangi bir flash animasyonunu oynatmak için yeterlidir.
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Query yüklenirken flash animasyon

Mesaj gönderen sabanakman »

Thread teoride işe yaraması gerektiği halde uygulamada çok ağır sorgularda sorun yaşatabiliyor. Gerçi günümüzde artık çok çekirdekli bilgisayarlar var, pek sorun olmaz diye düşünüyorum ama genele program yazarken güçlü sistemler baz alınmamalı. Bundan 4-5 sene önce vasat bir sistemde yaptığım türlü çalışmalarda bu sorun için .avi çözüm olmuştu. Şimdiki sistemimde aynı çalışmayı yapsam durum değişebilir. Ayrıca .avi çözümü çok teknik bilgi gerektirmeyen genele hitap eden kolay bir çözüm yöntemi olarak da önerilebilir.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Re: Query yüklenirken flash animasyon

Mesaj gönderen Battosai »

Bu durumda thread lere bulaşmamak daha iyi 10 sn bekleyiversin kullanıcı :) Ama arkaplanda sürekli kitlenmelere sebeb olacak işlemler mevcut ise thread kullanmak zorunluluk. Her iki şekildede çözüm oluşturulabilir fakat zahmetsiz yöntem daha iyidir. Ben Zeos kullanıyorum zeos'un kendi içinde bir özelliği var sorgu tamamlanana kadar mouse ikonu SQLhourGlass şeklini alıyor...böylece kullanıcı işlem yapıldğının farkında oluyor...fazla şekilli bir yapı değil ama yeterli diye düşünüyorum. Artık nasıl bir sunum yapacağınız size kalmış...
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Re: Query yüklenirken flash animasyon

Mesaj gönderen sabanakman »

Bunlar biraz detaydaki farklar. Ayrıca thread konusu, programcı kişinin muhakkak üzerinden geçmesi gereken bir konu asla es geçilmemeli. Hem bu konuda araştırma yapınca en faydalı kaynakların başında da tugrul hocamızın makaleleri yer ediyor. Program yazıyorum diyen thread konusunu aşmış olması lazım (Kredi kartı olmayana kız vermiyorlar gibi oldu biraz :twisted: ). Bu örnek ise bu alanda çalışma yapmak için güzel bir örnek.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
Kullanıcı avatarı
a.mikayil
Üye
Mesajlar: 83
Kayıt: 07 Ağu 2010 01:55

Re: Query yüklenirken flash animasyon

Mesaj gönderen a.mikayil »

Bence verdiğiniz bu bilgiler ışığında artık bir uygun yolu bulup hallederim. Size de ayrıca şükranlarımı sunuyorum.
İstikrar sürsün, Türkiye'm büyüsün inşallah.
Cevapla