Делаем первую форму дальше - ставим Listbox

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

И еще нужна кнопка, чтобы форму закрыть. Делать это крестиком в уголке окна – плохо, его даже блокируют специально.

Список можно получить несколькими способами.

1. ListBox – самый простой способ. По сути, это просто меню, элементами которого являются, в данном случае, фамилии и имена людей.
2. ComboBox – более сложный, но и более совершенный способ. Позволяет не только выбирать фамилии из списка, но и производить определенные манипуляции с данными.
3. Grid – самый совершенный способ, иногда позволяет заменить весь остальной ввод. Но работать с ним непросто, да и возможности его часто избыточны. Иначе двух предыдущих способов просто не было бы
4. Browse – старый способ работы с базой. Позволяет работать с таблицами напрямую. Обычно не рекомендуют его применять, но иногда он может здорово выручить.

Нам, пока что, особые изыски не нужны, и Листбокс вполне подойдет.

1. В окне Form Control нажимаем кнопку “Listbox”
2. Ставим указатель мыши в левый верхний угол будущего листбокса, нажимаем кнопку мыши, и тянем ее в правый нижний угол
3. Не увлекаемся - внизу нужно оставить место для кнопки закрытия окна
4. Отпускаем кнопку мыши, любуемся результатом

Но работать без настройки этот элемент, конечно же, не будет. Нужно, как минимум, указать источник данных для его заполнения. Это можно сделать руками, но быстрее и проще использовать построитель. Для этого в любом месте листбокса нужно щелкнуть правой кнопкой мыши, и из контекстного меню выбрать Builder (Построитель)

Первое окно, которое откроет Построитель, вероятнее всего, будет таким:

Выбирать тут особенно не из чего, и, не смущаясь названием, нужно нажать кнопку справа от Free Tables (свободные таблицы, не входящие в базу данных).

Внизу появится список таблиц, которых у нас пока две, и обе входят в базу данных. Ничего страшного, Фокс сам сообразит, что к чему, стоит вам только щелкнуть по таблице

Теперь уже лучше, есть с чем работать. В левом окне наблюдаем две наших таблицы, выше него – название базы. Указатель, очень удачно, стоит на таблице с фамилиями, а в среднем окне отображается список полей этой таблицы.

Не все эти поля нужно показывать на экране, да все по ширине окна и не поместятся. Поэтому выбираем четыре – фамилию, имя, отчество и идентификатор. В принципе, идентификатор на экране не нужен, но пусть пока будет.

Выбранные поля переносятся в правую часть, нажатием кнопки с синим треугольником. Кнопка с двойной стрелка перенесет сразу все поля. Так что можно нажать на нее, а потом обратной стрелкой дату рождения убрать.

Получиться должно так

Здесь видно, что отобраны четыре поля, что Data_ro только что была убрана из отобранных полей нажатием кнопки с треугольником влево, и что порядок отобранных полей можно изменить, перетащив кнопку со стрелочками вверх-вниз.

Пока все нормально, но нажимать ОК не следует. Нужно выбрать вторую вкладку

Здесь один важный пункт, требующий контроля – разрешить или не разрешать выбор с уточнением. То есть, прокручивать ли список до фамилии Иванов, если нажата буква «И».

Третья вкладка интереснее – здесь уже виден макет листбокса. Здесь можно изменить ширину колонок, перетаскивая правую границе, и можно скрыть ненужные колонки. Смысл этого действия в том, что через свойства листбокса они будут доступны, но на экране отображаться не будут.

Немного смущают заголовки колонок, вроде бы надо их по-русски, но это же не комбобокс. Тут и так все понятно, а заголовки отображаться не будут.

В принципе, можно и границы столбцов не перетаскивать, поставив галочку напротив Adjust the width… и т.д., в этом случае ширина будет выбрана автоматически, по содержимому. Но это не всегда хорошо, поскольку при наличии где-нибудь хотя бы одной длинной строки, весь список расползется.

Выбираем четвертую вкладку

Первый вопрос очень важен, и на этот раз значение по умолчанию не подходит совсем.

Здесь нужно определиться, значение какого поля будет использоваться, когда пользователь выберет конкретную фамилию. Правильнее сказать, “значение какого поля возвращает команда”, что и написано ясным и понятным английским языком.

Разумеется, это значение должно однозначно определять данную запись, и фамилия здесь не годится. И именно на этот случай у нас припасено поле KOD, в котором значения просто не могут повторяться (первичный ключ, однако).

Раскрываем список, смотрим

вот так-то, даты рождения нет. Есть только то, что отобрано для листбокса. И хороши же мы были бы, если б не включили в число отобранных полей KOD. Скрытый он, или нет, а в списке будет присутствовать, что нам и надо.

Второй вопрос касается того, хотите ли вы поместить это значение в какую-то таблицу, и если да, то в какую. Этого нам не надо, оставляем поле пустым.

Все, жмем ОК. На экране наблюдаем изменения – в листбоксе появились вертикальные черточки, отмечающие границы колонок

Теперь форму можно попытаться запустить на исполнение, она вполне автономна. Но мудрые разработчики требуют, чтобы перед этим форма была сохранена. Риск ее зависания весьма велик, и было бы жаль потерять изменения.

Жмем на дискетку, потом на восклицательный знак

Да, это не верх изящество, но форма - таки работает! Теперь ее нужно усовершенствовать. Закрываем форму, нажимая крестик в углу окна (а куда деваться, кнопки-то пока нет) и работаем дальше. Смотрим, какие свойства имеет наш листбокс и корректируем их.

 

 
К оглавлениюк следующей статье