КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Implementation. , unit2; //подключение модуля Unit2
Protected Type Begin Implementation Var Public Type Uses ..., unit2; //подключение модуля Unit2 TForm1 = class(TForm) ... procedure VivodFigur1; //объявление метода заполнения первой области procedure VivodFigur2; //объявление метода заполнения второй области procedure VivodFigur3; //объявление метода заполнения третьей области procedure VivodFigur(Vf:TCanvas);//объявление метода заполнения области ... Form1: TForm1; P1, P2, P3: potok; //объявление переменных для трех потоков {$R *.DFM} procedure TForm1.Button1Click(Sender:TObject); //обработ. кнопки Старт {Создание первого потока методом Create. Параметр True указывает, что запуск осуществляется после вызова метода Resume, иначе (False) ‑ сразу после создания потока.} p1:=potok.Create(true); //создание первого потока p1.Priority:=tpHighest; {установка приоритета выполнения потока: tpIdle (при простое Windows), tpLowest/tpLower или tpHighest/tpHigher (на два/один пункта ниже или выше нормального), tpNormal (нормальный), tpTimerCritical (наивысший) } p1.NPotoka:=1; //признак работы первого потока p2:=potok.Create(true); p2.NPotoka:=2; P2.Priority:=tpNormal; //второй поток p3:=potok.Create(true); p3.NPotoka:=3; P3.Priority:=tpLowest; //третий поток p1.Resume;p2.Resume;p3.Resume; //запуск 1, 2, 3 потоков end; procedure TForm1.VivodFigur(Vf:TCanvas);//вывод квадрата в области Vf Var f: Trect;//объявление переменной записи с описанием квадрата Begin Vf.Brush.Style:=bsSolid; //кисть рисует сплошную линию Vf.Brush.Color:=rgb(random(256),random(256),random(256)); //цвет кисти f.left:=random(90);f.top:=random(90);//координаты верхнего левого и f.right:=f.left+10; f.bottom:=f.top+10;//нижнего правого углов квадрата Vf.rectangle(f); //вывод квадрата в указанную параметром область end; //конец процедуры //процедуры вывода квадратов в 1, 2 и 3 области для рисования procedure TForm1.VivodFigur1; begin VivodFigur(Paintbox1.Canvas); end; procedure TForm1.VivodFigur2; begin VivodFigur(Paintbox2.Canvas); end; procedure TForm1.VivodFigur3; begin VivodFigur(Paintbox3.Canvas); end; procedure TForm1.Button2Click(Sender:TObject); //обработ. кнопки Финиш begin Application.Terminate; {завершение работы приложения} end; end. //конец модуля Unit1 unit Unit2; //модуль Unit2 с описанием потокового объекта Potok ... Potok = class(TThread) //объявление подкласса потока класса TThread ... procedure Execute; override; //объявление метода выполнения потока public NPotoka: byte; //объявление переменной с номером потока end; uses unit1; //подключение модуля Unit1 ... procedure potok.Execute; //переопределение метода Execute begin {Метод Synchronize синхронизует работу всех потоков. Он имеет параметр ‑ имя метода (без параметров), выводящего квадрат в нужной области} while not Terminated do //Terminated=True после Application.Terminate case NPotoka of //анализ текущего номера потока 1: Synchronize(Form1.VivodFigur1); //выполнение первого потока 2: Synchronize(Form1.VivodFigur2); //выполнение второго потока 3: Synchronize(Form1.VivodFigur3); //выполнение третьего потока end; end; end. //конец модуля Unit2
Дата добавления: 2014-12-08; Просмотров: 432; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |