Справка из Help.
Синтаксис:
Textbox.AutoComplete [ = nValue]
Возвращаемое/устанавливаемое значение - nValue - численный тип данных.
Ниже приведена таблица, иллюстрирующая возможные значения параметра nValue:
nValue |
Действие |
0 |
Не отображать лист входов |
1 |
Алфавитный - сортирует входа по алфавиту и не является регистрозависимым |
2 |
Наиболее часто используемые (MFU) - сортирует входа на основании большего значения счетчика и затем на основании наиболее позднего ввода. |
3 |
Самые последние использованные - сортирует входа на основе данных поля Updated в таблице источника ввода, где введенные самыми последними будут стоять первыми с списке. |
4 |
Пользовательская Использует значение поля Weight, заполняемое с использованием вашего собственного алгоритма для указания каким образом вы желаете сортировать входы списка. Результат сортируется в убывающем порядке (от высшей к низшей величине). При равенстве весов, используется значение поля Updated (самые последние введенные покажутся первыми). |
Пример: отсутствует.
|
AutoCompSource.
Определяет поле Source в таблице, в которой будет фиксироваться текст для обеспечения функциональности схемы auto-completion в элементе управления Textbox. Read/write в design и run time.
cTextbox.AutoCompSource [= cValue]
Возвращаемое/устанавливаемое значение - cValue - представляет собой имя поля в таблице auto-completion, ассоциированной с элементом textbox.
Примечание
Применяется к элементу управления TextBox (Visual FoxPro)
Определяет имя Source используемое для поиска данных в таблицеAutoComp. Это поле является регистро-независимым и хранится как uppercase в таблице AutoComp.
Когда вход записан или прочтен из таблицы AutoComp, то используется ключ, который является полем Source.(?) По-умолчанию, если это свойства не указано, тогда имя элемента textbox становится ключевым значением в этом поле таблицы AutoComp.
Вы можете написать приложения, которые используют одну и ту же таблицу AutoComp, которая поставляет значения для нескольких элементов textbox внутри одного и того же приложения.
Пример
Например, вы можете иметь много форм, которые используют поле Address. Установкой свойства AutoCompSource в “myAddress” для каждого элемента textbox, которые отображает адресное поле, вы можете многократно использовать входы в таблице AutoComp по всему приложению.
Синтаксис:
AddressForm.AddressText1.AutoCompSource = 'myAddress'
|
AutoCompTable
Указывает имя и местонахождение таблицы, которая будет хранить данные, используемые элементоv Textbox для предложения величин, основанном на ранее введенных значениях.
Textbox.AutoCompTable [ = cValue]
Возвращаемое/устанавливаемое значение - cValue - определяет имя и путь к таблице, обеспечивающей отображение list ранее использованных входов в элементе textbox.
Примечание
Применяется к элементу управления TextBox (Visual FoxPro)
По умолчанию путь и имя для этого свойства равны HOME(7) + “Autocomp.DBF”. Если вы введете имя для таблицы, которой еще не существует, последняя будут автоматически создана.
Пример
AddressForm.Text1.AutoCompTable = 'c:\myApp\AutoComp.DBF'
|
Автодополнение в реальной жизни.
Тренируемся, ничтоже заботясь пока о том, где эта таблица находится.
Вводим в форму для элемента Textbox и даем им имена "postindex" и"city".
Прописываем свойства для введенных Textbox в окне PEM.


Теперь запускам форму и вводим несколько значений в оба блока, чтобы получить какие-то входа в списках. Имеем:


Ищем таблицу. По-умолчанию она располагается в скрытом каталоге, путь к которому получаем, благодаря ссылке в справке, по Home(7) - у меня на этой машине ее путь равен: C:\Documents and settings\Administrator\Application data\Microsoft\Visual FoxPro 9\Autocomp.dbf. Поскольку я не указывал ее в свойствах элементов, то она была создана автоматически и содержит следующие данные:

Естествено интересует, как отнесется VFP к вставке данных в таблицу Autocomp.dbf при использовании выборки из другой таблицы, в случае, если мы не будет заполнять все поля - вес, счетчик, дату создания и модификации.
Сделаем выборку:
SELECT distinct postindex AS DATA, ;
"POSTINDEX" AS SOURCE ;
FROM partners ;
INTO CURSOR pindexes ;
WHERE postindex NOT in ;
(SELECT postindex FROM autocomp)
APPEND FROM DBF('pindexes')
Все тип-топ. Счетчик и веса сброшены в ноль, а поля создания и модификации пустые. Наверно более грамотно использовать в таком случае функцию Datetime() для этих полей. Но работает и так - смотри результат запуска формы:

Число отображаемых входов в списке устанавливается в Options и имеет ограничение по минимуму - равное 5:

В этом случае список выглядит так:

Вернемся к таблице AUTOCOMP.DBF.
Ниже представлена ее структура:
Structure for table: C:\...\VISUAL FOXPRO 9\AUTOCOMP.DBF
Number of data records: 12
Date of last update: 06/07/04
Memo file block size: 64
Code Page: 1251
Field |
Field Name |
Type |
Width |
Dec |
Index |
Collate |
Nulls |
Next |
Step |
1 |
SOURCE |
Character |
20 |
|
|
|
No |
|
|
2 |
DATA |
Character |
254 |
|
|
|
No |
|
|
3 |
COUNT |
Integer |
4 |
|
|
|
No |
|
|
4 |
WEIGHT |
Integer |
4 |
|
|
|
No |
|
|
5 |
CREATED |
DateTime |
8 |
|
|
|
No |
|
|
6 |
UPDATED |
DateTime |
8 |
|
|
|
No |
|
|
7 |
USER |
Memo |
4 |
|
|
|
No |
|
|
** Total ** |
303 |
Таблица имеет индекс:
тип: regular
тэг: Data
упорядочивание: по возрастающей
выражение: source+UPPER(LEFT(data,30))+PADL(count,8)
collate: machine
filter: NOT DELETED()
триггеры и правила отсутсвуют
Если учитывать структуру таблицы, то тогда предварительное заполнение для известных полей может осуществляться последовательно выборкой в курсор и занесением в таблицу автодопления данных выборки. Тогда корректный синтаксис для такой операции может выглядеть так:
LOCAL ldDateTimeStamp
ldDateTimeStamp=DATETIME()
SELECT distinct ;
postindex AS DATA, ;
"POSTINDEX" AS SOURCE, ;
0 AS COUNT, ;
0 AS WEIGHT, ;
ldDateTimeStamp AS created, ;
ldDateTimeStamp AS updated ;
FROM partners ;
INTO CURSOR pindexes ;
WHERE postindex NOT in ;
(SELECT DISTINCT postindex FROM autocomp)
В данном примере значения почтовых индексов, хранящиеся в поле postindex существующей рабочей таблицы PARTNERS выбираются как поле DATA таблицы AUTOCOMP, имя используемого элемента Textbox - как строка для поля SOURCE таблицы AUTOCOMP, значения для полей COUNT и WEIGHT таблицы AUTOCOMP выбираются как нули, а значения для полей CREATED UPDATED таблицы AUTOCOMP определяет локальная переменная ldDateTimeStamp, со значением, возвращаемым функций DATETIME()
В случае, если мы хотим предоставить пользователю уже готовую таблицу автодополнения, мы должны определить для нее имя и указать его в свойствах AutoCompTable тех элементов Textbox, для которых мы желаем обеспечить функциональность автодополнения. Естественно, что такая таблица должна быть включена в проект
Будет продолжено...
|
Cелектор для быстрого перехода на сайты, связанные с Visual FoxPro.
|
|