Аналитический метод расчета длительности цикла в условиях поточно-группового производства тема диссертации по экономике, полный текст автореферата

Автореферата нет :(
Ученая степень
кандидата экономических наук
Автор
Михайлова, Любовь Викторовна
Место защиты
Москва
Год
2000
Шифр ВАК РФ
08.00.28

Диссертация: содержание автор диссертационного исследования: кандидата экономических наук, Михайлова, Любовь Викторовна

Введение.

Глава 1. АНАЛИЗ СОСТОЯНИЯ ПРОБЛЕМЫ И

ПОСТАНОВКА ЗАДАЧИ ИССЛЕДОВАНИЯ.

1.1. Анализ методов оперативнокалендарного планирования.

1.2. Характеристика поточно-группового производства как объекта исследования. Постановка задачи исследования.

Выводы.

Глава 2. АНАЛИТИЧЕСКИЙ МЕТОД РАСЧЕТА ДЛИТЕЛЬНОСТИ ЦИКЛА ОБРАБОТКИ ДЕТАЛЕЙ В УСЛОВИЯХ ПОТОЧНО-ГРУППОВОГО ПРОИЗВОДСТВА.

2.1. Алгоритм расчета длительности совокупного производственного цикла обработки деталей на одногрупповых поточных линиях.

2.2. Алгоритм расчета длительности производственного цикла обработки партии деталей каждого наименования.

2.3. Алгоритм расчета длительности производственного цикла обработки деталей на многопредметных групповых поточных линиях.

Выводы.

Глава 3. АЛГОРИТМ РАСЧЕТА ДЛИТЕЛЬНОСТИ ПРОЦЕССОВ ПРОИЗВОДСТВЕННОГО ЦИКЛА ПРИ ПРЕРЫВНОМ ПРОЦЕССЕ ОБРАБОТКИ ДЕТАЛЕЙ НА РАБОЧИХ МЕСТАХ ГРУППОВЫХ ПОТОЧНЫХ ЛИНИЙ.

3.1. Алгоритм расчета смещений при прерывном процессе обработки деталей как одной из составляющих длительности производственного цикла.

3.2. Алгоритм формирования простоев при расчете длительности совокупного производственного цикла прерывных процессов обработки деталей.

3.3. Алгоритм расчета длительности производственного цикла при прерывном процессе обработки деталей.

3.4. Алгоритм расчета длительности производственного цикла многопредметных групповых поточных линий при прерывном процессе обработки деталей на рабочих местах.

3.4.1. Алгоритм расчета совокупного цикла.

3.4.2. Алгоритм расчета длительности производственного цикла обработки каждой группы деталей.

3.4.3. Алгоритм расчета длительности производственного цикла обработки партии деталей каждого наименования при условии формирования простоев рабочих мест после обработки групп деталей.

3.4.4. Алгоритм расчета длительности производственного цикла при условии формирования простоев после обработки партии деталей каждого наименования.

Выводы.

Глава 4. ОПТИМИЗАЦИЯ ДЛИТЕЛЬНОСТИ * ПРОИЗВОДСТВЕННОГО ЦИКЛА.

4.1. Выбор критерия оптимизации длительности производственного цикла.

4.2. Анализ влияния асинхронности технологических процессов на длительность совокупного цикла.

4.3. Оптимизация размера партии запуска деталей в производство.

4.4. Определение оптимальной очередности запуска деталей в обработку.

Выводы.

Диссертация: введение по экономике, на тему "Аналитический метод расчета длительности цикла в условиях поточно-группового производства"

Длительность производственного цикла представляет собой количественный показатель качества организации производственного процесса. От длительности цикла зависят заделы деталей и сборочных единиц в незавершенном производстве, а следовательно, и его объемы. От объема незавершенного производства зависит потребность в оборотных фондах, а следовательно, при сокращении длительности производственного цикла улучшается показатель оборачиваемости оборотных средств и повышается рентабельность производства. Минимизация длительности производственного цикла изготовления изделий повышает гибкость производства и создает предпосылки для быстрого и своевременного реагирования на изменение конъюнктуры рынка.

Кроме того, при минимизации длительности производственного цикла изготовления изделий уменьшаются потери в результате вносимых изменений в конструкцию выпускаемых изделий, так как любое такое изменение требует либо доработки находящихся в незавершенном производстве деталей, либо их списания.

Зная длительность производственного цикла, менеджер может принимать решения, более адекватные фактическому состоянию производства. Все это и определяет актуальность темы диссертационного исследования.

Целью исследования явилась разработка аналитического метода расчета и оптимизации длительности производственного цикла изготовления деталей и сборки сборочных единиц в условиях поточно-группового производства.

Для достижения этой цели в диссертационном исследовании определен следующий комплекс решаемых задач, сводящийся к разработке:

- аналитического метода расчета длительности совокупного цикла обработки множества наименований деталей на одногрупповой поточной линии;

- аналитического метода расчета длительности производственного цикла обработки партии деталей каждого наименования, на одногрупповой поточной линии;

- аналитического метода расчета длительности совокупного цикла обработки деталей множества групп на многогрупповой поточной линии;

- аналитического метода расчета длительности обработки деталей каждой группы на многономенклатурной групповой поточной линии;

- аналитического метода расчета длительности производственного цикла обработки партии деталей каждого наименования на многономенклатурной поточной линии;

- аналитического метода расчета длительности совокупного производственного цикла изготовления деталей на одногрупповой поточной линии при условии прерывности процессов изготовления;

- аналитического метода расчета длительности производственного цикла изготовления партии деталей каждого наименования на одногрупповых поточных линиях при условии прерывности процесса обработки;

- аналитического метода расчета длительности совокупного цикла обработки деталей множества групп на многономенклатурных групповых поточных линиях при условии прерывности процесса обработки;

- аналитического метода расчета длительности производственного цикла обработки деталей каждой группы на многономенклатурных групповых поточных линиях при условии прерывности процесса обработки;

- аналитического метода расчета длительности производственного цикла обработки партии деталей каждого наименования на многономенклатурных групповых поточных линиях при условии прерывности процесса обработки;

- аналитического метода оптимизации длительности производственного цикла в условиях поточно-группового производства.

Диссертация состоит из введения, четырех глав, заключения, списка использованной литературы и приложения.

Диссертация: заключение по теме "Организация производства", Михайлова, Любовь Викторовна

Выводы

1. Одним из количественных показателей оценки качества оперативно-календарного планирования является длительность производственного цикла изготовления деталей и сборки сборочных единиц. Чем меньше его значение, тем выше оценивается качество.

2. Минимизация длительности производственного цикла адекватно отвечает требованиям рынка. Чем меньше цикл производства, тем оперативнее реагирует производство на изменение конъюнктуры рынка.

3. Основными факторами, влияющими на длительность производственного цикла, являются следующие три фактора: степень асинхронности технологических процессов обработки деталей; принимаемый размер партии запуска деталей в обработку; очередность запуска деталей в обработку.

4. Проведенный анализ показывает, что чем выше асинхронность технологических процессов обработки деталей, тем больше длительность производственного цикла. С целью минимизации длительности производственного цикла в условиях поточно-группового производства следует стремиться к максимально возможной степени синхронности выполнения всех операций технологических процессов изготовления деталей и сборки сборочных единиц.

5. При организации поточно-группового производства необходимо оптимизировать размер запускаемых в обработку партий деталей. За критерий оптимизации следует принимать показатель затрат, поскольку при выборе партии сравнивается множество вариантов решения задачи.

6. За критерий очередности обработки деталей следует принимать суммарное время опережения на всей совокупности технологически связанных пар рабочих мест поточно-групповых линий. Минимизация его значения обеспечивает сокращение длительности совокупного цикла обработки деталей, а также минимизацию времени изготовления партии деталей каждого наименования.

7. При определении очередности запуска деталей в обработку необходимо использование правил, улучшающих алгоритм оптимизации. Их применение способствует сокращению длительности производственного цикла на 40%.

8. При оптимизации длительности производственного цикла на многогрупповых поточных линиях задача оптимизации очередности обработки деталей должна решаться в два этапа. На первом этапе определяется оптимальная очередность обработки деталей каждой группы, а на втором -очередность запуска в обработку групп деталей.

9. Аналитический метод расчета и оптимизации длительности производственного цикла изготовления деталей и сборки сборочных единиц при ручном варианте его реализации сопряжен с большими затратами труда и времени, даже при решении задач малой размерности, поэтому целесообразен автоматизированный вариант реализации метода с использованием современных средств вычислительной техники.

Заключение

Диссертационная работа посвящена вопросам совершенствования оперативно-календарного планирования производства путем разработки аналитического метода расчета и оптимизации длительности производственного цикла изготовления деталей и сборочных единиц.

Удельный вес объема производства предприятий с серийным и мелкосерийным типом производства достаточно велик в общем объеме машиностроительного производства.

Поскольку в условиях серийного и мелкосерийного производства наиболее прогрессивной и рациональной формой организации производственных процессов является групповое производство, поэтому решение поставленных в диссертации задач произведено для условий поточно-группового производства.

Также необходимо отметить, что при поточной форме организации производственных процессов существенно упрощается решение всего комплекса управленческих задач, так как в условиях поточного производства упрощаются связи и минимизируются объемы информации путем широкой унификации всех элементов производственного процесса, а в условиях функционирования автоматических поточных линий и гибких автоматизированных производственных систем - и путем автоматизации процессов управления.

К основным полученным результатам, имеющим научную новизну, относятся:

- аналитический метод расчета длительности совокупного производственного цикла и цикла обработки партии деталей каждого наименования при всех возможных производственных ситуациях: для одно- и многогрупповых поточных линий; при непрерывном и прерывном процессе обработки деталей;

- обоснование критерия оптимизации длительности совокупного производственного цикла, а также цикла обработки партии деталей каждого наименования;

- разработка метода оптимизации длительности производственного цикла обработки деталей на групповых поточных линиях.

Полученные в диссертации результаты развивают теорию оперативно-календарного планирования производства. Разработанный в ней аналитический метод расчета и оптимизации длительности производственных циклов может быть востребован при совершенствовании систем оперативного управления при организации поточно-группового производства.

Полученные результаты могут использоваться в процессе обучения студентов высших учебных заведений в курсе «Производственный менеджмент». Они внедрены в учебный процесс «МАТИ»-РГТУ им.К.Э.Циолковского, на основе разработанного в диссертации аналитического метода выполняется курсовой проект (см. п.5 опубликованных работ по теме диссертации). Поэтому полученные в диссертации результаты имеют как теоретическую, так и практическую значимость.

Основные положения диссертационного исследования были опубликованы в следующих работах:

1. Комплектная система оперативно-календарного планирования производства. Методические указания к проведению практических занятий. -М.: Изд-во МАТИ-РГТУ, 1998. - 0,8 п.л.

2. Подетальная система оперативно-календарного планирования. Методические указания к проведению практических занятий. - М.: Изд-во МАТИ-РГТУ, 1998. - 0,75 п.л.

3. Оценка экономической эффективности расчетных задач при их постановке в АСУ. Методические указания к проведению деловой игры. - М.: Изд-во МАТИ-РГТУ, 1998. - 0,7 п.л.

4. Оценка экономической эффективности оптимизационных и интегральных задач. Методические указания к проведению деловой игры. - М.: Изд-во МАТИ-РГТУ, 1998.- 1,0 п.л.

5. Формирование и оперативное управление производственными системами на базе поточно-группового производства. Методические указания к курсовому проекту. /В соавторстве/ - М.: Изд-во МАТИ-РГТУ, 1999. - 2,5 п.л, в т.ч. автора - 2 п.л.

Диссертация: библиография по экономике, кандидата экономических наук, Михайлова, Любовь Викторовна, Москва

1. Абчук В.А., Карпенко Ю.С. Управление в гибком производстве. -М.: Радио и связь, 1990. 127 с.

2. Автоматизация управления предприятием. -М.: Инфра-М, 2000 (ОАО Яросл.полигр.комб.) 238 с.

3. Автоматизированные системы управления машиностроительным предприятием. /Под ред. С.У.Олейника, М.: Высш. шк., 1991.

4. Акилов Г.П. Об одном алгоритме в задаче календарного планирования. -М.: Наука, 1966.

5. Алгазин Г.И. Формирование оперативных производственных программ предприятия на основе моделирования процесса согласования решений. -М.: МИУ, 1989.

6. Ананьев В.П. Организация производства и менеджмент: Учебное пособие /Под ред. В.П.Ананьева/. М.: РГОТУПС, 1999. - 167 с.

7. Беленький П.Е. и др. Управление техническим и организационным развитием предприятия /П.Е.Беленький, Ю.Л.Гиттик, Т.В.Ландина Киев: Техника, 1992 . -127 с.

8. Белоусов JI.C. Организация поточного производства в механосборочных цехах. -М.: Машиностроение, 1972. 120 с.

9. Большаков А.С. Менеждмент: Учебное пособие. СПб. и др.: Питер, 2000 (АООТ Тип.Правда). 155 с.

10. Бусленко Н.П. Математическое моделирование производственных процессов. -М.: Наука, 1964.

11. Быкова Л.П. Организационно-методологическое обеспечение подготовки и выбора управленческих решений по оперативному регулированию хода производства. -М.: ГАУ, 1995.

12. Вавилов А.А. Имитационное моделирование производственных систем.-М.: Машиностроение, 1983.

13. Васильев В.Н. Гибкие производственные системы: (Создание, внедрение, управление). -М.: Знание, 1985. 64 с.

14. Васильев В.Н., Садовская Т.Г., Организационно-экономические основы гибкого производства: Учебное пособие. —М.: Высш.шк., 1988 272 с.

15. Васильев Г.А. Лапаев Ю.В. Экономическая эффективность гибкой автоматизации машиностроения. -М.: Изд-во МАИ, 1990.

16. Вентцель Е.С. Исследование операций. Задачи, принципы, методология. -М.,: Наука, 1988.

17. Вершигора Е.Е. Менеджмент: Учебное пособие. 2-е ид. - М.: Инфра-М, 2000. - 282 с.

18. Гвишиани Д.М. Организация и управление /Моск.ин-т экономики, политики и права. 3-е изд. М.: Изд-во МГТУ им Н.Э.Баумана, 1998. - 331 с.

19. Гибкое автоматизированное производство /Под ред. С.А.Майорова, Г.В.Орловского, С.Н.Халкионова. Л.: Машиностроение, 1985. - 454 с.

20. Дворниченко В.Г. Гибкие производственные системы. Технические и организационные основы внедрения. Иркутск: Изд-во Иркутского ун-та, 1990. - 177 с.

21. Демьяненко Е.Ф. Организация информационного обеспечения управления цехами основного производства машиностроительных предприятий. -М.: ГАУ, 1994.

22. Джонсон Р., Каст Ф., Розенцвейг Д. Системы и руководство. —М.: Советское Радио, 1971.

23. Джонсон С. Кибернетический сборник. Новая серия. -М.: Мир.

24. Джурбаев К.Т., Гришин А.Т. Совершенствование организации производства и труда в условиях гибкого автоматизированного производства: Конспект лекций. Новосибирск: НЭТИ, 1990. - 34 с.

25. Дудорин В.И. Информатика в управлении производством. Учебник. -М.: Изд-во Менеджер, 1999 464 с.

26. Думлер С.А. Управление производством и кибернетика. Созданиеавтоматизированных систем управления в машиностроении и приборостроении. -М.: Машиностроение, 1969 424 с.

27. Зайцев Н.Л. Экономика промышленного предприятия: Учебник. 3-е изд. М.: Высшее образование. 1998. -358 с.

28. Зайнашев Н.К. Производственный менеджмент: экономико-математические модели: Монография /УГАТУ- Уфа, 1999. —298 с.

29. Залманова М.Е. Логистика. Учебное пособие. Саратов: СГТУ, 1995.

30. Замков О.О., Толстопятенко А.В., Черемных Ю.Н. Математические методы в экономике: Учебник М.: МГУ им.М.В.Ломоносова. Изд-во ДИС, 1998.

31. Зеленцова Л.С. Равитие управления производством на машиностроительных предприятиях (теоретические, методологические и организационные аспекты). М.: ГАУ, 1994.

32. Зиганшин Г.З, Камашева Ю.Л. Теория моделирования и управления экономическими процессами: Монография Казань, 1999 (Тип.КГЭИ). - 121 с.

33. Исследование операций /Под ред.Дж.Моудера, С.Элмаграби. М.: Мир,1981.

34. Календарное планирование. -М.: Прогресс, 1966.

35. Канторович Л.В. Математические методы организации и планирования производства. -Л.: ЛГУ, 1939 г.

36. Канценбоген Б.Я. Оперативно-календарное планирование на машиностроительном заводе. -М.: Гос.науч.—технич. ид-во машиностроительной лит-ры, 1958.

37. Каценелинбоген АИ., Смоляр Л.И. Об одной экстремальной задаче оперативного планирования. -М.: АН СССР, 1961.

38. Климов А.Н, Оленев И.Д, Соколицин С. А. Организация и планирование производства на машиностроительном заводе: Учебник 3-е ид. /Под ред. С.А.Соколицина. - Л.: Машиностроение. Л.о, 1979. - 463 с.

39. Козловский В.А, Маркина Т.В., Макаров В.М. Производственныйменеждмент: Учебник СПб.: Специальная литература, 1998.

40. Колобов А.А., Омельченко И.Н., Основы промышленной логистики. Учебное пособие. -М.: Изд-во МГТУ им.Н.Э.Баумана, 1998.

41. Конвей Р., Максвелл У. Календарное планирование в условиях сети очередей с дисциплиной по кратчайшей операции. -М.: Прогресс. 1966.

42. Кондратьев В.П. Частные алгоритмы распределения ресурсов в сетевых планах работ. Известия АН СССР. «Техническая кибернетика», № 6, 1966.

43. Кошелева М.С. Разработка процессов управления основным производством. М.: МИУ, 1989.

44. Кузин Б.И. Организация поточного производства в условиях научно-технического прогресса машиностроения. -Д.: Машиностроение, 1977. 184 с.

45. Курганская Н.И. Организация производственных процессов: Учебное пособие/ Под ред. Н.И.Курганской и др. Ростов н/Д.: Издат центр ДГТУ, 1997.-91 с.

46. Леонтьева А.В. Проектирование поточных линий на приборостроительных предприятиях: Учебное пособие. Рязань, 1977. 68 с.

47. Логистика: Учебное пособие /Под. ред. Б.А.Аникина. М.: ИНФРА-М, 1997.-327 с.

48. Лурье А.Л. О математических методах решения задач на оптимум при планировании социалистического хозяйства. —М.: Наука, 1964.

49. Максимов Ю.П. Применение ЭВМ для составления декадных графиков запуска-выпуска подшипников. -М.: МИЭИ, 1962.

50. Мамиконов А.Г. Проектирование АСУ: Учебник. М.: Высш.шк., 1987.-303 с.

51. Математические методы в организации и экономике производства. Думлер С.А. -М.: МИЭИ, 1966.

52. Менеджмент (Современный российский менеджмент): Учебник/Под ред. Ф.М.Русинова и М.Л.Разу. -М.: ФБК-ПРЕСС, 1999 504 с.

53. Мескон М., Альберт М., Хедоури Ф. Основы менеджмента. Пер.с англ. -М.: Дело, 1996. 702 с.

54. Митрофанов С.П. Автоматизация технологической подготовки серийного производства. —М: Машиностроение, 1974, 360 с.

55. Митрофанов С.П. Групповая технология машиностроительного производства. В 2-х т. 3-е изд. - J1.Машиностроение. Jl.o. Т.1 Организация группового производства.

56. Наймарк Ю.Ю., Федорова А.Н. Теория организации машиностроительного производства. (Системная концепция организации). -М.: ГАУ, 1992.

57. Наука и практика организации производства и управления (Организация 99):Междунар. науч.практ.конф., Барнаул, 14-16 октября 1999 года: Сб.научн. докл. - Барнаул: Изд-во АлтГТУ им.И.И.Ползунова, 1999 -107с.

58. Новицкий Н.И Основы менеджмента: организация и планирование производства/ Н.И.Новицкий. -М.: Финансы и статистика, 1998. 202 с.

59. Организация и планирование машиностроительного производства: Учебник /М.И.Ипатов, М.К.Захарова, К.А.Грачева и др.; Под ред. М.И.Ипатова и др. -М.: Высш.шк. 1988. 367 с.

60. Организация и планирование машиностроительного производства: Учебник / Под ред. И.М.Разумова и др. 3-е изд. -М.: Машиностроение, 1974591 с.

61. Организация и планирование машиностроительных предприятий: Учебное пособие /Под ред.О.Г.Туровца. Воронеж, 1972. - 272 с.

62. Организация и планирование промышленных предприятий (объединений) /Под ред. В.В.Осмоловского. -Минск, Вышэйшая шк., 1978. -336 с.

63. Организация, планирование и управление машиностроительным производством: Учебное пособие / Б.Н.Родионов, Н.А.Саломатин, Л.Г.Осадчаяи др.; под ред. Б.Н.Родионова. -М.: Машиностроение, 1989. -328 с.

64. Организация производства и менеджмент в промышленности: сб.науч.тр. /Редкол.: А.К.Казанцев и др. СПб: СПбГИЭА, 1995. -127 с.

65. Основы менеджмента: Учебное пособие М.: Дашков и К., 2000 (ПИК ВИНИТИ). - 176 с.

66. Основы организации производства: Учебное пособие /Новосибирский государственный технический университет; И.Н.Андреева и др. Новосибирск: МГТУ, 1996,- 160 с.

67. Панасенков А.Д. Повышение эффективности оперативного планирования основного производства на машиностроительных предприятиях с серийным типом производства. —М.: МИУ, 1983.

68. Парамонов Ф.И Автоматизация управления групповыми поточными линиями. М. Машиностроение, 1973. - 392 с.

69. Парамонов Ф.И. Математические методы расчета многономенклатурных потоков. М.: Машиностроение, 1964. -264 с.

70. Парамонов Ф.И. Механизация и автоматизация управления серийным производством. М.: Машиностроение, 1968. - 280 с.

71. Парамонов Ф.И. Моделирование процессов производства. М.: Машиностроение, 1984.-231 с.

72. Парамонов Ф.И., Петров А.И., Ивонинский В.И. Групповые потоки на машиностроительных заводах. Куйбышев: Куйбышевское кн.изд-во, 1970.

73. Петров В.А. Планирование поточно-группового производства. -М. -JL: Машиностроение. JI.o., 1966. 192 с.

74. Петров В.А., Масленников А.Н., Осипов J1.A. Планирование гибких производственных систем. Л.: Машиностроение. Л.о., 1985. - 182 с.

75. Петров В.А., Масленников А.Н. Программно-целевая организация производства и оперативного управления в условиях групповой технологии и гибких автоматизированных производств. -Л.:Лениздат, 1984. -176 с.

76. Погиблев Ю.В. Менеджмент организации: Учебное пособие. -М.:

77. Изд-во МГОУ (Тип.МГОУ). 175 с.

78. Поточные методы производства в серийном машиностроении: в 3-х ч. 4.1. Классификация поточных линий, терминология, этапы проектирования и формы основной технологической документации. -М.: НИИ информации по машиностроению, 1968.- 198 с.

79. Поточные методы производства в серийном машиностроении и приборостроении./Под ред. А.Г.Бермана и А.И.Неймарка. -М. -Л.: Машгиз. Л.о, 1958.-326 с.

80. Португал В.М, Марголин АЛ. Автоматизация оперативного управления машиностроительным предприятием. -М.: Статистика. 1976 168с.

81. Португал В.М, Семенов А.И. Задачи теории расписаний в календарном планировании мелкосерийного производства. -М.: Наука, 1972.

82. Преображенский Б.Г. Теория и методы организации оперативного управления производством на машиностроительном предприятии, дисс. на соиск.уч.степени д.э.н, Воронеж, 1988.

83. Производственный менеджмент: Учебник для вузов / С.Д.Ильенкова, А.В.Бандурин, Г.Я.Горьовцов и др.; Под ред. С.Д.Ильенковой. -М.: ЮНИТИ-ДАНА, 2000. -583 с.

84. Разумов И.М. Выбор системы оперативного планирования. -М.: Машиностроение, 1966. 85 с.

85. Румянцева З.П, Саломатин Н.А, Акбердин Р.З. и др. Менеджмент организации. М.: ИНФРА-М, 1996 - 432 с.

86. Родионова В.Н. Организация производства на промышленных предприятиях в современных экономических условиях / Гос.ком.РФ по высшему образованию. Воронеж: Воронеж.ГТУ, 1995. - 151 с.

87. Саломатин Н.А. Механизация составления графиков прохождения деталей по операциям. -М.: МИЭИ, 1962.

88. Саломатин Н.А. Формирование производственных программ для обрабатывающих цехов машиностроительных предприятий. Проблемнаялекция. М.: ГИУ, 1993. - 32 с.

89. Саломатин Н.А., Фель А.В., Шишкина E.JI. Оперативное управление производством: Учебное пособие. М.: ГАУ, 1993. - 71 с.

90. Саркисян С.А., Старик Д.Э. Экономика авиационной промышленности: Учебник 2-е изд. - М: Высш. шк., 1985. - 320 с.

91. Сергеев И.В. Экономика предприятия: Учебное пособие 2-е изд. -М.: Финансы и статистика, 1999. - 304 с.

92. Соколицын С.А., Кузин Б.И. Организация и оператинвое управление машиностроительным производством: Учебник. JL: Машиностроение. JI.O., 1988.-527 с.

93. Старик Д.Э. Родченко В.И., Сергеев С.А. Экономическая эффективность машин: критерии и методы оценки. М.: Машиностроение, 1991.-206 с.

94. Сторн А.Е., Вагнер Х.М. Календарное планирование. -М.: Прогресс,1966.

95. Татевосов К.Г. Основы оперативно-производственного планирования на машиностроительном предприятии. —Л.: Машиностроение, 1985. — 376 с.

96. Татевосов К.Г. Применение ЭВМ и линейного программирования в оперативно-производственном планировании. Сб. «Математико-экономические проблемы». -Л.: ЛГУ, 1966 г.

97. Технология и организация группового производства. Материалы семинара. /Под ред. С.П.Митрофанова. -Л., 1977. 67 с.

98. Туровец О.Г. Родионова В.Н. Гибкая организация производственных систем: закономерности развития и принципы построения. Воронеж: Изд-во Воронеж.ун-та, 1988.-151 с.

99. Тихомиров В.И. Организация, планирование и управление производством летательных аппаратов: Учебник для авиац. спец. вузов. 2-е изд.М.: Машиностроение, 1978.- 495 с.

100. Ткалин И.М. Прогрессивные формы поточного производства.

101. И.М.Ткалин. -Л.: Машиностроение. Л.о., 1977. 184 с.

102. Трояновский В.М. Математическое моделирование в менеджменте: Учебное пособие. М.: Рус.Деловая Лит., 1999 - 235 с.

103. Управление машиностроительным предприятием. /Под ред. С.Е.Каменицера и др. М.: Машиностроение, 1979. - 325 с.

104. Фатхутдинов Р.Л. Производственный менеджмент: Учебник 2-е изд. -М.: Бизнес-школа Интел-Синтез, 2000 (ПИК ВИНИТИ). - 462 с.

105. Шкурба В.В., Подчасова Т.П., Пшичук А.Н., Тур Л.Г. Задачи календарного планирования и методы их решения. -Киев: Наукова думка, 1966.

106. Шкурба В.В., Белицкий С.А., Ефетова К.Ф. и др. Планирование и управление в автоматизированном производстве. -Киев: Наукова думка, 1985. -224 с.

107. Экономика и организация производства летательных аппаратов: Учебное пособие. /Под ред. А.М.Геворкяна, Э.С.Минаева и др. 4-е изд. -М.: Машиностроение, 1995. - 168 с.

108. Экономико-математические модели в организации и планировании промышленных предприятий. /Под ред. Б.М.Кузина. Л.: Изд-во ЛГУ, 1982. -335 с.

109. Ballow R.H. Business Logistics Management. Prentice Hall Intern., Inc. 1992.

110. Bwersox D.J., Closs D.J. Logistisal Manegement |The Integrateg Supply Chain Process. The McGraw, New York, 1996.

111. Coyle J.J., Bardi E.J., Langley C.J.J. The Management of Business Logistics, 5th ed. St.Paul, MN.West Publishing Co., 1992.

112. Say M.G., Taylor E.O. Direct Current Mashines. -London: Pitmah Publishing, 1980.-380 p.

113. Waltet F.F. The efficiencies in Distribution, Dmg.Topics (Oradell, NY: Medical Economics Co., 1982).

114. ФОРМИРОВАНИЕ И ОПЕРАТИВНОЕ УПРАВЛЕНИЕ ПРОИЗВОДСТВЕННЫМИ СИСТЕМАМИ НА БАЗЕ ПОТОЧНО-ГРУППОВОГО ПРОИЗВОДСТВА

115. ПРОГРАММА АВТОМАТИЧЕСКОГО РАСЧЕТА РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

116. ModalResult:=mrCANCEL; end;procedure TConfirm.FormCloseQuery(Sender: TObject;var CanClose: Boolean); beginif ModalResult=0 then CanClose:=false; end;function TConfirm.Ask( Text: string ):boolean; beginpbCancel-Visible := true;

117. Caption := 'Подтвердите действие'; MsgRzLabel.Caption := Text; Result := ShowModal = mrOK; end;procedure TConfirm. ShowMessage ( Text: string ) ,-begin

118. TComboBox(FindComponent( 'cbE'+IntToStr(i) ) ).ltemlndex := trunc(Data CurrentDetailNo, i, parEQUIPMENT .);

119. TLabel(FindComponent( 'LOper' + IntToStr(i) )).Caption : = OperationsNametrunc(Data [ CurrentDetailNo, i, parEQUIPMENT .)];

120. TComboBox(FindComponent( 'cbOpNo'+IntToStr(i) ) ).Itemlndex := trunc(Data CurrentDetailNo, i, parOPERNO .);

121. TRxSpinEdit(FindComponent( 'seT'+IntToStr(i) )).Value := Data CurrentDetailNo, i, parOPERJTIME .;

122. TComboBox(FindComponent( 1cbOpNo'+IntToStr(i) ) ).Enabled := Data CurrentDetailNo, i, parEQUIPMENT . > 0;

123. Target.ColCount := ColCount;

124. Target.RowCount := RowCount;

125. Target.Defaultcolwidth := DefaultColWidth;

126. Target.DefaultRowHeight := DefaultRowHeight;

127. Target.FixedCols FixedCols; Target.FixedRows := FixedRows; for j:=0 to ColCount-1 do Target.Colsj.Assign(Cols[j]);for j:=0 to ColCount-1 do for i:=0 toRowCount-1 do // Target.end; end;function GetWeekDayName ( DaysInWeek, DayNo: integer ): strings-const

128. Days: array0.6.of string = ( 'пн', 'вт', 'cp1, 'чт', 'пт', 'сб', 'вс' ); begin

129. Result := Days DayNo (DayNo div DaysInWeek)*DaysInWeek J; end;end.unit grid;interface uses

130. Windows, Messages, Classes, Controls, Graphics, glTypes, glCommCl, SysUtils, glUtils, grids, glSGrid;type

131. ShowDiagonal: boolean; end;

132. TVitrualDetailGraph = class (TGraphicControl) public1. WorkTime: real;procedure PaintToCanvas( Canvas: TCanvas ); virtual; end;

133. TDetailGraph = class(TVitrualDetailGraph)privateprotectedprocedure Paint; override; publicfsleep: array0.50. of boolean; Indent: integer; Count: cardinal;

134. Widths: array0.50. of integer; Labels: array[0.50] of string; IndentLabel: string;procedure PaintToCanvas! Canvas: TCanvas ); override; end;

135. TTimeRule = class(TVitrualDetailGraph)privateprotectedprocedure Paint; override; public1. DaysInWorkWeek: integer;procedure PaintToCanvas( Canvas: TCanvas ); override; end;implementation uses GlobFunc;procedure TglStringGrid.Paint; var

136. ACol,ARow: integer; ARect: TRect; const1.DENT = 0; beginfor ACol:=0 to ColCount-1 do for ARow'. = 0 to RowCount-1 do with Canvas do begin

137. ARect.Left := ACol*ColWidthsAColJ+INDENT;

138. ARect.Right := (ACol+1)*ColWidthsACol.+INDENT;

139. ARect.Top := ARow*RowHeightsARow.;

140. ARect.Bottom := (ARow+1)*RowHeightsARow.;)

141. ARect := CellRect(ACol,ARow);1. Brush.Color := 0;1. FrameRect(ARect);

142. SetBkMode( Handle, TRANSPARENT ); if (ACol < ColsBold)or(ARow < RowsBold) then Font.Style := fsBold. else Font.Style := [];

143. DrawText( Canvas.Handle, PChar(CellsACol,ARow.), length(Cells[ACol,ARow]), ARect, DTCENTER or DTVCENTER or DTSINGLELINE ); end;if not ShowDiagonal then exit; Canvas.MoveTo( INDENT, 0 );

144. Canvas.LineTo( ColCount*DefaultColWidth+ColCount-l+INDENT,

145. RowCount*DefaultRowHeight+RowCount-1 ) ; end;procedure TglStringGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState); begininherited;

146. DrawText( Canvas.Handle, PChar(CelIsACol,ARow.), length(Cells[ACol,ARow]), ARect, DTCENTER or DT^SINGLELINE );if (ARow = ACol) then begin

147. Msg.Result := 1; exit; end;procedure TglStringGrid.CreateParams(var Params: TCreateParams); begininherited CreateParams(Params);

148. SetBkMode( Canvas.Handle, TRANSPARENT ); // Canvas.TextOut( 6, 0, IndentLabel );

149. Canvas.Pen.Style := psSolid; Canvas.Pen.Color := 0; Canvas.Font.Style := fsBold.; SetBkMode{ Canvas.Handle, TRANSPARENT );if Count > 50 then Count := 50;for i:=0 to Count-1 do with Canvas dobeginj := 1;if fSleep1. then repeat

150. R := Rect( X+j*trunc(WorkTime*1.5) , 0,

151. X+(j+1)*trunc(WorkTime*!.5), Height); // r.Right := mint r.Right, X+Widths1. );

152. R.Right := R.Left+10; R.Bottom := R.Top+14;

153. IntersectClipRect( Canvas.Handle, R.Left, R.Top, R.Right, R.Bottom ); inc(X, Widths1.); TextOut( X+l, 2, Labels i. ); end;end;procedure TDetailGraph.Paint; begin

154. PaintToCanvas( Canvas ); end;procedure TTimeRule.Paint; begin

155. PaintToCanvas( Canvas ); end;procedure TTimeRule.PaintToCanvas ( Canvas: TCanvas ); vari: integer; Str: string; R: TRect; begin1. Canvas.brush.Color := 0;

156. SetBkMode( Canvas.Handle, TRANSPARENT ); for i:=0 to 4 6 do with Canvas do begin

157. R := rect( trunc(WorkTime*i*1.5), 0, trunc(WorkTime*(i+1)*1.5)+1, Height ); FrameRect( R ); InflateRect( R, 0, -2 ); if IsEven(i) then Str := '1' else Str := '2'; // TextRect( Str, trunc(WorkTime*i* 1.5), )

158. DrawText( Handle, PChar(Str), length(Str), R, DTSINGLELINE or DTCENTER or DT TOP );if IsEven(i) then Str := IntToStr(i div 2 + 1)else Str := GetWeekDayName( DaysInWorkWeek, i div 2);

159. DrawText( Handle, PChar(Str), length(Str), R, DTSINGLELINE or DTCENTER or DTBOTTOM ) ; end;

160. MoveToEx( Canvas.Handle, 0, height div 2, nil ); LineTo ( Canvas.Handle, R.Right, heightdiv 2 );end;end.unit StreamIS;interface

161. DETAILJCOUNT = 4 ; OPCOUNT = 6;

162. PARAMSCOUNT = 5 ; OPTYPECOUNT = 8;type

163. TData = array0. .DETAILCOUNT-1,0.OPCOUNT-l,0. .PARAMSJTOUNT-1. of real;constparOPERTYPE = 0parOPERNAME = 1parOPERNO = 2parEQUIPMENT = 3parOPERTIME = 41. EQUIPMTYPESCOUNT = 8;

164. Токарная', 'Токарная', 'Фрезерная', 'Фрезерная', 'Сверлильная', 'Сверлильная', 'Револьверная', 'долбежная', 'Расточная', 'Карусельная', 'Слесарная', 'Доп.оп-ия' );

165. EquipmentName: array0.12. of string =

166. С — ', '163', ' 164 " , '6Н13П', '6M83', '2121' , '2A55', '1336', 'CM-30', '2622В', '1М557', 'верстак', 'Доп.об-ие');

167. N511: TMenuItem; ' Arsenl: TMenuItem;j ScrollBoxl: TScrollBox;1.trol: TLabel;1.tro2: TLabel; Etapll: TLabel; Etapl3: TLabel; Bevel2: TBevel; Pk Etapl2: TLabel;

168. Etap2l: TLabel; Etap22: TLabel; Etap23: TLabel; Etap44: TLabel; Etap43 : TLabel; Etap42: TLabel; Etap4l: TLabel; Etap33: TLabel; Etap32: TLabel; Etap3l: TLabel; Etap45: TLabel; EtapS: TLabel;1. Zakll Zakl2 Zakl3 Labell

169. Shift: TShiftState); procedure FormDestroy(Sender: TObject); procedure N471Click(Sender: TObject); procedure N511Click(Sender: TObject); procedure ArsenlClick(Sender: TObject);procedure RxPopupMenulDrawItem(Sender: TMenu; Item: TMenuItem;

170. DetailWPlaceTime : array f1.10,1.50. of real; DetailSleep : array 1.10,1.50] of boolean;1. DetailOperTime :

171. WPlaceEquip : array t1.50. of integer;

172. WPlaceType : array {0.50. of integer;

173. WPlaceDetail : array 0.50. of string;

174. WPlaceTotalWorkTime: array 0.50. of real;

175. Diffs: array0.50,0.50.of real;aAHDif fsAboveZero: array 0 . 50. of boolean;1. DetailCanidate : integer;1. DetailsInQueue : integer;1. TableNo : integer;1.erationNo : integer;

176. DetailQueue : array 0.50. of integer;

177. AssociateWPlaceFirst,AssociateWPlaceSecond: array0.50. of integer;

178. AssociateWPlaceCount: integer;

179. AssociateWPlaceCount: integer;

180. TimeSums : array0.50. of real;

181. TimelndentAtWPlace : array0.50. of real;

182. WPlaceTableCount: integer;

183. Forml: TForml; implementationuses glTypes, glUtils, GlobFunc, WaitFrm, EnvFunc, ConfMsg, UserSel; ($R *.DFM}const

184. DetailNamesl: array0.9. of string = ( ' A' , ' В ' , ' Г ' , ' Д ' , ' E ' , ' Ж' , ' 3 ' , ' К' , ' Л ' , " М' ) ; / / f or DetailQueue recalc

185. DetailNames2: array0.9. of string = ( ' A', ' E1 , ' В ' , ' Г ' , ' Д' , ' E ' , ' Ж' , ' 3 ' , ' К' , ' Л' ) ; / / f or DetailQueue recalcprocedure TForml.FormCreate(Sender: TObject); vari : integer; ini: TIniFile; begin

186. Cells0,0J := '№ nn.Cells[l,0. := 'Модель оборудования'; // Cells(2,0J := 'Наименование операции',- Cells[3,0] := 'Номер операции'; // Cells [4,0] := 'Время операции';for i:=l to 6 do Cells0,i. := IntToStr(i); end;1. Progress.Percent := 0;

187. SecretPanelRect := SecretPanel.ClientRect;

188. OffsetRect( SecretPanelRect, SecretPanel.Left, SecretPanel.Top );

189. RxGIFAnimatorl.Animate := true; end;procedure TForml.ciearData;var i,j: integer;begin

190. Data i, j, parOPERJTYPE . := -1; for i := 0 to DETAILC0UNT-1 do for j := 0 to OPCOUNT-l do if (Data [ i, j, parEQUIPMENT ] > 0) and(Data [ i, j, parOPERTYPE ] = -1) then begin

191. Data i, j, parOPERTYPE . := TypeNo;

192. SetAllOperTypeAtEquipmNo( trunc(Data i, j, parEQUIPMENT .), TypeNo ); inc(TypeNo);

193. OPERTYPECOUNT := TypeNo; end; //exit;

194. ControlStep := defCONTROLSTEP; WorkTurnCount := defWORKTURNS; WorkTime := defWORKTIME;

195. CorrectDatal1. := 0; CorrectData2i. := 0; CorrectData[i] 0; DetailQueue[i] := 0; end;

196. CorrectGrid := nil; DetailsInQueue := 0;

197. FillChar( Diffs, siseof(Diffs), 0 );

198. FillChar( aAHDiffsAboveZero, sizeof(aAllDiffsAboveZero), 1 ); TableNo := 1;

199. Progress.fNeedRebuildBackground := true; for i:=0 to 50 dobegin j GetTickCount; Progress.Percent := i*2; while j+10 > GetTickCount do; end; Notebookl.ActivePage := '2';

200. AddStrToReport('');AddStrToReport('');AddStrToReport('');1.sSourceData;1. Etapl;1. Etap2;for i:=1 to OPERTYPECOUNT do aiOperations1. := ord(acOperationsi.)-ord('A'); Etap3;1.sCorrectTable(true); Etap4;

201. DrawDetailGraph; AddStrToReport(''); AddStrToReport(Zakll.Caption); AddStrToReport(Zakl2.Caption); AddStrToReport(Zakl3.Caption); AddStrToReport('');

202. AddBoldStrToReport('Спасибо за внимание.'); AddStrToReport(' ') ;

203. AddTitleStrToReport('К О H Е Ц.'); end;+procedure TForml.AddToReport( сошр: TControl ); beginif comp is TStringGrid then with TStringGrid(comp) do begin

204. Font.Charset := RUSSIANCHARSET;

205. Height := DefaultRowHeight * (RowCount)+RowCount; Width DefaultColWidth * (ColCount+1); BorderStyle := bsNone; //Enabled := false;

206. Options := Options + goRowSizing, goColSizing.; FixedRows:=RowCount-l; //FixedCols:=1; end;comp.Align := alTop;comp.Top := 2 0000;comp.Parent := SBox;inc(ReportControlNo);comp.Tag := ReportControlNo;if comp is TLabel then with TLabel(comp) dobegin

207. Font.Charset := RUSSIANCHARSET; Color := clWindow; WordWrap := true; Transparent := true; Caption := ' '+Caption; end;end;procedure TForml.AddStrToReport( str: string );var lab: TLabel;beginlab := TLabel.Create(self);with lab dobegin

208. Caption := str; AddToReport( lab ); end; end;procedure TForml.AddBoldStrToReport( str: string );var lab: TLabel;beginlab := TLabel.Create(self);with lab dobegin1. Caption := str;

209. Font.Style := fsBold.; AddToReport( lab ); end; end;j / ************ + *********-*****************-****************************procedure TForml.AddTitleStrToReport( str: string );var lab: TLabel;beginlab := TLabel.Create(self);with lab dobegin

210. AddTitleStrToReport('Исходные данные.');

211. AddStrToReport('1.Технологические маршруты оОраОотки деталей.'); grid TglStringGrid.Create(self); with grid do begin1. ColCount := 5;

212. RowCount := 1;//OPERTYPECOUNT*DETAILCOUNT; ColsBold := 5; RowsBold := 1; //AlignAll := true; DefaultRowHeight := 20; DefaultColWidth := 100; FixedCols := 0; FixedRows := 0;

213. Cells0,0. := '№ ПП.'; Cells[l,0] := 1Наим.опер.'; Cells[2,0] := '№ операции';

214. Cells3,0. := 'Модель обор.'; Cells[4,0] := 'Время'; end;1. AddToReport(grid);for i := 0 to DETAILCOUNT-l do begin

215. AddBoldStrToReport('Деталь '+ DetailNames1. ); grid := TglStringGrid.Create(self); with grid do begin

216. ColCount 5; RowCount := OPERTYPECOUNT-l; DefaultRowHeight := 20; DefaultColWidth := 100; FixedCols := 0; FixedRows := 0; for j := 0 to 0PC0UNT-1 do begin1. IntToStr(j+1);

217. OperationName trunc(Data[i, j, parEQUIPMENT.) = IntToStr(trunc(Data[i, j, parOPERNO]+1)*5); = EquipmentName[ trunc(Data[i, j, parEQUIPMENT]) = Format('%2.If',[ Data[i, j, parOPERTIME] ]);

218. Cells 0,j. Cells [1,j] Cells [2,j] Cells[3,j] Cells [4,j] end; end;1. AddToReport(grid); end;

219. AddStrToReport('2.Режим работы '+asWorkTurnCountWorkTurnCount. +при '+Format('%2.If', WorkTime.) + 'часовом рабочем дне и ' +asDaysInWorkWeek[DaysInWorkWeek] + 'дневной неделе');

220. AddStrToReport('3.Недельная программа выпуска деталей каждого наименования принята равной1. IntToStr(PartyCount) );

221. AddStrToReport('4.Шаг управления '+asControlStepControlStep.+' недели.'); AddStrToReport('');

222. AddBoldStrToReport('Принятые обозначения операций.');for op := 0 to OPTYPECOUNT-l dofor j:=0 to OPTYPECOUNT-1 do beginfor i:=0 to DETAILCOUNT-l do beginif Datai,j,parOPERTYPE. = op then begin

223. AddStrToReport(Introl.Caption); AddStrToReport(Intro2.Caption) ; end;procedure TForml.Etapl; vari,j: integer;

224. TotalTime, SumTime : real; str, SumStr: string;begin

225. AddTitleStrToReport( 'Этап 1. Обоснование выбора формы производственной программы.' ); AddStrToReport(' ') ; AddStrToReport(Etapll.Caption); AddStrToReport('');

226. WorkFond := ControlStep*DaysInWorkWeek*WorkTurnCount*WorkTime; AddStrToReport('Фонд времени равен F = ' + IntToStr(ControlStep)+'*'

227. IntToStr(DaysInWorkWeek)+'*' + IntToStr (WorkTurnCount)+ '*' + Format('%3.If',WorkTime.)+' = ' + Format('%4.2f',[WorkFond]) + ' часов. ' ) ;1. AddStrToReport( ' ' ) ;

228. Ritm := WorkFond*60 / PartyCount;

229. AddStrToReport('Расчетный ритм равен R = '+ IntToStr(trunc(WorkFond*60))/ '+ IntToStr(PartyCount)+' = '

230. Format('%4.IfRitm.)+' мин' );1. AddStrToReport('');

231. AddStrToReport(SumStr+Format(' = %2.1f мин.',SumTime.)); AddStrToReport(' ') ;

232. AddStrToReport(Etapl2.Caption); AddStrToReport(Etapl3.Caption); end;i,j,r,c,cDetail, cOper,cBaseOper, Col, Row: integer;

233. MinusCol, PlusCol: integersgrid: TglStringGrid;aSG: array0.10. of TglStringGrid;

234. SumTimes: array0.10. of real;1. OperTime: real;

235. Result := -1; OkCounted := 0;for j:=l to grid.ColCount-1 do with grid dobegin

236. Result := TglStringGrid.Create(self); Result.ShowDiagonal := true; GridAssignt grid, Result );

237. AddTitleStrToReport( 'Этап 2. Формирование сводного технологического маршрута обработки заданного множества деталей.' );

238. Str := 'Порядок операций: ';for i:=1 to OPERTYPECOUNT do Str := Str +' -> '+ chr(acOperations 1.) ; AddStrToReport(Str) ;1. NameSumStr := ' ' ;

239. AddStrToReport('Одноименные операции тех.процессов должны соотноситься между собой как:;for j := 0 to DETAILCOUNT-l do begin1. SumTimes j . .- = 0 ;for i := 0 to OPCOUNT-l do

240. SumTiroesj. := SumTimes[j] + Data[j, i, parOPERTIME);

241. NameSumStr := NameSumStr + ' T'+DetailNamesj.; SumStr := SumStr + Format('%2.If',[SumTimes[j]]); if j < DETAILCOUNT-l then begin

242. SumStr := SumStr + ' : '; NameSumStr := NameSumStr + ' : '; end; end;

243. AddStrToReport(NameSumStr+ ' = '+SumStr);

244. AddStrToReport('Лишь при этом целесообразна многопредметная переменная поточная линия.');for j := 0 to OPERTYPECOUNT-l do begin

245. NameSumStr := ''; DetSumStr := ''; for i := 0 to DETAILCOUNT-l do begin

246. NameSumStr := NameSumStr + 't'+chr( ord('A')+ j) +'('+DetailNames1.+')'; OperTime := OpTime( i, j ); if OperTime < 0 then OperTime := 0;

247. DetSumStr := DetSumStr + Format('%2.If 1, OperTime.);if i < DETAILJCOUNT-1 thenbegin

248. DetSumStr := DetSumStr + ' : NameSumStr := NameSumStr + ' : '; end; end;

249. AddStrToReport(NameSumStr+ ' = '+DetSumStr + ' # ' + SumStr); end;

250. AddTitleStrToReport( 'Этап 3. Расчет необходимого кол-ва рабочих мест формируемой производственной системы.' );

251. AddStrToReport ( ' '); AddStrToReport (Etap3l. Caption) ; AddStrToReport (Etap32 . Caption) ,-AddStrToReport('');

252. ColCount := DETAILCOUNT*2 + 5;

253. RowCount := OPERTYPECOUNT + 3; //AlignAll := true;

254. ColsBold := 1; RowsBold := 3;1. DefaultRowHeight := 20;1. DefaultColWidth := 42;

255. FixedCols := 0; FixedRows := 0;

256. Cells0,0. := 'Шифр'; Cells[l,0] := 'Опер.'; Cells[2,0] := 'Обор.'; Cells[3,0] := 'Детали';

257. CellsColCount-2,0. := 'CB'; Cells[ColCount-1,0] := 'К.Загр.'; for i := 1 to DETAILC0UNT*2 do begin

258. Cells2+i,1. := DetailNamesИi+1) div 2-1];//chr(ord('A')+(i+1) div 2-1); if i/2 <> i div 2 then Cells[2+i,2] := 'Won' else CelIs[2+i,2] := 'ВП';end;for j 1 to OPERTYPECOUNT do begin

259. Cells (i,j+2. := Format( '%3.3f', TotalTime/WorkFondJ ) else beginif i/2 <> i div 2 then//.op begin

260. OperNo := OpNo( i div 2-1, aiOperationsj. ); if OperNo = -1 then Cells[i,j+2] := '-' else Cells [ i , j +2 ] := IntToStr( (OperNo+l)*5 trend else begin1. Cellsi,j+2. := 'ВП';

261. OperTime := OpTime( DetailNo{i div 2-2}, aiOperationsj. );if OperTime = -1 then Cellsi,j+2. := '-' elsebegin

262. OperTime := OperTime*PartyCount/60; // DatailsTimeDetailNo.[aiOperations[j]] := OperTime;

263. AlignAll := true; ColsBold := 1; RowsBold := 3;

264. GridAssign( grid, grid2 ) ; grid2.RowCount := 3,■//.only captions Cols0.clear;for OperNo := 3 to grid.RowCount-1 do begin

265. Charge := StrToFloat(grid.Cells4+DETAILCOUNT*2,OperNo.> Overload,if Charge > 1 then//.charge, %begin

266. DetailsAssigned := 0; repeatfOverload := false,

267. RowCount := RowCount + 1; RowsRowCount-1.Clear; Rows[RowCount-1].Assign(grid.Rows(OperNo]);

268. TotalTime := StrToFloat(grid.Cells3+DETAILCOUNT*2,OperNo.);1. CountedTime := 0;for i:=0 to DetailsAssigned-1 dobegin

269. OperTime := OpTime( DetailNo, aiOperationsOperNo-2. )*PartyCount/60;if OperTime < 0 then continue; if OperTime > WorkFond thenraise Exception.create('Ошибка при вводе данных. Операция 'chr( aiOperationsOperNo-2.+ord{'A'))+' детали '

270. DetailNamesDetailNol +' выполненяется дольше полезного фондавремени.'

271. Эта ситуация в задаче не предусмотрена.'); if CountedTime + OperTime <= WorkFond*(1+Overload) then begin

272. CountedTime := CountedTime + OperTime; AssignedDetailsNoDetailsAssigned. := DetailNo; inc(DetailsAssigned);end else begin

273. RowsRowCount-1.Assign(grid.Rows[OperNo]); end else begin1. RowCount := RowCount + 1;

274. RowsRowCount-1.Assign(grid.Rows[OperNo]); end;

275. Cells1,RowCount-1. := IntToStr(RowCount-3); end;

276. WPlaceCount := RowCount-3;//.WORKPLACES countcalc last col: Details on oper ColCount := ColCount + 1; for j:=l to WPlaceCount do begin

277. WPlaceEquipj. := StrToInt(Cells [ 1,2+j]); Str := Cells[0,2+j];//wplace type WPlaceType[j-1] := ord(Str1.)-ord('A'); Str : =for i:=1 to DETAILCOUNT do begin

278. Charge := StrToFloat(Cells4+DETAILCOUNT*2,j+2.);if Cells2+i*2,j+2. <> thenbegin

279. Str := Str + DetailNamesi-1.;//chr(i-l+ord('A')); DetailWPlaceTime[i,j] := StrToFloat(Cells[2+i*2,j+2]);if Charge <=0.5 then begin1. DetailSleepi,j. := true;

280. SleepTime := trunc(DetailWPlaceTimei,j./WorkTime)*WorkTime;

281. DetailWPlaceTimei,j. := DetailWPlaceTime[i,j]1. SleepTime;str := Format('%3.If', DetailWPlaceTime[i,j. ]); Cells(2+i*2,j+2] := Cells[2+i*2,j+2]+' /'+str; end;end else DetailWPlaceTimei,j. := 0; end;

282. CellsColCount-1,j+2. := Str; WPlaceDetail[j-1] := Str; end ; end;grid2.DefaultColWidth := grid2.DefaultColWidth 3;1. AddToReport(grid2);

283. AddStrToReport(' ' ) ; if fShowTable then begin

284. AddTitleStrToReport( 'Расчет корректирующих значений на основе анализа разницы (t''i-t' ' " i) . ' ) ;inc(TableNo) ; AddStrToReport! ' Таблица '+IntTOStr(TableNo)+1.' ); end else begin

285. AddStrToReport( 'Перерасчет корректирующих значений на основе анализа разницы (t''it' ' ' 'i) ' ) ;

286. ColCount := DETAILCOUNT + 1; RowCount := 3;

287. ColsBold := 1; RowsBold := 3; DefaultRowHeight := 20; DefaultColWidth := 65; FixedCols := 0; FixedRows := 0;

288. Cells 0,0. := 'Пары p.м.'; Cells[l,0] := 'Детали';for i := 1 to DETAILCOUNT dobegin

289. Cellsi,2. := ' t''i-t''''i '; Cells[i,l] := DetailNames[i-l]; DetailQueue[i-l] := i-l; end;

290. CountAssociateWPlace( DETAILCOUNT ); AssociateWPlaceCount := AssociateWPlaceCount; RowCount := RowCount + AssociateWPlaceCount; end;for i := 0 to AssociateWPlaceCount-l do beginif fShowTable then

291. Cells0,3+i. := IntToStr( AssociateWPlaceSecond1. )+' и '+intToStr( AssociateWPlaceFirst[i] );fDiffTimeAboveZero := true; for j := 0 to DETAILCOUNT-l do begin

292. DiffTime := OpTime( j, WPlaceType AssociateWPlaceFirst1.-1 . );

293. DiffTime := DiffTime OpTime( j, WPlaceType AssociateWPlaceSecond1.-1 . );

294. Diffsj,i. >= WorkTime) or fSubRule3) then beginif fSubRule31 thenjl := int( (Diffs(j , i.-Summ) / WorkTime )*WorkTime elsejl := int(Summ / WorkTime + integer(fSubRule3) )*WorkTime;if jl <= 0 then continue;if (not DetaillnQuene(j)) thenbegin

295. CorrectData2j. := CorrectData2[j] + jl; StrLi st2.Add( 'Операции '+ Cells[0,3+i]

296. StrListl.Free; StrList2.Free;for j := 0 to DETAILCOUNT-l do

297. Result := cbOptiml.CHECKED and aAHDif f sAboveZeroDetailNo.; end;1.procedure TForml.Etap4; vari , j,d,c,BestTimeDetail: integer; fAlwaysInQuene: boolean; BestTimeResult, TimeResult: Extended; begin1. AddStrToReport( ' ' ) ;

298. AddTitleStrToReport( 'Этап 4. Моделирование процессов производства для сформированной производственной системы. ' ) ;

299. AddStrToReport(Etap4l.Caption); AddStrToReport(Etap42.Caption); AddStrToReport(Etap43.Caption); AddStrToReport(Etap44.Caption); AddStrToReport(Etap45.Caption); AddStrToReport('');for D := 1 to DETAILCOUNT do begin

300. DetailQueueDetailsInQueue-1. := DetailCanidate;1. CreateBaseQueueTable;

301. TimeResult := CreateQueueTable;

302. TimeResult := Round(TimeResult*100)/100;if (TimeResult < BestTimeResult)and(not RuleFirst(DetailCanidate)) then begin

303. BestTimeResult := TimeResult; BestTimeDetail := DetailCanidate; end elseif TimeResult = BestTimeResult then//.rule 4 begin

304. AddBoldStrToReport('Используем правило 4: сравнение деталей ' +

305. DetailNamesBestTimeDetail. + ' и ' +

306. DetailNamesDetailCanidate.) ;if TotalMinusDetailCanidate. < TotalMinus[BestTimeDetail] then begin

307. BestTimeResult := TimeResult; BestTimeDetail := DetailCanidate; end;

308. AddBoldStrToReport!' -> выбираем деталь ' + DetailNamesBestTimeDetail. );end; end;if cbUserSelect.Checked then BestTimeDetail := fSelectDetail.Execute(DetailQueue, DetailsInQueue-1) ;

309. DetailQueueDetailsInQueue-1. := BestTimeDetail;

310. AddBoldStrToReport('> Выбираем деталь: ' +

311. DetailNamesBestTimeDetail.);if cbRecalcRules .Checked then InsCorrectTable (false) ;//!end;1. DetailslnQueue := 2;

312. DetailQueue0. := 2; DetailQueue1. := 0; CreateQueueTable;1. DetailslnQueue := 4,

313. Result := Pos( DetailNames! DetailQueueDetaillndexInQuene. ], WPlaceDetail[WPlace-1]<>0;end; begininc(TableNo); AddStrToReport('Таблица '+IntToStr(TableNo)+'.'); grid := TglStringGrid.Create(self); with grid do begin

314. ColCount ;= 1 + DetailslnQueue; RowCount := 3;

315. ColsBold := 1; RowsBold := 3;

316. DefaultRowHeight := 20; DefaultColWidth := 60; FixedCols := 0; FixedRows := 0;

317. Cells0,0. := 'PaO.места'; Cells [1,0] := 'Дет.'; Cells[1,1] := 'St,час.';for i:=l to DetailslnQueue do Cellsi,l. := DetailNames! DetailQueue[i-1] ];for j:=0 to WPlaceCount-1 do//.add row beginfEmptyRow := true;

318. RowCount := RowCount+1; ARow := RowCount-1; Cells0,ARow. := IntToStr(j+1); TimeSum := 0;for i:=0 to DetailsInQueue-1 do begin

319. Result := Pos ( DetailNames! DetailQueueDetaillndexInQuene. ], WPlaceDetail[WPlace-1]<>0;end; begininc(TableNo); AddStrToReport('Таблица '+IntToStr(TableNo)+'.'); grid := TglStringGrid.Create(self); with grid do begin

320. ColCount := 5 + DetailsInQueue; RowCount := 3;

321. ColsBold := 1; RowsBold := 3;

322. DefaultRowHeight := 20; DefaultColWidth := 60; FixedCols := 0; FixedRows := 0;

323. Cells0,0. := 'Связ.пары'; Cells[l,0] := 'Дет.';

324. RowCount := RowCount+1; ARow := RowCount-1;

325. Cells0,ARow. := IntToStr(AssociateWPlaceSecond [ i]) +' и1.tToStr(AssociateWPlaceFirst1.);

326. DetailWPlaceTime DetailQueue[j.+1, AssociateWPlaceSecond1. ];if DetaillnWPlace(j, AssociateWPlaceFirst1.)and

327. DetaillnWPlace(j, AssociateWPlaceSecond1.) then begin

328. Bj := maxSingle( Bj, maxSingle( LastBb, LastBe) Cellsj+1,ARow. := Format('%3.If/%3.If',[LastBb, endelse Cellsj+1,ARow. := '—';

329. TimeSum := TimeSumsj.; TimeToAdd := -99; for i := j-1 downto 0 do beginif AssociateWPlaceFirstj. = AssociateWPlaceSecond1. then begin

330. TimeToAdd := maxSingle( TimeToAdd, TimeSums1. ); if TimeToAdd <= -99 then TimeToAdd := 0; end; end;if TimeToAdd <= -99 then TimeToAdd := 0; TimeSuin := TimeSum + TimeToAdd;

331. CellsColCount-1,j+3. Format('%3.If',[TimeSum]); TimeSums[j] := TimeSum; end;

332. Result := 0; //.mark duple sumfor j := 0 to AssociateWPlaceCount-1 do begin

333. DecResult := DecResult + CorrectData DetailQueue1. 1 else)

334. DecResult := CorrectData DetailQueue[DetailsInQueue-1. ];if CorrectData DetailQueue[DetailsInQueue-1.] > 0 then begin

335. AddStrToReport( 'Корректировка. Деталь '

336. DetailNamesDetailQueue[DetaiIsInQueue-1.] + ': на '

337. Format('%2.2f',DecResult. ) + ' час.');

338. AddStrToReport! 'Суммарое время уменьшается с '

339. Format С%2.2f', Result{TimeSums[AssociateWPlaceCount-1.) ]) + ' до '

340. Format('%2.2f', Result DecResult .) + ' час.' );end else

341. AddStrToReport! 'Корректировка для детали '

342. DetailNamesDetailQueue[DetailsInQueue-1.]+' не требуется.' );

343. Result := Result DecResult; Result := Round(Result* 100)/100; // TimeSumsAssociateWPlaceCount-1. :=

344. AssociateWPlaceSecondi1 = WPlaceS) then exit;

345. AssociateWPlaceFirstAssociateWPlaceCount. := WPlaceF; AssociateWPlaceSecond[AssociateWPlaceCount] := WPlaceS; inc(AssociateWPlaceCount); end; begin

346. AssociateWPlaceCount := 0;for WPlaceF := 1 to wplaceCount dobeginfor i:=0 to DetailsInQueue-1 do beginfNextWPlace := false;for WPlaceS := WPlaceF+1 to WPlaceCount do beginif DetaillnWPlace(i, WPlaceFJand DetaillnWPlace(i, WPlaceS) then begin

347. AddTitleStrToReport('Модель процесса движения деталей по рабочим местам.'); AddStrToReport{'');indentfor i := 0 to WPlaceCount-1 do begin

348. WPlaceTable := BeginNewWPlaceTable; DGraph := TDetailGraph.Create(self); WorkTime := Self.WorkTime; Height := 2 5;

349. Count := Length(WP1aceDetail1.) ; DetailAdded := 0; WPlaceTotalWorkTimei. := 0; for j:=0 to DetailsInQueue-1 doif post DetailNames DetailQueue[j. ], WPlaceDetail1. )<>0 then begin1.belsDetailAdded. := DetailNames[ DetailQueue[j] ];

350. WidthsDetailAdded. := trunc(Detai1WP1aceTime[DetailQueue[j]+l,i+l]*1.5); fSleep[DetailAdded] := DetailSleep[DetailQueue[j]+1,i+1]; Indent := trunc(TimelndentAtWPlace1.*1.5);1.dentLabel := Format('<-%3.If час.->',[TimelndentAtWPlace1.]);

351. WPlaceTotalWorkTime1. := WPlaceTotalWorkTimei. +

352. DetailwPlaceTimeDetailQueue[j.+l, i + 1] ;1.sDetaillnWPlaceTable( WPlaceTable, i, DetailQueuej.,

353. DetailAdded = 0(fUseTimelndent), TimelndentAtWPlace1.{indent in hours}, Detai1WP1aceTimeDetailQueue[j.+1,i+1] );inc(DetailAdded); end;

354. AddStrToReport('Рабочее место №: '+IntToStг(i+1)+ '. ' + DGraph.IndentLabel); AddToReport(DGraph); end;grid := TglStringGrid.Create(self); with grid do begin

355. ColCount := 4 6; RowCount := 2; Countedwidth := 0;for i:=0 to ColCount-1 dobegin

356. AddToReport(grid);} //-------

357. TimeRule := TTimeRule.Create(self); TimeRule.Height := 40;

358. TimeRule.DaysInWorkWeek := DaysInWorkWeek; TimeRule.WorkTime := WorkTime; AddToReport(TimeRule);-------1. FullWorkCycleTime := 0;for i := 0 to WPlaceCount-1 doif TimelndentAtWPlace1.+WPlaceTotalWorkTimei. > FullWorkCycleTime then begin

359. FullWorkCycleTime := TimelndentAtWPlaceIi.+WPlaceTotalWorkTimei) ; MaxWorkWPlace := i; end;

360. FullWorkCycleTime := FullWorkCycleTime / WorkTime / WorkTurnCount;str := Formate (%3.2f + %3.2f) / %3.2f / %d = %3.2f', TimelndentAtWPlace[MaxWorkWPlace., WPlaceTotalworkTime[MaxWorkWPlace], WorkTime, WorkTurnCount, FullWorkCycleTime ] );

361. AddBoldStrToReport (' Полный цикл = '+str+' дней и ночей не покладая рук, в поте лица своего.');1. ShowAllWPlaceTables; end;it**************************************************************-*-***procedure TForml.PrepareWPlaceTables; begin

362. WPlaceTableCount := 0; end;function TForml.BeginNewWPlaceTable: TglStringGrid; vari: integer; begin

363. Result := TglStringGrid.Create(self);with Result do begin

364. ColCount := 4+DaysInWorkWeek*2'ControlStep; RowCount := 0; ColsBold := 1;

365. DefaultRowHeight := 20; DefaultColWidth := 22; FixedCols := 0; FixedRows 0; ColWidths2. := 35; ColWidths[3] := 30; end;

366. Cells0,ARow. := Detailnames[ DetailNo ];

367. Cells3,ARow. := IntToStr(PartyCount);

368. OperTime := OpTimef DetailNo, WPlaceTypeWPlaceNo.);

369. Cells2,ARow. := Format('%2.2f', [OperTime] );1. DetailsInWork := 0;

370. ACol := LastColInWPlaceTable;

371. FreeTime := WorkTime*60 LastWTimeWPlaceTable;process indentif fUseTimelndent thenbegin

372. ColsToAdd := trunc(Timelndent / WorkTime); i := DaysInWorkWeek*WorkTurnCount; RowsToAdd := ColsToAdd div i;

373. ColsToAdd := ColsToAdd (ColsToAdd div i)*i;

374. RowCount := RowCount + RowsToAdd; inc( ARow, RowsToAdd ); ACol := 4+ColsToAdd; end;repeatif ACol >= ColCount then begin

375. RowCount := RowCount + 1; Inc(ARow);if ACol > ColCount then ACol = 5 else ACol : = 4; end;

376. DetaillnCurrCell := trunc(FreeTime / OperTime); inc( DetailsInWork, DetaillnCurrCell ); if DetailsInWork > PartyCount thendec( DetaillnCurrCell, DetailsInWork-PartyCount ); if DetaillnCurrCell > 0 then

377. CellsACol,ARow. := IntToStr(DetaillnCurrCell);if DetailSleepDetailNo+1,WPlaceNo+1. then Inc(ACol,2)else Inc(ACol);

378. FreeTime := WorkTime*60; until DetailsInWork >= PartyCount; LastColInWPlaceTable := ACol 1;

379. FreeTime := WorkTime*60 DetailInCurrCell*OperTime; LastWTimeWPlaceTable := DetailInCurrCell*OperTime; RowCount := RowCount + 1;end; end;procedure TForml.ShowAllWPlaceTables; vargrid: TglStringGrid; i: integer; begin1. AddStrToReport( ' ' ) ;

380. AddTitleStrToReport('Этап 5. Формирование расписаний работы рабочих мест на принятый шаг управления.1);

381. AddStrToReport(' ' ) ; AddStrToReport(Etap5.Caption) ; AddStrToReport('');grid := TglStringGrid.Create(self);with grid dobegin

382. ColCount := 4+DaysInWorkWeek*2*ControlStep; RowCount := 4; ColsBold := 1; RowsBold := 3;

383. DefaultRowHeight := 20; DefaultColWidth := 22;

384. FixedCols := 0; FixedRows := 0;

385. Data CurrentDetailNo, Line, parEQUIPMENT J := Index; TLabel(FindComponent( 'LOper' + IntToStr(Line) )).Caption := OperationName[Index.;

386. TComboBox(FindComponent( 'cbOpNo'+IntToStr(Line) ) (.Enabled := Index > 0; TComboBox(FindComponent( 'seT'+IntToStr(Line) ) ).Enabled := Index > 0;end;procedure TForml.glTabControlIChange(Sender: TObject); begin

387. CurrentDetailNo := TTabControl(Sender).Tablndex; LoadDetailData; end;procedure TForml.seT0Change(Sender: TObject); begin

388. Data CurrentDetailNo, TControl(Sender).Tag-30, parOPERTIME . := TRxSpinEdit(Sender).Value;end;procedure TForml.cb0pNo0Change(Sender: TObject); begin

389. Data CurrentDetailNo, TControl(Sender).Tag-20, parOPERNO . := TComboBox(Sender).Itemlndex; end;procedure TForml.LoadDetailData;var i: integer;beginfor i:=0 to OPCOUNT-l do begin

390. TComboBox(FindComponent( 'cbE'+IntToStr(i) ) ).Itemlndex := trunc(Data CurrentDetailNo, i, parEQUIPMENT .);

391. TLabel(FindComponent( 'L0per' + IntToStr(i) )).Caption := OperationNametrunc(Data [ CurrentDetailNo, i, parEQUIPMENT .)];

392. TComboBox(FindComponent( 'cbOpNo'+IntToStr(i) ) ).Itemlndex := trunc (Data CurrentDetailNo, i, parOPERNO . )

393. TRxSpinEdit(FindComponent( 'seT'+IntToStr(i) )).Value := Data CurrentDetailNo, i, parOPERTIME .;

394. TComboBox(FindComponent( 'cbOpNo'+IntToStr (i) ) ).Enabled := Data CurrentDetailNo, i parEQUI PMENT . > 0,

395. TRxSpinEdit (FindComponent ( 'seT'+IntToStr(i) )).Enabled := Data CurrentDetailNo, i parEQUIPMENT . > 0; end;end;----------------------------------------------------------------------procedure TForml.ExportToMSWord; var W: Variant;

396. S, Str, StrFormat: String; i,j:integer; Reg: TRegistry;

397. WinwordExe: string; BeginTime: TDateTime; CountedTime: TDateTime; bmp: TBitmap;procedure InsTabie( Columns, Rows: integer ); beginif Columns > 30 then Columns := 30;

398. W.TableColumnWidth( ColumnWidth := Format('%1.If',ColWidths[j. / 30]),

399. W.EndOfDocument; W.Insert! #13 ); Application.ProcessMessages; end;begintry1. Reg := TRegistry.Create;

400. Reg.RootKey:=HKEYLOCALMACHINE;if Reg.OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\WinWord.exe ' , False)then

401. WinwordExe := Reg.ReadString( '' );if WinExect PChar(WinwordExe), SWMAXIMIZE ) < 32 thenif not Confirm.Ask( #13+'Программа не может автоматически запустить MS Word. Необходимо запустить MS Word.' ) then exit;finally1. Reg.Free; end;

402. WaitForm.Show; WaitForm.Repaint;with WaitForm do try try try

403. W:=GetAct iveOleObj ect('Word.Basic' ); except

404. W:=create01e0bject('Word.Basic'); end;

405. W.FileNew(Template: = 'Normal',NewTemplate: = 0); except

406. MessageDlg( 'Невозможно создать документ MS Word средствами OLE!'13+'Вероятно, MS Word отсутствует на этой машине.', mtError, mbOk., Obraise; end;

407. W.AppShow; BeginTime := Time;1. Self.Enabled := false;fPrinting := true;1. Отключение фоновой печати

408. W.TooIsOptionsPrint(Background:=0);1. VJ.Insert! #13#13 ) ;

409. W.FormatParagraph( Alignment := 1 ) ; W.Font('Times New Roman Cyr',14); W.Bold(1);

410. W.Insert('Курсовая работа по дисциплине " Планирование на предприятии ".'+#13); W. Underlined) ;W. Insert ( #13#13 );

411. W.Insert('• Формирование и оперативное управление производственными системами на Сазе поточно-группового пр-ва. •'+#13);

412. W.Bold(0);W.Underline<0) ; w.Insert( #13#13#13#13#13#13 );

413. W.Insert; 'ФИО студента: '+eFIO.Text+#13 );w.Insert( 'Группа: '+eGroup.Text+#13 );

414. W.Insert( 'Дата: ' );W.InsertDateTime; W.Insert(#13);

415. W.Insert( 'Вариант: '+eVar.Text+#13 );

416. StrFormat := LongTimeFormat;

417. DateTimeToString( Str, StrFormat, Time BeginTime );1.aitTime.Caption := str;end;finally

418. W.ToolsOptionsPrint(Background:=1);

419. W.FileSaveAs('C:\StreamIS.doc');1. W:=UnAssigned;1. Self.Enabled := true;fPrinting := false;1. WaitForm.HideThemself;

420. Confirm.ShowMessage('Передача отчета в MS Word завершена.'); end;end;procedure TForml.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin

421. CanClose := Confirm.Ask('Выход из программы.'); end;procedure TForml.glLabell3Click(Sender: TObject); vari, TickCount: integer; R: TRect; begin1. Enabled := false;with SecretPanel do trywith SecretPanelRect do

422. SetBounds(Left, Top, Right-Left,Bottom-Top); Visible := true; for i := 0 to 50 do begin

423. TickCount := GetTickCount; R := ClientRect; InflateRect(R,1,1);

424. SetBounds(Left+R.Left,Top+R.Top,R.Right-R.Left,R.Bottom-R.Top); repeat until TickCount+20 < GetTickCount; end;1. Active := true;while Active do Application.ProcessMessages; finally

425. Visible := false; Forml.Enabled := true; end; end;procedure TForml.FormKeyDown(Sender: TObject; var Key: Word;

426. Shift: TShiftState); beginif fPrinting and (Key = VKESCAPE) then raise Exception.Create('Процесс остановлен пользователем.');if (Key = 73)and(ssAlt in Shift)and(SecretPanel.Lines.Count=17) then begin

427. R: TRect; State: TMenuOwnerDrawState); beginwith RxPopupMenul.Canvas do begin

428. BitBlt ( Handle, R.Left, R.Top, R.Right-R.Left,

429. R.Bottom R.Top, Imagel.Picture.Bitmap.Canvas.Handle, 0, R.Top, SRCCOPY );if mdSelected in State then

430. Frame3D( RxPopupMenul.Canvas, R, gl3DColorsl.Shadow, gl3DColorsl.Highlight, 1 ); if mdSelected in State then SetTextColor ( Handle, clWhite )else SetTextColor( Handle, clBlack ); SetBkMode( Handle, TRANSPARENT );

431. DrawText( Handle, PChar(Item.Caption), length(Item.Caption), R, DTSINGLELINE or DTVCENTER );end; end;procedure TForml.RxPopupMenulMeasureltem(Sender: TMenu; Item: TMenuItem;var Width, Height: Integer); begin1. Width := 1 CO;

432. TglCheckBox(Components1.).fNeedRebuildBackground := true; TglCheckBox(Componentsi.).Repaint; end elseif Components1. is TglProgress then begin

433. TglProgress(Components1.).fNeedRebuildBackground := true; TglProgress(Componentsi.).Repaint; end;end;begin

434. SetDetailNames< TControl(Sender).Tag ); end;procedure TForml.NotebooklPageChanged(Sender: TObject); begin

435. Progress.Percent := 0; end;end.unit UserSel;interfaceuses

436. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type

437. Enabled := true; Checked := false; end;pbOK.Enabled := false;for i:=0 to DetailsInQueue-1 do

438. TRadioButton(ControlsDetailQueue1.).Enabled := false; ShowModal;for i:=0 to ControlCount-1 do if Controls1. is TRadioButton then with TRadioButton(Controlsi.) doif Checked then Result := Tag;end; end.unit WaitFrm; {$DEFINE RUS) interfaceuses

439. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrIs, ExtCtrls, ComCtrls, RXCtrls, glCapt, glLabel, gllmage, glShape, glBevel, GlPrgrs; type

440. Shift: TShiftState); beginif Key = VKESCAPE thenif Confirm.Ask('Остановить процесс внедрения отчета в MS Word.')then Forml.fPrinting := false;end; end.