Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Delphi Russian Knowledge Base 2.3


Автор: Vit 31.1.2005, 04:32
Вышла новая версия нашего off-line delphi FAQ.
Delphi Russian Knowledge Base 2.3


Теперь у DRKB появилась своя домашняя страничка

http://www.drkb.ru


На ней же линки для скачивания

Размер файла: 10 Mb
Что нового:
1. Добавлено более 600 новых статей
2. Существенно переработаны и дополнены старые статьи, исправлено или заменено большое количество исходных кодов
3. Особое внимание уделено вопросам классификации, перекрёстным ссылкам, поиску и удалению дупликатов.
4. Масса мелкий исправлений.


Об ошибках, замечаниях, дополнениях и пожеланиях можно сообщать прямо в этот топик.


Огромное спасибо всем, кто откликнулся и помог сделать эту версию лучше!

Вот примерный список новых статей:

Не читаются русские буквы в Database Desktop Updated!
Как отследить изменения дисплея? Updated!
Как извлечь иконку из EXE или DLL? Updated!
Дельфи компонент для подкраски синтаксиса Updated!
Вскрытие запароленной таблицы Paradox Updated!
Восстановление записи dBase Updated!
Как получить параметры Alias? Updated!
TStringGrid --> HTML New!
Как получить количество активных ссылок на строку? New!
BCD --> String New!
CRT для консольного приложения New!
How to get all the resource names that are loaded in a given application? New!
Сохранение и загрузка двумерного динамического масива New!
Список handle всех окон моего приложения New!
Method pointers --> function pointers New!
Ограничить подвижность формы New!
Манипулирование кнопками OpenDialog New!
Как извлечь иконку из файла ярлыка? New!
Как определить использует ли пользователь стили? New!
Облегчённый вариант класса TRegistry New!
Чтение email адресов из Outlook .dbx файлов New!
Сохранить TImagelist в файл со всем содержимым New!
Как узнать форма активна или нет? New!
HTML --> RTF New!
String --> HKEY New!
HKey --> String? New!
Как сделать procedure/function с переменным количеством параметров? New!
Rotate a 2D Point New!
Если нажато более 2х клавиш одновременно... New!
String --> BCD New!
Как найти строку в строке начиная с определённой позиции? New!
Печать в порт принтера New!
Как найти все установленные компоненты? New!
Как прочитать адрес отправителя? New!
Как экспортировать данные из StringGrid в Excel? New!
Как прочитать выделенный текст из IE? New!
Зоздать новый Outlook Contact? New!
Как сохранить Outlook календарь как website? New!
Как вставить RTF в Word? New!
Как использовать Microsoft Speech API? New!
Как получить длину wav в секундах? New!
Как снять пароль с Excel файла? New!
Как перейти к нужному ключу в Regedit? New!
Flash SWF --> EXE New!
Hook функций в собственном приложении New!
Как выключить master volume в звуковой карте? New!
Как получить список всех зарегистрированных typelibs? New!
Поиск в TreeView по тексту New!
Как узнать размер картинки для JPG, GIF и PNG файлов? Updated!
После логина возникает EExternalError 0xC0000008 New!
Как восстановить повреждённую таблицу? New!
Как работать с выделенными запясями в TDBGrid? New!
Explode / Implode a String? New!
Быстрые операции с очень большими строками New!
Использование PHP-like операций с массивами New!
WideString -->String New!
String --> WideString New!
Регулярные выражения New!
Количество вхождений подстроки в строку New!
Как использовать format parameter больше одного раза? New!
Создание DBExpress соединения в Runtime New!
Как послать данные другому приложению используя auto-drag-n-drop? New!
Создание базы данных в run-time с ZEOS? New!
Шифрование файлов при помощи NTFS функций New!
File List View in File Dialogs New!
Как удалить сегодняшнюю дату из TDateTimePicker? New!
Проверяем находится ли файл на локальном диске New!
Как сменить картинки на TDBNavigator? New!
Split/merge files? New!
Способы уменьшения размера Exe файлов полученных с помощью Дельфи? New!
Как восстановить индексы? New!
Создание автоинкрементного поля SQL запросом? New!
Index not found Exception New!
Загрузить все записи в Stringlist одним махом? New!
Как забыть о необходимости разрушать объекты? New!
Как передвинуть колонку в TDBGrid? New!
Как предотвратить Data Corruption (повреждение данных)? New!
Реализовать фоновую работу программы New!
Как сделать ADOConnection с использованием OLE-Automation? New!
Как ускорить поиск? New!
Мигание при добавлении строк New!
Конвертируем TDateTime to Unix Timestamp New!
Цвета в TDBGrid New!
Сохранить изображение в формате JPEG New!
Выделить все поля в TDBGrid? New!
Краткий словарь терминологии CORBA New!
Удалить dbase index flag New!
Многомерное представление данных (статья) New!
Как показать удалённые записи New!
Сохранить F1Book в Blob поле New!
Мемо в DBGrid New!
Как узнать версию таблицы New!
Как добавить пароль к таблице New!
Технология dbExpress (статья) New!
Библиотека реализующая практически все распространённые алгоритмы шифрования и хэширования New!
Работа над ошибками New!
Методы компрессии/декомпрессии New!
Самый продвинутый DBGrid New!
Rave Report - Руководство разработчика New!
Соглашения о вызовах New!
Ревизия интерфейсов (статья) New!
Основы языка SQL (статья) New!
Использование модуля ShareMem New!
Создание окон произвольной формы (Статья) New!
Страницы Excel — компонент F1Book New!
Элементы управления Windows XP New!
Использование ADO (статья) New!
DDE (статья) New!
Технология DataSnap (статья) New!
Клиент многозвенного распределенного приложения (статья) New!
Сервер приложения (статья) New!
Пользовательский интерфейс Windows XP New!
Манифест Windows XP New!
Компонент TXPManifest New!
Включение манифеста Windows XP в ресурсы приложения New!
Визуальные стили и темы оформления New!
Визуальные стили в Delphi New!
Theme API New!
Компоненты настройки цветовой палитры New!
TComponent New!
TPersistent New!
TObject New!
TControl New!
TWinControl New!
TCustomControl New!
TGraphicControl New!
Rave Report - Руководство пользователя New!
Что такое множества? New!
Функции для работы с памятьюNew!
Функции и процедуры для работы с drag-and-drop операциями New!
Функции преобразования UNICODE и ANSI строк New!
Отображение файлов в память New!
Как использовать параметры коммандной строки? Updated!
Функции и процедуры управления мышью New!
Поддержка процедур завершения программы New!
Функции и процедуры для работы с данными перечислимого типа New!
Перемещать объект на сложном фоне New!
Функции и процедуры для финансовых вычислений New!
Арифметика New!
Тригонометрические функции и процедуры New!
Операции над числовыми массивами New!
Имитировать события мыши New!
Примеры работы с динамическими массивами Updated!
Объектно-ориентированное программирование (статья) New!
Доступ к COM серверам Microsoft Office из Delphi 5 (Статья) New!
Приостановить компьютер (sleep) New!
Размыть изображение New!
Узнать о завершении работы Windows New!
Открыть файл JPEG New!
Сыграть звуковой файл без компонентов New!
Как ограничить перемещение курсора? New!
Создание модулей расширения Microsoft Office New!
Естественные ключи против искуственных ключей New!
Delphi и COM (статья) New!
Архитектура BDE и его особенности при работе с SQL-серверами(статья) New!
Delphi и Windows API (Статья) New!
Как добавить файл в меню Пуск/Документы New!
Распознавание кодировки New!
Пример загрузки файлов в ListView с иконками Updated!
Как очистить canvas Updated!
Как выдавить текст New!
Как вывести полупрозрачный текст New!
Как различать звуковые CD New!
Interprocess communication на примере keyboard hook (статья) New!
Особенности работы с БД на MS SQL Server 2000 из Delphi 5 (статья) New!
Поиск по мемо полям New!
Как вернуть результат в виде XML? New!
Как сравнить быстродействие алгоритмов New!
Как выводить hint при движении мыши над списком New!
Как вывести диалог Обзор папок New!
Как вычислить математическое выражение Updated!
Как засечь время New!
Как узнать об изменении системного времени New!
БД - хранилище объектов (статья) New!
Как делать переносы в Hint New!
Перенос приложений с BDE на dbExpress (статья) New!
Использование Microsoft ScriptControl (статья) New!
AWE или как выйти за пределы 32 битной адресации New!
Синхронизация процессов при работе с Windows (статья) New!
Использование TwebBrowser (статья) New!
Компоненты ADO (статья) New!
CryptoAPI (статья) New!
Использование ассемблера в Дельфи (статья) New!
Как сравнить bookmarks в таблице? New!
Генераторы и их использование New!
TList New!
TStrings и TStringList New!
TStream New!
Справочник по функциям работы со строками New!
Справочник по функциям работы с PChar New!
Справочник по функциям работы с файлами New!
Список режимов открытия файлов New!
Функции форматирования строк New!
Функции преобразования чисел с плавающей точкой New!
Внутренний интерфейс Drag and Drop New!
Ярлычки и оперативная подсказка New!
Динамический обмен данными (DDE) New!
Использование интерфейса OLE New!
Как выводить элементы списка разными шрифтами New!
Перехват сообщений IE New!
Save all TWebbrowser Frame Sources? New!
Create a TWebBrowser at Runtime? New!
Как сохранить все картинки TWebbrowser? New!
Find the convex hull of 2D points? New!
Получить список процессов в компьютере сети New!
Как загрузить webpage с скрытым IP? New!
How to add alternative text to a Webbrowser image? New!
Узнать информацию о проксисервере New!
Rotate a 2D Point New!
Rotate a 3D Point around another 3D Point New!
Найти центр треугольника New!
Как найти и выделить текст TWebBrowser? New!
Как узнать имя домена Windows NT/2000? Updated!
Числа Фибоначчи New!
Send e-mails via WinSock API? New!
do an application loader with TCP? New!
Добавить HTML к TWebbrowser Document? New!
Програмно меняем Delphi's Tool list? New!
Spray effect New!
Как создать консольное asp.net приложение с событиями delphi? New!
Sharpen a Bitmap New!
Show a text progressiv as typed with a typewriter (horizontal/vertical) New!
Draw a polygon with Gouraud shading? New!
How to render a TRichEdit text onto a canvas? New!
Detect simple collision and transparency New!
Конвертация bitmap to sepia or greyscale New!
Работа с Jpeg New!
Двигаем крестик для показа значений X/Y New!
Изменение размеров JPEG Image? New!
Как сделать форму всегда позади всех окон? New!
How to scale bitmap by percent? New!
Как прочитать ROM-BIOS? New!
Как определить установлен ли screen saver? New!
Write/read a string to/from the serial port New!
Узнать/установить JPG resolution? New!
Как получить часть GUID? New!
Как узнать заряженность батарей? New!
Как заблокировать компьютер? Updated!
Как сделать Thumbnails? New!
Поддерживается ли MMX New!
Как вывести список привелегий? New!
Показать Choose Domain диалог? New!
Изменение привелегий New!
Проверить приложение на зависание? New!
Как получить информацию о системе? New!
Кто владелец taskbar buttons (NT)? New!
Как предотвратить Shut Down? New!
Как проверить запущен ли сервис? New!
Как проверить папку на shared? New!
Как получить список загруженных драйверов? New!
Как получить primary domain controller (PDC)? New!
Показать Run диалог New!
Управление NT-сервисами New!
Как использовать IP Address Control у себя? New!
Как установить переменные окружения? Updated!
Как изменить пароль для указанной сети или домена? New!
Как перевести компьютер в Stend-by или Hibernate? New!
Как читать REG_MULTI_SZ значение New!
Как сделать Multi Screen Emulator? New!
Как узнать количество памяти используемое процессом? New!
Как получить количество файлов в корзине и их размер? New!
Как скрыть/показать ActiveDesktop? New!
Как выгрузить Dll из памяти? New!
Как сделать Drag-n-Drop из чужого приложения? New!
Поддерживает ли система suspend? New!
Поддерживает ли система hibernation? New!
Запуск процесса в контексте другого пользователя New!
Как получить список всех расширений и их ассоциаций? New!
Как сделать System Restore point (XP)? New!
Как получить сообщение об изменении видео стиля? New!
Написание Terminal Services Client New!
Узнать не запущено ли приложение под Virtual PC? New!
Узнать не запущено ли приложение под VMware? New!
Как получить имя текщего стиля и имя цветовой схемы? New!
How to patch a process? New!
Частота мигания каретки New!
Как копировать/менять Clipboard text без использования VCL? New!
Disable CTRL+ALT+DELETE under XP New!
Путь к папке My Computer New!
Как получить список всех назначенных событий? New!
Как обновить все окна Internet Explorer? New!
How immediately start a service after its installation? New!
How to check if the Workstation is locked? New!
How to get the NT Domain and UserName of a Process? New!
Как получить и изменить координаты иконок на столе? New!
How to check, if a CD-Recorder is available? (WinXP) New!
Как определить насколько долго система находится в Idle? New!
Как прочитать и изменить doubleclick time? New!
Проверить не запущена ли terminal client session? New!
Как запустить процесс на конкретном процессоре в много процессорной системе? New!
Как получить событие о смене реестра? New!
Как вызвать Shutdown Windows dialog? New!
Сколько памяти использует IB на сервере? New!
Почему таблица или select показывается в Grid быстро, а перемещение в конец таблицы происходит долго? New!
Как выделить URL в TRichEdit? New!
How to implement a microsecond resolution Delay? New!
Как узнать статус меню? New!
Использование русских кодировок приводит к ошибке New!
Что такое фреймы? New!
В каких версиях IB поддерживаются уведомления о событиях (Event Alerts)? New!
Detect if a USB device is connected or disconnected? New!
Как посмотреть требуемые библиотеки для бинарника? New!
Проблемы с открытием базы данных. New!
Что такое ISC4.GDB? Для чего нужна эта БД? New!
Пропажа прав пользователей в Local IB после переноса New!
Как переносить базы данных между разными IB? New!
Включение WAL на NetWare ухудшает производительность на 80% при вставках записей, и только на 15% - при обновлениях. New!
Как оптимизировать запросы? New!
Каков максимальный размер базы данных IB? New!
Диалог подключения сетевого диска New!
Сколько БД я могу открыть в одной транзакции? New!
256-цветное изображение из res-файла New!
DLL и ресурсы New!
Использование DLL в качестве Plug-in New!
Разработка DLL в среде Borland Delphi (статья) New!
Duplicate Resources Error New!
Создание/пересоздание индекса New!
DLL со строковыми ресурсами New!
Практически все о взломе CD New!
Показ меток удаленных записей в dBASE-файлах New!
Как получить дату BIOS? Updated!
DBASE - Индексы выражений New!
Как узнать загрузку процессора? (NT/2000/XP) Updated!
DBFSeek и DBFLocate New!
Как получить информацию о процессоре? Updated!
Активизация и использование в IDE окна CPU New!
Создание RES-файла с помощью BRCC.EXE New!
Определение номера записи в таблице dBASE New!
Хранение данных в EXE-файле New!
Как правильно соединяться с базой данных под Personal Oracle New!
Как получить список таблиц в базе Access? Updated!
Как поймать свой RAISEERROR в Delphi New!
Как заставить Interbase принять COLLATE PXW_CYRL по умолчанию New!
Задание псевдонима программным путем New!
Создание таблицы FOXPRO New!
Как в Oracle создать sequence с некоторого номера New!
Как показать содержимое Memo-поля в DBGrid? Updated!
Позиция ячейки в TDBGrid New!
Как изменить цвет отмеченных записей в DBGrid New!
CheckBox в DBGrid New!
Как сделать, чтобы необходимая ячейка DBGrid получила фокус ввода New!
Выключение кнопок в DBNavigator New!
DbGrid со свойствами Col и Row New!
Буфер обмена и ячейки DBGrid New!
Нажать кнопку DBNavigator програмно New!
Настройки всплывающих подсказок в DBNavigator New!
DBNavigator без иконок New!
Свойства кнопок DBNavigator New!
Как сделать, чтобы в DBGrid вместо цифр были соответствующие константы New!
Текущая строка и поле в DBGrid New!
DbGrid со свойствами Col и Row New!
Как выделить цветом текущую строку в TDBGrid New!
DBGrid - сохранение конфигурации New!
DbGrid и множественный выбор New!
Решение проблемы передачи фокуса TDBGrid New!
Как программно перевести DBGrid в режим редактирования New!
Перемещение по таблице с помощью вертикальной полосы прокрутки New!
DBGrid CutToClipboard New!
Кам при прокрутке зафиксировать левое поле сетки? New!
Как в TDBGrid узнать над каким полем висит мышь? New!
Как поместить графическое изображение в TDBGrid New!
Как в TDBGrid pазpешить только опеpации UPDATE записей New!
Как заменить данные в столбце компонента TDBGrid New!
Как заблокировать TDBGrid от автодобавления новой записи New!
DBGrid DefaultDrawDataCell New!
DBTreeView своими руками New!
DBGrid с номером строки New!
Экспортировать DBGrid в HTML New!
Как удалить вертикальную полосу прокрутки (скроллбар) из DBGrid? New!
Как определить изменение фокуса строки в TDBGrid New!
Пример Drag and Drop между двумя DBGrid New!
Перемещение из DbGrid New!
Решение проблемы передачи фокуса TDBGrid New!
Копирование информации из DBGrid-а в Clipboard New!
Рисование текста в DBGrid New!
Использование Enter как Tab в TDBGrid New!
Как изменить число фиксированных колонок в TDbGrid? Updated!
Как вывести Hint для ячейки DBGrid New!
Симуляция нажатия кнопки при наличии DBGrid New!
Интерактивные SQL-запросы New!
Задать необходимый для печати принтер New!
Как открыть диалог добавления принтера New!
Определение параметров принтера через API New!
Подробное описание способа печати содержимого формы New!
Как изменить порт для принтера? Updated!
Как прочитать/установить принтер по умолчанию? Updated!
Получить список шрифтов и их размеров для текущего принтера New!
Как узнать драйвер принтера New!
Как получить информацию о заданиях на принтере New!
Как установить драйвер принтера New!
Получить список пользователей, подключённых к сети New!
Описание протокола DNS New!
Получение имени пользователя и домена New!
Описание протокола ICMP (Internet Control Message Protocol) New!
Протокол IMAP4 (Internet Message Access Protocol) New!
Пример HTTP Get - загружаем файлы и страницы из Интернета New!
ICQ2000 - сделай сам (статья) New!
Технологии взлома Email New!
Моё CGI-приложение при обращении к нему ничего не возвращает New!
Корпоративное Web приложение New!
Получить или установить задний фон в TWebBrowser New!
Как получить текст HTML Документа из TWebBrowser без тегов New!
Скопировать, удалить, вставить в TWebBrowser New!
Как сделать WebBrowser средствами Delphi? New!
GIF для HTML в EXE New!
Как получить цвет строки в HTML формате New!
Компонента HTML - редактора New!
Исследование E-Book Html Compiler 2.12 New!
Отправка файлов при помощи TClientSocket/TServerSocket Updated!
CrtSock - модуль для работы с сокетами в Delphi32 New!
Пример компонента типа XPButton New!
Как спрятать окно при запуске приложения? Updated!
Dec ---> Hex New!
Интерфейсы и published свойства New!
Интерфейс OLE AutoServer New!
Integer как SmallInt New!
Установка SoftIce New!
Вставка новой записи через буфер New!
Проблемы ini-файла New!
Показ даты, времени и состояния клавиш в строке состояния New!
Использование Internet-функций Win32 API (статья) New!
Подключиться к Интернету, определить активные соединения, определить и сохранить параметры соединения New!
Почему не всегда верно обновляются IndexDefs по Update New!
Инкрементация строкового поля New!
Поиск значения при вводе Updated!
Инкрементальный поиск в ListBox New!
Показ in-place подсказки в TListBox и других компонентах New!
Импортирование, или обертка вызовов функций DLL New!
Плавно превратить один рисунок в другой New!
Элементы меню на основе изображений New!
Как вставить растровое изображение в компонент ListBox? Updated!
Как копировать и вставлять Bitmap через буфер обмена? Updated!
Вращение изображения New!
Как сделать прямоугольник для выделения части картинки для редактирования New!
Перемещение Image New!
Фон MDI-окон Updated!
Хитрость вывода изображения New!
За какое время было создано изображение New!
Изменение палитры при выводе изображения New!
Условие создания главной формы New!
Удалить временные файлы IE New!
Работа с IDE из программы New!
Конфликт IDAPI German и English New!
Установка и использование IDA Pro New!
Часто задаваемые вопросы по дизассемблеру IDA Pro New!
Как узнать, находится ли дискета в дисководе? Updated!
Иконки в PopupMenu New!
Преобразование иконок в Gliph-ы New!
Огромные числа New!
HTMLEditor - Краткий обзор New!
Как обрабатывать сообщения New!
Число цветов (цветовая палитра) у данного компьютера Updated!
Как повесить винду New!
Пример компонента HotSpot New!
Как отловить нажатия клавиш для всех процессов в системе New!
Как показать подсказки Hints для элементов меню New!
Расширения оболочки Windows New!
Hint в выпадающем списке ComboBox New!
Подсветка синтаксиса New!
Как скрыть часики в панели задач? Updated!
Скрыть Tray, часы, кнопку ПУСК, панель задач New!
Как сделать форму без caption? Updated!
Как убрать публичное свойство компонента New!
Програмное выключение клавиатуры и мыши Updated!
Как спрятать окна MDI Child New!
Как запретить показ курсора в TEdit и ему подобных контролах New!
Как привязать файлы помощи в Delphi New!
Оглавление файлов помощи (Help Files Contents) New!
Управление метками томов дисков New!
Как выяснить имеет ли объект определённое свойство? Updated!
Как сделать прозрачное окно родными средствами Windows2000? Updated!
Наполовину активное окно New!
GUI. Перегрузка контролами (статья) New!
GROUPFILE и ADDITEM для групп New!
Как заставить GroupBox прорисовать на форме свой Caption неактивным цветом? New!
Сгруппировать свойства наподобие Font New!
Табуляция в графическом ListBox New!
Как перейти к указанной записи в БД New!
Уменьшение мерцания ListBox в обработчике OwnerDraw New!
Переместиться в конец файла New!
Как добавить функции картографирования в приложение New!
Как получить версию Windows? New!
Как найти системные папки Windows? Updated!
Получить список пользователей New!
Функция, возвращающая тип New!
Как получить список часовых поясов? New!
Извлечение текста из TMemoField New!
Получение информации о TaskBar New!
Как по Alias узнать физический путь к базе данных? Updated!
Взять один символ из потока памяти New!
Как управлять спикером под 9х из Дельфи? Updated!
Как получить короткий путь файла если есть длинный и на оборот? New!
Получение уведомлений от оболочки (Shell) New!
CopyFile для Linux New!
Как построить строку подключения New!
Как запустить консольное приложение и перехватить вывод? New!
Как узнать загрузку CPU определённым процессом? New!
Как узнать расход памяти процессом? New!
Как узнать имя компьютера? New!
Как узнать свободное место на диске? New!
Как сделать Ping? New!
Модуль CRT для Linux New!
Установка Kylix под новые версии Linux (ядро 2.6) New!
Как, зная Handle окна программы, определить имя EXE Updated!
Libqt для Kylix с поддержкой сглаживания New!
КроссKylix - возможность под Windows Delphi получать Linux исполняемые файлы New!
Как использовать Tray под Linux New!
Глюк при запуске приложений через ShellListView New!
Таблицу в clipboard New!
Проверка - установлен ли определенный бит? New!
Установка бита в единицу New!
Установка бита в ноль New!
Переключение состояния бита с единицы на ноль и наоборот New!
Пример чтения данных по битовой маске из значения New!
Как узнать производителя CD/DVD New!
Как открыть CD-ROM, если их несколько в системе? New!
Изменение скорости привода CD-ROM New!
Как мне избавиться от выскакивающего окна CPU при ошибках? New!
Смена свойств приложения, открываемого, по умолчанию в среде при её запске New!
ASCII код для PrintScreen New!
Получение имени шрифта, зная имя файла шрифта New!
Просмотр состояния корзины New!
Очистка корзины New!
Удаление файла в корзину New!
Получение информации о папках и файлах находящихся на данный момент в корзине New!
Восстановление файла из корзины New!
Закрытие всех окон IE New!
Основы работы с Windows API New!
Как получить список процессов в Win9x New!
Поиск значения типа DWORD в указанном процессе New!
Как спрятать программу от TaskManager в WindowsXP и 2000 New!
Аналог DumpBin New!
Получить текст окна, где этого не может WM_GETTEXT New!
Печать TStringGrid New!
Переходим на клиент-сервер (советы), на примере MS SQL Server New!
Запросы и параметры, или как избавится от многих проблем…. New!
Перекодировка, из разных кодировок New!
Алгоритм шифования TEA New!
Алгоритм поиска всех уникальных слов в файле New!
Получение IP адресов всех компьютеров в рабочей группе New!
Демонстрационная программа сканирования сети New!
Демонстрационная программа получения информации о компьютере по IP New!
Не работает кнопка <Enter> в WebBrowser New!
Cut и Copy отказываются работать New!
Алгоритм поворота изображения Updated!
Пример градиентной заливки формы New!
Скриншот, Принцип получения New!
Инверсия всех цветов в TBitmap New!
Определить формат изображения, загруженного в TMemoryStream New!
Информация о AVI файле, (разбор заголовка AVI) New!
поддержка библиотеки сжатия ZLib New!
Удобная функция ifthen New!
Использование PosEx взамен Pos New!
модуль поиска по маске New!
Работа с массивом компонентов New!
Форма изменяющая размеры без заголовка New!
функции для изменения и получения чуствительности мышки New!
Замена Application.ProcessMessages New!
Как сворачивать все приложение при сворачивании неглавного окна? New!
Как сделать плавное закрытие окна ? New!
Как назначить событие на увеличение/уменьшение TSpinEdit с помощью стрелочек? New!
Как определить, работает ли программа в виртуальной машине VMware? New!
Как определить, работает ли программа в виртуальной машине Connectrix? New!
Трассировка пути до определенного IP адреса (Traceroute) New!
Предпросмотр/печать TRichEdit New!
Как узнать IP клиента и IP сервера для активного RAS-подключения? New!
Как узнать частоту обновления монитора? New!
Как заблокировать доступ к дисководу? New!
Antivirus API New!
Пример процедуры убивающей таймеры по заголовку окна в чужих приложениях написанных на Delphi New!
Присвоение форме выбранного окна свойства Disabled / Enabled New!
Отображение формы выбранного окна New!
Закрыть выбранное окно New!
Сделать форму выбранного окна поверх остальных New!
Запретить в выбранном окне кнопку закрытия x New!
Поменять заголовок выбранного окна New!
Атомы: Запись, чтение и удаление информации New!
алгоритмы теории графов New!
Примеры работы с MS Excel New!
Как зыкрыть Excel New!
Помещение формы в поток New!
Несколько функций для TStream New!
Поток с доступом к глобальной переменной основной программы New!
Работа с регионами (статья) New!
Дельфи 2005 - отчёт, как я был на конференции Борланда New!
Эта незнакомая IDE! (статья) New!
Проход дерева каталогов Updated!
Как добавить пункт меню? New!
Как програмно переключить состояние клавиш Num Lock, Caps Lock, Scroll Lock? Updated!
Как сменить обои на рабочем столе? Updated!
Сбростить BDE базу данных в XML файл New!
Подключение через TMySQLClien & TMySQLResult New!
Транслитерация New!
Как получить URL? New!
Как получить POST данные? Updated!
Как запустить DTS из StoredProcedure New!
Запись файла New!
Критерии выбора базы данных (статья) New!
Поиск значения по любому столбцу New!
Работа через MAPI Updated!

Примечание: я не могу гарантировать что все изменения попали в этот список. Слишком много всего было сделано.

Автор: z-END 31.1.2005, 10:42
В очередной раз сенк-ю Vit ! smile
Если чесно, даже не читал "примерный список новых статей" это не главное, главное что новая версия есть! и судя по прияному увеличению размера (почти на 4 метра) объем знаний в этом чуде вырос прилично!
ЗЫ: отличная идея помечать новые и зимененные топики !!!

Автор: Akella 31.1.2005, 12:37
Vit, огромнейшее тебе спасибо за такой труд.
И, конечно, благодарности всем, всем, всем, кто учавствовал в создании DRKB. Мне кажется, что DRKB самая умная база знаний для Delphi. smile smile smile

Автор: Fedor 31.1.2005, 18:38
Класс!!! Еще не скачал, но обязательно сделаю енто в ближайшее время.
Цитата(dsergey @ 31.1.2005, 11:37)
Мне кажется, что DRKB самая умная база знаний для Delphi

Это не кажется. Это так и есть smile

Автор: Mal Hack 31.1.2005, 18:52
Ошибка в том материале, который я тебе предлагал.
Подключение через TMySQLClien & TMySQLResult
ClienT.
И в коде в цикле занесеня данны в GRID вместо:
Код

 for i := 0 to mysql_result.RowsCount - 1 do
  for j := 0 to mysql_result.FieldsCount do
   begin
    Cells[ j , i + 1 ] := mysql_result.FieldValue( j );
    mysql_result.Next;
   end;

Надо
Код

 for i := 0 to mysql_result.RowsCount - 1 do
  begin
   for j := 0 to mysql_result.FieldsCount do
    Cells[ j , i + 1 ] := mysql_result.FieldValue( j );

    mysql_result.Next;
   end;

В тему ту, забыл о ошибке отписаться.

Автор: Stalker Ghost 31.1.2005, 20:06
Спасибо Vit. Я много с 2.2 вытянул, smile а с 2.3 думаю что тоже вытяну. Спасибо smile (репутацию поднять не могу smile - сообщений маловато, в будущем smile )

Автор: bartram 31.1.2005, 21:31
Спасибо!!!! Спасибо!!!!Спасибо!!!!Спасибо!!!!Спасибо!!!!Спасибо!!!!
... и всё это Виту smile

Автор: Dayana 3.2.2005, 18:53
Vit, неоценимая вещь, неоценимый труд! Спасибо!

Автор: StayAtHome 4.2.2005, 02:37
Vit, даже не знаю, как тебя отблагодарить за твои труды. Поставить плюс? Дык их и так у тебя немерянно. smile Выслать денег -- дык их у меня мало smile)))
Просто СПАСИБО тебе большое!

Автор: DIMONSOFT 6.2.2005, 21:28
VIT а как предстоят дела с оболочкой? Кто-то разрабатывает?

Автор: Vit 7.2.2005, 01:19
Цитата(DIMONSOFT @ 6.2.2005, 12:28)
VIT а как предстоят дела с оболочкой? Кто-то разрабатывает?


Я не принимаю участия

Автор: mvdr 7.2.2005, 10:20
"Как написать сквой хранитель экрана? " исправить надо.

Автор: foRaver 7.2.2005, 10:35
Вешь просто супер (сужу по предыдущей версии). Новую пока закачать не удалось, потому-что наша "стенка" на работе .chm не пропускает. Интересно, есть возможность скачать новую версию, только зарание заархивированную?? Спасибо.

Автор: User 7.2.2005, 12:48
Супер, большущее тебе человеческое спасибо, за терпение, и за то дело которое ты делаешь?

Автор: Slawanix 7.2.2005, 14:22
Случайно нашел дублирование ответов:
Работа с файловой системой->Как проверить, находится ли файл на локальном диске?
и
Работа с файловой системой->Проверяем, находится ли файл на локальном диске?
А вообще база вызывает только море положительных эмоций и огромную признательность, спасибо Vit.

Автор: Vit 7.2.2005, 21:53
Цитата(foRaver @ 7.2.2005, 01:35)
Интересно, есть возможность скачать новую версию, только зарание заархивированную??


Всем у кого всякие firewall и брендмауэры и т.п. ограничения на скачивание. вот два линка:

http://chicago.lastplanet.com/drkb23.zip - это zip архив

и

http://chicago.lastplanet.com/drkb23 - это chm файл без расширения, после скачивания - переименовать в drkb23.chm


Femida, Slawanix - спасибо за исправления, в следующей версии будет исправлено

Цитата(User @ 7.2.2005, 03:48)
Супер, большущее тебе человеческое спасибо, за терпение, и за то дело которое ты делаешь?


А чего с вопросительным знаком? smile

Автор: DIMONSOFT 7.2.2005, 21:53
А вообще кто-то принимает???

Автор: Vit 7.2.2005, 21:59
Цитата(DIMONSOFT @ 7.2.2005, 12:53)
А вообще кто-то принимает???



Эти вопросы сюда: http://forum.vingrad.ru/index.php?showforum=62

Моё отношение такое, что проект этот развивать нет смысла. Во-первых у нас появился on-line FAQ, во вторых возможно в скором времени появится OFF-Line клиент для этого FAQ, а DRKB останется тем чем она на самом деле и является: учебником-справочником по Дельфи, с регулярными обновлениями в стандартном формате CHM. Если кому-то развитие этого проекта видится иначе - я не буду мешать воплощению, но и участвовать не буду.

Автор: December 7.2.2005, 23:14
Вит, огромное спасибо! Меня бы не хватило на такой самоотверженный труд! smile
А пока ты отдыхаешь от трудов праведных, поделись, плиз исходником машины времени:

Цитата(Vit)
Вчера (21 декабря 2005 года) был на конференции Борланда посвященной Дельфи 2005.

smile

Автор: Vit 8.2.2005, 00:07
Цитата(December @ 7.2.2005, 14:14)
поделись, плиз исходником машины времени:



Код

inc(year)

Автор: December 8.2.2005, 21:38
Vit
Нет проверки на Overflow, не катит

(Сорри за офтоп)

Автор: StayAtHome 12.2.2005, 02:35
В версии v 2.3 есть тема:
VCL / TForm / Создание, закрытие и вызов формы / Как сделать плавное закрытие окна ?
А здесь -- тема раскрыта значительно полнее: smile
http://forum.vingrad.ru/index.php?showtopic=42317&view=findpost&p=324580
Добавите в следующую DRKB?

Автор: Akella 12.2.2005, 11:53
В раздел "Работа с файловой системой" есть две повторяющиеся подтемы
"Проверяем находиться ли файл на локальном диске"
и
"Как проверитьнаходиться ли файл на локальном диске"

Автор: Golden Hands 13.2.2005, 01:52
Очень, очень, очень хорошая и нужная вещь. Благодарствую за проделанную работу.

Автор: Vit 13.2.2005, 08:01
Цитата(Golden @ 12.2.2005, 16:52)
Очень, очень, очень хорошая и нужная вещь.



Спасибо smile

Автор: Slawanix 14.2.2005, 00:34
Цитата(dsergey @ 12.2.2005, 12:53)
В раздел "Работа с файловой системой" есть две повторяющиеся подтемы
"Проверяем находиться ли файл на локальном диске"
и
"Как проверитьнаходиться ли файл на локальном диске"


dsergey, об этом уже говорили, но, наверное, лишний раз не помешает smile

Автор: Vit 14.2.2005, 06:49
Цитата(Slawanix @ 13.2.2005, 15:34)
dsergey, об этом уже говорили



Я мог пропустить что-то из того что говорили... Весьма большое количество матрериала...

Кстати набралось уже изрядное количество исправлений, кое где по существу дела, а не только грамматика или дубликаты, как например исправил алгоритм md5 и изменил загрузку Stream в TWebBrowser - там откровенные ошибки были... Выпустить промежуточный Update? только с пофиксанными багами или уже собирать материал на следующий полноценный релиз?

Автор: Slawanix 14.2.2005, 23:05
Цитата(Vit @ 14.2.2005, 07:49)
Выпустить промежуточный Update? только с пофиксанными багами или уже собирать материал на следующий полноценный релиз?


Vit, мое мнение: лучше уж пусть все исправления будут в новой версии, вместе с новыми статьями. А то выпустишь промежуточную версию, что-то еще пофиксится, опять выпускать придется, как у Microsoft прямо, да и не удобно будет несколькими факами пользоваться, смотреть: "а что-то может уже исправили?"
С уважением, Slawanix. smile

Автор: Akella 16.2.2005, 13:35
тема "Работа через MAPI" - пример не работает

Автор: fess 17.2.2005, 13:01
Vit
Огромное СПАСИБО за Delphi Russian Knowledge Base.

Вот некоторые замечания и предложения:
  • При открытии статьи «Как прочитать значение свойства компонента по имени?»
    В самой верхней строчки, вместо названия статьи, отображается буква «л».
  • Неплохо бы также добавить несколько статей по созданию компонент, а то надоело рыться в Инете.
  • В универе, где я учусь, был такой предмет САОД. По нему проходили очень много полезных алгоритмов (например: БЫСТРЫЙ ПОИСК, ВНЕШНЯЯ СОРТИРОВКА, ВНУТРЕННЯЯ СОРТИРОВКА,Сбалансированные (AVL) деревья и др.). Я думаю, некоторые из этих алгоритмо, неплохо было бы добавить в DRKB. Если хочешь, могу прислать.

Автор: Vit 18.2.2005, 00:53
Цитата(fess @ 17.2.2005, 04:01)
Неплохо бы также добавить несколько статей по созданию компонент, а то надоело рыться в Инете.



Давай, то что нарыл - добавлю. Специально писать не буду - нет времени


Цитата(fess @ 17.2.2005, 04:01)
Если хочешь, могу прислать.


С удовольствием. Публиковать лучше всего прямо здесь, в форуме

Автор: Akella 18.2.2005, 10:06
Цитата
Выпустить промежуточный Update? только с пофиксанными багами или уже собирать материал на следующий полноценный релиз?

Наверное, собирай на новую версию smile

Автор: fess 18.2.2005, 15:56
Цитата
Давай, то что нарыл - добавлю.

http://ivan_oganin.programist.ru/UsefulArticles.rar несколько статей по созданию компонент и ещё чуть-чуть других статей.

А http://ivan_oganin.programist.ru/SAOD.rar док по САОД'у.

Автор: Romtek 27.2.2005, 13:37
On-line DRKB
Графика и мультимедия -> DerectX, OpenGL

Ещё неплохо бы добавить в DRKB статью о поиске в файле.

Автор: December 28.2.2005, 23:15
Как узнать путь к броузеру по умолчанию - дублируется, там почти рядом топики.

Автор: Alex 28.2.2005, 23:25
Цитата(Romtek @ 27.2.2005, 13:37)
On-line DRKB
Графика и мультимедия -> DerectX, OpenGL

Подправил, спасибо. Но в другой раз пиши о таких вещах в разделе "Обсуждение форума и каталога программ"

Автор: Golden Hands 8.3.2005, 13:15
Бывает, что примеры сразу начинаются с кода. Хорошо бы еще в таких случаях добавить сам алгоритм (описать словами) .

Цитата
Вчера (21 декабря 2005 года) был на конференции Борланда

smile

Автор: Михаил Комин 18.3.2005, 09:08
Привет, Vit. Недавно нарыл в DRKB модуль "Работа с очень большими числами"
Это очень нужная весчь! Мне было очень приятно использовать его. С одним "НО". На простых операциях он отлично работает, а вот, например, для вычисления числа Пи без доп. проверок не годится.

Т.е. например при сложении чисел '0.2' и '0.666666667' возвращается строка '0.666666667', однако если прибавить '0.20' то все будет отлично.

Ты просил связаться, если кто хочет доработать этот модуль smile

Автор: Михаил Комин 18.3.2005, 09:11
Vit, просьба писать ответ на мыло: mike собака geoservice точка кг

Автор: Vit 18.3.2005, 17:59
Михаил Комин , вы можете доработать модуль по своему усмотрению и выложить исправленный модуль сюда smile Все будут вам благодарны!

Автор: Sniper 22.3.2005, 10:00
Вот тут какая-то ошибка:

Топик: Как передать массив как параметр?

в предложении

"Procedure Proc(var a:Ta); - внутри процедуры код работает именно с переменной а и её содержимым"

опечатка.

Как должно быть ?

Автор: Snowy 22.3.2005, 10:26
Цитата(dsergey @ 18.2.2005, 10:06)
Выпустить промежуточный Update? только с пофиксанными багами или уже собирать материал на следующий полноценный релиз?
Наверное, собирай на новую версию


Может идея не нова, но может стоит сделать DRKB не в виде chm файла, а в виде программы.
В этом случае вижу много плюсов:
1. Можно делать обновление через интернет. Тогда не придется качать по >10 метров при выходе каждой версии. Кроме того, дополнять и исправлять статьи можно будет более регулярно.
2. Если грамотно продумать базу, то можно уменьшить итоговый размер. Например раскраска синтаксиса кода программы добавляет немало веса. А программно можно красить код самому. В результате объем даст только чистый код, без всяких font color..., которые занимают больше, чем сам код. Кроме того, при модификации программы раскрасски, весь код получит новый вид.
3. У людей много претензий по размеру. Скачав программу, человек сможет сам выбирать, какие разделы он хочет закачать сразу, а какие потом. Кроме того, можно добавить раздел с обучающими статьями. Они весят много, но кому нужно, их подгрузят.
4. Можно предусмотреть в программе гораздо больше возможностей и удобств, чем в обычном chm viewer'е.

P.S. Готов помочь в разработке.

Автор: p0s0l 22.3.2005, 10:56
Snowy, это хотел организовать Pegas - есть даже отдельный подфорум для этого: http://forum.vingrad.ru/index.php?showforum=62
Но дело стоит уже давно и не двигается...

Автор: Snowy 22.3.2005, 11:12
Цитата(p0s0l @ 22.3.2005, 10:56)
Snowy, это хотел организовать Pegas

Чтож. Я сразу написал
Цитата(Snowy @ 22.3.2005, 10:26)
Может идея не нова

По своему опыту знаю, что те, кто думает "как было бы здорово сделать...", результат либо не получают вообще, либо тогда, когда он уже и не особо нужен.
Результат получает не тот, кто мечтает, а тот, кто делает.
У меня сейчас заказ да довольно крупный проект, но попробую выкроить время, чтобы что-нить накилать.
Добавлено @ 11:14
Тьфу, уже пальцы заплетаются. Извините, приболел. Температура поднялась.

Автор: p0s0l 22.3.2005, 11:19
Ну если ты реализуешь - все будут, думаю, только рады... smile
Я тоже над этим думал... Но так и не взялся... Времени нет...
Думаю, что тебе нужно там создать новую темку, где бы ты выложил своё ТЗ, т.е. что будет уметь твоя прога, какой принцип обновления, сжатия, подсветки, требования (ОС: я думаю ты будешь только под винду делать ?)... А мы еще чего-нибудь прикрутим smile

Автор: p0s0l 24.3.2005, 14:28
Snowy, меня тут Alex убедил, что его вьювер будет хорошо подходить для этой роли, и скачиваемый объем типа небольшой... Можно подождать пока, посмотреть, что получиться...

Автор: Pavlus 26.3.2005, 02:27
Vit
Спасибо за базу-справочник - теперь ни в форумах ни в книжках почти не копаюсь.

На счет оболочки - chm для меня достаточно, но обновляемый, как Нортон, клиент был бы очень кстати.
Я предлагаю развивать это паралельно, т.е. выпкскать chm-ники, пока не появится одобренный многими клиент, который по возможностям поиска и размеру будет НЕ ХУЖЕ chm-оболочки.

ИСПРАВЛЕНИЕ:
"Как скопировать содержимое строки в буфер обмена?" - Этот способ глючный. Данные, помещенные
в буфер таким образом принимается как текст далеко на везде. В WIN 98 в Инет Експлорере некоторые поля Edit отказывались принимать MAC адрес (только буквы и цифры), помещенный в буфер этой процедурой.
А в WIN 2000 - одно из двух: или вообще в буфер не копировалось ничего или данные там не являлись текстом.
Я вынжден был сделать невидимый компонент Edit1 и делать так:

Код

procedure CopyStringToClipboard(s: string);
begin 
  edit1.Text:=s;
  edit1.SelectAll;
  edit1.CopyToClipboard;
end;

Автор: doberman 26.3.2005, 15:36
Спасибо Vit за DRKB!!!
Спомощью ее добавил стоко...в свою выпускную работу, что учителя офигеют когда увидят!!!
Еще раз спасибо!!!
Всем советую в нашем городе!!!

Автор: Vit 28.3.2005, 04:17
Цитата(doberman @ 26.3.2005, 06:36)
Спасибо Vit за DRKB!!!
Спомощью ее добавил стоко...в свою выпускную работу, что учителя офигеют когда увидят!!!
Еще раз спасибо!!!


Ха! Да тебе надо было просто сдать DRKB как дипломную работу да дело с концом... smile smile Поставил бы мне бутылочку пива, vs, первую страничку заменили и пусть преподы фигеют... smile

Если серьёзно, то я рад что вам мой труд помог, и надеюсь что вы не только бездумно повставляли куски DRKB в свой диплом, а кое-чему научились и разобрались как многие штуки работают. Успехов!


Цитата(doberman @ 26.3.2005, 06:36)
Всем советую в нашем городе!!!


И не только в Вашем, тем более что никто и не знает что за город такой...

Автор: Snowy 28.3.2005, 07:51
Ёлки-моталки, приболел я хорошо. Еще не оклемался, но уже на работу вышел.

Цитата(p0s0l @ 22.3.2005, 11:19)
Ну если ты реализуешь - все будут, думаю, только рады...
Я тоже над этим думал... Но так и не взялся... Времени нет...

Времени никогда нет. Приходится раздавать свою квоту времени каждому процессу, согласно приоритета smile

Цитата(p0s0l @ 22.3.2005, 11:19)
темку, где бы ты выложил своё ТЗ

ТЗ пока не составлял. Пока есть только задумки.
Планирую, что все статьи будут лежать в одном ZIP'e отдельными файлами в подкаталогах, согласно разделов. Так будет проще обновлять и совершать операции по обновлению/удалению/перемещению. На сервере соответственно придется выкладывать все файлы по отдельности, поскольку вероятность разместить там программу, формирующую пакеты обновления невелика. А люди будут обновляться с совершенно разными периодами.
На сервере должен быть файл со списком файлов и датами. Человек закачивает этот файл, а потом программа его анализирует и закачивает необходимые файлы.
Программу обновления нужно будет продумать оптимально, чтобы можно было в нее заклыдывать разнообразные инструкции, чтобы на будущее ее не приходилось менять.
Чтобы уменьшить главную программу, нужно ZIP вынести в отдельную dll или воспользоваться WinRar.dll. Писать либо на чистом API, либо на KOL, либо полениться и просто вынести bpl. Но последний вариант плох тем, что для разных версий bpl разные и не у всех людей они будут. Кроме того, человек может захотеть почитать на компьютере, где нет дельфи.
Далее нужно делать умный поиск, а не по полному совпадению;
Экспорт в html, чтобы можно было читать под другими платформами;
Фильтр обновлений, чтобы обновлять только выбранные размеры;
Можно сделать кнопочку рапорта об ошибках в статье. Рапорт будет отправляться при следующем обновлении.
Также нужно подумать над кумулятивными обновлениями и обновлениями базовой версии. Хотя базовую программу лучше выкладывать вообще без баз, а базы пользователь будет закачивать по выбору.
Буду думать более детально.

Цитата(p0s0l @ 22.3.2005, 11:19)
ОС: я думаю ты будешь только под винду делать ?

Буду делать только под винду, т.к. грамотно писать под другие операционки не умею. Только на примитивном уровне. А здесь требуется высокая функциональность и компактность.
Думаю под линухами будет работать под эмулятором. Карманные оси все равно связываются с главным компьютером, поэтому универсальным способом здесь будет экспорт в html.

Автор: bartram 30.3.2005, 19:59
Snowy? не плохая идея я бы помог но времени жаль нет smile

Автор: Alex103 1.4.2005, 01:02
А когда будет 2.4

Автор: Vit 1.4.2005, 07:46
Цитата(Alex103 @ 31.3.2005, 16:02)
А когда будет 2.4



За неё подготовку смогу взяться не раньше июня-июля

Автор: Alex103 3.4.2005, 01:13
Цитата(Vit @ 1.4.2005, 07:46)
Цитата(Alex103 @ 31.3.2005, 16:02)
А когда будет 2.4



За неё подготовку смогу взяться не раньше июня-июля

А сколько статей планируеться добавить!!!!!

Автор: Vit 3.4.2005, 05:10
Цитата(Alex103 @ 2.4.2005, 16:13)
А сколько статей планируеться добавить!!!!!



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

Автор: Alex103 4.4.2005, 02:17
Цитата(Vit @ 3.4.2005, 05:10)
Цитата(Alex103 @ 2.4.2005, 16:13)
А сколько статей планируеться добавить!!!!!



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

Удачи тебе в создании!!!!

Автор: Yanis 6.4.2005, 14:16
To Vit.
Для DRKB 2.4.
Алгоритм преобразования Dec -> Bin знают многие, но не многие знают как выполнить обратное преобразование Bin -> Dec . Я делаю это следующим образом:

Код

function BinToInt(const Value: string): Integer;
var
  i, strLen: Integer;
begin
  Result := 0;
  strLen := Length(Value);
  for i := 1 to strLen do
    if Value[i] = '1' then
      Result := Result or (1 shl (strLen - i))
    else
      Result := Result and not (1 shl (strLen - i));
end;

Автор: StayAtHome 6.4.2005, 20:52
Кандидатура на добавление в DRKB
Два связанных поста:
Как выполнить код после создания MDIChild-формы но до появления ее на экране?
http://forum.vingrad.ru/index.php?showtopic=47573&view=findpost&p=371472

Как отобразить MDIChild-форму модально?
http://forum.vingrad.ru/index.php?showtopic=47573&view=findpost&p=372332

Автор: Vit 7.4.2005, 03:32
Спасибо

Автор: Alex 9.4.2005, 09:45
В статье "Отображаем текст в System Tray" участник Poseidon нашел ошибку. Код, приведенный в этой статье, не компилируется.

Для решения проблемы я его немного дописал:
Код

procedure TForm1.Timer1Timer(Sender: TObject);
{$WRITEABLECONST ON}
const
  i: Integer = 0;
begin
  Inc(i);
  if i = 100 then i := 1;
  Application.Icon.Handle := StringToIcon(IntToStr(i));
{$WRITEABLECONST OFF}
end;


В FAQ находится исправленная версия http://vingrad.ru/DELPHI-DLP-000643

Автор: WolfON 12.4.2005, 17:15
Удалось сжать DRKB 2.3 до 4 602 523 bytes smile

Автор: Monty 14.4.2005, 21:27
Если сайт пишите на русском языке, то не забывайте передать браузеру правильную кодировку!

Автор: Yanis 19.4.2005, 16:46
("VCL" -> "Элементы управления Windows XP")

В этой ветке статьи:
"Манифест Windows XP", "Визуальные стили и темы оформления" и "Компоненты настройки цветовой палитры" одинаковые ;), но прикол в том, что они вообще ведут к ветке ("Rave Report" - "Руководство пользователя" -> "Rave Report" -> "Репортинг, работа с принтером" -> "Wizards"). При этом попадаем не на нужную страницу только когда кликаем по ссылкам на темы на странице ("VCL" -> "Стили и темы Windows XP" -> "Элементы управления Windows XP"), т.е. имеются ошибки в описании ссылок на странице "winxp01.htm".

("VCL" -> "TMemo")
В статье "Дельфи компонент для подкраски синтаксиса" ошибки (2 шт.) внизу страницы - "Открыт русскоязыйчный портал для пользователей и разработчиков комполнентов подкраски синтаксиса здесь:"

( "VCL" -> "TRichEdit")
В статье "Таблицу в clipboard" ошибки () в самом вопросе:
Цитата

У меня есть 2 memo. как мне сделать так, чтобы в клипборд посылалосьтабличка из двух ячеек с содержимым их мемо. точнее как загнать табличку в клипборд программно. Я смотрел, что когда копируешь из wordа табличку, то в клипе лежит текст и картинка (вот с эти я больше всего не понял). Не понятно!!

Автор: Yanis 20.4.2005, 08:28
Думаю в статью ("Язык программирования Дельфи" -> "Работа с битами" -> "Установка бита в ноль") можно добавить альтернативный код снятия бита:
Код

function BitOff(const val: longint; const TheBit: byte): LongInt; 
begin
  Result := val and not (1 shl TheBit); 
end; 


При написании программ и кода мы неизбежно допускаем ошибки как синтаксические так и логические. Никто от этого не застрахован. Даже Яnis ;) Далее идёт список синтаксических ошибок, которые я успел вчера найти, но не успел выложить, т.к. кончился iнет ;) (советую прочитать до конца. Имеются ошибки в фоформлении разделов)

Ветка: ("VCL" -> "ListBox, CheckListBox, DBLookUp, Другие списки")
Файл: 128.htm
Статья: "Как вставить растровое изображение в компонент ListBox?"
Проблема: Синтаксические ошибки в тексте статьи.
Цитата

Сначала создайте bmp-файл, который вы будете помещать около каждого элемента списка, в примере это 'c:\file.bmp'. Для создания файла можете воспользоваться специальной графической утилитой ImageEditor, которая входит в пакет Delphi. Желательно, чтобы [u]размер файлы[/u] был 16х16. После этого вынесите на форму компонент TListBox. Его свойство Style установите в lbOwnerDrawVariable - это позволит нам прорисовывать каждый элемент списка самостоятельно.


Ветка: ("VCL" -> "ListBox, CheckListBox, DBLookUp, Другие списки")
Файл: alx16.htm
Статья: "Показ in-place подсказки в TListBox и других компонентах"
Проблема: Внизу модуля, который описан в этой статье, два раза написан end.

Ветка: ("Работа с сетью, интернетом, протоколами" -> "Протоколы" -> "Работа с ICQ")
Файл: icq2000.htm
Статья: "ICQ2000 - сделай сам (статья)"
Проблема: Много синтаксических ошибок в тексте статьи.

Цитата

Лично я постигал все перелести протоколов ICQ на кодах написанных на С++.
Самые общие сведения о протоколахм ICQ
Хоть я и спользовал информацию по прортоколу v8 (ICQ2000b) но рассматривать буду протокол v7 (ICQ2000a).
Видать оччень много народу постаралось для этого.
Об этом мой расказ на следующей странице.
На тип содеожимого TLV указывает Type code.
Разпишем его в табличном виде для лучшего восприятия:
Т.к. сейчас рассматриваетя только урок №2
Т.к. все рассмотренные више запросы ...
Оновременно можем передавать на сервер много запросов.


Ветка: ("Работа с сетью, интернетом, протоколами" -> "Протоколы" -> "Другие протоколы")
Файл: imap4.htm
Статья: "Протокол IMAP4 (Internet Message Access Protocol)"
Проблема: Синтаксические ошибки в тексте статьи.

Цитата

Каждое общение в почтовой системе для работы с IMAP имеет уникальный идетификатор
Имена каталогов и маски имен подкаталогов могут интерпритироваться по-разному


Ветка: ("Работа с сетью, интернетом, протоколами" -> "Работа с Email")
Файл: a67.htm
Статья: "Как отправить Email?"
Проблема: Синтаксические ошибки в тексте статьи.

Цитата

Cущствуют следующие возможности:
... не позволяет постать ...
... однако посыка не напрямую ...


Ветка: ("Работа с сетью, интернетом, протоколами" -> "Работа с Email")
Файл: v72.htm
Статья: "Проверка правильности E-mail адреса"
Проблема: Синтаксические ошибки в тексте статьи.

Цитата

... возникает потребность в проверке адреса на правильнось.


Ветка: ("Работа с сетью, интернетом, протоколами" -> "Создание Web приложений")
Файл: v80.htm
Статья: "Создание Active Server Page (ASP) приложений (Статья)"
Проблема: Синтаксические ошибки в тексте статьи.

Цитата

... поскольку до сих пор производители этих серверов успешно игноировали все новые разработки Microsoft в этой области.
клиент может свободно модифицироать их и это упрощает разработку кода приложения. Недостаток этоя модели
...(которая обьявлена аналогична коллекции Key[])...
Традиционно доступ к данным очуществляется ...
В инспекторе обьектов выберем свойство ConnectionString ...
(GUID отсутствкует в системном реестре)


Ветка: ("Работа с сетью, интернетом, протоколами" -> "Создание Web приложений")
Статья: "Корпоративное Web приложение"
Файл: 697.htm
Проблема: Синтаксические ошибки в тексте статьи.

Цитата

... программныей интерфейс...
Главнй недостаток ISAPI...


Ветка: ("Работа с сетью, интернетом, протоколами" -> "Работа с IE, интерфейсами WebBrowser")
Файл: 700075.htm
Статья: "Работа с IE, интерфейсами WebBrowser"
Проблема: Синтаксическая ошибкав тексте ссылки.

Цитата

Узнать информацию о проксисервере


Ветка: ("Работа с сетью, интернетом, протоколами" -> "Работа с IE, интерфейсами WebBrowser" -> "Работа с TWebBrowser")
Файл: 814.htm
Статья: "Как сделать WebBrowser средствами Delphi?"
Проблема: Синтаксические ошибки в тексте статьи.

Цитата

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


Ветка: ("Работа с сетью, интернетом, протоколами" -> "Работа с HTML, клиентскими скриптами")
Файл: 816.htm
Статья: "GIF для HTML в EXE"
Проблема: Нелепая ошибка. Но исправить не мешало бы.

Цитата

=== Begin gifs.rc ===
mygif rcdata "имя_gif-файла.gif"
mygif1 rcdata "RCDATA_1"
=== End dots.rc ===


Ветка: ("Работа с сетью, интернетом, протоколами" -> "Работа с HTML, клиентскими скриптами")
Файл: alx35.htm
Статья: "HTMLEditor - Краткий обзор"
Проблема: Синтаксические ошибки в тексте статьи.

Цитата

...в списке зарегестрированных ActiveX Control'ов...
...точнее как програмно работать с ним...


Ветка: ("Работа с графикой и мультимедиа")
Файл: 7417.htm
Статья: "GDI - графика в Delphi"
Проблема: Синтаксические ошибки в тексте статьи.

Цитата

более реалистичную картнику в своём приложении.


Ветка: ("Работа с графикой и мультимедиа")
Файл: 1_001.htm
Статья: "Работа с графикой и мультимедиа"
Проблема: Не описан раздел "Работа с Jpeg" с подразделами.

Ветка: ("Работа с графикой и мультимедиа" -> "Работа с видео и анимацией")
Файл: 872.htm
Статья: "Информация о AVI файле, (разбор заголовка AVI)"
Проблема: Некорректная разметка страницы для подсветки кода.

Ветка: ("Работа с графикой и мультимедиа" -> "DerectX, OpenGL")
Файл: 8013.htm
Статья: "Blitting, Спрайты и Анимация"
Проблема: Синтаксические ошибки в тексте статьи.

Цитата

Аналогично, при использовании цвтового ключа с функцией Blt
они будут учавствовать во flip-цепочке (см. первую главу).


Ветка: ("Общие вопросы")
Файл: v2.htm
Статья: "Ссылки на сайты по Дельфи"
Проблема: Синтаксические ошибки в тексте статьи.

Цитата

Самая большая коллекция компоентов


Ветка: ("Delphi IDE, компиллятор, отладчик, редактор")
Файл: ide отладчик, редактор")
Файл: ideE! (статья)"
Проблема: Синтаксические ошибки в тексте статьи.

Цитата

... поставте курсор на имя модуля и нажмите Ctrl-Enter.


Ветка: ("Язык программирования Дельфи")
Файл: 1690.htm
Статья: "Язык программирования Дельфи"
Проблема: Не описан раздел "Работа с множествами" с подразделами.

Автор: Borland_Delphi_6 30.5.2005, 12:49
В статье "Paбoтa c peгиoнaми" неверно указан автор - x77 вместо z77.

Автор: Alex 30.5.2005, 13:30
Цитата(Borland_Delphi_6 @ 30.5.2005, 13:49)
В статье "Paбoтa c peгиoнaми" неверно указан автор - x77 вместо z77.

Откуда такая информация?

Автор: p0s0l 30.5.2005, 13:37
Цитата(Alex @ 30.5.2005, 13:30)
Откуда такая информация?
Я тоже могу это подтвердить... Автор = x77, а не z77 (я такого и не знаю), т.к. он мне лично эту статью давным-давно показывал, и я еще в старый FAQ добавлял, насколько я помню...
Добавлено @ 13:42
Вот, эта статья хранится до сих пор тут:
http://x77.pisem.net/art/regions/regions.htm

Автор: Borland_Delphi_6 31.5.2005, 17:25
+Посол выкладывал эту статью на моем форуме...

Автор: Vit 2.6.2005, 03:34
Цитата(WolfON @ 12.4.2005, 08:15)
Удалось сжать DRKB 2.3 до 4 602 523 bytes 


Проходили... Достигается это перекомпиляцией с удалением индексов полнотекстового поиска.. На фиг нужна DRKB без полноценного поиска!

Автор: Quadr0 2.6.2005, 10:39
...

Автор: Pathfider 6.6.2005, 21:09
Vit Сразу извиняюсь за оффтоп, но так как то , что я скажу напрямую относится к DRKB, думаю ты поймешь. Итак:
Цитата
DRKB (Delphi Russian Knowledge Base) - это одна из самых больших и полных в рунете база знаний по Дельфи, составленная по материалам форумов Vingrad.ru и Sources.ru, а так же других источников. Содержит более 2700 хорошо отклассифицированных и тщательно оформленных статей в формате chm (Windows Help)

Взято с http://www.olaid.h15.ru/Delist1.html
Действительно, очень полезная штука. Мне помогла во многом.

Автор: Borland_Delphi_6 8.6.2005, 09:03
Кстати, Vit, а на своем сайте DRKB со ссылкой на автора публиковать можно?

Автор: Vit 10.6.2005, 21:30
Цитата(Borland_Delphi_6 @ 8.6.2005, 00:03)
Кстати, Vit, а на своем сайте DRKB со ссылкой на автора публиковать можно?



DRKB - абсолютно бесплатный продукт! Вы можете использовать её как УГОДНО... Без всяких ссылок. Разрешается (и даже приветствуется) ставить на своём сайте линки на DRKB, выкладывать для скачивания саму DRKB (с сылками на меня или нет - я не жадный....)... мало того вы можете даже торговать DRKB или пытаться любым другим способом заработать деньги на DRKB совершенно не оглядываясь на авторство - я буду только рад если этот проект принесёт хоть моральную, хоть материальную пользу для любого человека... я не претендую ни на какие дивиденты от пользования DRKB ни сейчас ни в будущем smile

Автор: Quadr0 11.6.2005, 00:55
...

Автор: Rrader 11.6.2005, 14:14
CHM достаточно неудобен, ИМХО

Автор: Quadr0 11.6.2005, 14:31
...

Автор: Poseidon 11.6.2005, 15:46
Цитата(Quadr0 @ 11.6.2005, 14:31)
Это вообше кому-нибудь интересно?
Ты сделай, а мы оценим. Лишнее в любом случае не будет

Автор: Quadr0 11.6.2005, 16:31
...

Автор: Poseidon 11.6.2005, 16:34
Цитата(Quadr0 @ 11.6.2005, 16:31)
Не пойму только вот как поиск по ключевым словам реализовать можно бы было...
На форуме столько гуру, обратись чуть что к ним (можешь даже в личку). Они всегда помогут! Начать можешь с Вита smile

Автор: Vit 11.6.2005, 18:05
Всем - кто недоволен chm форматом - пожалуйста можете делать, попыток таких не счесть и было и будет.. Последняя была от Алекса и вполне даже удачная... Но это будет ваш проект а не мой... Другими словами - без меня... Я же буду продолжать то что я делаю. На то есть много причин.

Автор: Quadr0 11.6.2005, 18:09
...

Автор: Poseidon 11.6.2005, 18:11
Цитата(Vit @ 11.6.2005, 18:05)
без меня
Vit, неужели, если Quadr0 у тебя что-либо спросит, ты ему не ответишь? Не верю!!! smile
Добавлено @ 18:12
Цитата(Quadr0 @ 11.6.2005, 18:09)
Можно ознакомиться?
Спроси у него. Думаю, что прегред нет smile

Автор: Vit 11.6.2005, 18:15
Если спросят - отвечу... Я говорю не об этом, а о том что я этим проектом заниматься не буду. Ивообще кончаем флеймить на эту тему здесь. Есть раздел на форуме:

http://forum.vingrad.ru/index.php?showforum=62

со всем этим - туда! Здесь обсуждение ведётся DRKB а не чего-то там ещё

Автор: Alex 12.6.2005, 22:50
В разделе "Работа с файловой системой" дубляж тем "Как проверить находится ли файл на локальном диске?" и "Проверяем находится ли файл на локальном диске"

Автор: Alex 30.6.2005, 11:01
В разделе "Работа с визуальными компонентами->DBGrid" дубляж тем "Как удалить вертикальную полосу прокрутки (скроллбар) из DBGrid?" и "Как удалить вертикальную полосу прокрутки (скроллбар) из DBGrid?"

Автор: Diesel Draft 3.7.2005, 02:31
А если зделать как в DelphiWord програму. Тогда и приятней пользоватса и качать весь архив не нужно

Автор: Quadr0 3.7.2005, 19:33
...

Автор: Quadr0 3.7.2005, 19:46
...

Автор: StayAtHome 7.7.2005, 01:12
Как заставить системное меню выпасть в указанном месте?
Код
{
  How to popup the windows system menu?
  Maybe you can use Keybd_event to eumlate ALT+SPACE
  Maybe you can use a TPopupmenu.
  But they always have some problem.
  The method below is a perfect solution!
  BTW: if your form has borderstyle = bsNone, Please do it like this:
  Set forms style = bsSingle; and use the code below to set form boder:
  SetWindowLong(Handle, GWL_STYLE,GetWindowLong(Handle, GWL_STYLE)
  and (not WS_CAPTION) or WS_DLGFRAME or WS_OVERLAPPED);
}
 
 procedure TForm1.Button1Click(Sender: TObject);
 const
   { Undocument message ID }
   WM_POPUPSYSTEMMENU = $313;
 begin
   SendMessage(Handle, WM_POPUPSYSTEMMENU, 0,
     MakeLong(Mouse.CursorPos.X, Mouse.CursorPos.Y));
  end;

Источник:http://www.swissdelphicenter.ch
Добавлено @ 01:17
Как "быструю подсказку" (Hints) сделать многострочной?
Необходимо создать соответствующую компоненту которая показывает "быструю подсказку" (Hints) с более чем одной
строкой. Компонента наследуется от TComponent и называется TMHint. Hint-текст можно задавать следующим образом:
"Строка 1@Строка 2@Строка 3". Символ '@' используется как разделитель строк. Если Вам нравится другой символ -
измените свойство Separator. Свойство Active указывает на активность (TRUE) или неактивность (FALSE)
"многострочности"
Код

unit MHint;
 
interface
 
uses
  SysUtils, WinTypes, WinProcs, Messages,
  Classes, Graphics, Controls, Forms, Dialogs;
 
type
  TMHint = class(TComponent)
  private
    ScreenSize: Integer;
    FActive: Boolean;
    FSeparator: Char;
    FOnShowHint: TShowHintEvent;
  protected
    procedure SetActive(Value: Boolean);
    procedure SetSeparator(Value: char);
    procedure NewHintInfo(var HintStr: string;
      var CanShow: Boolean;
      var HintInfo: THintInfo);
  public
    constructor Create(AOwner: TComponent); override;
  published
    property Active: Boolean
      read FActive write SetActive;
    property Separator: Char
      read FSeparator write SetSeparator;
  end;
 
procedure Register;
 
implementation
 
constructor TMHint.Create(AOwner: TComponent);
 
begin
  inherited Create(AOwner);
  FActive := True;
  FSeparator := '@';
  Application.OnShowHint := NewHintInfo;
  ScreenSize := GetSystemMetrics(SM_CYSCREEN);
end;
 
procedure TMHint.SetActive(Value: Boolean);
 
begin
  FActive := Value;
end;
 
procedure TMHint.SetSeparator(Value: Char);
 
begin
  FSeparator := Value;
end;
 
procedure TMHint.NewHintInfo(var HintStr: string;
  var CanShow: Boolean;
  var HintInfo: THintInfo);
 
var
  I: Byte;
 
begin
  if FActive then
    begin
      I := Pos(FSeparator, HintStr);
      while I > 0 do
        begin
          HintStr[I] := #13;
          I := Pos(FSeparator, HintStr);
        end;
      if HintInfo.HintPos.Y+10 > ScreenSize then
        HintInfo.HintPos.Y := ScreenSize-11;
    end;
end;
 
procedure Register;
 
begin
  RegisterComponents('MyComponents', [TMHint]);
end;
 
end.

Источник:Кажись Delphi World

Автор: StayAtHome 7.7.2005, 01:23
Отмена вставки нового узла в TreeView по нажатию кнопки Esc
Код

unit BetterTreeView;
 
interface
 
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, CommCtrl;
 
type
  TTVNewEditCancelEvent = procedure( Sender: TObject;
    Node: TTreeNode; var Delete: Boolean) of object;
  TBetterTreeView = class(TTreeView)
  protected
    FIsEditingNew: Boolean;
    FOnEditCancel: TTVChangedEvent;
 
    FOnNewEditCancel: TTVNewEditCancelEvent;
    procedure Edit(const Item: TTVItem); override;
  public
    function NewChildAndEdit(Node: TTreeNode; const S: String)
      : TTreeNode;
  published
    property IsEditingNew: Boolean read FIsEditingNew;
    property OnEditCancel: TTVChangedEvent
      read FOnEditCancel write FOnEditCancel;
    property OnNewEditCancel: TTVNewEditCancelEvent
      read FOnNewEditCancel write FOnNewEditCancel;
  end;
 
implementation
 
procedure TBetterTreeView.Edit(const Item: TTVItem);
var
  Node: TTreeNode;
  Action: Boolean;
begin
  with Item do begin
    { Get the node }
    if (state and TVIF_PARAM) <> 0 then
      Node := Pointer(lParam)
    else
      Node := Items.GetNode(hItem);
 
    if pszText = nil then begin
      if FIsEditingNew then begin
        Action := True;
        if Assigned(FOnNewEditCancel) then
          FOnNewEditCancel(Self, Node, Action);
        if Action then
 
          Node.Destroy
      end
      else
        if Assigned(FOnEditCancel) then
          FOnEditCancel(Self, Node);
    end
    else
      fFinherited;
  end;
  FIsEditingNew := False;
end;
 
function TBetterTreeView.NewChildAndEdit
  (Node: TTreeNode; const S: String): TTreeNode;
begin
  SetFocus;
  Result := Items.AddChild(Node, S);
  FIsEditingNew := True;
  Node.Expand(False);
  Result.EditText;
  SetFocus;
end;
 
end.

Источник:Том Сван "Секреты..."

Автор: Гость_Johnny M 31.7.2005, 11:24
Ребята - возникла проблемка. Скачал базу знаний с сайта http://www.drkb.ru/ - причем там было вот такое сообщение

Сайт временно закрыт
Новая версия drkb может быть скачена здесь



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

Action canceled
Internet Explorer was unable to link to the Web page you requested. The page might be temporarily unavailable.

--------------------------------------------------------------------------------

Please try the following:

Click the Refresh button, or try again later.

If you have visited this page previously and you want to view what has been stored on your computer, click File, and then click Work Offline.

For information about offline browsing with Internet Explorer, click the Help menu, and then click Contents and Index.




Internet Explorer


smile

Автор: StayAtHome 31.7.2005, 13:06
Попробуй распакуй CHM (хотя бы этим: http://wincmd.ru/plugring/chmdir.html) на отдельные HTML и посмотри, есть ли там все (т. е. выяснить то ли ты скачал битый файл, то ли у тебя InternetExplorer барахлит). Выяснишь-- тогда будет ясно что делать дальше.

Автор: Guest 31.7.2005, 15:14
ссылка мертвая - кстати, до этого у меня была старая база знаний - там все работало. Значит не IE виноват....

можт еще раз качнуть? smile

Автор: StayAtHome 31.7.2005, 15:26
Вот CRC (MD5) рабочего файла drkb23.chm:
Код
537421766E801FC41582C4727E43DAEE
Проверь.

Автор: Гость_Johnny M 31.7.2005, 15:37
Еще бы знать что такое CRC smile

Автор: StayAtHome 31.7.2005, 15:53
Контрольная сумма файла. Своего рода "цифровой отпечаток"
TotalCommander'ом пользуешься? Он умеет их считать.

Автор: Гость_Johnny M 31.7.2005, 16:20
Тотал коммандером не пользуюсь к сожалению.... наверное все таки архив битый

Автор: Quadr0 31.7.2005, 16:34
...

Автор: Гость_man 1.8.2005, 16:14
Vit, спасибо огромное за справку, очень помогло в борьбе с ActiveX smile

Автор: Петрович 2.8.2005, 15:38
В код процедуры CreateBitmapRgn из топика "Оптимизация скинов для окошек сложной формы" прокрались несколько досадных ошибок.
Пара из них в сущности безвредные, а вот одна существенная. Из за нее, в строящийся регион всегда попадала полностью верхняя строка кортинки, если вырезался любой цвет кроме черного.
Привожу исправленный мною код. Правда, для удобства разборок, его стиль был переоформлен в соответсвии с моими пристрастиями. Да простит меня автор, Бочаров Александр.
Код

unit RgnUnit; 

interface 

uses 
  Windows, SysUtils, Classes; 

function CreateBitmapRgn(DC : hDC; Bitmap: hBitmap; TransClr: TColorRef): hRgn; 
{ 
Данная функция создает регион, используя для этого растр Bitmap 
и исключая из него цвет TransClr. Все расчеты производятся для 
устройства DC. 

данная функция состоит из двух частей: 

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

Для выделения памяти под конвертируемое изображение используется функция 
WinAPI CreateDIBSection. Данная функция выделяет память и создает 
независмый растр. Для вызова данной функции необходимо заполнить структуру 
BITMAPINFO, что достаточно не сложно. 
Внимание! для изображений Windows Bitmap используется разрешение в формате 
dots per metr (pixels per metr), стандартному разрешению 72dpi соответствует 
2834dpm. 

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

Для конвертации и переноса исходного изображения в выделнную память 
используется функция WinAPI GetDIBits. Функции передаются следуюшие параметры: 
исходное изображение, количество рядов для переноса, указатель на память, 
куда следует перенести изображение, структура BITMAPINFO с заполнеными первыми 
шестью членами (именно здесь задяются параметры для конвертирования 
изображения). Фактически, данная функция может перевести любой исходный растр 
в любой необходимый растр. 

вторая чать описываемой функции проходится по области памяти, куда было 
занесено конвертируемое изображение, отсекает ненужные области и содает регион. 
Для создания региона используется функция WinAPI ExtCreateRegion. Для вызова 
данной функции необходимо заполнить структуру RGNDATA, состоящую из структуры 
RGNDATAHEADER и необходимого количества структур RECT. в Дельфи структура 
RGNDATA описана так: 

  _RGNDATA = record 
    rdh: TRgnDataHeader; 
    Buffer: array[0..0] of CHAR; 
    Reserved: array[0..2] of CHAR; 
  end; 
  RGNDATA = _RGNDATA; 

Скорее всего, поле Reserved было введено программистами Дельфи только для того, 
чтобы в нее умещался хотя бы один прямоугольник, т.к. в Microsoft Platfrom SDK 
этого поля нет. Однако, данная структура нам не подходит, т.к. нам необходимо 
учитывать сразу несколько прямоугольников. Для решения этой задачи приходится 
выделять память вручную, с учетом RGNDATAHEADER и количества прямоугольников, 
необходимых нам, заносить туда прямоугольники (после RGNDATAHEADER), 
создавать указатель на структуру RGNDATA и ставить его на выделнную память. 

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

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

по окнчании работы функции освобождается память, выделенная на конвертируемый 
растр и структуру RGNDATA. 
} 

implementation 

//создает регион из растра Bitmap для DC с удалением цвета TransClr 
//внимание! TColorRef и TColor не одно и тоже. 
//Для перевода используется функция ColorToRGB(). 

function CreateBitmapRgn(DC: hDC; Bitmap: hBitmap; TransClr: TColorRef): hRgn;
var
  bmInfo: TBitmap;                //структура BITMAP WinAPI
  W, H: Integer;                  //высота и ширина растра
  bmDIB: hBitmap;                 //дискрептор независимого растра
  bmiInfo: BITMAPINFO;            //структура BITMAPINFO WinAPI
  lpBits, lpOldBits: PRGBTriple;  //указатели на структуры RGBTRIPLE WinAPI
  lpData: PRgnData;               //указатель на структуру RGNDATA WinAPI
  X, Y, C, F, I: Integer;         //переменные циклов
  Buf: Pointer;                   //указатель
  BufSize: Integer;               //размер указателя
  rdhInfo: TRgnDataHeader;        //структура RGNDATAHEADER WinAPI
  lpRect: PRect;                  //указатель на TRect (RECT WinAPI)
begin
  Result:=0;
  if Bitmap=0 then Exit;          //если растр не задан, выходим

  GetObject(Bitmap, SizeOf(bmInfo), @bmInfo);  //узнаем размеры растра 
  W:=bmInfo.bmWidth;                           //используя структуру BITMAP 
  H:=bmInfo.bmHeight; 
  I:=(W*3)-((W*3) div 4)*4;                    //определяем смещение в байтах 
  if I<>0 then I:=4-I; 

//Пояснение: растр Windows Bitmap читается снизу вверх, причем каждая строка 
//дополняется нулевыми байтами до ее кратности 4. 
//для 32-х битный растров такой сдвиг делать не надо. 

//заполняем BITMAPINFO для передачи в CreateDIBSection 

  bmiInfo.bmiHeader.biWidth:=W;             //ширина 
  bmiInfo.bmiHeader.biHeight:=H;            //высота 
  bmiInfo.bmiHeader.biPlanes:=1;            //всегда 1 
  bmiInfo.bmiHeader.biBitCount:=24;         //три байта на пиксель 
  bmiInfo.bmiHeader.biCompression:=BI_RGB;  //без компрессии 
  bmiInfo.bmiHeader.biSizeImage:=0;         //размер не знаем, ставим в ноль 
  bmiInfo.bmiHeader.biXPelsPerMeter:=2834;  //пикселей на метр, гор.
  bmiInfo.bmiHeader.biYPelsPerMeter:=2834;  //пикселей на метр, верт.
  bmiInfo.bmiHeader.biClrUsed:=0;           //палитры нет, все в ноль 
  bmiInfo.bmiHeader.biClrImportant:=0;      //то же 
  bmiInfo.bmiHeader.biSize:=SizeOf(bmiInfo.bmiHeader); //размер структруы 
  bmDIB:=CreateDIBSection(DC, bmiInfo, DIB_RGB_COLORS, 
                          Pointer(lpBits), 0, 0); 
//создаем независимый растр WxHx24, без палитры, в указателе lpBits получаем 
//адрес первого байта этого растра. bmDIB - дискрептор растра 

//заполняем первые шесть членов BITMAPINFO для передачи в GetDIBits 

  bmiInfo.bmiHeader.biWidth:=W;             //ширина 
  bmiInfo.bmiHeader.biHeight:=H;            //высота 
  bmiInfo.bmiHeader.biPlanes:=1;            //всегда 1
  bmiInfo.bmiHeader.biBitCount:=24;         //три байта на пиксель
  bmiInfo.bmiHeader.biCompression:=BI_RGB;  //без компресси 
  bmiInfo.bmiHeader.biSize:=SizeOf(bmiInfo.bmiHeader); //размер структуры 
  GetDIBits(DC, Bitmap, 0, H, lpBits, bmiInfo, DIB_RGB_COLORS); 
//конвертируем исходный растр в наш с его копированием по адресу lpBits 

  lpOldBits:=lpBits;  //запоминаем адрес lpBits

//первый проход - подсчитываем число прямоугольников, необходимых для
//создания региона
  C:=0;                         //сначала ноль
  for Y:=H-1 downto 0 do begin  //проход снизу вверх
    X:=0;
    while X<W do begin             //от 0 до ширины-1
//пропускаем прзрачный цвет, увеличивая координату и указатель
      while (X<W) and (RGB(lpBits.rgbtRed,lpBits.rgbtGreen,lpBits.rgbtBlue)=TransClr) do begin
        Inc(lpBits);
        X:=X+1;
      end;
//если нашли не прозрачный цвет, то считаем, сколько точек в ряду он идет
      if (X<W) and (RGB(lpBits.rgbtRed,lpBits.rgbtGreen,lpBits.rgbtBlue)<>TransClr) then begin
        while (X<W) and (RGB(lpBits.rgbtRed,lpBits.rgbtGreen,lpBits.rgbtBlue)<>TransClr) do begin
          Inc(lpBits);
          X:=X+1;
        end;
        C:=C+1;  //увиличиваем счетчик прямоугольников
      end;
    end;
//ряд закончился, необходимо увеличить указатель до кратности 4
    PChar(lpBits):=PChar(lpBits)+I;
  end;

  lpBits:=lpOldBits;  //восстанавливаем значение lpBits

//Заполняем структуру RGNDATAHEADER
  rdhInfo.iType:=RDH_RECTANGLES;             //будем использовать прямоугольники
  rdhInfo.nCount:=C;                         //их количество
  rdhInfo.nRgnSize:=0;                       //размер выделяем памяти не знаем
  rdhInfo.rcBound:=Rect(0, 0, W, H);         //размер региона
  rdhInfo.dwSize:=SizeOf(rdhInfo);           //размер структуры

//выделяем память для струтуры RGNDATA:
//сумма RGNDATAHEADER и необходимых на прямоугольников
  BufSize:=SizeOf(rdhInfo)+SizeOf(TRect)*C;
  GetMem(Buf, BufSize);
  lpData:=Buf;             //ставим указатель на выделенную память
  lpData.rdh:=rdhInfo;     //заносим в память RGNDATAHEADER

//Заполдяенм память прямоугольниками
  lpRect:=@lpData.Buffer;  //первый прямоугольник
  for Y:=H-1 downto 0 do begin
    X:=0;
    while X<W do begin
      while (X<W) and (RGB(lpBits.rgbtRed,lpBits.rgbtGreen,lpBits.rgbtBlue)=TransClr) do begin
        Inc(lpBits);
        X:=X+1;
      end;
      if (X<W) and (RGB(lpBits.rgbtRed,lpBits.rgbtGreen,lpBits.rgbtBlue)<>TransClr) then begin
        F:=X;
        while (X<W) and (RGB(lpBits.rgbtRed,lpBits.rgbtGreen,lpBits.rgbtBlue)<>TransClr) do begin
          Inc(lpBits);
          X:=X+1;
        end;
        lpRect^:=Rect(F, Y, X, Y+1);  //заносим координаты
        Inc(lpRect);                  //переходим к следующему
      end;
    end;
    PChar(lpBits):=PChar(lpBits)+I;
  end;

//после окночания заполнения структуры RGNDATA можно создавать регион.
//трансформации нам не нужны, ставим в nil, указываем размер
//созданной структуры и ее саму.
  Result:=ExtCreateRegion(nil, BufSize, lpData^);  //создаем регион

  FreeMem(Buf, BufSize);  //теперь структура RGNDATA больше не нужна, удаляем
  DeleteObject(bmDIB);    //созданный растр тоже удаляем
end;

end.

Автор: Stolzen 27.10.2005, 09:44
Vit, спасибо тебе за проделанную работу!!!

Теперб к делу: в WinApi -> Мышка/клавиатура -> Мышь -> Как автоматически помещать курсор мышки в центр контрола получившего фокус? нашел ошибку.

Процедуру MoveMouseOverControl лучше написать так:

Код

procedure MoveMouseOverControl(Sender: TObject);
var
  Point: TPoint;
begin
  with TControl(Sender) do
  begin
    Point.X := Left + (Width  div 2);
    Point.Y := Top +  (Height div 2);
    Point := Parent.ClientToScreen(Point);
    SetCursorPos(Point.X, Point.Y);
  end;
end;


Иначе курсор переносится не в центр контрола, а на панель задач(у меня)

Автор: Vit 28.10.2005, 04:18
Цитата
Правда, для удобства разборок, его стиль был переоформлен в соответсвии с моими пристрастиями. Да простит меня автор, Бочаров Александр.



smile Стиль мой... Я все коды переформатировал под единый стиль в DRKB

Автор: StayAtHome 11.11.2005, 11:59
Не нашел в DRKB статтьи "Сабклассинг и суперклассинг в Delphi для начинающих" http://forum.vingrad.ru/index.php?showtopic=69246
Стоящая статья, спасибо автору smile

Автор: Quadr0 11.11.2005, 15:15
...

Автор: Guest 21.11.2005, 17:39
Дополнение к теме "Как узнать, по какой колонке был клик в TListView?"

Код

function acGetItemAt(lsv: TListView; X, Y: integer; var Col: integer): TListItem;
// Получение по координатам элемента, над которым пользователь щелкнул.
{  Пример использования:
procedure TForm1.ListView1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  col: Integer;
  li: TListItem;
begin
  li:= acGetItemAt(ListView1, x, y, col);
  if li <> nil then ShowMessage('Column #' + IntToStr(col));
end;
}
var
  i, RelativeX, ColStartX: Integer;
  ListItem: TlistItem;
  HTI: TLVHitTestInfo;
begin
  Result:= lsv.GetItemAt(X, Y);
  if Result <> nil then begin
    Col:= 0; // Первая колонка
  end
  else if (lsv.ViewStyle = vsReport) and (lsv.TopItem <> nil) then begin
    HTI.pt.x:= X;
    HTI.pt.y:= Y;
    lsv.Perform(LVM_SUBITEMHITTEST, 0, Integer(@HTI));
    Col:= HTI.iSubItem;
    Result:= lsv.Items[HTI.iItem];
  end;
end;

Автор: StayAtHome 6.12.2005, 08:11
Статья http://www.cpp.com.ua/?in=kpp_show_article&kpp_art_ID=211&_by_id=1&_CATEGORY=31&_Theme_Name=%CA%EE%EC%EF%FC%FE%F2%E5%F0%FB+%CF%F0%EE%E3%F0%E0%EC%EC%FB#
О расширении контекстных меню. К сожалению, сам не пробовал, но, думаю, интересно.

Автор: Fighter 11.12.2005, 23:01
Нужно то же самое для Visual C++!!!

Автор: December 6.2.2006, 01:43
Внесу и я свой contribution, по мере сил smile
В топике "Качественно уменьшить изображение" я усовершенствовал первый пример. Теперь он универсальнее и лаконичнее.
Код

procedure ShrinkPic(Big:TBitmap;Small:TBitmap;xscale:integer=0;yscale:integer=0);
//Из уже созданной картинки Big заполняет уже созданную картинку Small
var
  x, y: integer;
  i, j: integer;
  r, g, b: integer;
begin
//Если указан фактор сжатия по ширине, то устанавливаем правильный размер, иначе вычисляем фактор
if xscale=0
  then xscale:=Big.Width div Small.Width
  else Small.Width:=Big.Width div xscale;
//Если указан фактор сжатия по высоте, то устанавливаем правильный размер, иначе вычисляем фактор
if yscale=0
  then yscale:=Big.Height div Small.Height
  else Small.Height:=Big.Height div yscale;
for y := 0 to Small.Height-1 do
  for x := 0 to Small.Width-1 do
    begin
    r := 0;
    g := 0;
    b := 0;
    for i := 0 to xscale-1 do    
      for j := 0 to yscale-1 do  
        begin
        r := r + GetRValue(Big.Canvas.Pixels[xscale*x+i, yscale*y+j]);
        g := g + GetGValue(Big.Canvas.Pixels[xscale*x+i, yscale*y+j]);
        b := b + GetBValue(Big.Canvas.Pixels[xscale*x+i, yscale*y+j]);
        end;//for, for
    r := round(r/xscale/yscale);
    g := round(g/xscale/yscale);
    b := round(b/xscale/yscale);
    Small.Canvas.Pixels[x,y]:=RGB(r,g,b)
    end;//for y, x
end;//ShrinkPic

Замечания.
1. В двух вложенных форах можно xscale-1 или yscale-1 заменить константой, в зависимости от области использования. Мой пример соптимизирован для соотношения 4:1.
2. Процедура медленная. Даже использование scanline'ов не спасает ситуацию кардинально, поэтому я не стал приводить более быстродействующий вариант, так как он более запутан. Для продвинутого преобразования я использую отдельную библиотеку.

Автор: bagira 22.4.2006, 22:37
Vit, огромное спасибо!

На работе - не было времени придумывать код, нужно было сделать одну вещь срочно.
Взяла кусочек из DRKB, сразу, напрямую, даже не разбираясь вначале, что к чему.
Все подошло и сразу заработало. Удивительно!
Редко беру что-то готовое, обычно сама придумываю, и не всегда оптимально.

Класс! smile
Полезная штука.
Спасибо!
 

Автор: bagira 22.4.2006, 23:01
Цитата
 На Эллочку вещь произвела такое же неотразимое впечатление, какое производит старая банка из-под консервов на людоеда Мумбо-Юмбо. 

Ильф и Петров "12 стульев" 


 smile Это про меня! Точно так же радовалась, как дурочка, когда код заработал!   smile 
(извините за оффтоп)  

Автор: Vit 23.4.2006, 04:02
Цитата(bagira @  22.4.2006,  14:01 Найти цитируемый пост)
Это про меня! Точно так же радовалась, как дурочка, когда код заработал!



 smile  

Автор: StayAtHome 3.5.2006, 12:02
Чтобы случайно не пропустил: smile
http://forum.vingrad.ru/index.php?showtopic=21411&st=60&unread=&# (имелось в виду NTFS видимоsmile ) 

Автор: Bose 7.7.2006, 13:54
В статье "MDI приложения -> Сколько открыто дочерних окон?" ошибка
 

Цитата

Form1.MDIChildCount 

Закрыть все окна: 

Ошибочный код:
Код

with Form1 do  
  for I := 0 to MDIChildCount-1  
    do MDIChildren[I].Close; 




Правильный код:
Код

with Form1 do  
  For i := MDIChildCount-1 DownTo 0 Do
      if Assigned(MDIChildren[i]) then
      begin
        MDIChildren[i].Close;
      end;



п.с.  немножко отредактировал: убрал Application.ProcessMessages; из тела цикла. Всё-таки сдаётся мне, что он здесь совсем лишний
 

Автор: Wh`te 29.8.2006, 07:12
Cпасибо за ваш труд, постоянно кунаюсь в базу, просто неоценимое подспорье!   smile 

Автор: s0neg 14.9.2006, 15:39
Спасибо вам! Пользуюсь DRKB вместе с Delphi World и очень доволен smile А создание следущей версии планируется?

Автор: Quadr0 16.9.2006, 21:40
...

Автор: Akella 18.9.2006, 12:57
ждём-с с нетерпением-с

Автор: forever 27.9.2006, 16:32
Цитата(Quadr0 @  16.9.2006,  21:40 Найти цитируемый пост)
Туда же скорее всего попадут некоторые исправления

Обратил внимание на мелкую неточность: в статье "Как вычислить IP-адрес по доменному имени" приведен пример функции выполняющей прямо противоположное: получение имени по IP.

Автор: SergV 1.10.2006, 14:26
Должно быть хорошая подборка, спасибо за справочник, буду смотреть. smile 

Автор: W1zArD 19.11.2006, 12:38
а подборка больше чем в dw?
и еще не плохо бы создать оболочку... и сделать прогу в которую загоняем комменты+код а она конвертирует под рабочий лад для оболочки...  smile 

Автор: Guedda 20.11.2006, 09:25
Цитата(W1zArD @  19.11.2006,  12:38 Найти цитируемый пост)
а подборка больше чем в dw?

ДА. подборка больше.


Цитата(W1zArD @  19.11.2006,  12:38 Найти цитируемый пост)
и еще не плохо бы создать оболочку...

Есть уже оболочка:
http://quadro.drkb.ru/

Автор: Atos 3.1.2007, 15:16
По поводу статьи DRKB "Как вывести диалог Обзор папок ":

Код, приведённый в статье, к сожалению, оказался абсолютно некорректным.
Во-первых, не проинициализировано поле ulFlags структуры TBrowseInfo, что приводит к чудесам: при каждой перекомпиляции программы диалог выглядит по-разному и предлагает разные возможности. (о том, за что отвечает ulFlags, можно почитать в MSDN'е)
Во-вторых, даже при корректном использовании  TBrowseInfo программа под Windows 95 вылетает (надо бы ещё под 98 посмотреть).

И вообще, единственный нормальный и переносимый способ реализовать обзор папок - это использование связки компонентов TDriveComboBox и TDirectoryListBox со вкладки Win 3.1 (наверное, присутствующиx во всех версиях Delphi)

Автор: pankerstein 6.1.2007, 21:50
Может подобный топик есть, хотя я не нашёл... и всёже.

Недавно довелось использовать код из "DRKB", для печати stringGrid, однако он не выводит на печать (у меня не вывел) 0-й столбец.

Я Переделал его, добавив прорисовку ячеек таблицы, более удобное расположение заголовка таблицы, в качестве параметров процедуре можно передать отступ от края и сверху листа в миллиметрах. Также снабдил код комментариями. (я сам новичёк в программировании, и будь в том коде комменты, разобрался бы куда легче чем пришлось).

Надеюсь кому нибудь пригодится...

Код

procedure PrintGrid(sGrid: TStringGrid;
left_StandOff,top_StandOff:integer; sTitle: string);
var
  X1, X2,PixelsX,PrinterCoordX: Integer;
  Y1, Y2,PixelsY,PrinterCoordY: Integer;
  I: Integer;
  F: Integer;
  TR: TRect;
begin
    { left_StandOff - отступ в миллиметрах слева от края листа
      top_StandOff - отступ в миллиметрах сверху от края листа
      PrinterCoordX и PrinterCoordY - тот же отступ только в пикселах
      Высота строк и ширина столбцов взяты соответственно 150 и 400,
    при желании их размер можно передать в процедуру как параметры
    }
    //получаем информацию о разрешении принтера
    PixelsX:=GetDeviceCaps(printer.Handle,LogPixelsX);//разрешение по Х
    PixelsY:=GetDeviceCaps(printer.Handle,LogPixelsY);//разрешение по Y
    PrinterCoordX:=round(PixelsX/25.4*left_StandOff);//переводим мм в пиксели
    PrinterCoordY:=round(PixelsY/25.4*top_StandOff); //---
    with printer do
    begin
      //Печатаем заголовок таблицы
      Title := sTitle;
      BeginDoc; // Начало печати
      Canvas.Pen.Color  := 0;               // цвет-чёрный
      Canvas.Font.Name  := 'verdana';       // шрифт
      Canvas.Font.Size  := 10;              // размер шрифта
      Canvas.Font.Style := [];
      //Текс заголовка в заданных координатах
      Canvas.TextOut(PrinterCoordX, PrinterCoordY-100-
        printer.Canvas.Font.Size*10, Printer.Title);
      Canvas.Pen.Color  := 0;
      Canvas.Font.Name  := 'Verdana';
      Canvas.Font.Size  := 8;         
    end;
    for i:=0 to sgrid.colcount-1 do         //перебираем столбцы
      for f:=0 to sgrid.rowcount-1 do       //перебираем в столбце все строки
      begin
         X1 := PrinterCoordX+i*400;       //400-это ширина столбца
         X2 := PrinterCoordX+400+i*400;   //тоже
         Y1:=PrinterCoordY+f*150;         //150-высота строки
         y2:=PrinterCoordY+150+f*150;     //тоже
         TR:=Rect(x1,y1,x2,y2);
         with printer do
         begin
           Canvas.MoveTo(x1,y1);//Двигаем рисовалку в верхний левый угол таблицы
           {пишем надпись в квадрате(ячейке) i-столбеца и f-строки со сдвигом
           от верха на Y+50 и со сдвигом от левого края колонки на X+50
           }
           Canvas.TextRect(TR, X1 + 50, Y1 + 50, sGrid.Cells[i,f]);
           //рисуем линии ячейки
           Canvas.LineTo(x1,y2);
           Canvas.LineTo(x2,y2);
           Canvas.LineTo(x2,y1);
           Canvas.LineTo(x1,y1);
         end;
      end;
    Printer.EndDoc;  // конец печати
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
 PrintGrid(StringGrid1,20,20, 'Таблица1: "Название"');
end;


 smile Всех с наступающим рождеством!

Автор: Alexeyt 19.1.2007, 23:14
Печать изображения:

- печатаются любые типы графики: битмепы, метафайлы и иконки
- параметры: масштабирование, центрирование, число страниц и т.д.

Можно включить его в KB?

Код здесь:
http://forum.vingrad.ru/index.php?showtopic=132753&view=findpost&p=1004718

Автор: Akella 24.1.2007, 16:18
Цитата(Atos @  3.1.2007,  15:16 Найти цитируемый пост)
По поводу статьи DRKB "Как вывести диалог Обзор папок ":

предлагаю такой:
Код


Uses ... ShlObj, ...

  private
    { Private declarations }
    sx:String;
...

function TfmOptions.Selectdir(const str: string): string;

function BrowseCallbackProc(hwnd: HWND; uMsg: UINT; lParam: LPARAM; lpData:LPARAM): integer; stdcall;
begin
 Result := 0;
 if uMsg = BFFM_INITIALIZED then begin
 SendMessage(hwnd, BFFM_SETSELECTION, 1, LongInt(PChar(fmOptions.sx)))
 end;
end;

var
 TitleName : string;
 lpItemID : PItemIDList;
 BrowseInfo : TBrowseInfo;
 DisplayName : array[0..MAX_PATH] of char;
 TempPath : array[0..MAX_PATH] of char;
 begin
   Result:='';
   sx:=str;
   FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
   BrowseInfo.hwndOwner := Application.Handle;
   BrowseInfo.pszDisplayName := @DisplayName;
   TitleName := 'Выберите папку...';
   BrowseInfo.lpszTitle := PChar(TitleName);
   BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS or $0040 or BIF_EDITBOX or BIF_STATUSTEXT;
   BrowseInfo.lpfn := @BrowseCallbackProc;
   lpItemID := SHBrowseForFolder(BrowseInfo);

   if lpItemId <> nil then begin
     SHGetPathFromIDList(lpItemID, TempPath);
     Result:=StrPas(TempPath);
     GlobalFreePtr(lpItemID);
   end;
 (*
  //////////////////////////////////////////////////////////////////////
  ---  bi.ulFlags флаги, которые задают режим отображения диалога:-----
  /////////////////////////////////////////////////////////////////////

  BIF_BROWSEFORCOMPUTER - Возвратить только компьютеры.
    Если пользователь выбрал что-то отличное от компьютеров, то кнопка OK останется серой.

  BIF_BROWSEFORPRINTER - Возвратить только принтеры. Если пользователь выбрал что-
     то отличное от принтеров, то кнопка OK останется серой.

  BIF_RETURNONLYFSDIRS - Возвратить только папки файловой системы.
     Если пользователь выберет папки, которые не являются частью файловой системы,
     то кнопка OK останется серой. Это необходимо для того если ваша программа не
     работает с виртуальными папками вроде "Панель управления".

  BIF_BROWSEINCLUDEFILES - Диалог просмотра будет отображать файлы вместе с директориями.

  BIF_DONTGOBELOWDOMAIN - Не включать сетевые папки Доменного уровня ниже,
     чем в TreeView контроле.
  BIF_RETURNFSANCESTORS - В качестве выбора допустимы только объекты,
     представленные в файловой системе.
  BIF_STATUSTEXT - Включает область статуса в блок диалога. Функция может
     установить текст посылая сообщения блоку диалога.
  BIF_EDITBOX - В диалоговом окне будет присутствовать строка редактирования,
    таким образом пользователь может набрать имя элемента.
  BIF_VALIDATE - Если пользователь введёт неверное имя в строке редактирования,
    то диалоговое окно вызовет функцию обратного вызова приложения по сообщению BFFM_VALIDATEFAILED.

  ResPidl := SHBrowseForFolder(BI);
*)

end;


//использование
dbeArcSended.Text := IncludeTrailingPathDelimiter(Selectdir(ParamStr(0)));

Автор: CatATonik 25.1.2007, 11:44
В Delphi 2006 появилось много расширений языка, в том числе перегрузка операторов, "Class-like" записи. Что позволяет создавать собственные типы данных (не классы, а именно типы значения)! Для демонстрации этих возможностей я написал тип TDate для работы с датами. 
Код находится приаттаченом файле (код сырой и возможны ошибки, но новые возможности демонстрируются хорошо). А вот пример его использования:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
  Date: TDate;
begin
  Label1.Caption := Date.Text;
  Date := TDate.Today;
  Label2.Caption := Date.Text;
  Dec(Date);
  Label3.Caption := Date.Text;
  Label4.Caption := IntToStr(TDate.Today - Date);
  Date := Now;
  Label5.Caption := Date.Format('DD MMM YYYY');
  Date := MaxInt;
  Label6.Caption := Date.Text;
  Date.ISODate := '2009-11-25';
  Label7.Caption := Date.Text;
  Date.Year := 1993;
  Label8.Caption := Date.Text;
end;


P.S. На очереди создание типа Decimal для вычислений с фиксированной точностью (как в БД).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)