Witam,
mam nadzieję że to już ostatni mój problem w najbliższym czasie...
Mam taki kod:
type
TWatekWysylania = class(TThread)
private
{ Private declarations }
protected
procedure Execute; override;
public
constructor Create();
procedure KoniecWatkuWysylania (Sender: TObject);
end;
var
Watek2 :TWatekWysylania ;
constructor TWatekWysylania.Create();
begin
inherited Create(True);
OnTerminate:= KoniecWatkuWysylania ;
end;
procedure TWatekWysylania.Execute;
begin
WysylaniePlikow:= True ;
try Form1.IdFTP1.Connect() ;
finally end ;
if Form1.IdFTP1.Connected then
begin
Form1.IdFTP1.Put(cache+'\stopnie.txt', 'stopnie.txt') ;
Form1.IdFTP1.Disconnect ;
end
else
begin
Form1.Label3.Caption:= 'Błąd podczas wysyłania.'+#13+'Zmiany nie zostały zapisane.' ;
Form1.SpeedButton2.Visible:= True ;
end ;
WysylaniePlikow:= False ;
end;
procedure TWatekWysylania.KoniecWatkuWysylania (Sender :TObject);
begin
Form1.PoWatkuWysylania ;
end ;
procedure TForm1.PoWatkuWysylania ;
begin
if not (SpeedButton2.Visible) then
begin
Label3.Caption:= 'Zmiany zostały zapisane.' ;
Timer2.Enabled:= True ;
end ;
end ;
procedure TForm1.FormCreate(Sender: TObject);
begin
IdFTP1.Port:= 21 ;
IdFTP1.Username := 'user';
IdFTP1.Password := 'haslo';
IdFTP1.Host := 'host';
SHGetSpecialFolderPath(0, cache, CSIDL_INTERNET_CACHE, False) ;
Watek2:= TWatekWysylania.Create() ;
procedure Zapisz ;
begin
Form1.Panel2.Visible:= True ;
Form1.Label3.Caption:= 'Trwa wysyłanie plików...' ;
Watek2.Resume ;
end ;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Panel2.Visible:= False ;
Timer2.Enabled:= False ;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if WysylaniePlikow then
begin
Action:= caNone ;
ShowMessage('Proszę nie zamykać programu podczas zapisywania zmian na serwerze. Może to spowodować błędy i utratę danych.') ;
end ;
end ;
I działa to tak:
Po pierwszym wywołaniu procedury Zapisz wszystko jest ok, pokazuje się Panel, tekst "Trwa wysyłanie plików...", po czym "Zmiany zostały zapisane." i po chwili (Timer) wszystko znika.
Ale za drugim, trzecim i każdym kolejnym razem pokazuje się Panel i tekst, dane są wysłane, WysylaniePlikow = False, ale nic więcej - nie zmienia się tekst ani nie znika Panel po jakimś czasie.
Wątków używam po raz pierwszy, dlatego domyślam się, że jest niezbyt estetycznie i użytecznie napisany, i powinno być jakoś lepiej - jeśli tak, będę wdzięczny za poprawki i instrukcje ;)
ale najważniejsze dla mnie jest to, by działał poprawnie za każdym razem, tzn. wysyłał plik, zmieniał napis i znikał Panel. bardzo proszę o pomoc.