Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] События при включении и отключении checkBox

Ответить
Настройки темы
Delphi - [решено] События при включении и отключении checkBox

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: ziiiro
Дата: 02-04-2015
Добрый день, помогите пожалуйста.

Имеется кусок кода. Нужно чтобы: При включении checkBox отображались все компоненты, а при снятии флажка в этом же checkBox они пропадали, т.е становились False.
Заранее спасибо.

P.S. Как включать разобрался, как отключить не могу понять((
if CheckBox1.Checked = False не срабатывает почему то... может не так реализовал сам код ?

Код: Выделить весь код
 procedure TForm1.CheckBox1Click(Sender: TObject);
    begin
    if CheckBox1.Checked = True
    then
    Label38.Visible:=True; Memo1.Visible:=True; Label3.Visible:=True; Label10.Visible:=True;
    Label17.Visible:=True; ComboBox2.Visible:=True;  Label38.Visible:=True;
    end;

Отправлено: 17:16, 02-04-2015

 

Аватара для yurfed

Ветеран


Сообщения: 20133
Благодарности: 3145

Профиль | Отправить PM | Цитировать


ziiiro, забыл ужо всё, но что то кажется что условие надо продолжить. Извиняюсь если глупость сморозил, но лет 7 не брал в руки шашки
Код: Выделить весь код
begin
  if CheckBox1.Checked True
    then
           Label38.Visible:=True; Memo1.Visible:=True; Label3.Visible:=True; Label10.Visible:=True;
           Label17.Visible:=True; ComboBox2.Visible:=True;  Label38.Visible:=True;
    else
          Label38.Visible:=False; Memo1.Visible:=True; Label3.Visible:=True; Label10.Visible:=False;
          Label17.Visible:=False; ComboBox2.Visible:=True;  Label38.Visible:=False;
end;
Пример взят отсюда
Код: Выделить весь код
begin
  // Обратите внимание на отсутствие ';' после предложения 'then'
  if False
  then ShowMessage('True')
  Else ShowMessage('False');

  // Вложенные условные операторы - Delphi заметно управляют ассоциациями
  if true then
    if false then
      ShowMessage('Внутренний then')
    Else
      ShowMessage('Внутренний else')
  Else
    ShowMessage('Внешний else')
end;

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Последний раз редактировалось yurfed, 02-04-2015 в 17:43.


Отправлено: 17:36, 02-04-2015 | #2



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

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


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата yurfed:
Label17.Visible:=True; ComboBox2.Visible:=True; Label38.Visible:=True;
else »
Ругается на Else
[Error] Unit1.pas(163): ';' not allowed before 'ELSE'
Там видимо как то по другому прописываться должно...
Не могу понять, как )

yurfed, Попробовал так

Код: Выделить весь код
if checkbox1.checked = True then
  begin
     //все компоненты выставил  True
  end
  else 
    //все компоненты выставил False
  end;
На код не ругается, но при запуске при нажатии на CheckBox ничего не происходит ... при включении и отключении флажка

Последний раз редактировалось ziiiro, 02-04-2015 в 17:53.


Отправлено: 17:46, 02-04-2015 | #3


Аватара для yurfed

Ветеран


Сообщения: 20133
Благодарности: 3145

Профиль | Отправить PM | Цитировать


ziiiro, а зачем END посередине?
а так
Код: Выделить весь код
if checkbox1.checked = True then
  begin
     //все компоненты выставил  True
  else 
if checkbox1.checked = False then
    //все компоненты выставил False
  end;

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Отправлено: 17:57, 02-04-2015 | #4


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я скорее всего туплю...
end поставил так как до else идут перечисления через ';' если после этого перечисления ставить else то ошибка, если убрать ";" то тоже ошибка

yurfed, Я скорее всего туплю...
end поставил так как до else идут перечисления через ';' если после этого перечисления ставить else то ошибка, если убрать ";" то тоже ошибка

Отправлено: 19:16, 02-04-2015 | #5


Аватара для yurfed

Ветеран


Сообщения: 20133
Благодарности: 3145

Профиль | Отправить PM | Цитировать


ziiiro, забирай пример.
Код: Выделить весь код
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    lbl1: TLabel;
    chk1: TCheckBox;
    procedure chk1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.chk1Click(Sender: TObject);
begin

if chk1.Checked
    then
    lbl1.Visible:=True   //Чекбокс отмечен
    else
    lbl1.Visible:=False;  //Чекбокс пустой

end;

end.

-------
Хочу ли я - Могу ли я - Говно ли я - Магнолия


Последний раз редактировалось yurfed, 09-04-2023 в 18:09.

Это сообщение посчитали полезным следующие участники:

Отправлено: 03:38, 03-04-2015 | #6


Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


yurfed, Спасибо)

Код: Выделить весь код
 
procedure TForm1.CheckBox1Click(Sender: TObject);
    begin
    if checkBox1.Checked
        then
           begin
            Label38.Visible:=True; Memo1.Visible:=True; Label3.Visible:=True; Label10.Visible:=True;
            Label17.Visible:=True; ComboBox2.Visible:=True;  Label38.Visible:=True;
           end
        else
              if checkBox1.Checked = False
              then
                begin
                  Label38.Visible:=False; Memo1.Visible:=False; Label3.Visible:=False; Label10.Visible:=False;
                  Label17.Visible:=False; ComboBox2.Visible:=False;  Label38.Visible:=False;
                end;
        end;
Вот так, работает как часы)

Отправлено: 08:04, 03-04-2015 | #7


Аватара для opel431

Ветеран


Contributor


Сообщения: 1803
Благодарности: 714

Профиль | Отправить PM | Цитировать


Можно сделал и по иному.... это расширит количество возможных комбинаций при необходимости и сократит код при повторных вызовах
........
procedure EnabledElm(mo: Boolean; lb: Boolean; cb: Boolean); // для примера три компонента

implementation
........

{процедура: EnabledElm
Входные параметры: mo: Boolean; lb: Boolean; cb: Boolean
Результат: изменение свойства Enabled, в зависимости от условия}

procedure TMain.EnabledElm(mo: Boolean; lb: Boolean; cb: Boolean);
begin
Memo1.Enabled := mo;
Label1.Enabled := lb;
ComboBox1.Enabled := cb;
end;


Применение

// все однотипно
if checkBox1.Checked then
EnabledElm(False, False, False)
else
EnabledElm(True, True, True);

// раздельно
if checkBox1.Checked then
EnabledElm(True, False, False)
else
EnabledElm(False, False, True);

-------
Хвала тому, кто встав среди камней, уча другого, сам будет умней.


Последний раз редактировалось opel431, 05-04-2015 в 17:30.


Отправлено: 10:11, 05-04-2015 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - [решено] События при включении и отключении checkBox

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
EventID - Уведомление Ист. события: HHCTRL Категория события: Отсутствует. Код события: 1903 cleric1985_n Устранение критических ошибок Windows 7 27-11-2015 16:14
Разное - Смена разрешения при отключении монитора ivankislov Microsoft Windows 7 4 15-12-2011 17:38
HDD - [решено] Здоровье жесткого диска при частом включении\отключении ПК. 9073 Хочу все знать 7 03-01-2010 23:33
При отключении подключения произошла ошибка KALABROD Сетевые технологии 4 01-03-2006 17:10




 
Переход