CjHooksDTT Мой компонент написанный из-за того, что мне ненравилось, когда при глобальном хуке надо писать DLL. Для XP можно не писаль DLL для НИЗКОУРОВНЕВОГО глобального хука, но все эти варианты были слишком нудными. С самого начала моей перехватческой деятельности я поставил цели:
1. Код как можно короче, понятнее и проще. 2. Только один исполняемый файл программы, без всяких DLL. 3. Возможность перехвата в windows: 98, 2000, XP, VISTA
Узнал про процедуру GetKeyState (кстати, она основа моего компонента) и решил организовать цикл с ней. Компонент осуществляет перехват клавиш с 1 по 255, то есть практически все (scan-коды) клавиши. Там же в юните сделал список констант всех клавиш (по рисункам кнопок на своей клавиатуре).
События: OnKeyDown, OnKeyPress, OnKeyUp.
Недоработки: при событии OnKeyPress: например в блокноте: нажата,задержка,нажата,нажата,нажата.... а при этом событии в компоненте: нажата,нажата,нажата... То есть нету задержки, буду работать над этим. Лучше сделать интервал сканирования маленьким а то будут <пробелы> нажатий если Юзверь будет быстро тыкать. Ну в общем побольше отзывов, комментов, поправок и предложений по поводу компонента пишите здесь или мне на мыло StrToInt@mail.ru
ps Для работы ниже, чем XP, лучше переделать под виндовый таймер.
Мой компонент написанный из-за того, что мне ненравилось, когда при глобальном хуке надо писать DLL. Для XP можно не писаль DLL для НИЗКОУРОВНЕВОГО глобального хука, но все эти варианты были слишком нудными. С самого начала моей перехватческой деятельности я поставил цели:
1. Код как можно короче, понятнее и проще. 2. Только один исполняемый файл программы, без всяких DLL. 3. Возможность перехвата в windows: 98, 2000, XP, VISTA
Узнал про процедуру GetKeyState (кстати, она основа моего компонента) и решил организовать цикл с ней. Компонент осуществляет перехват клавиш с 1 по 255, то есть практически все (scan-коды) клавиши. Там же в юните сделал список констант всех клавиш (по рисункам кнопок на своей клавиатуре).
События: OnKeyDown, OnKeyPress, OnKeyUp.
Недоработки: при событии OnKeyPress: например в блокноте: нажата,задержка,нажата,нажата,нажата.... а при этом событии в компоненте: нажата,нажата,нажата... То есть нету задержки, буду работать над этим. Лучше сделать интервал сканирования маленьким а то будут <пробелы> нажатий если Юзверь будет быстро тыкать. Ну в общем побольше отзывов, комментов, поправок и предложений по поводу компонента пишите здесь или мне на мыло StrToInt@mail.ru
ps Для работы ниже, чем XP, лучше переделать под виндовый таймер.
Компонент ColorRow представляет из себя мини-палитру из десяти цветов(которые можно задать). В любой момент времени выбран какой-то цвет. Таким образом можно не использовать каждый раз ColorDialog, а повесить на форму ColorRow. В архиве кроме самого компонента содержится тестовое приложение.
Модуль TDesigner, позволяющий изменять положение, размер, выравнивание любых визуальных компонентов на форме запущеной программы, сохранять в INI файл и загружать данные настройки. Дайте возможность изменить дизайн пользователю во время работы с программмой :)
Уже вполне состоятельная библиотека из 4-х компонентов для создания скелетов загрузочных программ (типа смарта Nero6) и диалогов about с использованием 32-ой графики для формы. Правда «жрущая» CPU :) Прилагается примерчик скелета приложения (типа смарта Nero6).
Установка: инсталлировать Desktops.dpk.
Забыл добавить – только под 2К, XP
Хотелось бы услышать пожелания и нарекания, и стоит ли ее дальше развивать.
DigestSDK - система автоматизации разработки приложений по работе с БД MSSQL. DigestSDK - бусплатный набор модулей на Delphi,которые избавляют программиста от написания рутинного кода по обслуживанию БД MSSQL и позволяют сосредоточиться на логике приложения - а не на написании различных сервисных функций: доступа, изменения, сортировки и т.д. На сайте http://www.digestsdk.nsknet.ru можно скачать исходные тексты, демонстрационное видео и примеры.
Перечень стандартных функций После создания справочник автоматически содержит следующие функции: - добавление; - удаление (в том числе групповое); - редактирование (в том числе групповое); - поиск (с возможностью частичного соответствия); - сортировка (при нажатии на заголовке DBGrid) - сортировка (с указанием множества полей и порядка сортировки); - выделение записей; - подсчет кол-ва записей для текущей выборки и выделенных записей; - быстрый переход на указанную запись; - задание максимального кол-ва отображаемых записей; - сохранение последнего состояния справочника в БД или в файле (настройки колонок, последний запрос, условия отбора и сортировки, положение формы); - настройка отображаемых колонок (видимость, ширина, положение); - автоматический перевод английских наименований в соответствии с пользовательским справочником.
Дополнительные возможности
Перечисленные выше возможности могут расширены программистом следующими возможностями: - изменение любого набора полей (с указанием собственных функций отображения, проверки и т.д.) - переопределение стандартных процедур добавления, удаления, редактирования; - добавление в справочник собственных процедур, не входящих в список, поддерживаемых справочником; - задание списка полей запрещенных для редактирования и удаления; - задание внешнего вида справочника (цвет выделенных записей, набор отображаемых кнопок, добавление собственных кнопок и панелей и т.д.); - задание начальных поисковых значений. Представленный перечень функций и возможностей далеко не полный и может быть расширен программистом за счет переопределения и/или написания собственных дополнительных функций. Чтобы не быть голословным приведу фрагмент кода по созданию справочника с выборкой данных из таблицы Production.Product (из демонстрационной БД AdventureWorks к MSSQL 2005). В данном примере вызывается конструктор класса TSimpleDigest, которому передается: sql запрос, имя таблицы в БД (к которой будут применяться операции добавления, изменения и удаления), обычная строка подключения ADO, указание где создавать справочник (TWinControl или nil, если на новой форме) и идентификатор оператора – некоторое целое число – код, под которым справочник будет сохранять свое последнее состояние. Пример использования с демонстрацией результатов.
Пример программы создания: //создаем основой справочник DigestProducts := TSimpleDigestR.Create( 'select top 10 * from Production.Product', //запрос в произвольной форме 'Production.Product', //Имя таблицы для изменения ConnectionString, //Строка подключения nil, //Где создавать справочник 0 //Идентификатор оператора (для сохранения настроек) ); //открываем справочник DigestProducts.Open(); DigestProducts.ShowModal;
TdpTrayIcon - компонент для отображения значка в TrayNotify.Даёт программисту очень много возможностей от получения координат значка, до обработки всех событий мыши. TdpChoiceSpectr, TdpGradSpectr, TdpColorSpectr, TdpPipetteShape, TdpPipette - компоненты позволят вам с легкостью создать свой SpectroScope, не хуже чем у профессиональных программ. И м.д. Имеются примеры - исходники, а также есть справка в формате CHM. OS Windows. Совместимость Delphi 6, 7, 10, 11.