Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обработка OnClick у CheckBox'a [D2005, XP]


flasher ©   (2010-11-08 09:03:00) 

Подскажите как сделать, чтобы при программной установке состояния CheckBox.Checked:= true/false не вызывалась бы обработка  CheckBox.OnClick?


12   (2010-11-08 11:34:00) [1]

что-то мало новых вопросов а поговорить хоцца :)
тогда так еще

type
 TForm1 = class(TForm)
   cb1: TCheckBox;
   btn1: TButton;
   btn2: TButton;
   procedure cb1Click(Sender: TObject);
   procedure btn1Click(Sender: TObject);
   procedure btn2Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private     { Private declarations }
   MyGlobalVar:Boolean;
 public      { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.cb1Click(Sender: TObject);
begin
 if MyGlobalVar then Exit;
 ShowMessage( 'onClick' );
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  MyGlobalVar := True;
  cb1.Checked := not(cb1.Checked);
  MyGlobalVar := false;
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
 cb1.Checked := not(cb1.Checked)
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 btn1.Caption := 'no onClick';
 btn2.Caption := 'wiht onClick';
end;


12   (2010-11-08 10:37:00) [2]


> CheckBox.OnClick := nil;
> try
>  CheckBox.Checked := ...;
> finally
>  CheckBox.OnClick := CheckBoxClick
> end;

Тогда так удобнее

type
 TForm1 = class(TForm)
   cb1: TCheckBox;
   btn1: TButton;
   procedure cb1Click(Sender: TObject);
   procedure btn1Click(Sender: TObject);
 private     { Private declarations }
 public      { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
procedure TFCheckBox(CB:TCheckBox; TF:boolean);
var
 M: TNotifyEvent;
begin
 M := CB.onClick;
 CB.OnClick := nil;
 CB.Checked := TF;
 CB.OnClick := M;
end;

procedure TForm1.cb1Click(Sender: TObject);
begin
 ShowMessage( '' );
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
  TFCheckBox(cb1, not(cb1.Checked));
end;


Юрий Зотов   (2010-11-08 10:20:00) [3]

CheckBox.OnClick := nil;
try
 CheckBox.Checked := ...;
finally
 CheckBox.OnClick := CheckBoxClick
end;


12   (2010-11-08 09:09:00) [4]

type TBC = class (TButtonControl);

 TBC(cbChiefEngener).ClicksDisabled := True;
 cbChiefEngener.Checked := CheckChiefEngener;
 TBC(cbChiefEngener).ClicksDisabled := False;


Наверх

Титульная страница Поиск, карта сайта Написать письмо