Delphi Can

Orjinalini görmek için tıklayınız: OpenDialog uygulamada donma
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhaba, Uygulama işlem yaparken butonu tıkladığımda OpenDialogdan dolayı uygulamada donma durumu oluyor excel, resim veya video fark etmiyor. sorunu nasıl çözebilirim?

procedure TForm1.Button1Click(Sender: TObject);
begin
 OpenDialog1.FileName := '';
  if OpenDialog1.Execute then
  begin
    Edit1.Text := ChangeFileExt(ExtractFileName(OpenDialog1.FileName), '');
     Edit2.Text := OpenDialog1.FileName;
   end;
end;
Donma derken, yapılan bir işlem bekliyor anlamındaysa, ilgili işlemi bağımsız bir thread'e taşımak çözüm olacaktır.
(16-07-2020, Saat: 14:20)mrmarman Adlı Kullanıcıdan Alıntı: [ -> ]Donma derken, yapılan bir işlem bekliyor anlamındaysa, ilgili işlemi bağımsız bir thread'e taşımak çözüm olacaktır.


Donma olayı butona tıkladığım anda gerçekleşiyor. Yani opendialog penceresi açılana kadar, uygulamada devem eden faklı işlem donuyor.
pencere açıldıktan sonra işlem devam ediyor. TThread ilede değişen birşey olmadı.


procedure TForm1.Button1Click(Sender: TObject);
begin
  TThread.Synchronize(TThread.CurrentThread,
    procedure()
    begin
    OpenDialog1.FileName := '';
      if OpenDialog1.execute then
      begin
        Edit1.Text := ChangeFileExt(ExtractFileName(OpenDialog1.FileName), '');
       Edit2.Text := OpenDialog1.FileName;
      end;
    end);
end;
Arka uygulamayı yani donuyor dediğiniz işlemi thread'e taşımaktı kasıt opendialog değil.

Ayrıca main thread için synchronize demek ile direkt çalıştırmak aynı şey. Bu eski threade yeni adet olmuş Smile
(16-07-2020, Saat: 13:42)Haydar Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba, Uygulama işlem yaparken butonu tıkladığımda OpenDialogdan dolayı uygulamada donma durumu oluyor excel, resim veya video fark etmiyor. sorunu nasıl çözebilirim?

procedure TForm1.Button1Click(Sender: TObject);
begin
 OpenDialog1.FileName := '';
  if OpenDialog1.Execute then
  begin
    Edit1.Text := ChangeFileExt(ExtractFileName(OpenDialog1.FileName), '');
     Edit2.Text := OpenDialog1.FileName;
   end;
end;


Merhaba,

Donmanın bu kodda gerçekleştiğinden emin misiniz? Boş bir proje oluşturup test edermisiniz.
(16-07-2020, Saat: 16:32)uparlayan Adlı Kullanıcıdan Alıntı: [ -> ]
(16-07-2020, Saat: 13:42)Haydar Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba, Uygulama işlem yaparken butonu tıkladığımda OpenDialogdan dolayı uygulamada donma durumu oluyor excel, resim veya video fark etmiyor. sorunu nasıl çözebilirim?

procedure TForm1.Button1Click(Sender: TObject);
begin
 OpenDialog1.FileName := '';
  if OpenDialog1.Execute then
  begin
    Edit1.Text := ChangeFileExt(ExtractFileName(OpenDialog1.FileName), '');
     Edit2.Text := OpenDialog1.FileName;
   end;
end;


Merhaba,

Donmanın bu kodda gerçekleştiğinden emin misiniz? Boş bir proje oluşturup test edermisiniz.

Evet hocam normalde sorun olmuyor. opendialog aktif hale gelice 1-2 saniye donma oluyor. Özelikle video oynatarak test yaptım oynayan video donuyor.
OpenDialog'ın göstereceği kısayollar, sürücüler, network bağlantıları arasında ulaşılamayan ya da zor ulaşılabilen bir eleman varsa OpenDialog bekleyebilir.

OpenDialog açıldığında, sol taraftaki klasör listesinde ulaşılamayan ya da tıklandığında geç ulaşılan bir eleman var mı kontrol edebilirsin.