Аналитический метод расчета длительности цикла в условиях поточно-группового производства тема диссертации по экономике, полный текст автореферата
- Ученая степень
- кандидата экономических наук
- Автор
- Михайлова, Любовь Викторовна
- Место защиты
- Москва
- Год
- 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.