Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие Delphi.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
4.76 Mб
Скачать

11.3Процедура InputBox

Процедура InputBox (const ACaption, APromt, ADefault:String):String отображает диалоговое окно , которое служит для ввода информации. В окне имеется поле для ввода строки с надписью и две кнопки Ok и Cancel. Параметр ACaption задает заголовок окна, APromt - содержит поясняющую надпись, ADefault – определяет строку по умолчанию.

11.4Процедура InputQuery

Процедура InputQuery(const ACaption, APromt:String; var Value: String): Boolean запоминает параметр Value и возвращает True, если пользователь нажал OK. Окно по внешнему виду не отличается от окна функции InputBox.

Пример 12. Ввод шага расчета функции.

Дополним программу предыдущего примера функцией InputBox, с помощью которой будут задаваться шаг (h:real). Для этого вставьте в метод «нажатие на кнопку» строку

h:=StrToFloat(InputBox('Ввод шага расчета','Введите шаг','1'));

Результатом выполнения данной функции является окно, представленное на рисунке 21.

Рисунок 21 - Окно для выбора шага (Использование функции InputBox)

11.5Стандартные диалоги

В Delphi имеется страница Dialog Палитры компонентов, на которой расположены диалоги общего назначения (рисунок 22) . Эти диалоги используются многими приложениями Windows для выполнения таких операций как открытие, сохранение и печать файлов, выбор шрифтов. цвета и т.д.

Рисунок 22 - Страница Диалог Палитры компонентов

Все стандартные диалоги относятся к невизуальным компонентам, т.е. во время выполнения приложения значок компонента на форме виден не будет. Для вызова любого стандартного диалога используется метод Execute – функция типа Boolean. При закрытии диалога кнопкой ok значение функции Execute возвращает значение true, а при отмене диалога – значение false.

Рассмотрим поподробнее свойства диалогов SaveDialog и OpenDialog – стандартные диалоги сохранения и открытия файла:

  • FileName типа String указывает имя и полный путь файла, выбранного в диалоге. Имя файда отображается в строке редактирования и является результатом диалога

  • Title типа String задает заголовок окна. По умолчанию используется заголовок «Открытие файла» («Сохранение файла»)

  • InitialDir типа String – задается каталог, содержимое которого отображается при вызове диалога. По умолчанию отображается содержимое текущего каталога.

  • DefaultExt типа String – задает расширение, которое автоматически подставляется к имени файла, если пользователь не указал расширение имени.

  • Filter типа String – задает маски имен файлов, которые отображаются в раскрывающемся списке «Тип файлов». В окне диалога видны те файлы, которые совпадают с указанной маской. По умолчанию это свойство является пустым, поэтому будет отображаться все содержимое каталога.

Пример 13. Рассчитать значения функции на интервале [а,b] с шагом h. Результаты расчета поместить в многострочный редактор Memo и записать в текстовый файл.

Для решения данной задачи дополним предыдущий пример компонентами Memo, BitBtn и SaveDialog. В результате получим форму, представленную на рисунке 23.

Рисунок 23 - Внешний вид формы на этапе разработки

Выделите значок компонента SaveDialog на форме и в Панели инструментов свойство DefaultExt измените на «.txt» (текстовые файлы). Далее выберите свойство Filter, и перед вами откроется окно, изображенное на рисунке 24.

Рисунок 24 - Окно редактора фильтра

В окно редактора фильтра можно вписать все расширения, с которыми будет работать ваша программа. В данном примере выбран единственный фильтр –текстовые файлы.

Дополним событие FormShow следующим кодом, для того, чтобы до расчетов окно результатов расчета видно не было (для удобства покажем весь код):

procedure TForm1.FormShow(Sender: TObject);

begin

Form1.Edit1.Text:='';

Form1.Edit2.Text:='';

if Form1.Edit1.CanFocus then

Form1.Edit1.SetFocus;

// Скрыть компонент Memo

Form1.Memo1.Visible:=false;

// Скрыть кнопку BitBtn2 (Сохранить)

Form1.BitBtn2.Visible:=false;

end;

При нажатии на кнопку Ok должна рассчитываться функция. Ранее в примерах 12-13 мы задали диапазон и шаг расчета. Поэтому следует дописать имеющийся код самим расчетом функции и выводом результатов в Memo (для удобства покажем весь код):

procedure TForm1.Button1Click(Sender: TObject);

var

Mr:TModalResult;

a,b,h,y:real;

begin

a:=StrToFloat(Form1.Edit1.Text);

b:=StrToFloat(Form1.Edit2.Text);

if a>=b then

begin

Mr:=MessageDlg('Данные введены неверно.

Ввести заново?',mtConfirmation,

[mbYes, mbNo,mbCancel],0);

if Mr=mrYes then

Form1.FormShow(Sender);

exit;

end;

h:=StrToFloat(InputBox('Ввод шага

расчета','Введите шаг','1'));

Form1.Memo1.Visible:=true; // Показать Memo

Form1.Memo1.Clear;

while a<=b do

begin

y:=a*a;

// Добавить значения в Memo

Form1.Memo1.Lines.Add('x= '+

FloatToStr(a)+' y= '+FloatToStr(y));

a:=a+h;

end;

// Показать кнопку «Сохранить»

Form1.BitBtn2.Visible:=true;

end;

При нажатии на кнопку «Сохранить» содержимое многострочного редактора должно сохраниться в файл. Для этого напишем следующий код:

procedure TForm1.BitBtn2Click(Sender: TObject);

begin

if Form1.SaveDialog1.Execute

then Form1.Memo1.Lines.SaveToFile

(Form1.SaveDialog1.FileName);

end;