Краткое описание пакета 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