Показать сообщение отдельно
  #2  
Старый 07.02.2010, 22:08
Аватар для mak-karpov
mak-karpov mak-karpov вне форума
Активный
 
Регистрация: 18.09.2008
Сообщения: 235
Версия Delphi: 2010 и 7
Репутация: 1242
По умолчанию

Если на сайте mapper720.ru было непонятно:
В поток:

Код:
unit Unit2; 

interface 

uses 
   Classes, Unit1; 

type 
TMyThread = class(TThread) 
  private 
     { Private declarations } 
   protected 
     procedure Execute; override; 
   end; 

implementation 

{ Important: Methods and properties of objects in visual components can only be 
   used in a method called using Synchronize, for example, 

       Synchronize(UpdateCaption); 

   and UpdateCaption could look like, 

     procedure TThread.UpdateCaption; 
     begin 
       Form1.Caption := 'Updated in a thread'; 
     end; } 

{ TThread } 

procedure TMyThread.Execute; 
begin 
  { Place thread code here } 
end; 
end.
добавляещь процедуру:
Код:
unit Unit2; 

interface 

uses 
   Classes, Unit1, Dialogs; 

type 
TMyThread = class(TThread) 
  private 
     { Private declarations } 
   protected 
     procedure Execute; override;
     procedure OLOLOProc; 
   end; 

implementation 

{ Important: Methods and properties of objects in visual components can only be 
   used in a method called using Synchronize, for example, 

       Synchronize(UpdateCaption); 

   and UpdateCaption could look like, 

     procedure TThread.UpdateCaption; 
     begin 
       Form1.Caption := 'Updated in a thread'; 
     end; } 

{ TThread } 

procedure TMyThread.Execute; 
begin 
  { Place thread code here } 
end; 
end.
Жмешь CTRL+SHIFT+C
Дельфи генерирует :
Код:
unit Unit2; 

interface 

uses 
   Classes, Unit1, Dialogs; 

type 
TMyThread = class(TThread) 
  private 
     { Private declarations } 
   protected 
     procedure Execute; override;
     procedure OLOLOProc; 
   end; 

implementation 

{ Important: Methods and properties of objects in visual components can only be 
   used in a method called using Synchronize, for example, 

       Synchronize(UpdateCaption); 

   and UpdateCaption could look like, 

     procedure TThread.UpdateCaption; 
     begin 
       Form1.Caption := 'Updated in a thread'; 
     end; } 

{ TThread } 

procedure TMyThread.Execute; 
begin 

end; 

procedure TMyThread.OLOLOProc;
begin

end;
end.
В процедуру OLOLOProc пишешь что нужно.
В процедуру Execute пишешь:
Код:
unit Unit2; 

interface 

uses 
   Classes, Unit1, Dialogs; 

type 
TMyThread = class(TThread) 
  private 
     { Private declarations } 
   protected 
     procedure Execute; override;
     procedure OLOLOProc;
   end; 

implementation 

{ Important: Methods and properties of objects in visual components can only be 
   used in a method called using Synchronize, for example, 

       Synchronize(UpdateCaption); 

   and UpdateCaption could look like, 

     procedure TThread.UpdateCaption; 
     begin 
       Form1.Caption := 'Updated in a thread'; 
     end; } 

{ TThread } 

procedure TMyThread.Execute; 
begin 
  Synchronize(OLOLOProc);
end; 

procedure TMyThread.OLOLOProc;
begin
  ShowMessage('OLOLO!');
end;
end.
И в нужном месте запускаешь:
Код:
uses ...., Unit2;
...
var My : TMyThread;
...
My := TMyThread.Create(false);
И все работает!
__________________
Кнопка "+" - весы в правом верхнем углу сообщения...
Ответить с цитированием