Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 8
1

Использование табличных компонентов для обработки текстовых записей

15.03.2014, 15:47. Показов 3727. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите с прогой а то вообще не успеваю все сделать что задали... ( можно даже код где самое сложное)
задание тут http://files.mail.ru/969326E9A... DC14195A1F
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2014, 15:47
Ответы с готовыми решениями:

Использование классов для обработки текстовых файлов
Файл состоит из произвольных слов, расположенных по одному слову в строке. Подсчитать и вывести...

Использование методов Servlet для обработки компонентов страницы
Доброго времени суток! :) На примере самого простого калькулятора (4 текстовых поля и кнопка)...

Использование компонентов многострочного редактора для обработки строковых данных
Всем привет, товарищи. Меня очень давно не даёт покоя одна задачка... вот она, собсно: Дана...

Использование записей для обработки разнотипной информации , работа с файлами в Паскаль - программах
Помогите пожалуста,я написал програму но проблема - она создает текстовий файл не такой как...

2
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32959 / 21276 / 8169
Регистрация: 22.10.2011
Сообщений: 36,546
Записей в блоге: 8
15.03.2014, 18:02 2
Цитата Сообщение от 3ybactik Посмотреть сообщение
задание тут
Задание должно быть не "там", а тут, на форуме:
Правила Форума:
5.18 Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.
5.19 Запрещено создавать темы в виде ссылок на задания или коды программ, расположенные на других сайтах.
Будь добр перепечатать задание на форум.
0
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 8
15.03.2014, 18:12  [ТС] 3
Постановка задачи.

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



Порядок создания приложения.
1. Создать новый проект и сохранить его в своем каталоге
2. Создать основное меню с командами Файл (Открыть, Сохранить), Таблица (Добавить строку, Удалить строку, Очистить строку), Поиск (По фамилии, По названию), Обработка (Выдать, Вернуть), Выход. Для каждой команды задать клавиши быстрого доступа
3. Разместить на форме компонент для панели инструментов и наполнить ее необходимыми кнопками, добавить редактор для ввода фамилии или названия при поиске в таблице
4. Разместить на форме компонент StringGrid и задать для него:
выравнивание по всей клиентской области
число фиксированных столбцов = 0
число фиксированных строк = 1 (шапка таблицы)
число столбцов = 4
подобрать для столбцов подходящие размеры по ширине
с помощью свойства Options установить возможность редактирования текста непосредственно в клетках таблицы (goEditing = true), возможность изменения мышью ширины столбцов при выполнении программы (goColSizing = true), возможность перехода между клетками таблицы с помощью клавиши Tab (goTabs = true)
5. Разместить на форме стандартные диалоги открытия файла и сохранения в файле и настроить их стандартным образом на работу с текстовыми файлами
6. Создать обработчик события формы OnCreate, в котором присвоить клеткам нулевой (фиксированной) строки таблицы текстовые значения – заголовки столбцов. Для этого используется свойство Cells, представляющее собой двухмерный массив клеток с нумерацией строк и столбцов с нуля, причем первый индекс – номер столбца
7. Создать обработчик для заполнения ячеек таблицы записями из текстового файла. В простейшем случае каждое поле таблицы можно сохранить как отдельную строку текстового файла. Для этого:
в разделе реализации модуля объявить файловую переменную с помощью встроенного типа TextFile, который используется вместо обычного типа Text
вызвать стандартный диалог открытия файла с помощью метода Execute
связать файловую переменную и выбранный в диалоге файл (свойство FileName) с помощью стандартной функции AssignFile, которая используется вместо обычной функции Assign
открыть файл для чтения с помощью функции Reset
обычным образом организовать цикл по условию достижения конца файла
внутри организовать вложенный цикл для чтения с помощью ReadLn очередных четырех строк текстового файла с присвоением прочитанных значений соответствующим клеткам таблицы, что в итоге сформирует одну строку таблицы
после завершения внешнего цикла установить свойство таблицы RowCount в число прочитанных строк
закрыть файл с помощью функции CloseFile
8. Создать обработчик для сохранения введенной в таблице информации в текстовом файле. Для этого:
вызвать стандартный диалог сохранения файла с помощью метода Execute
связать файловую переменную и выбранный в диалоге файл (свойство FileName) с помощью стандартной функции AssignFile
открыть файл для записи с помощью функции Rewrite
вложенными циклами записать в текстовый файл строки из ячеек таблицы, используя для этого свойства RowCount, ColCount и свойство-массив Cells (нулевую строку с шапкой таблицы записывать в файл не надо)
закрыть файл
9. Создать обработчик для добавления в таблицу новой строки после текущей (выделенной, активной). Для этого:
увеличить на 1 число строк в таблице (свойство RowCount)
циклически сдвинуть все строки, расположенные ЗА текущей (номер текущей строки хранится в свойстве Row) на одну строку вниз, используя для этого свойство-массив строк Rows и цикл типа For-Downto
очистить строку Row+1 c помощью метода Clear свойства-массива Rows
10. Создать обработчик для удаления из таблицы текущей строки (ее номер хранится в свойстве Row). Для этого:
циклически все строки, начиная с Row+1 сдвигаются на 1 вверх
счетчик числа строк уменьшается на 1
11. Создать обработчик для очистки текущей строки
12. Создать обработчик для поиска в таблице записи с заданной фамилией. Для этого можно использовать метод IndexOf (строка) свойства-массива столбцов Cols[1], если фамилия задана во втором столбце. Метод возвращает номер первой записи, где найдена заданная строка или значение –1 при отсутствии этой строки. Основные шаги:
проверить значение в строке ввода и при ее пустоте вывести сообщение
сохранить во вспомогательной переменной значение, возвращенное функцией IndexOf
если это значение равно -1, вывести предупреждающее сообщение
иначе – присвоить это значение свойству Row таблицы для активизации соответствующей записи
13. Аналогично создать обработчик для поиска в таблице записи с заданным названием книги
14. Создать обработчик команды выдачи книги, который должен:
проверить текущее количество книг и при необходимости вывести сообщение о невозможности выдачи
уменьшить на 1 значение числа экземпляров выданной книги с изменением значения в соответствующей клетке таблицы (преобразовать текст в число, уменьшить на 1 и выполнить обратное преобразование)
15. Создать обработчик команды возврата книги, который должен лишь увеличить значение количества экземпляров в клетке таблицы
16. Проверить работу приложения для достаточно большого числа книг (20-25 наименований)



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



Приложения с несколькими формами
Подавляющее большинство реальных приложений содержат несколько взаимодействующих форм. Одна из них считается главной, обычно это форма, созданная при разработке приложения первой. При необходимости главной можно назначить любую форму. Главная форма управляет работой всего приложения в целом, вызывая при необходимости подчиненные формы. Каждой форме соответствует свой модуль, сохраняемый в отдельном файле.
Задание. Разработать приложение, содержащее несколько форм:
главную
информационную форму “О программе (About)”
форму для ввода пароля при запуске приложения

За основу можно взять любое ранее созданное приложение, например – таблицу текстовых строк.
Порядок работы.
1. Открыть базовый проект
2. Добавить в проект новую форму с информацией о программе и ее авторе:
выбрать в меню системы Delphi команду File / New / Form, после чего появляется новая форма и к проекту автоматически добавляется соответствующий модуль, что можно увидеть в окне Редактора Кода за счет появления второй закладки с именем модуля
установить основные свойства новой формы: Caption, Name (например – FAbout)
установить требуемые размеры формы-заставки, установить свойство BorderStyle = bsDialog (окно не может изменять свои размеры), задать режим показа по центру экрана (свойство Position = poScreenCenter)
оформить внешний вид формы с помощью панелей (в примере ниже использовано 7 панелей, некоторые из которых расположены друг на друге для красивого оформления окна), текста, графических изображений
для текста (компонент Label) можно использовать свойства WordWrap (перенос длинного текста по словам на другие строки) и Alignment (для выравнивания текста по центру)
для изображения (компонент Image) надо использовать свойства Picture (для загрузки необходимого изображения) и Stretch (для масштабирования изображения внутри области компонента)

Создать обработчик кнопки закрытия формы стандартным образом (метод Close)
в меню главной формы добавить пункт “О программе” и создать его обработчик для показа формы-заставки в модальном режиме:
FAbout.ShowModal;
сохранить новый модуль в каталоге проекта командой File / Save As с изменением имени модуля со стандартного значения Unit2 на более осмысленное, например - UnitAbout
подключить новый модуль к основному (главному) модулю, для чего в разделе реализации главного модуля после директивы implementation записать строку
Uses UnitAbout;
сохранить проект и проверить его работу

3. Добавить дополнительные возможности закрытия окна-заставки – по нажатию любой клавиши или по истечению заданного интервала времени. Для этого:
в Инспекторе Объектов перейти на форму-заставку, активизировав ее и выбрав в раскрывающемся списке ее имя
установить для формы-заставки свойство KeyPreview в true для того, чтобы форма перехватывала все сообщения от клавиатуры раньше расположенных на ней компонентов
перейти в Инспекторе Объектов на закладку Events и создать обработчик события формы onKeyDown с вызовом метода закрытия формы-заставки
разместить на форме-заставке компонент Timer со страницы System, установить его свойство Interval в необходимое значение (например – 10000 миллисекунд) и создать обработчик его единственного события OnTimer с вызовом метода Close
сохранить проект и проверить его работу

4. Добавить в проект еще одну форму – для ввода пароля. Ее особенности: она должна открываться только один раз при запуске приложения, причем при этом главная форма должна быть невидимой, активизируясь лишь при правильном вводе пароля. В простейшем случае достаточно хранить пароль внутри программного кода модуля, сравнивая его с вводимым пользователем значением. Более конкретно:
добавить новую форму, дать ей заголовок и имя FPassword (или любое другое подходящее), сохранить ее модуль в каталоге проекта под подходящим именем (например – UnitPass)
установить свойства показа по центру экрана и диалоговый стиль окна (аналогично форме-заставке), а также убрать из заголовка кнопку системного меню (свойство BorderIcons, подсвойство biSystemMenu = false)
установить свойство Visible в значение false
в текст модуля в разделе реализации ввести ссылку на модуль основной формы (Uses Unit1)
разместить на форме текст-приглашение на ввод пароля, компонент-редактор для ввода пароля, у которого с помощью свойства PasswordChar установить символ-заменитель вводимых символов (например – символ *)

разместить на форме кнопку Проверить и создать ее обработчик, который должен сравнить введенный в редакторе текст с паролем, в случае совпадения показать основную форму вызовом Form1.Show и закрыть окно методом Close, а в противном случае вывести сообщение о неправильном пароле
разместить на форме кнопку Отменить, обработчик которой должен закрыть все приложение, вызвав метод Terminate специального объекта Application
вернуться в Инспекторе Объектов к главной форме, установить ее свойство Visible в false и создать обработчик ее события OnShow; это событие возникает ПЕРЕД показом невидимой главной формы и поэтому позволяет сначала показать в модальном режиме форму ввода пароля; для этого необходимо прежде всего добавить в текст главного модуля ссылку на модуль UnitPass (аналогично ссылке на модуль формы-заставки), затем создать обработчик события формы OnShow, в котором лишь показать форму ввода пароля с помощью метода ShowModal
сохранить проект и проверить его работу

5. Реализованный выше способ использования формы для ввода пароля (кстати, этот способ не является единственным, есть и другие варианты) имеет один недостаток: если закрыть окно ввода пароля не по кнопкам, а с помощью стандартной комбинации клавиш Alt+F4, основная форма активизируется даже при неправильном пароле или вообще без него! Для устранения этого недостатка форма ввода пароля должна уметь распознавать нажатие этих клавиш. Для этого необходимо:
в Инспекторе Объектов активизировать форму ввода пароля и установить ее свойство KeyPreview = true, что позволяет форме перехватывать весь ввод с клавиатуры раньше своих элементов (редактор, кнопки)
на вкладке Events для формы ввода пароля выбрать событие OnKeyDown, возникающее при нажатии любой клавиши
создать обработчик этого события следующего вида:
if (Key = vk_F4) and (ssAlt in Shift) then Application.Terminate;
этот код использует переменную Key с кодом нажатой клавиши и структуру-множество Shift, которая хранит коды нажатых служебных клавиш Alt, Shift, Ctrl и позволяет анализировать их с помощью констант типа ssAlt, ssShift, ssCtrl.

Дополнительное задание.
Реализовать хранение списка паролей в файле с возможностью добавления новых паролей в список в главной программе. Для хранения паролей во время работы программы можно использовать массив, загружая его значениями при создании главной формы (событие формы OnCreate). Проверка пароля сводится к поиску в этом массиве. В меню добавить команды для включения нового пароля и удаления ненужного. Для этих операций можно создать небольшую форму с текстовым редактором и кнопками Добавить и Удалить. По кнопке Добавить проверяется уникальность введенного текста и добавление нового пароля в массив. По кнопке Удалить проверяется наличие в списке паролей введенного текста и удаление этого пароля из списка. Для сохранения списка паролей в файле можно использовать событие OnClose главной формы, возникающее при закрытии главного окна и завершении приложения. Можно продумать механизм кодирования паролей в файле.

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

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



Порядок действия.
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 и один из режимов (в форме изменения данных все текстовые надписи у элементов ввода надо сгруппировать и выровнять по правому краю)
6. Для каждого компонента ввода подобрать подходящие размеры
7. Для компонентов SpinEdit задать подходящие величины для минимального и максимального значений
8. Для компонента ComboBox установить режим выбора из заранее подготовленного списка, для чего:
свойство Style установить в значение csDropDown
щелкнуть на свойстве Items и в открывшемся текстовом редакторе ввести несколько (5-6) строк, определяющих тип издания
9. Настроить компонент ввода даты DateTimePicker следующим образом (обычно перечисленные ниже значения устанавливаются по умолчанию):
DateFormat = dfShort (короткий формат представления даты)
DateMode = dmComboBox (выпадающий календарь)
Kind = dtkDate (режим ввода дат, а не времени)
10. Установить порядок обхода элементов клавишей Tab: сначала обходятся все компоненты ввода, затем – обе кнопки, затем – опять компоненты ввода и т.д. Порядок обхода устанавливается для каждого компонента с помощью свойства TabOrder целого типа, начиная с 0. Для каждого компонента надо установить соответствующее значение по порядку. При этом надо учитывать, что для каждого контейнерного компонента (например, панель TPanel) порядок обхода СВОЙ, т.е. надо еще установить порядок обхода самих панелей. Если какой-либо компонент НЕ должен выбираться мышью, можно установить для него свойство TabStop = false.
11. Создать обработчик кнопки Сохранить, который должен лишь установить нормальный режим закрытия окна с последующим сохранением новых данных в таблице. Для этого можно использовать свойство ModalResult, установив его в значение mrOK
12. Создать обработчик кнопки Отменить, который должен свойство ModalResult установить в mrCancel
13. Подключить модуль UChange к главному модулю в разделе реализации
14. Создать обработчик команды Изменить Строку, который должен:
присвоить всем компонентам формы изменения данных значения из соответствующих полей выбранной (текущей) строки таблицы, например – следующим образом:
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, то вывести сообщение об отсутствии изменений в данной строке таблицы
15. Изменить обработчик команды Удалить Строку следующим образом:
если таблица содержит только одну реальную строку (не считая заголовка), то удаление этой строки заменяется ее очисткой (метод Clear) без уменьшения числа строк
в противном случае выполняется сдвиг строк на 1 вверх и соответствующее изменение их порядковых номеров (нулевой столбец таблицы)
16. Изменить обработчик команды Добавить Строку. который аналогично обработчику команды Изменить Строку должен:
присвоить всем компонентам формы изменения данных начальные значения (в основном – пустые, нулевые)
вызвать форму в модальном режиме
проверить результат закрытия формы (свойство ModalResult), и если он равен mrOK, то добавить в таблицу новую строку и присвоить ее полям значения, введенные в соответствующих компонентах формы изменения данных
17. В связи с увеличением числа столбцов таблицы, внести необходимые изменения в ранее созданный программный код, в частности:
в обработчик события создания главной формы OnCreate, где устанавливаются названия полей нулевой заголовочной строки таблицы
в метод, выполняющий загрузку данных из текстового файла
в метод, выполняющий сохранение данных из таблицы в текстовый файл
18. Выполнить приложение и проверить его работу
0
15.03.2014, 18:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.03.2014, 18:12
Помогаю со студенческими работами здесь

Условие для табличных записей
Добрый день! Сразу отмечу тот факт, что я совсем "зеленый" в Access). Задача такая: Есть...

Разработка алгоритмов и программ обработки строк. Использование записей в решении задач
Написать в паскале:Дана строка. Заменить в ней все двойные символы на два знака подчеркивания.

Расширенные функции табличных компонентов
Столкнулся с одной не красивой проблемой. Есть некий файлик Exel "Рапорт" забитый макросами, и он...

Разработка приложений для обработки текстовых данных
Дана последовательность слов. Напечатать все слова в алфавитном порядке.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru