Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Диалоги открытия и сохранения файла (компоненты TOpenDialog и TSaveDialog)
Компонент TOpenDialog предназначен для выбора файла с целью последующего открытия. Компонент TOpenDialog находится на вкладке Dialogs и выбирается щелчком мыши по кнопке . Пример диалогового окна открытия файла приведен на рис. 30.
Рис. 30. Пример диалогового окна открытия файла
Данный компонент обладает рядом важных свойств. FileName – выбранное пользователем имя файла вместе с полным путем поиска (естественно, это свойство получает значение при успешном завершении диалога). property FileName: WideString; Программа может использовать данное свойство для доступа к файлу с целью читать из него данные (TOpenDialog) или записывать в него данные (TSaveDialog). В данном диалоге пользователь может ввести произвольное имя и, следовательно, указать несуществующий файл. При чтении отсутствующего файла может произойти крах программы. Чтобы избежать этого, можно воспользоваться глобальной функцией FileExists (FileName: string) логического типа, которая проверяет, существует ли файл с именем FileName или нет. Filter – набор масок, в соответствии с которыми отбираются имена файлов для отображения в диалоговом окне. property Filter: String; Каждая маска состоит из двух частей: названия и шаблона, разделенных символом |. Одному названию может соответствовать несколько шаблонов. Маски отделяются друг от друга символом |. Данные маски можно устанавливать с помощью специального редактора на этапе конструирования формы или программно. Для доступа к редактору достаточно щелкнуть по кнопке в строке Filter окна инспектора объектов. Окно редактора фильтра приведено на рис. 31.
Рис. 31. Окно редактора фильтра
FilterIndex – номер текущей маски. Нумерация начинается с 1. property FilterIndex: Integer; Title – заголовок диалогового окна. property Title: String; Пример. В приведенной ниже процедуре при щелчке на кнопке Button1 отображается диалоговое окно выбора имени файла (компонент OpenDialog1), которое имеет заголовок «Выбор нужного файла», а в списке отображаются все файлы, имеющие расширение.pas. Это обеспечивается присвоением свойству FilterIndex значения 2. Открытый файл загружается в компонент Memo1.
procedure TForm1.Button1Click(Sender: TObject); Var S: string; F: TextFile; Begin OpenDialog1.Filter:= ‘Все файлы (*.*) | *.* | Файлы Паскаля (*.pas) | *.pas’; OpenDialog1.Title:= ‘Выбор нужного файла’;
OpenDialog1.FilterIndex:= 2; if OpenDialog1.Execute and FileExists(OpenDialog1.FileName) then begin AssignFile(F, OpenDialog1.FileName); Reset(F); Memo1.Lines.Clear; while not EOF(F) do Begin ReadLn(F, S); Memo1.Lines.Add(S); end; CloseFile(F); end; end; Существует альтернативный вариант загрузки содержимого файла в поле Memo1:
if OpenDialog1.Execute and FileExists(OpenDialog1.FileName) then Memo1.Lines.LoadFromFile(OpenDialog1.Filename);
Диалог сохранения файла (компонент TSaveDialog) практически ничем не отличается от компонента TOpenDialog за исключением некоторых настроек, специфичных для процесса сохранения файла. Компонент TSaveDialog находится на вкладке Dialogs и выбирается щелчком мыши по кнопке . Пример. Имеется текстовый файл, созданный в редакторе. Файл состоит из строк. Необходимо прочесть содержимое файла, вывести на экран и подсчитать количество строк в файле. Решение. На форму помещают компонент Memo, компонент OpenDialog, компонет Label и две кнопки Button. Затем создают следующие процедуры обработки событий. Процедура связана с событием OnCreate формы (процедура задает фильтр и очищает поле Memo1) procedure TForm1.FormCreate(Sender: TObject); Begin // Определение фильтра для отбора открываемых файлов OpenDialog1.Filter:= 'Текст|*.txt'; Memo1.Clear; end;
Для кнопки Button1 («Открыть») следует прописать обработчик события OnClick. procedure TForm1.Button1Click(Sender: TObject); Var FName: String; Begin if (OpenDialog1.Execute) and (FileExists(OpenDialog1.FileName)) then Begin FName:= OpenDialog1.FileName; Form1.Caption:= FName; Memo1.Lines.LoadFromFile(FName) Label1.Caption:='Количество строк= ' +IntToStr(Memo1.Lines.Count); end;
Для кнопки Button2 («Закрыть») следует прописать обработчик события OnClick. procedure TForm1.Button2Click(Sender: TObject); Begin Form1.Close; end;
3.10. Работа со строковыми таблицами
Строковыми считаются те таблицы, в ячейках которых располагаются произвольные слова или текстовые строки. Для создания таких таблиц предназначен компонент TStringGrid. Компонент TStringGrid находится на вкладке Additional и выбирается щелчком мыши по кнопке . Таблица делится на две части – фиксированную и рабочую. Фиксированная служит для показа заголовков столбцов/рядов и для ручного управления их размерами. Обычно фиксированная часть занимает крайний левый столбец и самый верхний ряд таблицы, однако с помощью свойств FixedCols и FixedRows можно задать другое количество фиксированных столбцов и рядов (если эти свойства имеют 0, таблица не содержит фиксированной зоны). Рабочая часть – эта остальная часть таблицы. Она может содержать произвольное количество столбцов и рядов, более того, эти величины могут изменяться программно. Рабочая часть может не умещаться целиком в пределах окна компонента, в этом случае в него автоматически помещаются нужные полосы прокрутки. При прокрутке рабочей области фиксированная область не исчезает, но меняется ее содержимое – заголовки строк и рядов.
Центральным свойством компонента является Cells – двумерный массив ячеек, каждая из которых может содержать произвольный текст. Конкретная ячейка определяется парой чисел – номером столбца и номером строки (именно в такой последовательности), на пересечении которых она находится (нумерация начинается с нуля). Свойство Cells имеет тип string, поэтому программа может легко прочитать или записать содержимое нужной ячейки. Напримep: Cells [1,1]:= 'Левая верхняя ячейка рабочей зоны'; Количество ячеек по каждому измерению хранит пара свойств ColCount (количество столбцов) и RowCount (количество рядов). Значения этих свойств и, следовательно, размеры таблицы могут меняться как на этапе разработки программы, так и в ходе ее работы, однако их значения должны быть как минимум на единицу больше соответственно значений в свойства FixedCols и FixedRows, определяющих размеры фиксированной зоны. Основные свойства компонента приведены в табл. 11.
Таблица 11 Основные свойства компонента TStringGrid
Продолжение табл. 11
Для компонента определен тип TGridOptions (в инспекторе объектов свойства этого множества сформированы в группу Options). TGridOptions = set of TGridOptions; Наиболее важные элементы множества TGridOptions имеют следующий смысл: goRangeSelect – разрешено выделение нескольких ячеек; goRowSizing –разрешено ручное (мышью) изменение высоты строк; goColSizing – разрешено ручное изменение ширины рядов; goEditing – разрешено редактирование ячейки (редактирование начинается после щелчка мыши или нажатия клавиши F2 и завершается при щелчке по другой ячейке или нажатию клавиши Enter); goTabs – разрешено обходить ячейки клавишей Tab. Рассмотрим пример работы с данным компонентом. Предположим, что данный компонент будет использован для загрузки и сохранения информации в файл, состоящий из записей следующей структуры: – ФИО; – паспорт (серия и номер); – дата рождения; – адрес; – телефон. На экран должна выдаваться таблица примерно следующего вида (рис. 32).
Рис. 32. Пример компонента TStringGrid
Сначала программно зададим заголовки столбцов таблицы через обработчик события создания формы: procedure TForm1.FormCreate(Sender: TObject); Begin {Создание шапки таблицы} StringGrid1.Cells[0, 0]:= '№ п/п'; StringGrid1.Cells[1, 0]:= 'ФИО'; StringGrid1.Cells[2, 0]:= 'Паспорт'; StringGrid1.Cells[3, 0]:= 'Дата рождения'; StringGrid1.Cells[4, 0]:= 'Адрес'; StringGrid1.Cells[5, 0]:= 'Телефон'; {Задание ширины столбцов таблицы} StringGrid1.ColWidths[0]:= 50; StringGrid1.ColWidths[1]:= 120; StringGrid1.ColWidths[2]:= 100; StringGrid1.ColWidths[3]:= 90; StringGrid1.ColWidths[4]:= 120; StringGrid1.ColWidths[5]:= 60; end;
Следует предусмотреть возможность добавления новой пустой строки по нажатию кнопки Button3 («Добавить» на рис. 32): procedure TForm1.Button3Click(Sender: TObject); Begin StringGrid1.RowCount:= StringGrid1.RowCount + 1; StringGrid1.Cells[0, StringGrid1.RowCount - 1]:= IntToStr(StringGrid1.RowCount - 1); end;
Кнопка Button1 («Сохранить» на рис. 32) служит для записи содержимого таблицы в файл: procedure TForm1.Button1Click(Sender: TObject); Begin AssignFile(F, 'file.dat'); Rewrite(F); for i:=1 to StringGrid1.RowCount - 1 do Begin with StringGrid1 do Begin z.FIO:= Cells[1, i]; z.pasp:= Cells[2, i]; z.data:= Cells[3, i]; z.adress:= Cells[4, i]; z.tel:= StrToInt(Cells[5, i]); end; Write(F, z); end; CloseFile(F); end;
Кнопка Button2 («Загрузить» на рис. 32) служит для вывода в таблице содержимого файла: procedure TForm1.Button2Click(Sender: TObject); Begin {Удаление старых данных из таблицы} for i:=1 to StringGrid1.RowCount - 1 do Begin StringGrid1.Cells[1, i]:= ''; StringGrid1.Cells[2, i]:= ''; StringGrid1.Cells[3, i]:= ''; StringGrid1.Cells[4, i]:= ''; StringGrid1.Cells[5, i]:= ''; end; {Удаление лишних пустых строк из таблицы} StringGrid1.RowCount:= 2; {Открытие файла} AssignFile(F, 'file.dat'); Reset(F); i:= 1; {Добавление записей в таблицу} while not EOF(F) do Begin Read(F, z); StringGrid1.Cells[0, i]:= IntToStr(i); StringGrid1.Cells[1, i]:= z.FIO; StringGrid1.Cells[2, i]:= z.pasp; StringGrid1.Cells[3, i]:= z.data; StringGrid1.Cells[4, i]:= z.adress; StringGrid1.Cells[5, i]:= IntToStr(z.tel); if not EOF(F) then Begin i:= i+1; StringGrid1.RowCount:= StringGrid1.RowCount + 1; end; end; end; Замечание: оператор StringGrid1.RowCount:= StringGrid1.RowCount + 1; служит для добавления в таблицу новой пустой строки, в которую будут записана следующая запись.
Деревья и списки
|
|||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-02-05; просмотров: 291; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.17.5.68 (0.045 с.) |