Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга о KOL.doc
Скачиваний:
29
Добавлен:
30.04.2019
Размер:
1.77 Mб
Скачать

199

KOL - объектная библиотека для программирования на языке Паскаль для среды MS Windows.

Владимир Кладов, 2006-2007 /e-mail: vk@kolmck.Net /

Версия 3.0 (все еще в процессе написания, данная редакция в основном соответствует KOL / MCK версии 3.00.U, октябрь 2010).

Содержание

Версия 3.0 (все еще в процессе написания, данная редакция в основном соответствует KOL / MCK версии 3.00.U, октябрь 2010). 1

0. Введение: происхождение KOL 7

0.1. Начало KOL 8

0.1.1. Анализ причин громоздкого размера приложений. Архитектурные концепции KOL 8

0.1.2. Дальнейшее развитие KOL. Уменьшаем все, что можно. Замена System.pas и других системных модулей 11

Program P1; {$APPTYPE CONSOLE} 12

0.2. Первые выводы. Необходимость уменьшения кода: кому это нужно? 12

0.2.1. Экономия расходов памяти 13

0.3. Визуальная разработка GUI-приложений в KOL: Mirror Classes Kit 14

0.4. Работа в KOL. Поиск информации. 14

0.5. Проблемы совместимости и конвертирования существующих VCL-проектов 15

0.6. KOL и компилятор CBuilder 17

1. Установка KOL и MCK 18

1.1. Установка KOL 18

1.2. Установка MCK 18

1.3. Символы условной компиляции 19

2. Программирование в KOL 28

2.1. Функции работы со строками 28

2.3. Преобразования чисел с плавающей запятой. Математика с числами с плавающей запятой 29

2.4. Работа с датой и временем в KOL 30

2.5. Низкоуровневая работа с файлами и папками в KOL 31

2.6. Работа с реестром в KOL 33

2.7. Служебные функции для работы с окнами в KOL 33

2.8. Сортировка данных 35

2.9. Иерархия объектных типов в KOL 35

2.9.1. Объекты _TObj и TObj. 35

2.9.2. Наследование объектов от TObj 37

2.9.3. Обработчики событий 38

2.10. Объект TList (универсальный список) 40

L := TList.Create; 41

L := NewList; 41

2.11. Потоки данных в KOL (TStream) 42

2.12. Списки строк в KOL (TStrList, TStrListEx и другие) 45

2.13. Список файлов и директорий (TDirList) 48

2.14. Отслеживание изменений на диске (TDirChange) 49

2.15. Ini-файлы (TIniFile) 50

2.16. Массив битовых флажков (TBits) 51

2.17. Дерево в памяти (TTree) 52

2.18. Элементы графики. Графические инструменты (TGraphicTool) и канва для рисования (TCanvas) 53

2.19. Изображение в памяти (TBitmap) 57

Объект растрового изображения объектного типа TBitmap создается конструкторами 57

2.19.1. Дескриптор и формат пикселей (TBitmap) 58

2.19.2. Размеры (TBitmap) 59

2.19.3. Загрузка и сохранение (TBitmap) 59

2.19.4. Рисование изображения на ином контексте (TBitmap) 59

2.19.5. Канва и модификация собственного изображения через нее (TBitmap) 60

2.19.6. Прямой доступ к пикселям и модификация изображения без канвы (TBitmap) 61

2.19.7. Параметры DIB-изображений (TBitmap) 61

2.20. Пиктограмма (TIcon) 62

2.21. Список изображений (TImageList) 63

2.21.1. Дескриптор и параметры (TImageList) 63

2.21.2. Манипуляции с изображениями: добавление, удаление, загрузка (TImageList) 64

2.21.3. Доступ к изображениям (TImageList) 64

2.21.4. Рисование (TImageList) 65

2.22. Перед тем, как приступить к визуальным объектам 65

2.23. Общие свойства и методы оконных объектов 66

2.23.1. Дескриптор окна 68

2.23.2. Родительские и дочерние контролы 68

2.23.3. Доступность и видимость 69

2.23.4. Позиция и размеры 70

2.23.5. Рисование 72

2.23.6. Текст окна и шрифт для окна 73

2.23.7. Цвет окна и рамка окна 73

2.23.8. Сообщения (все оконные объекты) 73

2.23.9. Диспетчеризация сообщений в KOL 75

2.23.10. Клавиатура и табулирование между контролами 77

2.23.11. Мышь и курсор мыши 78

2.23.12. Меню и справка 79

2.23.13. Свойства, методы и события формы и апплета 79

2.23.14. Внешний вид (форма, апплет) 79

2.23.15. Модальные диалоги 81

2.23.15. Сообщения (форма, апплет) 81

2.23.16. Событие OnFormClick (для формы) 82

2.23.17. Справочная система 83

2.24. Программирование в KOL (без MCK). Создание формы и запуск цикла обработки сообщений. 84

2.25. МСК-проектирование 85

2.25.1. Создание MCK-проекта 85

2.25.2. Настройка формы 88

2.25.3. Написание кода 89

2.26 Графические ресурсы приложения 90

2.27 Графические ресурсы и MCK 91

3. оконные объекты 92

3.1 Простые оконные объекты 92

3.1.1. Метки (label, label effect) 92

В KOL имеется еще две разновидности оконных меток. Конструктор 92

Конструктор: 93

3. 2. Панели (panel, gradient panel, group box) 93

3.3. Ящик для рисования (paint box) 94

3.4. Разделитель (splitter) 95

3.5. Линейка прокрутки (scroll bar) 96

Зеркало в MCK: TKOLScrollBar. 96

3.6. Линейка прогресса (progress bar) 96

3.7. Контейнер прокрутки (scroll box) 97

3.8. Кнопки (button, bitbtn) 98

3.9. Переключатели (check box, radio box) 100

3.10. Визуальные объекты со списком элементов 100

3.11. Поля ввода текста (edit box, memo, rich edit) 101

3.11.1. Конструкторы полей ввода текста (edit) 101

3.11.2. Особенности применения общих свойств (edit) 101

3.11.3. Опции полей ввода (edit) 102

3.11.4. Общие свойства полей ввода (edit) 102

3.11.5. Расширение возможностей: прямое обращение к API (edit) 103

3.11.6. Особенности Rich Edit 104

3.11.7. Зеркальные классы полей ввода (edit) 108

3.12. Список строк (list box). 108

3.13. Комбинированный список (combo box) 109

3.14. Общий список (list view) 111

Для общего списка характерно свойство 113

3.14.1. Списки изображений (list view) 113

3.14.2. Управление колонками (list view в режимах отображения lvsDetail, lvsDetailNoHeader) 113

3.14.3. Работа с элементами и выделением (list view) 114

3.14.4. Добавление и удаление элементов (list view) 115

3.14.5. Значения элементов и их изменение (list view) 115

3.14.6. Местоположение элементов (list view) 116

3.14.7. Внешний вид (list view) 116

3.14.8. Сортировка и поиск (list view) 117

3.15. Просмотр дерева (tree view) 118

3.15.1. Свойства всего дерева 119

3.15.2. Добавление и удаление узлов (tree view) 119

3.15.3. Свойства родительских узлов (tree view) 120

3.15.4. Свойства дочерних узлов (tree view) 120

3.15.5. Атрибуты узлов: текст, пиктограммы, состояния (tree view) 120

3.15.6. Геометрия узлов и перетаскивание (tree view) 121

3.15.7. Редактирование текста (tree view) 121

В MCK дерево представлено зеркальным компонентом TKOLTreeView. 121

3.16. Линейка инструментов (tool bar) 122

3.16.1. Общие свойства, методы, события (toolbar) 124

3.16.2. Настройка линейки (toolbar) 125

3.16.3. Свойства кнопок (toolbar) 126

3.16.4. Некоторые особенности работы с инструментальной линейкой (toolbar) 126

3.17. Панели с закладками (tab control) 127

3.18. Фреймы (TKOLFrame) 129

3.19. Модуль данных (TKOLDataModule) 130

3.20. Форма 131

3.20. «Чужая» панель 132

3.21. MDI-интерфейс 132

4. Графические (не оконные) визуальные элементы 134

4.1 Графическая метка 135

4.2. Графическое полотно для рисования 135

4.3. Графическая кнопка 135

4.4 Графические флажки 136

4.5 Графическое поле ввода 136

4.6 Темы XP для графических контролов и не только 137

5. Невизуальные объекты KOL и MCK 138

5.1. Меню (TMenu) 138

5.1.1. События для всего меню или его дочерних пунктов 140

5.1.2. События, методы, свойства отдельного пункта меню как объекта 141

5.1.3. Доступ к свойствам подчиненных элементов меню (по индексу или числовому идентификатору) 142

5.1.4. Главное меню 142

5.1.5. Всплывающее меню 142

5.1.6. Ускорители 143

5.1.7. Меню в MCK 144

5.2. Значок в трее (TTrayIcon) 144

В MCK объекту TTrayIcon соответствует зеркальный компонент TKOLTrayIcon. 145

5.3. Диалог выбора файла (TOpenSaveDialog) 145

5.4. Диалог выбора директории (TOpenDirDialog) 147

5.5. Альтернативный диалог выбора директории (TOpenDirDialogEx) 148

5.6. Диалог выбора цвета (TColorDialog) 151

Зеркало в MCK: TKOLColorDialog. 151

5.7. Часы (TTimer) 151

5.8. Мультимедийный таймер (TMMTimer) 153

5.9. Нить, или поток команд (TThread) 154

5.10. Псевдо-потоки 157

6. Расширения KOL 160

6.1. Обработка исключений 160

6.2. Математика с плавающей запятой 161

6.3. Комплексные числа 162

6.4. Диалоги 162

6.4.1. Выбор шрифта 162

6.4.2. Диалог поиска и замены 162

6.4.3. Системный диалог «О программе» 162

6.5. Печать и подготовка отчетов 163

6.5.1. Диалоги выбора принтера и настройки печати. Печать 163

6.5.2. Печать отчетов 163

6.6. Работа с базами данных 164

6.6.1. KOLEDB 164

6.6.2. KOLODBC 165

6.6.3. KOLIB 166

6.6.4. KOLSQLite 166

6.6.5. Работа с файлами DBF и другими БД 166

6.7. Расширения графики 166

6.7.1. Метафайлы WMF, EMF 167

6.7.2. Изображения JPEG 167

6.7.3. Изображения GIF, GIFShow, AniShow 168

6.7.4. Изображения PNG 169

6.7.5. Библиотека KOLGraphic 170

6.7.6. Использование GDI+ (KOLGdiPlus) 170

6.7.7. Прочие форматы изображений 170

6.7.8. Дополнительные утилиты для работы с графикой 170

6.7.9. Open GL: модули KOLOGL12 и OpenGLContext 171

6.8. Звук и видео 171

6.8.1. KOLMediaPlayer 171

6.8.2. PlaySoundXXXX 173

6.8.3. KOLMP3 173

6.8.4. Прочие средства для работы со звуком 173

6.9. Работа с архивами 174

6.9.1. TCabFile 174

6.9.2. KOLZLib 174

6.9.3. KOL_UnZip 174

6.9.4. KOLZip 174

6.9.5. DIUCL 174

5.9.6. KOLmdvLZH 175

6.10. Криптография. 175

6.10.1. TwoFish 175

6.10.2. KOLMD5 175

6.10.3. KOLAES 175

6.10.4. KOLCryptoLib 175

6.11. Active X 175

6.11.1. Active Script 176

6.12. OLE и DDE 176

6.12.1. KOL DDE 176

6.12.2. Drag-n-Drop 176

6.13. Сеть 176

6.13.1. Сокеты и протоколы 176

6.13.2. Работа с портами 177

6.13.3. CGI 178

6.14. Системные утилиты. 178

6.14.1 Сервисы NT 178

6.14.2. Апплет панели управления (CPL) 179

6.14.3. Написание собственного драйвера 179

6.14.4. Управление привилегиями NT 179

6.15. Прочие полезные расширения. 179

6.15.1. Работа с ярлыками, регистрация файловых расширений 179

6.15.2. Разделение памяти между приложениями 179

6.15.3. Сохранение и восстановление свойств формы 179

6.15.4. Дополнительные кнопки на заголовке окна 180

6.15.5. Макроассемблирование в память (PC Asm) 180

6.15.6. Виртуальная машина Collapse 180

6.15.7. Свойство FormCompact 181

6.16. Дополнительные визуальные объекты 182

6.17. Всплывающие подсказки 186

6.18. Темы XP 187

6.19. Расширения самого MCK 188

6.19.1. Улучшенная настройка шрифтов 188

6.19.2. Альтернативные пиктограммы компонентов 188

7. Работа с расширениями 189

7.1. Установка расширений 189

7.2. Использование расширений 189

7.3. Разработка собственных расширений 190

7.3.1. Разработка невизуальных расширений 190

7.3.2. Разработка визуальных расширений (контролов) 190

Приложение А. Ошибки программистов, начинающих изучать KOL 193

А.1. Назначение обработчика события, используя функцию MakeMethod и приведение типа к TOnSomeEvent. («Почему мой обработчик не реагирует на событие?») 193

MyControl.OnEvent := TOnEvent( MakeMethod( nil, @ MyOnClick ) ); 193

А.2. «Не могу установить MCK», «откомпилировать MCK приложение», спрашивает какой-то файл designintf, proxies», и тому подобное 194

А.3. Проект KOL, содержащий две или более форм, работает как-то не так 195

Приложение Б. Инструменты разработчика 196

Приложение В. Демонстрационные примеры 197

Приложение Г. KOL с классами вместо объектов 198