Как сделать кнопку очистить в лазарусе

Обновлено: 05.07.2024

1. Научиться пользоваться простейшими компонентами организации переключений (TСheckBox, TRadioGroup).

2. Использовать при программировании основные конструкции ветвления if then else; case .

3. Написать и отладить программу разветвляющегося алгоритма.

Теоретическая часть:

Операторы if и case языка Паскаль

Для программирования разветвляющихся алгоритмов в языке Pascal используются специальные переменные типа boolean, которые могут принимать только два значения - true и false (да, нет), а также операторы if и case. Оператор if проверяет результат логического выражения, или значение переменной типа boolean, и организует разветвление вычислений.

Условный оператор if отвечает за ветвление, т.е. выполнение (или невыполнение) того или иного варианта кода в зависимости от условий. Оператор if используется совместно с ключевым словом then, а в том случае, когда предусмотрен альтернативный вариант выполнения - еще и с else. В целом синтаксис инструкции получается следующим:

if then [else ]

В качестве условия может быть использовано любое выражение, которое может быть приведено к булевскому значению, т.е. к false или true. Как правило, это бывают операции сравнения, например:

if a > 5 then b := 10;

if x <> 0 then y := 1 else y :=2;

В тех случаях, когда требуется предусмотреть 3 или более вариантов исполнения, используют вложение операторов if друг в друга. Например, если требуется выполнить один вариант когда, когда некая переменная x меньше нуля, другой - если x равна 0, и третий - если x больше нуля, то синтаксис операторов может быть следующим:

if x else

if x = 0 then else 0>;

В данном случае использован вложенный оператор if, который выполняется в случае, когда переменная x не меньше 0. Он проверяет, не является ли значением x число 0, и если нет, то, учитывая, что x явно не меньше, чем 0 (это условие к моменту выполнения вложенного оператора if уже проверено внешним, т.е. первым в данном выражении оператором if), значит значение x больше 0.

Условный оператор удобен в тех случаях, когда необходимо проверить 1-2-3 варианта. При большем числе получается слишком громоздкая и неудобная для восприятия конструкция из множества вложенных инструкций. Скажем, если требуется проверить 5 значений переменной x, то получим такую конструкцию:

if x = 1 then ;

else if x = 2 then ;

else if x = 3 then ;

else if x = 4 then ;

else if x = 5 then ;

Очевидно, что код получается слишком громоздким, и малоэффективным. В таких случаях на помощь приходит семафор - оператор множественного выбора case. Он состоит из выражения, являющегося селектором, списка вариантов, представленного константами или значениями, и необязательной части else. Таким образом, формат оператора case таков:

case [выражение-селектор] of

[else ;]

End

Единственным ограничением семафора, в сравнении с условным оператором, является то, что в качестве селектора могут выступать лишь данные порядкового типа, скажем, целым числом или же символом.

Оператор выбора case организует разветвления в зависимости от значения некоторой переменной перечисляемого типа.

Например, приведенный выше вариант кода с 4 вложенными условными операторами, при помощи case можно оформить так:

Case x of

1: ;

2: ;

3: ;

4: ;

5: ;

end;

Здесь подразумевается, что типом переменной x является целое число, поскольку тип значений, коими в данном случае являются целые числа, должен соответствовать типу селектора.

В качестве констант выбора могут выступать не только единичные значения, но и их список, разделенный запятыми, или же диапазоны, определенные границами из 2 констант, разделенных двумя точками. В таком случае мы можем объединить логически связанные значения в группы, для которых следует выполнить один и тот же код. Например, таким образом можно получить название времени года в зависимости от порядкового номера месяца.

var month: integer; season: string;

Case month of

1,2,12: season := " зима ";

3..5: season := " весна ";

6..8: season := " лето ";

9..11: season := " осень ";

else season := "других не знаем!";

end;

В данном случае, если переменная month имеет значения 1, 2 или 12, то переменной season присваивается значение "зима", если же значение переменной month окажется в диапазоне от 3 до 5 (включительно), то season получит значение "весна", и т.д.

Кнопки-переключатели в Lazarus

При создании программ в Lazarus для организации разветвлений часто используются компоненты в виде кнопок-переключателей. Состояние такой кнопки (включено - выключено) визуально отражается на форме. На рисунке 1 представлена форма, с кнопками-переключателями двух типов (TCheckBox, TRadioGroup ).

Компонент TCheckBox организует кнопку независимого переключателя, с помощью которой, пользователь может указать свое решение типа да/нет. В программе состояние кнопки связано со значением булевской переменной, которая проверяется с помощью оператора if.

Флажок (независимый переключатель) отличается от переключателя тем, что в группе флажков одновременно можно установить флажки в любой комбинации (в том числе могут быть установлены или сброшены все флажки и т. д.). Флажок может находиться в установленном или сброшенном состоянии. Одиночный флажок часто используется, например, для включения/выключения какого-либо режима. Для определения состояния флажка используется свойство Checked типа Boolean. По умолчанию оно имеет значение False, и флажок снят.

Компонент Lazarus RadioButton - это "радиокнопка". Если выбран один из компонентов Lazarus RadioButton, то с остальных компонентов выбор автоматически снимается. Получается, что в данный момент может быть выбран только один из группы компонентов Lazarus RadioButton.

Основное свойство компонента Lazarus RadioButton - Checked (т.е. "выбрано") типа Boolean, доступное как для чтения, так и для записи. У выбранного компонента свойство Checked равно True.

Компонент Lazarus RadioGroup расположен на странице Standard Палитры Компонентов. Он представляет собой контейнер с группой компонентов RadioButton (переключателей). Такой компонент упрощает организацию работы переключателей, по сравнению другими групповыми контейнерами требующими добавлять переключатели вручную.

Компонент TRadiogroup организует группу кнопок - зависимых переключателей. При нажатии одной из кнопок группы все остальные кнопки отключаются. В программу передается номер включенной кнопки (0,1,2. ), который анализируется с помощью оператора case.

Практическая часть

Порядок выполнения работы:

Задание:

Ввести три числа: x, y, z.

Вычислить при выключенном переключателе CheckBox: u=sin(x) или u=cos(x), или u=tg(x). При включенном переключателе CheckBox найти максимальное из трех чисел: max( x ,y,z)

Cоздать форму, представленную на рисунке 1, и написать соответствующую программу.

Coздание формы

Создайте форму, такую же как в первой лабораторной работе, скорректировав текст надписей и положение окон TEdit.

© 2014-2022 — Студопедия.Нет — Информационный студенческий ресурс. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав (0.005)

вот готовые работающие задачи!
подскажите как их прописать в лазарусе? нужно чтоб с кнопками с окошками было!
кнопки и др я сделаю сам подскажите как прописать её?

program project1;
var
a,p,c:integer;
i:real;
begin
WriteLn('vvdite kollichevstvo smorodini, zatem kolvo sahara valy, zatem veri');
ReadLn(a,c,p);
i:=(a/2)*3;
if (c=i) and (p=i) then WriteLn('pravi obe') else
if c=i then WriteLn('prava valya') else
if p=i then WriteLn('prava vera') else
WriteLn('obe ne pravi');
readln;

var
a:array [1..30] of integer;
i,z:integer;
begin
randomize;
for i:=1 to 30 do
begin
a[i]:=random(501)+500;
writeln(' a[',i,']=', a[i], ' ');
if ((a[i] mod 5)=0) and ((a[i] mod 8)=0) then z:=z+a[i];
end;
writeln('ssumma=', z);
readln;
end.


Запустите программу, нажав Ctrl + F9.


Да, так и есть. Компилятор не знает, что такое ClrScr .

Но почему тогда он знает Writeln и не знает ClrScr ? Дело в том, что процедура (команда) Writeln относится к базовым процедурам Паскаля, а вот алгоритм работы процедуры ClrScr описан отдельно. Отдельно — означает в отдельном модуле (файле). И для того, чтобы компилятор Free Pascal знал, как работает эта процедура, вы должны указать в своей программе, что используете модуль Crt . Так называется модуль, в котором описан алгоритм процедуры ClrScr . Или как еще говорят: реализована процедура ClrScr .

Теперь мы можем запустить нашу программу (Ctrl + F9):



Первая же ссылка приводит нас на форум, где мы находим решение:




И снова запускаем Free Pascal:


Как видите, вид окна поменялся.

Запускаем нашу программу (Ctrl + F9), нажимаем Alt + F5, чтобы переключиться в окно результатов работы программы, и видим результат:


Краткое содержание урока

✔ Мы узнали как правильно закрывать Free Pascal (раньше вы, скорее всего, просто нажимали на крестик в правом верхнем углу окна):

✔ Узнали новое ключевое слово языка Паскаль:

  • uses — ключевое слово, после которого перечисляются все модули, используемые нами в программе.

✔ Познакомились с еще одной процедурой:

✔ Узнали о существовании модуля Crt .

✔ И наконец, мы впервые столкнулись с проблемой на уровне инструмента (Free Pascal): когда после подключения модуля Crt у нас перестали отображаться русские буквы (кириллица) в окне результатов. Мы не разобрались, почему это происходит, т. к. причины скрыты внутри модуля Crt . Можно ли выяснить причины, по которым у нас возникла проблема с кириллицей? Чисто теоретически, да. Но для этого нам бы понадобились знания, которые выходят за рамки наших уроков. Поэтому мы воспользовались обходным решением (workaround) — поменяли используемый в программе шрифт Lucida Console на точечный шрифт.

И вот здесь я хочу остановиться подробнее

Другой сценарий: обладая нужными навыками, устранить самому эту проблему в модуле Crt. А для этого нужно знать, что такое дизассемблирование, обратная разработка (reverse engineering) и т. д.

Идеальный вариант — это, конечно, когда лужу устраняют те, кто за нее отвечают. Т. е. разработчики Free Pascal. Но мы живем не в идеальном мире, и поэтому нам иногда приходится использовать обходные решения.

Задания

  1. Что будет выведено на экране после запуска следующей программы?
  1. Исправьте все ошибки в следующей программе, и запустите исправленный вариант:

Задания повышенной сложности

  1. Напишите программу, которая выведет на чистый экран текст программы hello.pas (см. урок 1).

2) для отступов используйте по 3 пробела;

Непонятно почему в скобках по 3 кавычки? Смотрите: самая левая и самая правая одинарные кавычки обрамляют тот текст, который мы хотим вывести на экран, например:

Writeln( 'Кафе Огонёк' );


Caption – текст, отображаемый на кнопке.


Enabled – признак доступности кнопки. По умолчанию имеет значение

True , то есть кнопка доступна. Если False , то кнопка в данный момент не-

доступна. Надпись на кнопке имеет блеклый вид, нажатие на кнопку не приво-

дит ни к каким действиям, даже если имеется обработчик события OnClick .


Default – если установлено значение True , то нажатие клавиши Enter

будет эквивалентно щелчку по кнопке мышью.


Cancel – если установлено значение True , то нажатие клавиши Esc бу-

дет эквивалентно щелчку по кнопке мышью.

Компонент TBitBtn отличается от TButton тем, что на нем можно ото-

бражать пиктограммы. Перечисленные выше свойства для TButton имеют ме-

сто и для TBitBtn . Кроме этого, этот компонент имеет и свои особые свойст-


Kind – задает тип кнопки. Имеются несколько предопределенных типов кнопки с готовой пиктограммой и текстом:

 bkAbort – с текстом "Прервать".

 bkAll – с текстом "Все".

 bkCancel – с текстом "Отмена".

 bkClose – с текстом "Закрыть".

 bkCustom – произвольный текст, устанавливается программистом.

 bkHelp – с текстом "Справка".

 bkIgnore – с текстом "Пропуск".

6.3 Визуальное программирование в среде Lazarus

 bkNo – с текстом "Нет".

 bkNoToAll – с текстом "Нет для всех".

 bkOK – с текстом "ОК".

 bkRetry – с текстом "Повтор".

 bkYes – с текстом "Да".

 bkYesToAll – с текстом "Да для Всех".


Glyph – если вас не устраивают предлагаемые рисунки, вы можете выбрать другие. Будет открыто диалоговое окно, необходимо указать путь к этому ри-


Margin – задает расстояние от края кнопки до рисунка (в пикселах). По умолчанию -1. В этом случае рисунок и текст располагаются в центре.


Layout – определяет положение рисунка на кнопке. Можно выбрать:


Spacing – задает расстояние в пикселах между рисунком и текстом кноп-

Рассмотрим пример. Положите на пустую форму две кнопки TButton и

одну TBitBtn . Для кнопки Button1 установите свойство

Caption= "Показать кнопку", для кнопки Button2 установите свойство Caption= "Сделать доступной". Для кнопки BitBtn1 установите свойство

Kind = bkClose , Enabled = False , Visible = False , рис. 6.28.

Глава 6 Программирование приложений с графическим интерфейсом

Рис. 6.28. Форма приложения

В обработчик события OnClick для Button1 введите код:

procedure TForm1.Button1Click(Sender: TObject);

В обработчик события OnClick для Button2 введите код:

procedure TForm1.Button2Click(Sender: TObject);

Откомпилируйте и запустите приложение. Вы видите, что кнопка

BitBtn1 сразу после запуска не видна. Нажмите на кнопку " Показать кнопку ". Кнопка BitBtn1 станет видна, но будет недоступна. Теперь на-

жмите на кнопку " Сделать доступной ". Кнопка BitBtn1 станет доступ-

на. Закройте с ее помощью приложение.

Кнопки TSpeedButton (она находится на странице Additional )

обычно используются в качестве быстрых кнопок в панелях инструментов. На

6.3 Визуальное программирование в среде Lazarus

них также можно поместить некоторое изображение. Разумеется, их можно ис-

пользовать и как обычные кнопки. Отличительной особенностью этих кнопок является возможность фиксации нажатого состояния. Для этого используются свойства GroupIndex и AllowAllUp .

По умолчанию свойство GroupIndex имеет значение 0. В этом случае кнопка ведет себя как обычная кнопка. Если значение GroupIndex > 0 , то при нажатии на кнопку она останется в нажатом состоянии. Если свойству

AllowAllUp присвоить значение = true , то при повторном нажатии на кнопку она возвратится в нормальное состояние.

Если присвоить свойствам GroupIndex нескольких кнопок одинаковое значение > 0 , то при нажатии следующей кнопки она останется в нажатом состоянии, а предыдущая кнопка вернется в обычное отжатое состояние (свой-

ство AllowAllUp должно иметь значение = true для всех этих кнопок).

Узнать в каком состоянии находится кнопка (нажатом или отжатом) можно по свойству Down . Если Down = true , то кнопка в нажатом состоянии.

6.3.6 Организация ввода данных. Однострочные редакторы TEdit, TLa-

Любая программа в своей работе использует какие-то исходные данные.

Чаще всего эти данные вводятся пользователем с клавиатуры.

Для организации ввода используются компоненты TEdit, TLabeledEdit и др. Сигналом завершения ввода и начала обработки вве-

денных данных служит обычно нажатие пользователем кнопки. Для заверше-

ния ввода также часто используется клавиша Enter .

6.3.6.1. Компонент TEdit

С помощью этого компонента можно вводить и редактировать некоторый

Глава 6 Программирование приложений с графическим интерфейсом

текст. Этот компонент носит также название однострочный редактор.


Text – вводимое значение содержится в этом свойстве в виде строки сим-

волов. По умолчанию содержит строку " Edit1 ".


AutoSelect – если установлено значение True , то при передаче фокуса на компонент, весь текст в поле редактирования будет выделен.


ReadOnly – если установлено значение True , то текст в поле редактиро-

вания доступен только для чтения, при этом сохраняется возможность копиро-

вания текста в буфер обмена.

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

Перенесите на форму компонент TEdit , очистите свойство Text . Также нам понадобятся кнопка и надпись. Расположите их на форме так, как показано на рисунке 6.29, соответственно изменив свойства Caption формы, надписи и кнопки.

Рис. 6.29. Форма приложения

В редакторе исходного кода в обработчик события OnCreate формы введите следующий код:

Читайте также: