Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с SysTray [D6, Win95/98]


Zergling ©   (2002-07-23 09:32:00) 

Господа, помогите!!! У меня проблема SysTray.
1. Приложение работает в SysTray и в отдельном потоке производит копирование файлов по сетке. После копирвания файлов в потоке и восстановления приложения из Tray на форме не видны ProgressBar, не могу кликнуть мышей по SpeedButton.
2. После тогоже копирования пытаюсь закрыть программу, но вываливается сообщение такого типа:
EOSError
A call to an OS function failed
3. При попытке выхода из Windows прога не хечет закрываться, как послать ей сообщение, что система завершает работу и проге нужно закрыться.

{ тот самый поток }
Type
TCopyThread=class(TThRead)
Protected
Procedure Execute;override;
end;

procedure TCopyThread.Execute;
begin
CopyFiles(ListCopyFile,ListDir);
end;

{ вызываю поток так }
Copir:=TCopyThread.Create(False);

{ Процедура создания каталогов }

Procedure DirCreate(FullPath:String);
Var I:Word;
NewDir:String;
begin
For i:=1 to Length(FullPath) do
begin
if FullPath[i]="\" then
begin
NewDir:=Copy(FullPath,1,I-1);
CreateDir(NewDir);
end;
end;
CreateDir(FullPath);
end;

{ Процедура копирования }

{ CopyFiles(полное имя файла, путь к каталогу) }
Procedure CopyFiles(SrcName,DestPath:array of string);
var
SrcFile, DestFile: File;
BytesRead, BytesWritten, TotalRead: Integer;
Buffer: array[1..500] of byte;
FSize, I: Integer;
Begin
for i:=0 to High(SrcName) do
begin
DirCreate(DestPath[I]); // Создаем каталог
AssignFile(SrcFile, SrcName[I]);
AssignFile(DestFile, DestPath[I]+"\"+"toto");
Reset(SrcFile, 1);
try
Rewrite(DestFile, 1);
try
try
TotalRead := 0;
FSize := FileSize(SrcFile);
repeat
try
BlockRead(SrcFile, Buffer, SizeOf(Buffer), BytesRead);
except
on EInOutError do
Begin
MessageDlg("Ошибка копирования "+SrcName[I],mtError,[mbOk],0);
End;
end;
if BytesRead > 0 then
begin
BlockWrite(DestFile, Buffer, BytesRead, BytesWritten);
if BytesRead <> BytesWritten then
MessageDlg("Ошибка копирования "+SrcName[I],mtError,[mbOk],0)
else begin
TotalRead := TotalRead + BytesRead;
end;
end
until BytesRead = 0;
except
Erase(DestFile);
raise;
end;
finally
CloseFile(DestFile);
end;
finally
CloseFile(SrcFile);
end;
end;
end;


Zergling   (2002-07-24 07:35:00) [1]

Проблема в компоненте трея. Форма становится неактивной когда я пользуюсь PopupMenu. Как мне првильно обработать менюшку. Могу выслать исходный код компонента (Дельфи 6).


Наверх

Титульная страница Поиск, карта сайта Написать письмо