08-12-2020, Saat: 12:43
(Son Düzenleme: 08-12-2020, Saat: 12:59, Düzenleyen: Abdullah ILGAZ.)
(08-12-2020, Saat: 03:53)mcuyan Adlı Kullanıcıdan Alıntı: Mantıken İşlemden önce show yapıp sonra işlemleri yaptırıp, en son hide yapmak gerekmiyor mu?
Rica etsem çok kısa bir örnek verebilir misiniz?
Kodların en sonuna yazınca Show oldu. Fakat Hide olayını ne zaman yapacağız. Çünki showdan sonra hide yazınca yine kendiliğinden kapatıyor. hiç görünmüyor.
En doğru yöntem thread açıp işlem tamamlandığında Hide fonksiyonunu çağırmak. Derleyici yukarıdan aşağıya ilerlediği için öncelikli operasyonlarınızı önce belirtmeniz durumunda, FGX sadece UI güncelleyen ek thread oluşturduğu için Show metodu sorunsuz çalışacaktır.
type TMyThread = class(TThread) private FJob: TNotifyEvent; public procedure Jobs; published property Job: TNotifyEvent read FJob write FJob; protected procedure Execute; override; end;
Bu şekilde kendi Thread sınıfınızı oluşturun.
procedure TMyThread.Execute; begin inherited; Jobs; Synchronize( procedure() begin // FGX show işlemi end); end; procedure TMyThread.Jobs; begin if Assigned(FJob) then FJob(Self); end;
Bu şekilde metodlarınızı oluşturun.
var AThread: TMyThread;
Kullanacağınız yerde bir değişken tanımlayın.
aThread := TMyThread.Create(True); AThread.Job := MyJob; AThread.OnTerminate := MyJobOnTerminate; Sleep(100); AThread.Start;
Daha sonra thread içinde yapacağınız işi tanımlayın ve tamamlandığında ne yapacağını söyleyin. Ardından Thread'i başlatın.
İşlemi ve tamamlandığında yapılacak işlemi tanımlarken;
procedure MyJob(Sender: TObject); procedure MyJobOnTerminate(Sender: TObject);
Standart prosedürler oluşturarak işlemlerinizi içine ekleyin.
İşlem bu kadar.
Makalenin orjinaline buradan ulaşabilirsiniz.

