Execute mesaj

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 12:21

Execute mesaj

Mesaj gönderen Dostk »

Selamlar, Acılan bir konuda Execute yöntemini duyunca kısa bir araştırma sonunda projeme ek olarak hatırlatma ekledim, ancak bir konuda sıkıntı yaşıyorum "BalloonHint" kullanarak kullanıcıya bidirim yapmak istediğimde

First chance exception at $74F4845D. Exception class EOSError with message
'System Error. Code: 1400.
Geçersiz pencere işleci'.
Process SplitView.exe (1540)

hatası ile karşılaşıyorum, showmessage veya label kullandığımda sıkıntı çıkmıyor bu sorun neden kaynaklanıyordur..n

Kod: Tümünü seç

procedure TForm3.HatirlatmaTimerTimer(Sender: TObject);
begin
  with MesajKontrol.Create do
    FreeOnTerminate := True // İşlem bitince bellekten sil
end;

Kod: Tümünü seç

procedure MesajKontrol.Execute;
var
  ControlTime: TDateTime;
begin
  With Form3, Form3.QHatirlat do
  begin
    HatirlatmaTimer.Enabled := False;
    ControlTime := Now;
    Connection := TEMELConnection;
    Close;
    SQL.Clear;
    SQL.Add('Select * From HATIRLATMA');
    SQL.Add('Where TARIH <=:Tarih and Saat <=:Saat And DURUM=''Yeni''');
    Params[0].AsDate := DateOf(ControlTime);
    Params[1].AsTime := TimeOf(ControlTime);
    Prepared := True;
    Open;
    if Not IsEmpty then
    begin
         if FileExists(SesAdres) then
        begin
            ///Form3.BalloonMesaj('Yeni bir mesaj aldınız'); ????
          PlaySound(PChar(SesAdres), 0, SND_ASYNC or SND_FILENAME);
        end;
      end;
    end;
  end;
end;
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: Execute mesaj

Mesaj gönderen ertank »

Merhaba,

Bu Execute() prosedürü bir Thread tanımının Execute() prosedürü ise istediğinizi bu şekilde yapmanız mümkün değil. Zira Windows "thread"lerin iş/hesap yapan kodlar olmasını ve uygulamamızın "main thread" kısmının kullanıcı arayüzü (GUI) işlemlerini yapmasını zorunlu kılıyor.

Bununa birlikte thread içinde belirli bir kullanıcı arayüzü ile haberleşmeye kısmi izin veren Synchronize() kullanılabilmektedir. Synchronize örnek kullanımı için: viewtopic.php?f=2&t=36022&p=194487#p194487
Cevapla