Arkadaşlar, Adoquery ile sorgulama yaptığımda sorgulama yapılırken bekliyoruz ve sorgulama sonucu karşımıza geliyor.
Ben şunu istiyorum; bu sorgulama süresince progress zamanını bir progressbar a atamak veya bir gif animasyonunu oynatmak istiyorum.
thread ile yapılabilir mi? diye düşündüm ancak. ADOquery'nin OnFetchProgress diye bir olayı var onuda kavrayamadım. Bir basit örnek kod ile yardımcı olabilecek kişilere müteşekkir kalacağım şimdiden teşekkür.
ADOquery ile progress i ilişkilendirmek nasıl yapılır?
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- misterapocalypse
- Üye
- Mesajlar: 36
- Kayıt: 03 Tem 2007 06:27
- Konum: Muğla-Dalaman
- İletişim:
ADOquery ile progress i ilişkilendirmek nasıl yapılır?
En son misterapocalypse tarafından 30 Mar 2012 11:46 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: ADOquery ile progress zamanını değerlendirmek.
TAnimate ile uygun bir .avi oyantmak da düşünülebilir. Zahmetsiz, pratik ve animasyona göre güzel bir sonuç elde edebilirsiniz.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
- misterapocalypse
- Üye
- Mesajlar: 36
- Kayıt: 03 Tem 2007 06:27
- Konum: Muğla-Dalaman
- İletişim:
Re: ADOquery ile progress zamanını değerlendirmek.
arkadaşlar benim bahsettiğim access (.mdb) uzantılı bir dosyam var bu veritabanında tam 300.000 adet kişi ismi var eğer ben bu listede bir adoquery ile aratma yapar isem 20 saniye civarında(bu bilgisayarın hızına bağlı) sürüyor. koşullu yaparsam 2-3 saniyeye kadar düşüyor.
Bu sürede beklerken kullanıcı acaba bilgisayar kilitlendi mi? diye soru sormasın diye aratma yaparken animasyon veya hareketli obje hatta progress bar bile olabilir farketmez. Bende hareket etmiyor taki işlemi sonuçlandırıncaya kadar. TThread olaylarını araştırıyorum. ancak sağlıklı bir örneğe ulaşamadım. Thread konusunda bildiğiniz bir kod veya komponent var ise yardım ederseniz sevinirim.
Bu sürede beklerken kullanıcı acaba bilgisayar kilitlendi mi? diye soru sormasın diye aratma yaparken animasyon veya hareketli obje hatta progress bar bile olabilir farketmez. Bende hareket etmiyor taki işlemi sonuçlandırıncaya kadar. TThread olaylarını araştırıyorum. ancak sağlıklı bir örneğe ulaşamadım. Thread konusunda bildiğiniz bir kod veya komponent var ise yardım ederseniz sevinirim.
Re: ADOquery ile progress zamanını değerlendirmek.
forma bir timer, küçük bir panel ve üzerine bir label ekleyin, timer intervali 100 gibi bir değer verin, labelin captionuna 'Lütfen Bekleyiniz' diye yazın
sorguyu çalıştırmadan önce Bekle; sorgu tamamlandıktan sonra Devam; ve işlem tamamdır...
Kod: Tümünü seç
procedure TForm1.PaneliOrtala;
begin
panelBekle.top:=round((ClientHeight/2)-(panelBekle.height/2));
panelBekle.left:=round((Clientwidth/2)-(panelBekle.width/2));
end;
procedure TForm1.FormResize(Sender: TObject);
begin
PaneliOrtala;
end;
procedure Tform1.Bekle;
begin
PaneliOrtala;
panelBekle.Visible:=true;
panelBekle.BringToFront;
timer1.enabled:=true;
end;
procedure Tform1.Devam;
begin
panelBekle.Visible:=false;
timer1.enabled:=false;
end;
procedure Tform1.Timer1Timer(Sender: TObject);
begin
lblBekle.caption:=lblBekle.caption+'.';
if lblBekle.caption='Lütfen Bekleyiniz.....' then
lblBekle.caption:='Lütfen Bekleyiniz';
end;
bazen yükselmek için önce dibi görmek gerekir...
forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...
forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...
Re: ADOquery ile progress zamanını değerlendirmek.
yada mesela panel üzerine bir tane progressbar ekleyin, style marque olarak ayarlayıp marqueinterval i de 100 yapın
işlem başlangıcında paneli gösterip işlem bitince paneli gizleyin
işlem başlangıcında paneli gösterip işlem bitince paneli gizleyin
bazen yükselmek için önce dibi görmek gerekir...
forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...
forumda soru sormadan önce bakılmalı bence
daha fazlası için...
yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...
- misterapocalypse
- Üye
- Mesajlar: 36
- Kayıt: 03 Tem 2007 06:27
- Konum: Muğla-Dalaman
- İletişim:
Re: ADOquery ile progress i ilişkilendirmek nasıl yapılır?
Sorum yanlış anlaşılmış olabilir!
unicorn64 arkadaşıma yardım etmeye çalıştığı için teşekkür ederim.
Ancak yazdığı amiyane kalacak ama "ilkel" bir kod olarak duruyor. bence;
gibi bir şey olmalı değil mi ?
unicorn64 arkadaşıma yardım etmeye çalıştığı için teşekkür ederim.
Ancak yazdığı amiyane kalacak ama "ilkel" bir kod olarak duruyor. bence;
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
Var I : integer;
begin
AdoDataset1.open;
ADODataset2.Active:=True;
progressbar1.Min := 0;
I:=0;
MyCmpl_Status := False;
If ADODataSet1.RecordCount <> 0 then
begin
WHILE NOT MyCmpl_Status DO
begin
AdoDataset2.InsertRecord([ADODataSet1.FieldValues['SAMPLE_ID'],
I,
'Analytical Test',
ADODataSet1.FieldValues['COMPONENT'],
ADODataSet1.FieldValues['UNITS'],
ADODataSet1.FieldValues['VALUE_TYPE'],
ADODataSet1.FieldValues['NUMBER_VALUE'],
ADODataSet1.FieldValues['TEXT_VALUE'],
ADODataSet1.FieldValues['TIME_VALUE']]);
ADODataSet1.Next;
end;
end;
end;
procedure TForm1.ADODataSet1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
begin
If ProgressBar1.Max<>MaxProgress then
ProgressBar1.Max := MaxProgress;
ProgressBar1.Position := Progress;
Application.ProcessMessages;
end;
procedure TForm1.ADODataSet1EndOfRecordset(DataSet: TCustomADODataSet;
var MoreData: WordBool; var EventStatus: TEventStatus);
begin
If EventStatus = esOK then
MyCmpl_Status := True //MyCmpl_Status is a Boolean Var
else
MyCmpl_Status := False;
end;
- misterapocalypse
- Üye
- Mesajlar: 36
- Kayıt: 03 Tem 2007 06:27
- Konum: Muğla-Dalaman
- İletişim:
Re: ADOquery ile progress i ilişkilendirmek nasıl yapılır?
birde pdf formatında ado ile ilgili döküman buldum
http://bidou.developpez.com/tutoriels/V ... Delphi.pdf
http://www.sql.ru/forum/actualthread.as ... &hl=splash
http://stackoverflow.com/questions/4127 ... -to-cancel
http://www.sql.ru/forum/actualthread.aspx?tid=700572
http://bidou.developpez.com/tutoriels/V ... Delphi.pdf
http://www.sql.ru/forum/actualthread.as ... &hl=splash
http://stackoverflow.com/questions/4127 ... -to-cancel
http://www.sql.ru/forum/actualthread.aspx?tid=700572