Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 385; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.009 с.) |