Как вывести текст в делфи
Обучающий курс. 13. Ввод и вывод в Delphi
Ввод на примере TEdit
procedure TForm1.Button1Click(Sender: TObject);
var A: Integer;
begin
A := Edit1.Text;
end ;
[Error] Unit1.pas: Incompatible types: ‘Integer’ and ‘TCaption’
procedure TForm1.Button1Click(Sender: TObject);
var A: Integer;
begin
A := StrToInt(Edit1.Text);
end ;
Вывод данных на примере TLabel
procedure TForm1.Button1Click(Sender: TObject);
var A: Integer;
begin
A := StrToInt(Edit1.Text);
A := Sqr(A);
Label1.Caption := IntToStr(A)
end ;
Запускаем программу и пробуем:
Простейшая программа ввода-вывода готова.
Где узнать о типах данных свойств?
При написании функции StrToInt() строка свойства Text конечно же появится.
Обобщение сказанного
Работа с вещественными числами
procedure TForm1.FormCreate(Sender: TObject);
begin
DecimalSeparator := ‘.’ ;
end ;
Другие способы вывода
Помимо вывода в объекты (например, в TLabel) иногда удобно выводить данные в виде маленьких отдельных окон. Для этой цели существуют стандартные команды. В предыдущих уроках мы с ними уже встречались, но не разбирали их подробно.
procedure TForm1.Button1Click(Sender: TObject);
var A: Integer;
begin
A := StrToInt(Edit1.Text);
A := Sqr(A);
ShowMessage(IntToStr(A));
end ;
В этом случае мы увидим следующее:
Следует обратить внимание на то, что пока окно сообщения находится на экране, интерфейс программы блокируется, а также прекращается выполнение дальнейших команд. Только после нажатия на кнопку программа продолжит свою работу.
В качестве возвращаемых функцией значений служат все те же константы кнопок, только с тем отличием, что вместо » mb » они начинаются на » mr » (сокращения от » modal button » и » modal result » соответственно).
procedure TForm1.Button1Click(Sender: TObject);
var A: Integer;
begin
A := StrToInt(Edit1.Text);
MessageDlg( ‘Квадрат числа ‘ +IntToStr(A)+ ‘ равен ‘ +IntToStr(Sqr(A)),mtInformation,[mbOK],0);
end ;
Ну и напоследок попробуем использовать диалог для уточнения у пользователя дополнительной информации. К примеру, если введено отрицательное число, будем спрашивать, нужно ли его возвести в квадрат. Код получится приблизительно таким:
А результат будем таким:
Внешний вид окон всех типов:
3. Диалоговые окна MessageBox()
Ввод с помощью диалогового окна
Заключение
Домашнее задание
Ссылки по теме
Помощь |
Задать вопрос | |
программы | |
обучение | |
экзамены | |
компьютеры | |
ICQ-консультанты | |
Skype-консультанты | |
Общая справка | |
Как оформить заказ | |
Тарифы доставки | |
Способы оплаты | |
Прайс-лист | |
Карта сайта | |
О нас |
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО. На протяжении многих лет интернет-магазин предлагает товары и услуги, ориентированные на бизнес-пользователей и специалистов по информационным технологиям. Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе. Как вывести текст в делфиШкола программирования Delphi Портал DelphiSchool является бесплатным проектом, обеспечивающим пользователям быстрый и легкий доступ к урокам программирования на Delphi. Сайт позволяет научиться программировать на Делфи любому, кто хочеть писать свои программы, игры, Android приложения, программы для MAC OC или IOS. Кроме уроков Delphi и статей Delphi, на сайте доступны также и видеоуроки. Практически к каждому уроку, пользователю доступен исходник, изучив который, он сможет наглядно посмотреть как работает та или иная программа, написанная на Делфи. Кроме того мы постараемся прилагать к каждому материалу (статье, уроку, видеоуроку) файлы Delphi, которые будут помогать изучить предоставленный материал. Каждый кто решил написать свою программу, создать свое приложение, научиться программировать и т.д., найдет на DelphiSchool статьи Delphi, уроки Delphi, видеоуроки Delphi, исходники Delphi, файлы Delphi, изучит компоненты Delphi, посмотрит Delphi примеры и многое другое абсолютно бесплатно. Все о Delphi программировании теперь собрано на одном сайте. Компонент Delphi TLabel служит для вывода надписей. Это простейший компонент, используя который мы будем выводить на нашей форме информацию. Чаще всего мы будем использовать свойство Caption этого компонента. Теперь давайте создадим обработчик события OnClick для кнопки и напишем следующий код: После того как мы запустим нашу программу, перед нами появится форма с кнопкой и надписью «Hello Delphi Label». Если мы нажмем на кнопку, то надпись изменится на «Пример работы с TLabel в Delphi». Давайте еще увеличим шрифт нашей надписи. Для этого переходим в свойства компонента TLabel и дважды щелкаем по свойству Font. Изменяем размер на 14, а цвет на желтый. Установим свойствам Left и Top значение 16 (так мы установим левую и верхнюю позицию нашей надписи). Теперь добавим еще один компонент TLabel. Выделив Label1 и нажав Edit | Copy, или Ctrl+C мы копируем в буфер обмена наш первый компонент, а затем нажав Edit | Paste или Ctrl+V мы вставляем копию этого компонент из буфера обмена. У компонента Label2 меняем цвет на синий а Left и Top устанавливаем значение 18. В довершение всего изменяем свойство Transparent (прозрачность) на true. Так наша надпись станет более красивой и будет выглядеть как будто у надписи есть тень. Чтобы закрепить этот урок немного изменим приведенный выше пример кода, который изменял нашу запись (Label1). Если мы нажмем на кнопку, то запись Label1 изменится, а вторая (Label2) нет, поэтому нужно и для второй надписи сделать изменение: К уроку (статье) Delphi и TLabel. Выводим надписи на форме прилагается исходник, посмотрев который, вы можете ознакомиться с полным исходным кодом программы и посмотреть как работает созданная программа. Исходный код сопровождается комментариями, благодаря чему вы сможете легко в нем разобраться. Но я настоятельно рекомендую делать все самостоятельно. Так вы лучше и быстрее усвоите то, о чем говорилось в этом уроке Для того чтобы получить возможность скачать исходник Delphi к этому уроку, необходимо посетить сайт рекламодателя. После этого, появится ссылка на исходник Delphi к уроку Delphi и TLabel. Выводим надписи на форме Вывод текста с использованием Windows API функцийВывод текста является одной из основных задач, которую приходится решать в программе при организации вывода данных. Речь пойдет о выводе текста с использованием Windows API функций. Данная статья, безусловно не претендует на полноту обзора этой тематики, но о некоторых «подводных камнях» я все же расскажу. Если значение Options будет содержать ETO_CLIPPED, то текст будет виден только в указанном прямоугольнике. Заметьте, что в функцию передается PRect. Это означает, что параметр может быть пустым, т.е. nil. В этом случае, функция будет работать аналогично TextOut. Если вы используете переменную r:tRect, то в функцию должны передать @r. Выравнивание также, устанавливается предварительно при помощи SetTextAlign. Наиболее интересен параметр DX. Это ссылка на массив, типа array [0..n] of integer, где каждый элемент является шириной символа. Настоящая ширина может отличатся от указанного значения. Это можно использовать, например, для имитации моноширного шрифта, или для сжатия текста таким образом, чтоб он помещался в отводимую область. В отличии от предыдущих функций, функция DrawText не имеет параметров X, Y и использует для руководства координат параметр lpRect. Заметим, что этот параметр является переменной, т.к. функция может модифицировать значения, если ее вызвать с параметром uFormat равным DT_CALCRECT, при этом прорисовка не будет осуществлятся. Параметр uFormat может включать в себя все значения выравнивания по этому предварительной глобальной настройки при помощи SetTextAlign не требуется. По умолчанию текст, который не вместится в lpRect будет обрезаться. Чтобы этого не происходило, в параметре uFormat используйте DT_NOCLIP. По-прежнему есть проблема с вертикальным выравниванием по центру (DT_VCENTER). Оно работает только для однострочного текста, т.е. для многострочного текста сперва придется вычислить lpRect, а затем изменив lpRect.top и lpRect.bottom, добиться желаемого результата. Используйте DT_WORD_ELLIPSIS и (или) DT_PATH_ELLIPSIS если необходимо вывести длинный текст, который не помещается в одну строку. Выглядит это примерно так: надо вывести «C:\Program Files\Borland\Delphi3\Source\VCL», а выведется «C:\Program Files\. \VCL». В этом случае, значение DT_MODIFYSTRING обязательно. DT_NOPREFIX позволяет выводить «&», а не подчерк под следующим по тексту символом. Без этого значение в строке придется записывать «&&». Оговорюсь, что практически все функции, в названиях которых есть окончание «Ex», являются расширением одноименных функций без «Ex». В файле справки упоминается, что функции без «Ex» являются «пережитками» Windows 3.1, по этому рекомендуют использовать расширенные функции. По моему личному опыту могу судить, что разницы никакой, если Вам не нужны дополнительные параметры, и хлопоты по их заполнению :). Горизонтальное выравнивание не влияет на результат вывода. Вывод многострочного текста. В качестве параметра PolyTextArray нужно передавать переменную типа array [0.. Strings-1] of TPolyText. Структура TPolyText содержит все те же параметры, которые передаются функции ExtTextOut. Создание и работа с текстовыми файлами в DelphiКогда речь идет о работе программы с текстовым файлом, подразумеваются процедуры ввода данных из файла в программу или, наоборот, запись этих данных в файл программой. Для текстового файла допустима простая работа с файлом без особых дополнительных механизмов, которые применяются для работы со специализированными файлами, такими как при загрузке данных из Excel или работе программы с базой данных. Разумеется, Delphi располагает возможностями работать с файлами с использованием компонентов. Но в данной статье рассматривается механизм прямой работы с текстовым файлом без использования дополнительных компонентов. Итак, в общем виде, работа с файлом заключается в следующих этапах: 1. подключение к файлу – связь с внешним файлом, указание режима подключения; 2. выполнение операций записи в файл или чтения из файла; 3. завершение работы с файлом. Подключение к файлуДля связи программы с файлом используется специальная переменная – «Файловая переменная». Объявляется она так же как и любая переменная в Delphi. Тип это переменной может быть File для типизированных (хранящих данные определенного типа) файлов, а можно указать TextFile, что будет означать тип обычного текстового файла. Объявление переменной: В исполняемом коде программы выполняется подключение к внешнему файлу: Команда AssignFile, выполняет связь файловой переменной с внешним файлом. Вторым параметром указывается адрес файла. Он может быть задан относительным или абсолютным. Если указать только имя файла, то программа будет пытаться обнаружить его в той же директории, где она сама и находится. Абсолютный путь указывается от корневого диска: Использование относительной директории дает возможность не привязываться к конкретным дискам и адресам. Например: После того как выполнено подключение, выполняется процедура, устанавливающая режим работы с файлом. В основном это режим чтения или записи. Эти режимы назначаются процедурами Reset() ( для чтения) и rewrite() (для записи):
Любую из указанных команд можно использовать без команды AssignFile(). Для этого достаточно вторым параметром указать путь к файлу. Таким образом, она сразу выполнит привязку файла к файловой переменной и назначит режим работы с этим файлом: Операции с файламиДля чтения из файла, необходимо назначить режим чтения и использовать команду Readln(), которая будет вводить в строковую переменную по одной строке из файла. Затем с этой переменой можно выполнить необходимые действия. Обычно для загрузки всех строк из файла используется оператор цикла. Для того, чтобы определить, что файл закончился используется функция EOF() (End Of File). Таким образом получается цикл, в котором последовательно в строковую переменную вводятся все строки файла и завершающийся после окончания фала: Для записи, назначение режим записи в файл и командой Writeln() производится запись по строкам. Закрытие файлаПо завершении работы с файлами, особенно в случае записи в них данных, необходимо корректно завершить работу с файловой переменной. Это делается для того, чтобы сохранить все внесенные в файл изменения. Примеры работы с текстовыми файлами в DelphiЧтение в переменную одного значения из файла: Загрузить все строки файла в компонент Memo: Следует отметить, что для этой задачи проще воспользоваться командой самого компонента Memo LoadFromFile(). Записать строку в файл: Записать в текстовый файл все строки из компонента Memo: Как и для чтения из файла в Memo, так и здесь, имеется специальная команда: Ввод и вывод информации в Delphi.Программы, которые были ранее разработаны в системе Delphi, позволяли выводить информацию на экран компьютера или вводить информацию с клавиатуры с отображением ее на экране. Однако основными задачами, ради которых были разработаны компьютеры, являются задачи по обработке информации, в том числе задачи вычислительного характера. Поэтому дальнейший материал будет посвящен составлению программ для решения вычислительных задач. Простейшими программами являются программы с линейной алгоритмической структурой, которая предполагает выполнение команд последовательно друг за другом. Программы линейной структуры с вычислениями обычно включают в себя следующие этапы: 1. ввод исходных данных; 2. вычисление требуемой величины; 3. вывод результата. Соответствующая этим этапам блок-схема линейного алгоритма будет следующей:
Рис. 62 Блок-схема линейного алгоритма Простейшим оператором ввода и вывода является рассмотренный нами оператор присваивания. В системе программирования Delphi ввести исходные данные и вывести результат позволяют различные компоненты. Для ввода данных удобно использовать компонент TEdit. Для этого необходимо с помощью мыши установить в текстовом поле курсор и ввести с клавиатуры текст. Вводимая строка отображается в свойстве Text компонента TEdit и воспринимается программой как набор символов. Цифровые символы можно преобразовать в числа с помощью соответствующих типу числа функций преобразования. Таблица 9. Функции преобразования
Для вывода информации можно использовать компонент TLabel. Чтобы увидеть результат работы программы, нужно присвоить свойству Caption компонента TLabel новое значение. Свойство Caption символьного типа. Поэтому выводимое число следует преобразовать в строку символов с помощью соответствующих типу числа функций преобразования. Рассмотрим проект, в котором реализуется линейная алгоритмическая структура, и используются функции преобразования.
Создадим графический интерфейс окна по образцу, изображенному на рис. 63. Для этого поместим на форму текстовое поле TEdit, кнопку TButton и 2 надписи TLabel. Удалим содержимое свойства Text у компонента Edit1. У надписи Label1 запишем в свойстве Caption сообщение «Введите скорость в км/ч». Для кнопки Button1 введем заголовок «Пересчет». Рис. 63 Графический интерфейс окна Исходные данные – скорость в км/ч – будем вводить в текстовое поле Edit1. Результат перевода выведем в надпись Label2. В данном проекте можно выделить следующие этапы линейного алгоритма: 1. Ввести в поле Edit1 скорость в км/ч. 2. Перевести скорость из км/ч в м/с. 3. Вывести в надпись Label2 скорость в м/с. Рассмотрим каждый этап линейного алгоритма. 1. Для обозначения исходной скорости в км/ч введем дополнительную переменную целого типа V1. Присвоим переменной V1 значение свойства Text компонента Edit1. Однако такая запись является неверной, так как типы данных до и после знака присваивания не совпадают: переменная V1 целого типа, а свойство Text компонента Edit1 имеет строковый тип данных. Чтобы далее производить вычисления с вводимыми в поле Edit1 цифрами, которые пока воспринимаются программой как текст, необходимо преобразовать их в числовой формат. В данном случае необходимо использовать функцию StrToInt (преобразует строку в целое число). Таким образом, текст команды ввода будет иметь следующий вид: V1:= StrToInt (Edit1.Text); 2. Чтобы перевести скорость из км/ч в м/с нужно умножить значение скорости на 1000 и разделить 3600 (в 1 километре – 1000 метров, в 1 часе – 3600 секунд). Введем еще одну переменную V2 для обозначения скорости в м/с. Таким образом, для расчета скорости в м/с используется следующий оператор: Переменная V2 будет вещественного типа, так как в выражении для ее вычисления имеется операция деления. 3. Для вывода полученной скорости предназначен компонент Label2. Поэтому необходимо свойству Caption компонента Label2 присвоить значение переменной V2: Данная запись опять нарушает соответствие типов данных, так как в свойстве Caption у надписи могут отображаться только данные символьного типа, а переменная V2 – это вещественное число. Поэтому необходимо преобразовать переменную V2 вещественного типа в строку функцией FloatToStr (преобразовать вещественное число в строку). Текст команды вывода будет выглядеть следующим образом: При выводе результата часто к полученным значениям добавляют комментарии. Например, в данном проекте можно к значению скорости добавить запись её единиц измерения ‘м/с’. В программе эта запись указывается в одиночных кавычках (апострофах), т.к. является символьной константой. Таким образом, вывод результата может иметь следующий вид: Label2.Caption:= FloatToStr(V2)+ ‘м/с’; Так как мы ввели дополнительные переменные V1 и V2, то нужно указать их тип в разделе описаний переменных. Все переменные, используемые в Delphi, подразделяются на два основных вида. Это глобальныепеременные, которые могут использоваться во всей программе, и локальныепеременные, которые можно использовать только внутри определенной процедуры. В данном случае опишем переменные как локальные внутри процедуры TForm1.Button1Click. Для этого после заголовка процедуры введем раздел описания переменных, который открывается зарезервированным словом var. Описание переменных будет выглядеть так: var V1: integer; V2: real; Таким образом, текст обработчика события для кнопки Пересчет будет выглядеть следующим образом:
Рис. 64 Работающее приложение Можно было написать программу и без ввода дополнительных переменных:
Чтобы программа была готова к вводу новых данных, нужно очистить текстовое поле и поместить в него курсор. В Delphi для этого применяются методы: — Clear (Очистить) — SetFocus (Передать фокус ввода) Учитывая эти методы, текст программы изменится на следующий:
|