Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Использование форм для ввода и редактирования информации




В реализованном ранее приложении с таблицей текстовых строк ввод новых данных и изменение существующих данных выполняется непосредственно в самой таблице. Такой способ не всегда бывает удобным и чаще заменяется использованием вспомогательных форм. Сама таблица используется только для просмотра или поиска необходимых записей. Преимущества такого подхода:

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

 

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

  • в меню Таблица заменить команду Очистить Строку командой Изменить Строку для редактирования во вспомогательной форме полей выбранной в таблице строки
  • изменить логику обработчика команды Добавить Строку
  • для большей наглядности расширить число используемых полей, добавив для каждой книги следующую информацию: тип издания (учебник, проза, поэзия, статья, реферат и т.д.), год издания, дата выдачи или возврата, стоимость

Порядок действия.

  1. Стандартным образом добавить в проект новую форму для ввода и изменения данных, дать ей заголовок и имя (например – FChange), сохранить модуль формы в каталоге проекта под понятным именем, например – UChange
  2. изменить некоторые свойства таблицы: число столбцов = 8, число фиксированных столбцов = 1 (для показа номера записи), число фиксированных строк = 1 (заголовок таблицы), начальное число строк = 2 (заголовок и одна пустая строка), свойство Options / goEditing = false (таблица НЕ редактируется), Options / goRowSelect = true (в таблице выделяется вся строка полностью)
  3. для главной формы установить режим показа при запуске во весь экран (в максимизированном состоянии)
  4. оформить вспомогательную форму: две панели, редакторы для ввода текстовых полей (автор, название), компоненты SpinEdit для ввода ограниченных числовых данных (количество экземпляров, год издания, стоимость), компонент ComboBox для выбора типа издания из заранее заданного списка, компонент DateTimePicker для ввода даты; каждый компонент ввода снабжается своей текстовой надписью. Две надписи на самом верху формы необходимы для показа номера текущей выбранной в таблице строки.
  5. При создании подобных форм удобно использовать следующие приемы:

· можно сгруппировать любое число компонентов вместе, выделяя их мышью при нажатой клавише Shift

· сгруппированные компоненты можно целиком переместить в другое место формы, захватив один из них мышью (аналогично групповым операциям с файлами)

· сгруппированные компоненты можно выровнять друг относительно друга, если щелкнуть на одном из них правой кнопкой мыши и в контекстном меню выбрать команду Position / Align, а далее – Horizontal или Vertical и один из режимов (в форме изменения данных все текстовые надписи у элементов ввода надо сгруппировать и выровнять по правому краю)

  1. Для каждого компонента ввода подобрать подходящие размеры
  2. Для компонентов SpinEdit задать подходящие величины для минимального и максимального значений
  3. Для компонента ComboBox установить режим выбора из заранее подготовленного списка, для чего:

· свойство Style установить в значение csDropDown

· щелкнуть на свойстве Items и в открывшемся текстовом редакторе ввести несколько (5-6) строк, определяющих тип издания

  1. Настроить компонент ввода даты DateTimePicker следующим образом (обычно перечисленные ниже значения устанавливаются по умолчанию):

· DateFormat = dfShort (короткий формат представления даты)

· DateMode = dmComboBox (выпадающий календарь)

· Kind = dtkDate (режим ввода дат, а не времени)

  1. Установить порядок обхода элементов клавишей Tab: сначала обходятся все компоненты ввода, затем – обе кнопки, затем – опять компоненты ввода и т.д. Порядок обхода устанавливается для каждого компонента с помощью свойства TabOrder целого типа, начиная с 0. Для каждого компонента надо установить соответствующее значение по порядку. При этом надо учитывать, что для каждого контейнерного компонента (например, панель TPanel) порядок обхода СВОЙ, т.е. надо еще установить порядок обхода самих панелей. Если какой-либо компонент НЕ должен выбираться мышью, можно установить для него свойство TabStop = false.
  2. Создать обработчик кнопки Сохранить, который должен лишь установить нормальный режим закрытия окна с последующим сохранением новых данных в таблице. Для этого можно использовать свойство ModalResult, установив его в значение mrOK
  3. Создать обработчик кнопки Отменить, который должен свойство ModalResult установить в mrCancel
  4. Подключить модуль UChange к главному модулю в разделе реализации
  5. Создать обработчик команды Изменить Строку, который должен:

· присвоить всем компонентам формы изменения данных значения из соответствующих полей выбранной (текущей) строки таблицы, например – следующим образом:

FChange.LabelNomer.Caption:= StringGrid1.Cells[0, StringGrid1.Row];

FChange.SpinEdit1.Value:= StrToInt(StringGrid1.Cells[3, StringGrid1.Row]);

FChange.DateTimePicker1.Date:= StrToDate(StringGrid1.Cells[5, StringGrid1.Row]);

(в последней строке используется функция преобразования строки в формат представления дат, принятый в Windows: дата и время внутри системы представляются как специальное вещественное число, и для перехода надо использовать стандартные функции StrToDate, DateToStr, StrToTime, TimeToStr)

· вызвать форму в модальном режиме

· проверить результат закрытия формы (свойство ModalResult), и если он равен mrOK, то присвоить полям текущей строки таблицы значения, введенные в соответствующих компонентах формы изменения данных (программный код аналогичен рассмотренному выше, только присваивания выполняются в противоположном порядке)

· если результат закрытия формы равен mrCancel, то вывести сообщение об отсутствии изменений в данной строке таблицы

  1. Изменить обработчик команды Удалить Строку следующим образом:

· если таблица содержит только одну реальную строку (не считая заголовка), то удаление этой строки заменяется ее очисткой (метод Clear) без уменьшения числа строк

· в противном случае выполняется сдвиг строк на 1 вверх и соответствующее изменение их порядковых номеров (нулевой столбец таблицы)

  1. Изменить обработчик команды Добавить Строку. который аналогично обработчику команды Изменить Строку должен:

· присвоить всем компонентам формы изменения данных начальные значения (в основном – пустые, нулевые)

· вызвать форму в модальном режиме

· проверить результат закрытия формы (свойство ModalResult), и если он равен mrOK, то добавить в таблицу новую строку и присвоить ее полям значения, введенные в соответствующих компонентах формы изменения данных

  1. В связи с увеличением числа столбцов таблицы, внести необходимые изменения в ранее созданный программный код, в частности:

· в обработчик события создания главной формы OnCreate, где устанавливаются названия полей нулевой заголовочной строки таблицы

· в метод, выполняющий загрузку данных из текстового файла

· в метод, выполняющий сохранение данных из таблицы в текстовый файл

18. Выполнить приложение и проверить его работу

 

 

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных