Программный Файл: ...\Samples\Solution\Controls\Pgframe\Pfsam1.scx

В данном примере иллюстрируется использование Контейнера Page Frame с Закладками (Tabs). Количество Закладок может изменяться динамически, когда пользователь выбирает новое значение для управляющего элемента Spinner. При активации новой Закладки, в соответствующем Списке отображается значение выбранной Закладки.

Для изменения количества Закладок в Контроле PageFrame, при выполнении программы:

  • Установите новое значение для свойства PageCount, отвечающее за количество Страниц (листов).

Список типа List Box, из данного примера, размещается на тестовой Форме, но не принадлежит ни одной из Страниц Контейнера. Данное размещение списка позволяет контролировать все страницы контейнера, вне зависимости от их активности.

В примере используются два пользовательских Метода, один определяет Заголовок Закладки, а другой отслеживает значения в указанном Списке Страниц, их наименования: UpdateList и SetCaption.

Метод UpdateList:

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

  CopyCode imageКопировать Код
LOCAL lnPage, lcHigh, lcLow
#define NO_MATCH_LOC 'No Matching Names for '
DIMENSION THISFORM.aCustomers[1,2]
lnPage = THISFORM.pgfRolodex.activepage
THISFORM.aCustomers[1,1] = NO_MATCH_LOC + ;
THISFORM.pgfRolodex.Pages(lnPage).Caption
THISFORM.aCustomers[1,2] = ""

lcHigh = substr(THISFORM.pgfrolodex.Pages(lnPage).caption,3,1)
lcLow = substr(THISFORM.pgfrolodex.Pages(lnPage).caption,1,1)
SELECT company, phone FROM customer;
WHERE company <= lcHigh and company => lcLow;
ORDER BY company;
INTO ARRAY THISFORM.aCustomers

THISFORM.lstCustomers.Requery
THISFORM.lstCustomers.Value = 1

Метод SetCaption:

Данный метод выполняется в том случае, когда активируются соответствующие События контрола Spinner UpClick / DownClick и определяет, какие Заголовки Закладок должны появляться на тестовой Форме.

  CopyCode imageКопировать Код
THISFORM.LockScreen = .T.
FOR n = 1 to THISFORM.pgfRolodex.PageCount
FirstLetter = SUBSTR(THISFORM.Alphabet,((n - 1)*ROUND(LEN(THISFORM.Alphabet)/THISFORM.pgfRolodex.PageCount,0))+1,1)
IF n = THISFORM.pgfRolodex.PageCount &&last page
LastLetter = right(THISFORM.Alphabet,1)
ELSE
LastLetter = SUBSTR(THISFORM.Alphabet,((n)*ROUND(LEN(THISFORM.Alphabet)/THISFORM.pgfRolodex.PageCount,0)),1)
ENDIF
THISFORM.pgfRolodex.Pages(n).Caption = FirstLetter + "-" + LastLetter
ENDFOR
THISFORM.LockScreen = .F.

Пользовательское Свойство Alphabet определяет набор Заголовков для Закладок контрола PageFrame. Для изменения набора символов (алфавита), например в условиях Локализации рассматриваемого примера, определите значение свойства Alphabet в требуемом Языке Локализации, например, для Русской версии: "АБВГДЕЖЗИЙКЛМН...".

См. также