Краткое описание пакета RSPak
Модули:
QPix
TQuickPixels - класс для быстрой работы с пикселями TBitmap'а, создан MBo и Алексеем Радионовым, я исправл несколько багов и кое-что добавил
RSGraphics
RSLoadPic - загрузка картинки известого программе формата в TBitmap
RSGetPixelFormat - получение PixelFormat'а битмэпки - иногда(в случае pf16bit, например) TBitmap.PixelFormat возвращает pfCustom, иногда это можно уточнить
rsRGBtoHLS, rsHLStoRGB - перевод в/из HLS
RSAdjustLum - осветление через HLS
RSGetIntensity - все равно что Lum в HLS, но проскалировано от 0 до 255, а не до 240.
RSAdjustIntensity - осветление, не добавляющее былый(как RSAdjustLum) при достижении предела по одной из компонент
RSSwapColor - меняет местами Red и Green
RSMixColors - смешивание цветов с весами
RSMixPics - смешивание картинок с весами
RSGrayscale - перевод картинки в Grayscale
RSGrayscaleSpec - перевод картинки в градации двух цветов (не обязательно белого с черным, как в Grayscale)
RSDrawMonoBmp - рисование монохромной битмэпки выбранным цветом (by Алексей Румянцев - автор RyMenus)
RSDrawMask - рисует маску выбранным цветом
RSDrawDisabled - рисует Disabled картинку, как OfficeXP
RSTransparentRandom - устанавливает цвет случайных пикселей в цвет фона, используя чисто или маску прозрачности
RSTransparentFixed - устанавливает в цвет фона пиксели с определенным шагом
RSChangeGrayPic - для добавления/вычитания числа из маски прозрачности
RSGradientV,H - линейний градиент
RSSimpleRotate32 - вращение на 90, 180, 270 грудусов и Flip-анье картинок
RSTransform32 - произвольное вращение картинок и другие преобразования координат
RSAnyTransform32 - произвольное искажение картинки
RSImgList
Одна функция вытаскивания картинки из ImageList
RSLang
Для перевода приложения, пример - Demo
RSMessages
Обертки для CM_ сообщений
RSStrUtils
RSParseString, RSGetToken, RSGetTokens, RSGetTokensCount - распарсивание строки, разбитой на части раздекителями (например, разбиение текста на строки) - очень удобно, надо будет демку сделать
RSStringReplace - и в Аффрике StringReplace, только оптимизированный
RSIntToStr, RSStrToInt - сами знаете что
RSVal - оберттка над Val для удобства
RSSysUtils
TRSWnd - класс для удобства работы с hwnd. (к нему надо явно преводить hwnd, вместо того, чтобы создавать / уничтожать)
TRSBits - класс для работы с битами. Приводите к нему указатель на некоторую память и работайте как с массивом битов.
TRSObjStack - стек, не реаллокирующийся при добавлении элементов.
TRSSharedData - для разделения MMF между процессами
TRSFindFile - класс для удобного поиска/перечисления файлов (на основе функций FindFirstFile и т.д.)
RSCreateDir и т.п. - создание всех директорий пути (как ForceDirectory), RSCreateFile - в случае создания файла, создает весь путь к нему.
RSLoadFile, RSSaveFile, RSLoadTextFile, RSSaveTextFile - просто загружает файлы в array of byte
RSFileOperation - удобная обертка для SHFileOperation
RSLoadProc - для динамической загрузки процедур
RSDelayLoad - отложенная загрузка
RSRunWait - запуск и ожидание завершения приложения
RSAssertErrorHandler - обработчик Assertion'ов, не показывающий пути к модулю (только имя) в сообщении об ошибке
RSMessageBox - обертка MessageBox
RSCreateRemoteCopy - для создания копии данных в АП др. процеса
RSSendDataMessage - для отправки сообщений типа LVM_GETITEM другому проложению
RSUtils
TRSSimpleHintWindow - хинт с настраиваемым цветом обводки (RSHintHasShadow) и наличием тени (RSHintBorderColor)
RSFixThemesBug - исправляет баг с отсутствием реакции на включение тем (в Delphi 2006 его уже нет)
RSIsControlVisible - видим ли контрол, RSPtInControl - в Rect-е контрола ли кнопка, RSSetFocus - SetFocus, RSIsChild - аналог IsChild для контролов
RSHookFlatBevels - чтобы без тем приложение смотрелось хорошо, я ставлю всем Edit'ам плоский Bevel, а чтобы они отключались при включении тем, сделал эту процедуру
RSShowHint, RSHelpHint, RSErrorHint - см. Demo
RSMakeTransparent - нормальная реализация "прозрачного" окна - примера, который можно найти в очень многих FAQ'ах, в том числе в нашем
RSPaintList - отрисовка ListBox'а и ComboBox'а по типу RSMenus
RSProcessMessages - как Application.ProcessMessages, но вызывает MouseIdle(т.е. SpeedButton'ы реагируют на вход мыши) и синхронизацию потоков
RSListBoxHint
Для показа хинта для пунктов, не помещающихся в ListBox
RSMessages
record'ы для некоторых CM_ сообщений
RSMenus
Красивая отрисовка менюшек. Цвета вычисляются в соответствии с цветовой темой.
RSRecent
Реализация списка недавних документов
RSRegistry
Добавлена функция Read, не возбуждающая исключение при ошибке (отсутствие параметра и т.п.)
RSQ
Мои "настройки"
Компоненты:
RSTimer
Таймер, создающий окно только на время работы, а не на все время существования.
RSDialogs
TRSOpenSaveDialog - диалог, у которого можно менять режим Open/Save
RSPopupMenu
Добавлено событие OnAfterPopup
Процедура SetItems - для того, чтобы "склонировать" подменю. Например, в меню File есть подменю Recent Files - его можно показать при нажатии на пункт Open вывести таким способом.
RSPainters
TRSColorTheme - настройки отрисовки RSMenus и RSSpeedButton
RSGlue
Прилипание формы к краям экрана и слипание между собой, а так же контроллов к краям формы.
RSWinController
Для перехвата оконной процедукы контролов, у которых нет свойства OnWndProc
Контролы:
Во всех контролах добавлены события OnMouseEnter, OnMouseLeave, OnWndProc, свойство MouseInside. Так же расшарены стандартные свойства.
В WinControl'ах еще добавлено событие OnCreateParams и свойство State.
В наследниках TCustomEdit добавлены GetSelection и SetSelection, позволяющие получить и установить выделение и положение каретки (определить, на каком конце выделения она находится в стандартных невозможно)
RSButton, RSEdit, RSShape
Не добавлено ничего, кроме перечисленного выше (разве что в RSEdit добавлено Ctrl+A)
RSPageControl
Свойство RuntimeTabIndex - при установке, вне зависимостти от Tab-а, выбранного в DesignTime, в Runtime будет выбран указанный здесь.
RSLabel
Ложится на сетку так, что линия ткста совпадает с линией текста Edit'ов
RSListView
Исправлен 1 баг - при Multiselect при выделении нового пункта не срабатывал OnSelectItem
RSValueListEditor
Исправлены 2 бага:
List index out of bounds в процедуре SetCell
OnSelectCell и OnValidate не вызывались после удаления строки
RSStringGrid
OnBeforeSetEditText - можно поменять устанавливаемый текст
OnCreateEditor - срабатывает при создании InplaceEdit'а
RSListBox
Добавлен Hint из RSListBoxHint
RSTrackBar
Исправлена большая кривость - при клике мышкой бегунок перескакивал на 2(PageSize) позиции, вместо того, чтобы встать в указанное положение
SelEnabled - включение/отключение режима выделения (в стандартном всегда включен)
OnAdjustClickRect - например, в стандарте при клике по самим отметкам бегунок не передвигается. Измените ClickRect ион будет передвигаться.
RSComboBox
Добавлен Hint из RSListBoxHint (thx Игорю Шевченко за способ получить Hfndle выпадающего списка)
В режиме OwnerDraw можно менять высоту
Кнопка расуется стандартно вне зависимости от выбранного BevelKind
OwnerDraw можно использовать при любом стиле - свойство StyleDropDown
RSMemo
Поддерживает Ctrl+A, правильную навигацию - см. Demo
RSPanel
Поддерживает CustomDraw
Расшарены Bevel'ы, общие для всех WinControl'ов, под именем BevelEx
RSSpeedButton
Поддерживает CustomDraw
Красивая отрисовка по типу RSMenu
RSMakeToolBar - создание тулбара из моих кнопок на основе списка MenuItem'ов
RSSpinEdit
Правильно поддерживает темы XP
Настраивается система счисления
Можно ускорить перемотку мышкой, нажав не кнопку и "потянув"
Есть событие Changed, срабатывающее при нажатии Enter / переходе в другой контрол / нажатии на кнопку SpinButton