Проект *для новичка*(помощь)

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Проект *для новичка*(помощь)

Сообщение Nikis » 27.03.2021 01:33:33

Добрый день! Делаю проект для подсчёта пиццы с использованием if else then и тд. И получается всё работает, но..
Надо, что бы button2 *если значение 0 или меньше 0*,(screenshot_84) было неактивно. А если *больше 0*, то работало как обычно. Подскажите какую команду использовать) Заранее спасибо!
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Nikis
незнакомец
 
Сообщения: 3
Зарегистрирован: 27.03.2021 01:23:41

Re: Проект *для новичка*(помощь)

Сообщение Seenkao » 27.03.2021 12:02:22

Как вы хотите чтоб вам помогли? Вы пишите проблему, но в скринах ни где не отображена проблема. Ни кто не знает, какая кнопка у вас - button2.
screenshot_84 - вообще ни где в коде не видно.

Если нужно, чтоб кнопка была не активна, то у кнопки есть свойство button2.active = true/false .
Seenkao
постоялец
 
Сообщения: 246
Зарегистрирован: 01.04.2020 03:37:12

Re: Проект *для новичка*(помощь)

Сообщение Sharfik » 27.03.2021 12:57:58

Забудь про то что пишут в книгах и используй сразу TActionList. Бросаешь его на форму, создаешь там "действие". В свойствах есть процедура выполнения и обновления. Выполнение - то что у тебя сейчас в OnClick, а обновление как раз когда кнопка обновляет свое состояние. Можно написать условие и добавить строку (Sender as TAction).Enabled:=True/False;
Дальше просто нужным кнопкам в свойствах выбираешь параметр Action.
Sharfik
энтузиаст
 
Сообщения: 568
Зарегистрирован: 20.07.2013 01:04:30

Re: Проект *для новичка*(помощь)

Сообщение Nikis » 27.03.2021 14:09:27

Sharfik писал(а):Забудь про то что пишут в книгах и используй сразу TActionList. Бросаешь его на форму, создаешь там "действие". В свойствах есть процедура выполнения и обновления. Выполнение - то что у тебя сейчас в OnClick, а обновление как раз когда кнопка обновляет свое состояние. Можно написать условие и добавить строку (Sender as TAction).Enabled:=True/False;
Дальше просто нужным кнопкам в свойствах выбираешь параметр Action.

Я не особо (вообще не умею) умею пользоваться TActionList. Я сделал через
if StrToFloat(edit1.Text)=2 then begin button2.Enabled:=false; end; и
if StrToFloat(edit1.Text)>1 then begin button2.Enabled:=true; end;
Но хочу узнать совет. Если в edit1.text будет ничего(пустота), то это получается char. Можно как-то от него избавиться. Например, если edit1.text это char(ничего), то это записывается в переменную как 1. Можно такое сделать?
Nikis
незнакомец
 
Сообщения: 3
Зарегистрирован: 27.03.2021 01:23:41

Re: Проект *для новичка*(помощь)

Сообщение iskander » 27.03.2021 18:42:58

Кроме StrToFloat() есть ещё TryStrToFloat() и StrToFloatDef().
И, кмк, Ингредиенты.
iskander
постоялец
 
Сообщения: 404
Зарегистрирован: 08.01.2012 18:43:34

Re: Проект *для новичка*(помощь)

Сообщение Sharfik » 28.03.2021 16:53:00

Nikis писал(а):if StrToFloat(edit1.Text)=2 then begin button2.Enabled:=false; end; и
if StrToFloat(edit1.Text)>1 then begin button2.Enabled:=true; end;
Но хочу узнать совет. Если в edit1.text будет ничего(пустота), то это получается char. Можно как-то от него избавиться. Например, если edit1.text это char(ничего), то это записывается в переменную как 1. Можно такое сделать?

Есть в строке будет "Абвгда../*" или пробел, то будет ошибка исполнения.
Sharfik
энтузиаст
 
Сообщения: 568
Зарегистрирован: 20.07.2013 01:04:30

Re: Проект *для новичка*(помощь)

Сообщение DedFrend » 31.03.2021 22:41:14

Вот, примерно так
https://disk.yandex.ru/d/rwkEImFl8Tyjlg

Из замечаний, которые относятся ко всем "новичкам"
1) НИКОГДА не оставляйте свойства Name автоматически назначенными. Первое, что следует сделать, поместив компонент
на форму - дать внятное название на английском языке (никаких транслитов!). Исключением являются компоненты к которым никогда не бывает явных обращений в тексте программы, например, TLabel. Очень желательно предварить название префиксом из двух-трех символов, соответствующих типу компонента. cb - для TCheckBox, rb для TRadioBox.
Это не только облегчит чтение текста программы, но и поможет использовать автодополнение.
2) Избегайте использовать одну величину в разных смыслах. В начальном варианте программы Цена ингридиентов есть
в качестве составной части заголовка и есть значение, которое добавляется к расчетной цене. Чтобы этого избежать, я добавил
специальные компоненты для цены ингридиентов.
3) Выделяйте смысловые блоки в отдельные процедуры/функции. В данном случае я выделил расчет скидки в отдельную функцию
CalcDiscount
DedFrend
новенький
 
Сообщения: 97
Зарегистрирован: 25.11.2018 12:21:50

Re: Проект *для новичка*(помощь)

Сообщение Nikis » 01.04.2021 14:10:17

DedFrend писал(а):Вот, примерно так
https://disk.yandex.ru/d/rwkEImFl8Tyjlg

Из замечаний, которые относятся ко всем "новичкам"
1) НИКОГДА не оставляйте свойства Name автоматически назначенными. Первое, что следует сделать, поместив компонент
на форму - дать внятное название на английском языке (никаких транслитов!). Исключением являются компоненты к которым никогда не бывает явных обращений в тексте программы, например, TLabel. Очень желательно предварить название префиксом из двух-трех символов, соответствующих типу компонента. cb - для TCheckBox, rb для TRadioBox.
Это не только облегчит чтение текста программы, но и поможет использовать автодополнение.
2) Избегайте использовать одну величину в разных смыслах. В начальном варианте программы Цена ингридиентов есть
в качестве составной части заголовка и есть значение, которое добавляется к расчетной цене. Чтобы этого избежать, я добавил
специальные компоненты для цены ингридиентов.
3) Выделяйте смысловые блоки в отдельные процедуры/функции. В данном случае я выделил расчет скидки в отдельную функцию
CalcDiscount


Спасибо большое! Это мне сейчас сильно пригодится)
Nikis
незнакомец
 
Сообщения: 3
Зарегистрирован: 27.03.2021 01:23:41


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 12

Рейтинг@Mail.ru