
if FindFirst(Path+DirName, faDirectory, SR) = 0 then
if length(SR.Name)=5 then
if midstr(SR.Name,3,1)='-' then
begin
if FindFirst(Path+SR.Name+'\*.*', faDirectory, SR2) = 0 then
begin
repeat
if (length(SR2.Name)>=2) and (SR2.Name<>'..') and (SR2.Attr=faDirectory) then
begin
imerazr:=ConvertFolderName(SR2.Name);
AddRazred(leftstr(imerazr,length(imerazr)-2),rightstr(imerazr,1),'','','');
brRazr.Caption:=inttostr(strtoint(brRazr.Caption)+1);
if FindFirst(Path+SR.Name+'\'+SR2.Name+'\*.dat',faAnyFile, SR3) = 0 then
begin
repeat
if SR3.Attr<>faDirectory then
begin
if abort then
begin
label18.Caption:='Proces prekinut...';
Progress.Visible:=false;
lblKraj.Visible:=true;
end;
Progress.position:=Progress.position+1;
lblPath.Caption:=path+DirName+'\'+SR2.Name+'\'+SR3.Name;
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
//OVDJE POKUŠAVAM SA update procedurama
lblPath.Update;
pisdatform.Update;
/////////////////////////
// OVDJE ide glavni dio posla -> funkcija LoadUcenikFromDat otvara fajl i učitava....
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
if LoadUcenikFromDat(ConvertFolderName(SR2.Name),path+DirName+'\'+SR2.Name+'\'+SR3.Name) then
brUc.Caption:=inttostr(strtoint(brUc.Caption)+1)
else
brFailed.Caption:=inttostr(strtoint(brFailed.Caption)+1)
end;
until FindNext(SR3) <> 0;
FindClose(SR3);
end;
end;
until FindNext(SR2) <> 0;
FindClose(SR2);
end;
end;
FindClose(SR);
ovdje ima dosta koda unutar petlji tako da sam samo izrezao onaj dio gdje se refreshaju forme...
E sad, problem je u tome što se nakon desetak sekundi odrađenog posla petlje forma "zamrzne" isto kao i Cancel button. Ovaj problem sam rješavao u VB6 sa DoEvents procedurom, pa stoji pitanje: ima li kakva alternativa u Delphiju... na koji način da to rješim...? Ubacio sam u petlju form.update proceduru... to mi osvježava progressbar i labele, ali za buttone ne šljaka...
znači želio bih da mogu kliknuti buttone dok je form "busy" tako da mogu prekinuti proces i da se forma ne zamrzava (not responding).
ima li tko kakav prijedlog?