Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[ Монахов ] Объектно-ориентированное программирование.doc
Скачиваний:
96
Добавлен:
16.08.2013
Размер:
490.5 Кб
Скачать

5.17. Технологии dde и ole

5.18. Технология ActiveX

Подпроцессы (Threads)

Для создания дополнительного подпроцесса в программах Delphy предназначен специальный модуль (в репозитории он представлен пиктограммой Thread Object). При выборе этого модуля Delphi запрашивает имя класса, который будет дочерним для основополагающего класса TThread. Класс TThread содержит абстрактный метод Execute, который должен исполняться в подпроцессе и обязан перекрываться в потомке.

Методы и свойства объектов из библиотеки визуальных компонентов могут использоваться только в рамках вызова метода Synchronize, например:

Procedure MyThread.Execute;

begin

Synchronize (UpdateCaption );

end;

где метод UpdateCaption может быть, например, таким:

Procedure MyThread.UpdateCaption;

begin

Form1.Caption := ‘Новый текст метки’;

end;

Любой метод, приводящий к обновлению информации на экране, должен быть синхронизован.

Пример перекрытия абстрактного метода Execute в потомке tMyThread:

Type tMyThread=

class(tThread)

private

myField1:…;

myField2:…;

protected

procedure Execute;override;

procedure MyVisualMethod;virtual;

public

constructor create(параметры); (если нужны)

end;

var ThreadsRunning:integer;

procedure tMyThread.execute;

begin

Synchronized MyVisualMethod;

end;

procedure tMyThread,create(параметр);

begin

inberited create(false);

FreeOnTerminate:=true;

end;

procedure tMyThread.myVisualMethod;

begin

Form1.label2.caption:=…;

If Terminated then Exit;

end;

procedure Form1.StartButtonClick(Sender:tObject);

begin

aThread1:=tMyThread.create(…);

Inc(ThreadsRunning);

aThread1.onTerminate:=ThreadDone;

StartButton.enabled:=false;

aTread2:=tMyThread.reate(…);

Inc(ThreadsRunning);

aThread2.onTerminate:=ThreadDone;

….

end;

procedure Form1.ThreadDone(Sender:tObject);

begin

Dec(ThreadsRunning);

Label1.caption:=IntToStr(ThreadsRunning);

if ThreadsRunning=0 then

StartButton.enabled:=true

end;

procedure Form1.Stop1ButtonClick(Sender:tObject);

begin

aThread1.Terminate

end;

5.20. Использование библиотек OpenGl и glu

5.21. Создание программистом собственного компонента Литература

  1. В.В.Фаронов . Delphi 6. Учебный курс.- М.:"Нолидж", 2001.- 608 с.

  1. П.Г.Дарахвелидзе, Е.П.Марков.Delphi 4. Среда визуального программирования.-СПб.:БХВ – Санкт-Петербург, 1999. – 816 с.

  1. А.М.Епанешников, В.А.Епанешников. Программирование в среде Delphi: Учебное пособие в 4-х частях. М.: ДИАЛОГ-МИФИ, 1997-1998.

  2. М.В.Краснов. OpenGL.Графика в проектах Delphi. -СПб.:БНВ-Санкт-Петербург, 2000.-352 с.

  3. Тэйлор Д. и др. Переход на Kylix для Delphi-программистов./Пер.с англ. СПб: "Питер" – 2002.- 304 с.

  4. Калверт Ч. и др. Borland Kylix. Руководство разработчика./Пер.с англ.: "Вильямс" - 2002, 880 с.

  5. Г.Буч. Объектно-ориентированный анализ и проектирование с примерами приложений на C++, 2-е изд./Пер.с англ.-М., Бином,СПб, 2000.-560 с.

  6. Д.Чеппел. Технологии ActiveX и OLE./Пер.с англ.-М.:"Русская Редакция”,1997.-320 с.

  7. А.Л.Фридман. Основы объектно-ориентированного программирования на языке Си++.-М.:Горячая линия-Телеком, Радио и связь, 1999.-208 с.

Соседние файлы в предмете Информатика