Добрый день! Делаю проект для подсчёта пиццы с использованием if else then и тд. И получается всё работает, но..
Надо, что бы button2 *если значение 0 или меньше 0*,(screenshot_84) было неактивно. А если *больше 0*, то работало как обычно. Подскажите какую команду использовать) Заранее спасибо!
Проект *для новичка*(помощь)
Модератор: Модераторы
Проект *для новичка*(помощь)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Как вы хотите чтоб вам помогли? Вы пишите проблему, но в скринах ни где не отображена проблема. Ни кто не знает, какая кнопка у вас - button2.
screenshot_84 - вообще ни где в коде не видно.
Если нужно, чтоб кнопка была не активна, то у кнопки есть свойство button2.active = true/false .
screenshot_84 - вообще ни где в коде не видно.
Если нужно, чтоб кнопка была не активна, то у кнопки есть свойство button2.active = true/false .
Забудь про то что пишут в книгах и используй сразу TActionList. Бросаешь его на форму, создаешь там "действие". В свойствах есть процедура выполнения и обновления. Выполнение - то что у тебя сейчас в OnClick, а обновление как раз когда кнопка обновляет свое состояние. Можно написать условие и добавить строку (Sender as TAction).Enabled:=True/False;
Дальше просто нужным кнопкам в свойствах выбираешь параметр Action.
Дальше просто нужным кнопкам в свойствах выбираешь параметр Action.
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. Можно такое сделать?
Кроме StrToFloat() есть ещё TryStrToFloat() и StrToFloatDef().
И, кмк, Ингредиенты.
И, кмк, Ингредиенты.
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. Можно такое сделать?
Есть в строке будет "Абвгда../*" или пробел, то будет ошибка исполнения.
Вот, примерно так
https://disk.yandex.ru/d/rwkEImFl8Tyjlg
Из замечаний, которые относятся ко всем "новичкам"
1) НИКОГДА не оставляйте свойства Name автоматически назначенными. Первое, что следует сделать, поместив компонент
на форму - дать внятное название на английском языке (никаких транслитов!). Исключением являются компоненты к которым никогда не бывает явных обращений в тексте программы, например, TLabel. Очень желательно предварить название префиксом из двух-трех символов, соответствующих типу компонента. cb - для TCheckBox, rb для TRadioBox.
Это не только облегчит чтение текста программы, но и поможет использовать автодополнение.
2) Избегайте использовать одну величину в разных смыслах. В начальном варианте программы Цена ингридиентов есть
в качестве составной части заголовка и есть значение, которое добавляется к расчетной цене. Чтобы этого избежать, я добавил
специальные компоненты для цены ингридиентов.
3) Выделяйте смысловые блоки в отдельные процедуры/функции. В данном случае я выделил расчет скидки в отдельную функцию
CalcDiscount
https://disk.yandex.ru/d/rwkEImFl8Tyjlg
Из замечаний, которые относятся ко всем "новичкам"
1) НИКОГДА не оставляйте свойства Name автоматически назначенными. Первое, что следует сделать, поместив компонент
на форму - дать внятное название на английском языке (никаких транслитов!). Исключением являются компоненты к которым никогда не бывает явных обращений в тексте программы, например, TLabel. Очень желательно предварить название префиксом из двух-трех символов, соответствующих типу компонента. cb - для TCheckBox, rb для TRadioBox.
Это не только облегчит чтение текста программы, но и поможет использовать автодополнение.
2) Избегайте использовать одну величину в разных смыслах. В начальном варианте программы Цена ингридиентов есть
в качестве составной части заголовка и есть значение, которое добавляется к расчетной цене. Чтобы этого избежать, я добавил
специальные компоненты для цены ингридиентов.
3) Выделяйте смысловые блоки в отдельные процедуры/функции. В данном случае я выделил расчет скидки в отдельную функцию
CalcDiscount
DedFrend писал(а):Вот, примерно так
https://disk.yandex.ru/d/rwkEImFl8Tyjlg
Из замечаний, которые относятся ко всем "новичкам"
1) НИКОГДА не оставляйте свойства Name автоматически назначенными. Первое, что следует сделать, поместив компонент
на форму - дать внятное название на английском языке (никаких транслитов!). Исключением являются компоненты к которым никогда не бывает явных обращений в тексте программы, например, TLabel. Очень желательно предварить название префиксом из двух-трех символов, соответствующих типу компонента. cb - для TCheckBox, rb для TRadioBox.
Это не только облегчит чтение текста программы, но и поможет использовать автодополнение.
2) Избегайте использовать одну величину в разных смыслах. В начальном варианте программы Цена ингридиентов есть
в качестве составной части заголовка и есть значение, которое добавляется к расчетной цене. Чтобы этого избежать, я добавил
специальные компоненты для цены ингридиентов.
3) Выделяйте смысловые блоки в отдельные процедуры/функции. В данном случае я выделил расчет скидки в отдельную функцию
CalcDiscount
Спасибо большое! Это мне сейчас сильно пригодится)
