Определение буфера передачи
-----------------------------------------------------------------
Буфер передачи - это запись с одним полем для каждого управ- ляющего элемента, участвующего в передаче. Окно или диалог могут также иметь управляющие элементы, значения которых не устанавли- ваются механизмом передачи. Например, командные кнопки, у которых нет состояния, не участвуют в передаче. Это же справедливо для групповых блоков.
Для определения буфера передачи нужно определить поле для каждого участвующего управляющего элемента диалога или окна. Оп- ределять поля для каждого управления диалога или окна не требует- ся - нужно лишь определить поля для тех из них, которые будут по- лучать и принимать значения по вашему желанию. Этот буфер переда- чи хранит один из каждых типов управляющих элементов, кроме ко- мандной кнопки и блока группы:
type TSampleTransferRecord = record Stat1: array[0TextLen-1] of Char; { статический текст } Edit1: array[0TextLen-1] of Char; { текст управляющего элемента редактирования } List1Strings: PStrCollection; { строки блока списка } List1Selection: Integer; { индекс выбранных строк } ComboStrings: PStrCollection; { строки комбинированного блока } ComboSelection: array[0TextLen-1] of Char; { выбранные строки } Check1: Word; { проверка состояния блока} Radio1: Word; { состояние кнопки с независимой фиксацией } Scroll1: ScrollBarTransferRec; { диапазон полосы прокрутки и т.д. } end;
В каждом типе управляющего элемента хранится различная ин- формация. Буфер передачи для каждого стандартного управляющего элемента поясняется в следующей таблице:
Поля буфера передачи для каждого типа управляющего элемента Таблица 12.11 +-----------------------+---------------------------------------+ | Тип управляющего | Буфер передачи | | элемента | | +-----------------------+---------------------------------------| | Статический | Символьный массив размером до макси-| | | мальной длины текста, плюс завершающий| | | нулевой символ. | | | | +-----------------------+---------------------------------------| | Редактирование | Текстовый буфер управляющего элемента| | | редактирования размером до длины, оп-| | | ределенной в текстовом поле TextLen. | | | | +-----------------------+---------------------------------------| | Блок списка | | | одиночный выбор | Набор строк в списке, плюс целочислен-| | | ный индекс выделенной строки. | | | | | множественный выбор | Набор строк в списке, плюс запись, со-| | | держащая индексы всех выделенных эле-| | | ментов. | | | | +-----------------------+---------------------------------------| | Комбинированный блок | Набор строк в списке, плюс выбранная| | | строка. | | | | +-----------------------+---------------------------------------| | Кнопка с независимой | Значения Word с указывающими состояния| | фиксацией | bf_Unchecked, bf_Checked и bf_Grayed. | | | | +-----------------------+---------------------------------------| | Кнопка с зависимой | Значения Word с указывающими состояния| | фиксацией | bf_Unchecked, bf_Checked и bf_Grayed. | | | | +-----------------------+---------------------------------------| | Полоса прокрутки | Запись типа TScrollBarTransferRec, со-| | | храняющая диапазон полосы прокрутки и| | | позицию в ней. | | | | +-----------------------+---------------------------------------+
Тип TScrollBarTransferRec имеет вид:
TScrollBarTransferRec := record LowValue : Integer; HighValue: Integer; Position : Integer; end;