Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];

Вниз

Вопрос про thread.   Найти похожие ветки 

 
vegarulez ©   (2007-08-03 18:39) [0]

По совету одного форумчанина нажал F1 на Thread и начал читать...
так вот у меня вопрос...
там сразу же есть экзампл... объясните мне, что он делает?
Потому как, у меня, ничего не меняется, тока нажимаю на кнопку Create Thread - тут же прога начинает висеть ничего не делая... и так и висит.
В чём тогда суть экзампла (c:\Program Files\Borland\Delphi6\Help\Examples\Prgrsbar\)?


 
Dib@zol ©   (2007-08-03 18:52) [1]

А у меня такого ваще нет :(
Скинь в форум иль на мыло...


 
vegarulez ©   (2007-08-03 19:46) [2]

вот это c:\Program Files\Borland\Delphi6\Help\Examples\Prgrsbar\
скинул на залил.ру качайте:
http://slil.ru/24700148

Ато что в хелпе написано сюда закину:

Objects

The example demonstrates using the TProgressBar and TThread objects.

Running

To run this example, load the project file from the Help\Examples\PrgrsBar directory.

Description

This example illustrates the use of a progress bar control, how to update the control, and how to manage threads during such a process.

For another example using TProgress bar see Technical Information Document #3103 on our website: www.inprise.com/devsupport/delphi/ti_list/TI3103.html.

unit Pg1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ComCtrls, ExtCtrls, Pg2;

const
 WM_ThreadDoneMsg = WM_User + 8;

type
 TForm1 = class(TForm)
   ProgressBar1: TProgressBar;
   ProgressBar2: TProgressBar;
   Button1: TButton;
   Button2: TButton;
   TrackBar1: TTrackBar;
   TrackBar2: TTrackBar;
   Bevel1: TBevel;
   Bevel2: TBevel;
   Label1: TLabel;

   Label2: TLabel;
   Button3: TButton;
   Button4: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure Button4Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure TrackBar1Change(Sender: TObject);
   procedure TrackBar2Change(Sender: TObject);
   procedure FormDestroy(Sender: TObject);

 private
   { Private declarations }
   MyThread1 : TMyThread; // thread number 1
   MyThread2 : TMyThread; // thread number 2
   Thread1Active : boolean; // used to test if thread 1 is active
   Thread2Active : boolean; // used to test if thread 2 is active
   procedure ThreadDone(var AMessage : TMessage); message WM_ThreadDoneMsg; // Message to be sent back from thread when its done
 public
   { Public declarations }

 end;

var
 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject); // Create Thread 1
{ The thread will destroy iteself when it is done executing because FreeOnTerminate is set to true.
The first paramter is the priority, and the second is the progressbar to update.
}
begin
  if (MyThread1 = nil) or (Thread1Active = false) then // make sure its not already running

  begin
    MyThread1 := TMyThread.CreateIt(TrackBar1.Position, ProgressBar1);
    Thread1Active := true;
  end
  else
    ShowMessage("Thread still executing");
end;

procedure TForm1.Button2Click(Sender: TObject); // Create Thread 2
begin
  if (MyThread2 = nil) or (Thread2Active = false) then  // make sure its not already running
  begin
    MyThread2 := TMyThread.CreateIt(TrackBar2.Position, ProgressBar2);

    Thread2Active := true;
  end
  else
    ShowMessage("Thread still executing");
end;

procedure TForm1.Button3Click(Sender: TObject); // Terminate Thread 1
begin
 if (MyThread1 <> nil) and (Thread1Active = true) then  // check to see if it is running
   MyThread1.Terminate
 else
  ShowMessage("Thread not started");
end;

procedure TForm1.Button4Click(Sender: TObject); // Terminate Thread 2

begin
 if (MyThread2 <> nil) and (Thread2Active = true) then  // check to see if it is running
   MyThread2.Terminate
 else
   ShowMessage("Thread not started");
end;

procedure TForm1.ThreadDone(var AMessage: TMessage); // keep track of when and which thread is done executing
begin
 if ((MyThread1 <> nil) and (MyThread1.ThreadID = cardinal(AMessage.WParam))) then

 begin
     Thread1Active := false;
 end;
 if ((MyThread2 <> nil) and (MyThread2.ThreadID = cardinal(AMessage.WParam))) then
 begin
     Thread2Active := false;
 end;
end;

procedure TForm1.FormCreate(Sender: TObject); // initialize to zero
begin
 Thread1Active := false;
 Thread2Active := false;
end;

procedure TForm1.TrackBar1Change(Sender: TObject); // set Thread 1 Priority

begin
 if (MyThread1 <> nil) and (Thread1Active = true) then
    MyThread1.priority := TThreadPriority(TrackBar1.Position);
end;

procedure TForm1.TrackBar2Change(Sender: TObject); // set Thread 2 Priority
begin
 if (MyThread2 <> nil) and (Thread2Active = true) then
   MyThread2.priority := TThreadPriority(TrackBar2.Position);
end;

procedure TForm1.FormDestroy(Sender: TObject); // Terminate any threads still running

begin
  if (MyThread1 <> nil) and (Thread1Active = true) then
  begin
    MyThread1.Terminate;
    MyThread1.WaitFor;  // wait for it to terminate
  end;
  if (MyThread2 <> nil) and (Thread2Active = true) then
  begin
    MyThread2.Terminate;
    MyThread2.WaitFor;
  end;
end;

end.


 
Zagaevskiy ©   (2007-08-03 19:58) [3]

МДа ... закинул, млин.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.08.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.061 c
15-1185805203
Slider007
2007-07-30 18:20
2007.08.26
С днем рождения ! 30 июля 2007 понедельник


15-1185397599
Petr V. Abramov
2007-07-26 01:06
2007.08.26
кака отличить съедобный гриб от ядовитого?


2-1186036778
dimaL
2007-08-02 10:39
2007.08.26
MDI интерфейс


15-1185823684
ArtemESC
2007-07-30 23:28
2007.08.26
Пролил квас на клаву...


15-1185215900
Cerberus
2007-07-23 22:38
2007.08.26
CMS





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский