Timer kullanmadan zamanlı kod yazılabilirmi yardım edin..
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Timer kullanmadan zamanlı kod yazılabilirmi yardım edin..
S.a. her şeyi timerlerle ayrı ayrı yapmak çok uzun oluyor.Bunun kısayolu varmı bir kodu vs.
Örneğin ; bir butona tıklayınca deneme isimli formu açacak 5 saniye açık kalacak , 5 saniye sonra bu form kapanacak bu form kapanıncada deneme1 isimli formu açacak gibi...
Bunları yaparken örneğim butona tıklayınca ayrı ayrı timerlere yönlendiriyorsun.Ancak bunu timersiz direk butonun click prosedürüne yazarak timer kullanmadan yapmak için bir kodu vesaire varmı ?
İyi günler..
Örneğin ; bir butona tıklayınca deneme isimli formu açacak 5 saniye açık kalacak , 5 saniye sonra bu form kapanacak bu form kapanıncada deneme1 isimli formu açacak gibi...
Bunları yaparken örneğim butona tıklayınca ayrı ayrı timerlere yönlendiriyorsun.Ancak bunu timersiz direk butonun click prosedürüne yazarak timer kullanmadan yapmak için bir kodu vesaire varmı ?
İyi günler..
Re: Timer kullanmadan zamanlı kod yazılabilirmi yardım edin..
Artık delphiTurkiye'ye giren yok herhalde



Re: Timer kullanmadan zamanlı kod yazılabilirmi yardım edin..
sanırım Tthread ile halledilir bi araştır
UWESIS CORPORATION
Re: Timer kullanmadan zamanlı kod yazılabilirmi yardım edin..
sleep(ms) işini görür mü?
Re: Timer kullanmadan zamanlı kod yazılabilirmi yardım edin..
s.a.khanco yazdı:sleep(ms) işini görür mü?
sleep(ms) nedir tam ayrıntılı yazsanız belki işime yarayabilir..
iyi günler..
Re: Timer kullanmadan zamanlı kod yazılabilirmi yardım edin..
Merhabalar ,
Sleep(ms) verilen milisaniye kadar bekler bunu kullanabilirsiniz, fakat beklerken uygulama yanıt vermiyor gibi görünür, benimde bir projemde bekleme işlemlerini timer olamadan halletmem gerekiyordu aşağıdaki metodu kullandım,
Örneğin 5 sn beklemek için Delay(5000); şeklinde kullanabilirsiniz, bu metodun Sleep ten farkı, bekleme yaparken uygulamanın işletim sistemi mesajlarını işlemeye devam edebilmesidir.
Kolay gelsin.
Sleep(ms) verilen milisaniye kadar bekler bunu kullanabilirsiniz, fakat beklerken uygulama yanıt vermiyor gibi görünür, benimde bir projemde bekleme işlemlerini timer olamadan halletmem gerekiyordu aşağıdaki metodu kullandım,
Kod: Tümünü seç
procedure Delay(Milliseconds: Integer);
var
Tick: DWORD;
Event: THandle;
begin
Event := CreateEvent(nil, False, False, nil);
try
Tick := GetTickCount + DWORD(Milliseconds);
while (Milliseconds > 0) and
(MsgWaitForMultipleObjects(1, Event, False, Milliseconds,
QS_ALLINPUT) <> WAIT_TIMEOUT) do
begin
Application.ProcessMessages;
Milliseconds := Tick - GetTickCount;
end;
finally
CloseHandle(Event);
end;
end;
Örneğin 5 sn beklemek için Delay(5000); şeklinde kullanabilirsiniz, bu metodun Sleep ten farkı, bekleme yaparken uygulamanın işletim sistemi mesajlarını işlemeye devam edebilmesidir.
Kolay gelsin.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Re: Timer kullanmadan zamanlı kod yazılabilirmi yardım edin..
@Volkan iyi kod.
Eline sağlık.
Eline sağlık.

Bir kelimenin anlamını öğretsen bile yeter..



Re: Timer kullanmadan zamanlı kod yazılabilirmi yardım edin..
vkamadan yazdı:Merhabalar ,
Sleep(ms) verilen milisaniye kadar bekler bunu kullanabilirsiniz, fakat beklerken uygulama yanıt vermiyor gibi görünür, benimde bir projemde bekleme işlemlerini timer olamadan halletmem gerekiyordu aşağıdaki metodu kullandım,
Kod: Tümünü seç
procedure Delay(Milliseconds: Integer); var Tick: DWORD; Event: THandle; begin Event := CreateEvent(nil, False, False, nil); try Tick := GetTickCount + DWORD(Milliseconds); while (Milliseconds > 0) and (MsgWaitForMultipleObjects(1, Event, False, Milliseconds, QS_ALLINPUT) <> WAIT_TIMEOUT) do begin Application.ProcessMessages; Milliseconds := Tick - GetTickCount; end; finally CloseHandle(Event); end; end;
Örneğin 5 sn beklemek için Delay(5000); şeklinde kullanabilirsiniz, bu metodun Sleep ten farkı, bekleme yaparken uygulamanın işletim sistemi mesajlarını işlemeye devam edebilmesidir.
Kolay gelsin.
"vkamadan" size çok teşekkür ederim abi.Abi diyorum çünkü lise sondayım yani yaşlılık kopmleksine girmeyin.

Hayırlı günler..
Re: Timer kullanmadan zamanlı kod yazılabilirmi yardım edin..
showmessagedeyken showmessageyi kapatıp diğer işlemlere nasıl geçebilirim ? (Otomatik)
Re: Timer kullanmadan zamanlı kod yazılabilirmi yardım edin..
Bu mümkün, oluşturduğun mesaj penceresinin handle nosunu global bir değişkenle tutarsan, timer intervalinde süre sonunda bu mesaj penceresine konumlanıp ilk butona veya sonrakine vs. bastırabilirsin.
Sana bir özel bir örnek hazırladım. Bu örnekte bir fonksiyon göreceksin. Bu fonksiyon dahilinde daha önce belirlediğin sürede bir mesaj penceresi ve butonları görüntülenecek sorna da kullanıcı belirlenen sürede butornlara basmazsa kendiliğinden ilk butona basılacak.
Kullanımı ise şöyle oluyor...
Başarılar...
Sana bir özel bir örnek hazırladım. Bu örnekte bir fonksiyon göreceksin. Bu fonksiyon dahilinde daha önce belirlediğin sürede bir mesaj penceresi ve butonları görüntülenecek sorna da kullanıcı belirlenen sürede butornlara basmazsa kendiliğinden ilk butona basılacak.
Kod: Tümünü seç
function OtomatikMesaj(FormHandle: HWND; Mesaj, Baslik:string; iButton, Sure:Integer ) : Integer;
var
Timer_ID : integer;
procedure TimerProc( wnd :HWND; uMsg :UINT; idEvent :UINT; dwTime :DWORD ); stdcall;
var
Hand :HWND;
begin
Hand := GetWindow(wnd, GW_HWNDPREV);
Hand := GetWindow(Hand, GW_CHILD );
SendMessage(Hand, WM_LBUTTONDOWN, MK_LBUTTON, 0);
SendMessage(Hand, WM_LBUTTONUP, MK_LBUTTON, 0);
end;
begin
Timer_ID := SetTimer(FormHandle, 0, Sure*1000, @TimerProc);
Result := MessageBox(FormHandle, PChar(Mesaj), PChar(Baslik), iButton);
KillTimer(FormHandle, Timer_ID);
end;
Kod: Tümünü seç
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
Sonuc : Integer;
begin
Sonuc := OtomatikMesaj( Form1.Handle, 'Messaj', 'Başlık', MB_YesNo, 1 );
case Sonuc of
mrYes : ShowMessage('Evet Basıldı');
mrNo : ShowMessage('Hayır Basıldı');
end;
end;
Re: Timer kullanmadan zamanlı kod yazılabilirmi yardım edin..
"mrmarman" yardımlarınızdan dolayı size çok teşekkür ederim.


