В дополнение к отображению данных полей в элементе управления решетка - grid (далее по тексту справки будет использовано английское наименование - grid), вы можете иметь в его колонках элементы управления, для того что показать пользователю данные во вложенных текстовых боксах (textboxes), чек-боксах (checkboxes), выпадающих списках (drop-down list boxes), счетчиках (spinners), а также в других элементах управления. Например, если у вас в таблице имеется поле типа logical, то когда вы запускаете форму, пользователь может сказать, какие значения записи верны (.T.), а какие нет (.F.), увидев, отмечен чек-бокс или нет. Изменение значения такого поля также просто, как установка или снятие метки в чек-боксе.

Вы можете добавлять элементы управления в колонки grid интерактивно в конструкторе форм или написать код для ввода элементов управления в колонки в run time.

Для интерактивного добавления элементов управления в колонку grid

  1. Добавьте в форму элемент управления grid.

  2. В окне Properties (Свойства) (Visual FoxPro) установите значение свойство ColumnCount в номер желаемой колонки.

    Например, впечатайте 2 для двух колоночного grid.

  3. В окне Properties (Свойства) выберите родительскую колонку для элемента управления из бокса Object (Объект).

    Например, выберите Column1 для добавления элемента управления в Column1. Контур grid изменится, указывая, что вы редактируемого объект в контейнере, когда вы сделаете выбор колонки.

  4. Выберите желаемый элемент управления в полоске инструментов Form Controls (Элементы управления форм) и щелкните по родительской колонке.

    Новый элемент управления не будет отображен в колонке grid в Form Designer (Конструкторе форм), но будет видим в run time.

  5. Убедитесь, что в окне Properties (Свойство) элемент управления отображается в боксе Object (Объект) смещенным в родительской колонке.

    Если новый элемент управления представляет собой checkbox, установите его свойство Caption (Заголовок) в " ", а свойство Sparse колонки установите в False (.F.).

  6. Установите свойство ControlSource родительской колонки в желаемое поле таблицы.

    Например, ControlSource колонки в приведенной ниже иллюстрации установлено в products.discontinu из базы данных Testdata.dbc в каталоге Visual FoxPro ...\Samples\Data.

  7. Убедитесь, что свойство CurrentControl родительской колонки указывает но новый элемент управления.

Когда вы запустите форму, элемент управления будет отображен в колонке grid.

NoteСовет

Если вы желаете обеспечить центровку элемента управления checkbox в колонке grid, создайте класс контейнера, добавьте в него элемент управления checkbox и установите позицию checkbox в классе контейнера. Добавьте созданный класс контейнера в колонку grid и установите свойство ControlSource, содержащегося в контейнере checkbox в желаемое поле.

Для удаления элементов управления из колонок grid в Form Designer (Конструкторе форм)

  1. В боксе Object (Объект) окна Properties (Свойства) (Visual FoxPro) выберите элемент управления.

  2. Активизируйте Form Designer (Конструктор форм).

    Если окно Properties (Свойства) отображается, имя элемента управления отобразится в боксе Object (Объект).

  3. Нажмите клавишу DELETE.

Кроме того, вы можете добавить элементы управления в колонку grid с помощью метода AddObject в программном коде.

Для программного добавления элементов управления в колонку grid

  • В событии Init элемента управления grid, используйте метод AddObject для добавления элементов управления в колонку grid и установите свойство CurrentControl колонки в добавленный элемент управления.

Например, приведенные ниже строки кода в событии Init элемента управления grid добавляет два элемента управления в колонку grid и указывает один из них  в качестве текущего элемента управления:

 CopyCode imageСкопировать код
THIS.grcColumn1.AddObject("spnQuantity", "SPINNER")
THIS.grcColumn1.AddObject("cboQuantity", "COMBOBOX")
THIS.grcColumn1.CurrentControl = "spnQuantity"
* Следующие строки кода обеспечивают видимость элемента управления
* и отображение его в каждой строке grid
THIS.grcColumn1.spnQuantity.Visible = .T.
THIS.grcColumn1.Sparse = .F.

В этом примере, у Column1 имеется три возможных значения текущего элемента управления:

  • spnQuantity

  • cboQuantity

  • Text1 (элемент управления, используемый по умолчанию)

    NoteЗамечание

    Установка свойств на уровне Grid не переносятся на колонки или заголовки. В таких случаях вы должны установить свойства заголовков и содержащихся в колонках элементах управления напрямую; они не наследуют свои свойства из установок на уровне элемента решетки Column.

    NoteСовет

    Для более правильного отображения элементов управления combobox в колонках grid, установите перечисленные ниже свойства combobox:

     CopyCode imageСкопировать код
    BackStyle = 0      && Transparent
    Margin = 0
    SpecialEffect = 1 && Plain
    BorderStyle = 0      && None

Смотрите также