От составителя
О технических рецензентах
Благодарности
От издательства

Введение
Для кого предназначена книга
Структура книги
Предупреждение
WEB страница
Соглашения, принятые в данной книге

ГЛАВА 1. Алгоритмы преобразования
Преобразование шестнадцатеричной строки в целое
Преобразование целого в шестнадцатеричную строку
Преобразование ASCII в шестнадцатеричное значение
Преобразование двоичного числа в десятичное
Преобразование Comp в String
Преобразование арабских чисел в римские
Преобразование в EBCDIC
Добавление лидирующих символов
Преобразование BMP в ICO
Преобразование ICO в BMP
Преобразование BMP в JPEG
Арифметика времени
Арифметика дат
Номер месяца по его имени
Получение элемента даты
Год четырьмя цифрами
Преобразование даты в количество секунд
Вычисление даты Пасхи
Использование DateTime в DBGrid
Вычисление восхода и захода солнца и луны
Вычисление расстояния, имея широту и долготу
Рисование кривых Безье
Управление битами
Гауссово размывание
Рисование фрактальных графов
Вращение изображения
64 битное кодирование-декодирование
Защита программ перекрытием кода
Генерация случайного пароля
Как закодировать строку
Как стереть самого себя
Пример защиты типа SHAREWARE
Перекодировка текста из DOS в Windows и наоборот
Чтение и запись UNIX файлов
Перенос русского текста по слогам
Сумма прописью
Проверка кредитной карты
Проверка ISBN
Генерация еженедельных списков задач
Правильное округление дробных чисел
Почему возникает ошибка при использовании
функции StrToFloat
Эквивалент Trim$(), Mid$() и другие
Разбивка строки на слова
Замена подстрок
Первая буква каждого слова в строке прописью
Удаление ненужных подстрок из строки
Паскалевский эквивалент StrTok
Корректное сравнение и арифметические действия
с DWORD

ГЛАВА 2. API
Переменные окружения DOS
Изменение системного времени
Раскрытие строк с подстановкой
вида \'%SystemRoot%\IOSUBSYS\\'
Получение имени модуля
Управление монитором
Изменение пиктограммы приложения
Как получить указатели всех процессов,
запущенных в системе
Список запущенных приложений
Как запустить другую программу
Работа с другим приложением без Hook и DLL
на примере GetFocus
Ассоциативное выполнение
Открытие файла из работающего приложения
Обработка WM_SysCommand
Проблема синтаксиса DrawCaption
FlashWindow для пиктограмм
Извлечение пиктограммы из EXE и DLL файлов
Как предотвратить запуск копии приложения
Приоритет приложения
Улучшение работы LockWindowUpdate
Использование WSAAsyncSelect, если форма
отсутствует
Контроль завершения приложения
Определение завершения работы Windows
Перехват выгрузки операционной системы
Завершение работы Windows
Управление завершением работы Windows
События, происходящие в Delphi при завершении
работы Windows
Как консольное приложение может узнать,
что Windows завершает работу?

ГЛАВА 3. PASCAL (ИНТЕГРИРОВАННАЯ СРЕДА)
Описание типов файлов для Delphi
Директивы компилятора, способные увеличить
скорость
Сохранение пользовательских настроек
Опубликованное свойство в Инспекторе Объектов
Создание редактора свойства
Хитрость вызова редактора свойств
Код определения свойств
Показ свойств во время выполнения программы
Имя свойства в течение выполнения приложения
Редактор свойств для точки
Свойство только для чтения во время выполнения
приложения
Свойство TstringList
Свойство FileName в невизуальном компоненте
Конфликт имен параметров
Вызов процедуры, имя которой содержится в
переменной
Выполнение процедуры по ее адресу
Передача функции как параметра
Переменная в качестве имени процедуры
Переменное количество параметров любого типа
Проблема передачи записи
Работа метода Assign
Создание объектных переменных
Создание объектов любого типа
Особенность использования StrAlloc и GetMem
Быстрое сравнение памяти
Арифметика указателей
Динамическое распределение памяти
Массив объектов изображений
Сохранение массива с изображениями
Динамические массивы
Заполнение массива случайными значениями
Массив констант
Массив без ограничения типа и размера
Массивы размером более 64К
Шаблон массива переменной длины
Запись массива в поток
Проблема циклических ссылок
Получение ссылки на экземпляр класса
Функция, возвращающая тип
Проблема с типизированными файлами
Использование перечислимых констант
Константа из другого unit дает неверное значение
Заголовок TGA файла
Создание палитры
Изменение цветовой палитры изображения
Функция для работы с палитрами и RGB
Создание и использование 256 цветной палитры
Загрузка 256 цветного Bitmap
Захват изображений
Bitmap без формы
Рисование без мерцания
Программы для работы с точечной графикой (2D и 3D)
Растягивание пиктограммы
Тень в заданном регионе
Создание тени у метки
Компонент для отрисовки линий
Отображение ломаной линии
Рисование на органе управления
Вывод текста на родительском элементе управления
Надпись под углом
Сохранение и восстановление шрифта
Прозрачный текст
Вывод текста на экран с обрезанием
Создание DIB из BMP
Двоичный файл с набором изображений
Преобразование 16-битного DCR в 32-битный
Эксперт ресурсов
Загрузка изображения/курсора из RES файла
256 цветное изображение из .RES файла
Несколько пиктограмм в Delphi EXE
Включение JPEG в EXE файл
Хранение данных в EXE файле
Многоязычное приложение
Оглавление файлов помощи
Показ диалога "Help Search"
Использование файла помощи
Невозможно открыть файл помощи
Закрытие файла помощи
Как мне создать Internet ссылку в
диалоге "О программе"?
Таблицы строк
Регулярные выражения
Использование Tools Interface
Собственный UnRar
Назначение события во время выполнения программы
Делегирование события
Получение имени обработчика события
Синтаксис ссылки на событие
Сообщение для всех форм
Имитация события MouseOff
Обработка исключительных ситуаций
Использование исключений в базе данных
Определение версии Delphi

ГЛАВА 4. Базы данных
Проблемы с кирилицей в Database Desktop
Информация о псевдониме BDE
База данных в кодировке CP1251
ASCII драйвер для CSV файлов
Импорт CSV ASCII
ASCII файл с использованием полей
Получение физического пути к таблице
Получение информации о таблице
Структура таблицы
Структура DBF файла
Создание DBF файла во время работы приложения
Пакование таблиц dBASE
Динамическое создание таблицы и полей во время выполнения программы
Динамическое создание полей
Создание индексного файла из приложения
Создание таблицы с автоинкрементальным полем
Создание и удаление полей во время выполнения
программы
Восстановление записи dBASE
Обработка исключения "Index not found"
Создание кросс таблиц
Создание уникального ID для новой записи
Изменение LangDriver из приложения
Таблицы в оперативной памяти
Проблема медленного доступа к таблице
Проблема загрузки DBCLIENT.DLL
Хитрости многопользовательского доступа к базам данных
Дубликат записи Paradox или dBASE
Имя пользователя базы данных Paradox
Создание таблицы Paradox
Печать структуры таблицы Paradox
Ускорение открытия таблицы Paradox
Пароли Paradox
Замена пароля для таблицы Paradox из приложения
Доступ к таблицам Paradox c флагом только для чтения
Особенность первичного индекса Paradox
Создание autoincrement поля в таблицах Paradox
Доступ к файлам Paradox через BDE в сети
Lantastic Network
Изменение месторасположения NET файла во время работы
Использование TClientDataSet в локальном
приложении с таблицами Paradox
Чтение OLE из Blob поля Paradox
Проблемы использования Paradox в одноранговой сети
Проблемы использования Paradox в сети
Byte поля в Paradox
Каскадное удаление с проверкой целостности
Проблема транзакций
Пакование таблиц Paradox
Вызов TUTILITY
Исключение показа поля
DBGrid и Memo поля
Информация из одной таблицы на двух формах
Копирование и удаление таблиц из приложения
DBFSeek и DBFLocate
Выполнение запросов к базе данных в фоне
Повторный запрос к таблице
Контроль изменения данных
Дублирование набора записей
Ошибка при добавлении или изменении записей
Поиск величины при вводе
Удаление и восстановление индексов
Странности в работе AddIndex
Особенности работы с Update
Простой пример работы с базой данных из DLL
Значение по умолчанию для объекта TField
Сохранение в базе данных файла формата JPEG
Автоматическая вставка SEQUENCE
Запись и чтение чисел в Blob поле
Blob поля с длинным текстом
Запись потока в Blob поле
Загрузка изображений в Blob поля
Извлечение изображения из Blob поля
Изображение и Blob поля в InterBase
Клиентский запрос к серверу
Получение метода сервера
Быстрый поиск в базах данных
Поиск записи в больших таблицах
Изменение каталога псевдонима во время
выполнения приложения
Копирование записи в пределах одной и той
же таблицы
Текущий номер записи таблицы
Связь c DB2 в сети Netware
Create Trigger - чувствительность к регистру
Доступ к таблицам ACCESS
Использование MS ADO
Создание функции провайдера
Передача UserName и Password в удаленный модуль
данных
Использование интерфейсов в RemoteDataModule
Модуль данных для каждого MDIChild


ГЛАВА 5. BDE
Проверка наличия IDAPI
Изменение конфигурации IDAPI
RecCount в таблицах ASCII
Увеличение размера LCK файла
Локальный и общий доступ
Распространение BDE
Получения дескриптора ODBC соединения
посредством BDE
Информация о псевдонимах BDE
Получение пути псевдонима и таблицы
Отображение всех псевдонимов в ComboBox
Задание псевдонима программным путем
Изменение псевдонима во время выполнения
программы
Псевдоним на лету
Синтаксис функции DbiAddAlias
Добавление псевдонима с помощью
функции DbiAddAlias
Копирование таблицы с помощью BDE
Обратные вызовы BDE32 для получения
статуса операций
Демонстрация обратного вызова BDE
Запись буфера BDE на диск
BDE32 приложения в PTP сети
Использование BDE в сети
Управление сетевыми каталогами (BDE)
Решение проблемы BDE "Index out of Date"
Пример DBIDoRestructure
Пример использования DbiAddFilter
Проблемы установки Interbase Server
Управление локальным сервером Interbase
Автоматический logon к локальной InterBase
Проблемы регистрации UDF
COLLATE PXW_CYRL по умолчанию
Автоинкрементальные поля и Interbase
Interbase BLOB поля
Использование OLE с Interbase
Interbase в Linux
Проблемы кирилицы в Oracle при работе с BDE
Связь Oracle с Windows 95
Связь с Personal Oracle
Анализ таблиц в Oracle
Проблемы с Oracle в режиме отладки
SQL в DELPHI
Зарезервированные слова Local SQL
Параметризованные запросы
Имя таблицы в SQL запросе
Интерактивные SQL запросы
SQL запросы в изменившейся структуре базы данных
SQL - суммирование вычисляемого поля
SQL - сортировка вычисляемого поля
Синтаксис SQL функции Substring
SQL и расширенные символы
Проблемы StoredProc у SQL server
SQL - использование функции SUBSTRING
SQL и вложенные пробелы
Не работающий SQL OR
Функции дат в SQL
Сиротские Master записи
Refresh для запросов
Default Cursor после завершения выполнения запросов
32-битное соединение с сервером Sybase
Ошибка BDE32 $2104
Ошибка ApplyUpdates
Ошибка создания дескриптора курсора
Нарушение уникальности записи
Ошибка псевдонимов
IIS, Novell и ошибки бюджета

ГЛАВА 6. Мультимедиа
Мультимедиа-программирование в Delphi
Звук в Delphi-приложении
Извлечение звука из динамика в Windows 9x
Использование DirectSound и DirectSound3D
Формат WAV файла
Создание пустого WAV файла
Создание WAV файла
Проигрывание WAVE файла, помещенного в ресурс
Декомпиляция файла формата WAV и получение данных
Удаление содержимого WAV файла
Получение идентификатора диска
Определение типа CD
Серийный номер AudioCD
Контроль джойстика в Delphi

ГЛАВА 7. Аппаратное обеспечение
Дата BIOS из приложения
Получение списка процессов
Определение загрузки ресурсов GDI и USER
Получение информации о процессоре
Определяем процессор
Загрузка процессора
Работа с портами микропроцессора
CPU Speed
Форматирование носителя
Определение свободного места на диске
Серийный номер тома
Управление дисководом
Управление метками томов диска
Проблемы утечки памяти при
использовании FindFirst, FindNext
Копирование с диска на дискету и обратно
Получение размера файла
Определение устройства CD-ROM
Открытие и закрытие привода CD-ROM
Использование клавиш для управления компонентами
Как отловить нажатия клавиш в системе
Хитрость KeyPreview
Перехват клавиатуры
Блокирование ввода информации
Имитация нажатия клавиши
Индикация статуса клавиш
Перехват курсорных клавиш
Создание собственных "горячих" клавиш
Enter для обхода элементов формы
Отключение клавиш CTRL+ALT+DEL, ALT+TAB,
CTRL+ESC из приложения
Отключение ALT+F4
Недоступность комбинаций ALT+TAB
Управление клавишей Caps Lock
Чтение и установка клавиши NumLock
Определение нажатия клавиши PrintScreen
Управление лампочками на клавиатуре
Прерывание клавиши Tab
Переключение языка
Управление кнопкой Windows "Start" из приложения
Имитация ввода с клавиатуры для DOS приложений
Замена кнопок мыши
Перехват событий "мыши"
Мышь над формой
Подсветка компонента во время перемещения
над ним "мыши"
Покидание "мыши" области компонента
Добавление события OnMouseLeave
Определение и использование курсора
Использование анимированных курсоров
Управление MouseOver через Hint
Количество заданий на печать
Замена принтера по умолчанию
Замена порта принтера
Работа с последовательными портами
Асинхронная связь
AT команды модема
S регистры модема
Список установленных модемов
Определяем состояние модема
Набор номера модемом
Использование TAPI
Управление PC Speaker

ГЛАВА 8. Операционная система
Определение версии ОС
Определение размера оперативной памяти
Откуда инсталлировалась Windows
Регистрация расширение файла
Имя программы и расширение
Изменения в реестре
Загрузка приложения при запуске Windows
Панель управления
Панель управления из приложения
Определение имени Группы Запуска
Путь / имя папки "My Computer"
Вызов стандартного системного окна "О программе"
Замена обоев на рабочем столе
Управление хранителем экрана
Окно свойств компьютера из приложения
Очистка коpзины (Recycle Bin)
Кнопки в панели задач Windows 9.x
Замена изображения на кнопке "Пуск"
Управляем кнопкой "Пуск"
Управляем пунктом меню "Документы"
Поиск файла из приложения
Определение изменений на дисплее
Управляем режимами дисплея
Прячем панель задач
Пиктограмма приложения в панели задач
Удаление пиктограммы из панели задач
Сохранение приложения в виде пиктограммы
Загрузка пиктограммы
Создание ярлыков
Ярлык на рабочем столе
Изменение координат ярлыков на рабочем столе
Пиктограмма приложения в окне Tray
Всплывающее меню и Tray
Рисование на минимизированной пиктограмме
Метка диска под Win32
Процедура форматирования
Подсчет размера директории
Поиск загрузочного диска
Поиск на жестком диске
Управление каталогами и файлами
Получение времени создания файла
Определение размера файла
Управление атрибутом файла date/time
Ассоциирование типов файлов
Сокращенные имена файлов
Восстановление длинных имен файлов по
известным коротким
Блокировка файла
Информация о версии файла
Поиск строки в текстовом файле
Чтение атрибута файла "Last Accessed"
Копирование файлов
Удаление файлов
Проблемы использования DeleteFile()
Открытие файла общего доступа
Открытие файла только на чтение
Чтение данных из файла
Чтение и запись файлов
Чтение из файла длинной строки
Файл с множеством записей
Доступ к нетипизированному файлу
Readln для более чем 255 символов
Импорт больших файлов с разделителями
Слияние двух бинарных файлов
Объекты и TRegistry
Работа с RegIniFile
Registry, работающий со значениями
типа REG_MULTI_SZ
Сообщения Windows
Сообщение для всех главных окон
Центрирование информационного диалога (MessageDlg)
MessageDlg в обработчике OnExit
Текст на кнопках MessageDlg
Использование Shell_NotifyIcon
ProcessMessages
Избавление от системного окна с ошибкой
Использование InputBox и InputQuery
Проверка используемого в системе шрифта
Добавляем новый шрифт
Использование шрифтов в приложении
Свойства шрифта Style/Color в виде строки
Включение шрифта как ресурс в *.EXE
Изменение шрифта у текста всплывающей подсказки
Масштабирование формы и шрифтов
PopupComponent и шрифты
Прием файлов из Program Manager
Drag & Drop c Windows 95 Explorer
Drag & Drop для ярлыков
Drag & Drop с минимизированным приложением
Перетаскивание элементов управления c
рамкой контура
Вопросы по Drag & Drop
Перемещение формы не за заголовок
Рассуждения о потоках
Вызов процедуры в другом потоке
Использование в приложении своих курсоров
Использование MemoryStream
Преобразование координат
Вызов контекстного меню в координатах курсора мыши
Размер диалогового окна
Заголовок диалогового окна
Запуск приложения в полноэкранном режиме
Добавление своих пунктов меню в системное меню окна
Получение различных диалогов из шаблона формы
Задержка не используя время CPU
Моментальный снимок экрана
Количество цветов в системе
Быстрый способ вывода графики
Как бороться с "квадратичностью" Image
Копирование содержимого экрана на форму
Обзор сети (типа Network Neighborhood)
Определение своего IP адреса
Остановка и запуск сервисов
Определение доступных серверов приложений
Как узнать доступные сетевые ресурсы?
Получение сетевого имени пользователя
Список пользователей в Windows NT, Windows 2000
Определение имени компьютера средствами WinAPI
Подключение сетевого диска в Delphi
Перезагрузка Windows из приложения
Ошибка отключения сетевого диска
Работа с плагинами
2% ресурсов, в режиме редактирования
Hard mode без перерыва
Зависание Delphi 4, 5
Ошибка 1157
Борьба с SoftIce

ГЛАВА 9. Компоненты
Цветная кнопка
Нажатие кнопки
Обработка щелчка нескольких кнопок, используя
их заголовок
Смена пиктограммы BitBtn во время работы приложения
Кнопка с несколькими строками текста
Альтернатива кнопкам в Delphi
Программное открытие ComboBox
Выпадающий список ComboBox
Hint в выпадающем списке ComboBox
Автоматический формат даты в компоненте Edit
Работа с массивом компонентов
Расположение текста в правой части TEdit
Ограничение TEdit на ввод не цифровой информации
Числовая маска компонента Edit c помощью OnKeyPress
Использование SetFocus в OnExit компонента Edit
Матрица на основе TEdit
Денежное поле редактирования в TEdit
Отслеживаем позицию курсора в EditBox
3D рамка для текстовых компонентов
Комбинация TLabel и TEdit
TLabel + TEdit без контейнера
Бегущая строка
Советы по работе с палитрой
Изменение палитры при выводе изображения
Хитрость вывода изображения
Рисование прямоугольника на изображении
Множественный выбор в ListBox
Изменение позиций элементов ListBox с
помощью Drag&Drop
Улучшение компонента ListBox
Использование цвета в ListBox
Инкрементальный поиск в ListBox
Уменьшение мерцания ListBox в обработчике OwnerDraw
Пример Ownerdraw для Listbox
Прокрутка в TListBox
Щелчок в пустой области TListBox
Использование выбранных элементов TListBox
Расширение TListBox
Табуляция в графическом ListBox
Выравнивание в ListBox
ListBox с графикой
Горизонтальная полоса прокрутки в TListBox
Динамическое добавление пунктов меню
Очень длинные меню
Слияние MDI меню
Назначение обработчика MenuItem OnClick
Пиктограммы в пунктах меню
Исправление пиктограмм в недоступных пунктах меню
Вызов PopupMenu
Динамическое создание пункта меню в PopupMenu
Обработчик динамически созданного пункта меню
Динамическое создание пунктов подменю в PopupMenu
Использование контекстного меню с VBX
Вызов контекстного меню в позиции курсора
Событие "Key press" и курсорные клавиши в TMemo
Поиск и замена текста в TMemo
Текущая позиция курсора в TMemo
TMemo и StringList
Использование встроенного отката в TMemo
TMemo со свойствами Строка/Колонка
Ограничение длины и количества строк в TMemo
Использование шрифтов и стилей в TMemo
Добавление строк в TMemo
Вставка текста в TMemo
Импортирование файла в TMemo
Создание страниц TNoteBook во время работы приложения
Проблема с освобождением ресурсов TNoteBook
TNoteBook как контейнер для форм
Добавление и удаление страниц в TNoteBook
TPaintBox в буфер обмена
Отрисовка TOutline
Поточность TOutline
Раскрытие пути к элементу TOutline по его индексу
Перемещение панели мышью на форме во
время выполнения программы
Панель с изменяющимися размерами
Компонент с вложенной панелью
ProgressBar в StatusBar
ProgressBar с невидимой рамкой
Некорректность реализации свойства BorderWidth
TrackBar для эстетов
Чтение текста RichEdit из базы данных
Подсчет слов в RichEdit
Ошибка RichEdit в Windows NT
Проблема печати RTF
Исправление загрузки RTF текста через поток
Предел на размер текста в RichEdit
Вставка текста в TRichEdit
Позиция курсора в TRichEdit
Прокрутка TRichEdit
Модернизация компонента TRichEdit
Группа радиокнопок и ActiveControl
Синхронизация двух компонентов ScrollBox
Мерцание ScrollBar
Двойной щелчок на TSpeedButton
SpeedButton и Glyph
Обработчик события OwnerDraw в компоненте StatusBar
Показ всплывающих подсказок в строке состояния
Дополнительная информация в строке состояния
Установка атрибутов "только для чтения" у столбцов компонента StringGrid
Помещение изображения в ячейку StringGrid
Сохранение и чтение StringGrid
TStringGrid с переносом текста в ячейках
StringGrid и файловый поток
Выравнивание текста в колонках StringGrid
Помещение компонентов в StringGrid
Выбор строки/колонки компонента StringGrid
Ширина колонок StringGrid
Цвет неактивной ячейки StringGrid
Вставка и удаление строк в StringGrid
Обновление картинки в ячейке StringGrid
Многострочность в заголовках колонок StringGrid
StringGrid без выделенной ячейки
Один щелчок на StringGrid вместо трех
StringGrid как DBGrid
Авторазмер для StringGrid
Раскрашенный StringGrid
Использование Tab в StringGrid как Enter
Поиск в StringGrid по маске
Потеря визуального курсора в StringGrid
Разрешение экрана и StringGrid
Форматирование ячеек TStringGrid
Добавление элементов управления в TTabbedNotebook
и TNotebook
Недоступная закладка в TabbedNotebook
Динамическое создание объектов в TabbedNotebook
Доступ к страницам TabbedNotebook
Перемещение на страницу TabSet по имени
Изменение количества закладок в TabSet во время выполнения программы
Ускорение работы TreeView
Поточность TreeView
Получение доступа к узлам TreeView
Использование шрифта в TreeView для выделения узлов
Отмена вставки нового узла в TreeView из приложения
Динамическое создание компонента TTable
Динамическое создание файла базы данных
Синхронизация таблицы и StringList
Создание индекса во время выполнения программы
Проверка изменения данных таблицы
Использование DBIOpenLockList
Заполнение DBComboBox и DBListBox
Ошибка в DBComboBox или особенность работы?
Различные цвета строк в DBCtrlGrid
Перевод в верхний регистр первого вводимого символа в DBEdit
Исправление DBEdit MaxLength
Поиск и управление TDBEdit / TField
Insert / Overwrite с помощью DBEdit
Использование опции MultiSelect в DBGrid
Помещение компонентов в DBGrid
Сортировка колонок в DBGrid
DBGrid с цветными ячейками
Показ изображений в DBGrid
Пример формы запроса на Delphi
Изменение размеров DBGrid
Перемещение данных из DBGrid
DBGrid и клавиши акселерации
DBGrid - свойства FixRows и FixCols
DBGrid - поддержка одинарного щелчка
Работа с несколькими записями
Предохранение от автоматического добавления записи
Перехват события компонента DBGrid OnMouseDown
Использование Enter как Tab в DBGrid
Обновление вычисляемых полей в DBGrid
DBGrid без вертикальной полосы прокрутки
Многострочный DBGrid
DBGrid DefaultDrawDataCell
TDBGrid - копирование в буфер обмена
DBGrid с номером строки
Текстовое содержимое ячейки DBGrid
DBGrid - выбранные строки
Улучшенный DBGrid
Пример Drag & Drop между двумя DBGrid
Контроль данных в данных DBGrid
Заголовок в DBGrid
Обновление DBGrid после редактирования
отдельной записи в отдельной форме
Решение проблемы передачи фокуса DBGrid
Позиция ячейки в DBGrid
Сортировка DBLookupComboBox по вторичному индексу
Значение DBLookupComboBox
Две колонки в DBLookupComboBox
Проблема хранения DBImage
Копирование текста DBMemo
Поиск текста в DBMemo
Пример KeyDown компонента DBNavigator
Свойства кнопок DBNavigator
DBNavigator без иконок
Настройки всплывающих подсказок в DBNavigator
Выключение кнопок в DBNavigator
Получение индекса компонента в списке родителя
Дублирование компонентов и их потомков во время выполнения приложения
Refresh или Repaint?
Имя класса компонента и модуля
Пример компонента "HotSpot"
Прозрачный компонент
Создание свойства массива компонентов
Показ всплывающих подсказок компонентов
Создание компонентов для работы с базами данных
Позиция курсора в TEdit
Файл типа Tlist
Сохранение содержимого TreeView
Использование шрифта в TreeView
TImage - эффект плавного перехода
TOutline - чтение из файла
TOutline - Drag & Drop
Компонента HTML - редактора
Диалог Find в WebBrowser (IE4 ActiveX)
Canvas и освобождение дескрипторов
Определение свойства объекта


ГЛАВА 10. Классы
Поиск класса
Создание синего экрана установки
Показ логотипа при запуске приложения
Круглый логотип при запуске приложения
Деактивация приложения
Невидимая главная форма
Приложения без форм
Окно произвольной формы
Окно без заголовка
Добавление пунктов в системное меню программы
Создание формы на основе строки
Форма OnTop
Проблемы с fsStayOnTop
Обработка запроса на максимальное раскрытие окна
Минимизирование формы при запуске
Чтение флажка "Run Minimized"
Предотвращение закрытия формы
Предотвращение изменения размеров формы
Масштабирование окна
Текущая позиция окна
Сохранение размеров, позиции и состояния окна
Определение перемещения формы
Восстановление размера окна
Помещение VCL компонентов в область заголовка
Перемещение формы не за заголовок
Помещение формы в поток
Рисуем на рамке окна
Вызов функций из различных дочерних MDI окон
Динамическое создание формы
Создание формы с небольшой шириной
Управление максимизацией формы
Закрытие модальной формы
Модальные формы и минимизация
Модальные диалоги для всей системы
Минимизация окон приложения
Динамическое создание / закрытие формы
Заполнение изображением MDI формы
Удаление заголовка у дочерней MDI формы
Проблема закрытия дочернего MDI окна
Скрытие дочерних MDI форм
Создание главной формы по условию
Мерцание формы
Слияние меню дочернего и главного окна
Прямой вызов метода Hint
Устойчивые всплывающие подсказки
Создание Hint окна
Канва от THandle
Изменение цвета
Прозрачные формы и изображения
Использование пиктограммы в качестве глифа
Использование Parser
Пример использования Parser
Преобразование PChar в StringList
Создание списка StringList c объектами
StringList, владеющий объектами
StringList и потоки
Запись строки в поток с помощью TWriter / TReader
Встроенные форматы буфера обмена
Копирование в буфер обмена
Просмотр буфера обмена
Копирование в буфер обмена большого файла
Буфер обмена и потоки
Поддержка команд Cut, Copy, Paste
Копирование формы в буфер обмена
Линейка прогресса в консольном приложении
Высокоточный таймер
Информация о DataLink

ГЛАВА 11. Internet
UUE кодирование
Проблемы ISAPI в Delphi 3
Dialer
Проверка URL
Проверка соединения с провайдером
TCLIENTSOCKET и TSERVERSOCKET
Работа с куками
Объект DocInput
Объект DocOutput
Захват текущего URL у MSIE
IP адрес и имя хоста
Обработка ошибок WinSock

ГЛАВА 12 . OLE
Получение данных из Program Manager через DDE
Управление Program Manager в Windows 95 с
помощью DDE
Добавление группы в Program Manager
DDE - передача текста
COM
OLE тестер
Чтение сложных OLE документов
OLE сервер
Интерфейс OLE AutoServer
Вызов Delphi DLL из MS Visual C++ II
Проблема использования в DLL чисел
с плавающей точкой
DLL - убийственная утилита
Импортирование или "обертка" вызовов функций DLL
Uses в DLL
Функции VER.DLL

ГЛАВА 13. Часто задаваемые вопросы (FAQ)
Возможно ли загрузить BP программу ...?
Если я компилирую мой BP7 проект в Delphi, могу ли
я использовать с ним интегрированный отладчик? ...
Могу ли я воспользоваться вторым монитором ...?
Когда я компилирую код с использованием
модуля WinPrn, Delphi говорит, что не может
найти WinPrn.DCU.
Почему при закрытии окна модуля (pas) также
закрывается и окно с формой?
В каком количестве компоненты используют GDI
ресурсы?
Как хранится в Delphi код формы?
Почему простейшие EXE файлы имеют такой
большой размер ...?
Почему моя программа не может найти ресурсы...?
Как поменять ширину и высоту IDE редактора
по-умолчанию?
Как программно поменять обои Windows?
Как поменять обои в Windows 98/Windows 2000 ...?
Можно ли рисовать непосредственно на
DeskTop компьютера?
Как отловить PnP изменения в системе?
Можно ли определить, что мое приложение
запущено под Windows NT?
Как определить системную директорию и
директорию Windows?
Как удалить файл в корзину?
Какое наилучшее место в коде программы,
откуда можно вызвать окно с логотипом
программы при ее запуске?
Как можно программно перезагрузить Windows?
Как передать код выхода (errorlevel) запустившей
программе, ...?
Как можно запустить *.lnk?
Как определить, что запущена среда Delphi
или C++ Builder?
Как можно обойтись без TTimer ...?
Какую информацию показывает Инспектор Объектов?
Как определить класс компонента, при щелчке на
котором появляется контекстное меню?
Возможно ли создание глобальных переменных
в Delphi?
Какие вопросы я должен учесть при создании
приложения ...?
Как отключить монитор (перевести в "зеленый" режим)?
Как создать не VCL дисплей для отображения
текста и изображений?
Как обновить пиктограммы на рабочем столе?
Как извлечь доли составляющих цветов из
данного цвета?
Как извлечь пиктограмму из *.ЕХЕ или *.DLL?
Как создать мигающую иконку (свернутое окно)?
Как добавить свой пункт в системное меню программы?
Как создать наклонный шрифт?
Возможны ли изменения размера шрифта компонентов ...?
Как мне изменить Font.Style ...?
Можно ли сменить шрифт всплывающих подсказок?
Как мне определить длину строки в пикселах ...?
Как можно вывести диалог выбора директории?
Как получить серийный номер тома жесткого диска?
Как получить список доступных носителей?
Как распознать тип носителя?
Как можно узнать о готовности носителя ...?
Как можно получить длинное имя файла по
его короткому имени?
Как узнать дату и время последнего доступа к файлу?
Как показать стандартное окно копирования файлов?
Как мне определить каталог, из которого запущено
мое приложение?
Почему ... мерцающий курсор исчезает при
закрытии диалога?
Можно ли определить полный путь и имя файла
запущенной DLL из самой DLL?
Как получить доступ к файлам, которые пользователь
перетаскивает на форму с помощью мыши?
Как запустить Windows Explorer, открытый на какой-то
определенной папке?
Как сбросить на диск кэшированную информацию о
бинарном файле?
Как печатать в Delphi без TPrinter?
Как мне получить количество пикселей на дюйм,
поддерживаемое принтером?
Как вместо печати графикой "сказать" принтеру,
чтобы печатал встроенными шрифтами?
Как можно послать строку raw формата на принтер?
Можно ли программно закрыть дверку CD-ROM?
Может ли TMediaPlayer в Delphi проигрывать AVI файлы?
Как проиграть AVI на полный экран?
Определение CD трэка
Хочу использовать Beep() функцию, но почему-то
получаю ошибку
Как поменять приоритет моего приложения?
Можно ли программно закрыть какое-либо приложение?
Какой порядок наступления событий при создании и
показе формы?
Как создать новую форму, которая бы не отбирала
фокус у существующей?
Почему ... возникает ошибка "Cannot change Visible
in OnShow or OnHide" ...?
Как запретить кнопки системного меню окна "Закрыть", "Открыть"?
Можно ли реагировать на максимализацию/
минимизацию окна до того, как это произойдет?
Как предотвратить перемещение или изменение
размеров моей формы?
Как отследить окончание изменения размера или
перемещения окна?
Как мне разместить форму в центре экрана?
Как получить хэндл Панели задач (TaskBar)?
Как спрятать мое приложение из Панели
задач (TaskBar)?
Как определить размер Desktop-TaskBar?
Как спрятать полоску TaskBar?
Как создать приложение, которое работало бы в
трее (где часы)?
Как мне привязать кнопку к нижней границе окна ...?
Как получить хэндл какого-либо определенного окна ...?
Можно ли создать прозрачную форму?
Как мне совершить некоторые действия после того,
как форма будет нормально показана? ...
Как вы создаете "модальную" форму в MDI приложении? ...
Почему я получаю исключительную ситуацию
"EInvalidOperation: Cannot make a visible window modal" ...?

Каким способом можно сообщить активному
дочернему MDI окну о том, что была нажата
кнопка "Сохранить" ...?
Расходует ли Delphi системные ресурсы при открытии и
закрытии модальных окон? ...
Во время выполнения программы каждое вновь
открытое дочернее окно возникает немного ниже и
правее предыдущего. ...
Как сообщить какую-то глобальную переменную
всем (в т.ч. скрытым) окнам программы?
Как определить нажаты ли Shift, Control, Alt в
определенный момент?
Поле редактирования автоматически отрабатывает
CTRL-C, CTRL-X, CTRL-Y и CTRL-Z ...
Существует ли функция прокрутки формы с помощью
клавиш? ...
Почему, когда пользователь нажимает на кнопке
SpeedButton, у компонента TEdit не возникает события
OnExit? ...
Как мне задать порядок обхода элементов управления клавишей Tab?
Некоторые компоненты не реагируют на изменения курсора ...
Почему некоторые визуальные компоненты типа TPanel и TEdit не имеют свойства Canvas?
Как поместить прозрачный текст на Canvas TBitmap?
Как нарисовать линию?
Каким образом я могу сделать у компонента границы типа "sunken"?
Как проще перемещать компонент во время работы программы?
Возможно ли получить доступ к компонентам по их имени ...?
Как создать BitBtn с переносящимися надписями на кнопках?
Как можно назначить быструю клавишу объекту, не имеющему Caption?
Как сделать так, чтобы при вводе пароля в поле редактирования присутствовал эффект "No Echo"?
Как ограничить количество вводимого текста в Tedit ...?
Как включить режим перезаписывания в TMemo и TEdit?
Какой объем текста может содержать компонент Delphi Memo?
Как вставить содержимое файла в TMemo с текущей позиции?
Каким образом можно установить табуляторы в элементе управления TMemo?
Как мне показать содержимое Memo поля в DBGrid?
Как мне сделать так, чтобы определенное поле в компоненте TDBGrid не выводилось?
Как сказать компоненту другого окна скопировать свое содержимое в буфер обмена Windows?
Существует ли способ заполнения TListbox или TMemo за один проход?
Существует у компонента ListBox свойство, позволяющее выровнять текст по правому краю?
Как при добавлении новых элементов ... делать их видимыми? ...
Как мне отменить выбор одного или нескольких элементов в компоненте ListBox или ComboBox?
Почему, если в компоненте ComboBox свойству "Style" присвоить значение "csDropDownList", то следующая строка ничего не делает?
Как "ловить" сообщения о прокрутке TScrollBar?
Где я могу найти исходный код страничных компонентов ...?
Почему TTabbedNotebook использует так много системных ресурсов?
Существует ли в природе компонент ... позволяющий создавать вертикальные ... закладки в блокноте.
Как можно добавить акселераторы к закладкам PageControl ...?
Как мне обойти ошибку Stream Read Error?
Какое лучшее решение для создания группы RadioGroup и размещения в ней кнопок RadioButton? ...?
Как получить имя залогинившегося пользователя?
Где мне можно получить помощь по работе с ReportSmith, InterBase и связке SQL Links/ODBC?
Как мне избавиться от заставки ReportSmith при запуске моего отчета?
При попытке запустить приложение ... я получаю исключение EDatabaseError ...
Что значит ошибка IDAPI $2C08?
Где мне найти список и описание функций BDE и типов данных?
Вы можете дать определение "IDAPI"?
Возможно ли программным путем добавить псевдоним к файлу IDAPI.CFG?
IDAPI необходим для доступа к данным в Delphi? ...
При редактировании записи я получаю сообщение DBEngine ...
Как мне определить номер записи набора данных?
Как узнать, что текущая запись в наборе данных изменилась?
Может ли BDE API или другие доступные DLL паковать таблицы dBASE?
Как мне посмотреть dBASE записи, помеченные для удаления?
Как в табличной сетке создать колонку ...?
Почему ... индексы не создаются ...
Почему я получаю "Index out of range" ...?
Может ли BDE API или другие доступные DLL воссоздавать разрушенные индексы ...?
Каким образом, программным путем, создать таблицу Paradox с автоприращиваемым (Auto Increment) типом поля? ...
Какой в Delphi эквивалент Paradox TCursor?
Почему я не могу использовать опцию ixUnique ...?
В чем разница между "SetKey / GoToKey" и "FindKey"? ...
Как мне воспользоваться функцией Locate в неиндексированном поле?
Каким образом можно не допустить появление диалогового окна с запросом пароля, если я открываю таблицу, защищенную паролем?
... я получаю следующую ошибку: "Token not found. Token :dbo. line number:1". В чем дело?
Как мне создать маску в компоненте TDBEdit?
Компонент TDBGrid имеет события OnMouseDown, OnMouseUp и OnMouseMove?
Как мне узнать, какая запись и какое поле TDBGrid в данный момент являются текущими?
Как мне выделить текущую строку в TDBGrid?
Как мне изменить цвет ячейки TDBGrid?
Как мне определить реальный размер BLOB поля,
хранящегося в таблице?
Какие версии Informix (Online, I-NET) поддерживают
SQL Links?
... После диалога авторизации я получил сообщение об
исключительной ситуации типа "Passthrou