Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

CheckBox   Найти похожие ветки 

 
serko   (2005-01-17 20:32) [0]

Почему когда я программно делаю CheckBox1.Checked:=true или CheckBox1.Checked:=false срабатывает событие Checkbox1.OnClick? Как этого избежать?


 
serko   (2005-01-17 22:21) [1]

че такой сложный вопрос?


 
Jel ©   (2005-01-17 22:44) [2]

На самом деле это логично. В onClick обычно предпринимают действия отражающие реальное состояние CheckBox-а. Ты меняешь состояние, пусть и программно - событие вызывается.


 
Apocalepse ©   (2005-01-17 22:46) [3]

Потому что так и должно быть :-)


 
Hmm ©   (2005-01-17 22:46) [4]


var cl:boolean;{что-то типа флага указывающего откуда идет установка checked :=true/false}
...

procedure TForm1.Button1Click(Sender: TObject);
{эта процедура устанавливает/снимает галочку}
begin
cl:=true;
if  checkbox1.Checked then checkbox1.Checked:=false
else checkbox1.Checked:=true;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if cl=true then cl:=false
else begin
//твои действия - реакция на клик
 showmessage("!");
end;
end;


PS: Возможно есть другие, более простые варианты, тем неменее и этот работает :)


 
Jel ©   (2005-01-17 22:48) [5]

Можно еще и положение мышки проверить в обработчике, только извраты все это. Какая разница откуда установили свойство? Почему в одном случае реакция нужна а в другом нет?


 
SergP ©   (2005-01-17 23:17) [6]


> Как этого избежать?


CheckBox.OnClick:=nil;
Checkbox.Checked:=true;
CheckBox.OnClick:=CheckBox1Click;


 
Hmm ©   (2005-01-18 00:42) [7]

Так и знал, что можно проще )


 
serko   (2005-01-18 03:15) [8]

Ну спасиба ребята! Еще не проверял, но думаю все логично!


 
VMcL ©   (2005-01-18 08:18) [9]

>>Hmm ©  (17.01.05 22:46) [4]

[OFFTOPIC]

Когда я вижу такой код, у меня рука сразу тянется к пистолету. Правда, к водяному.

>if  checkbox1.Checked then checkbox1.Checked:=false
else checkbox1.Checked:=true;


checkbox1.Checked := not checkbox1.Checked;

>if cl=true then

No comments.

[/OFFTOPIC]


 
Hmm ©   (2005-01-18 16:22) [10]


> checkbox1.Checked := not checkbox1.Checked;

Эт типа на место поставили?


 
Ega23 ©   (2005-01-18 17:08) [11]

Эт типа на место поставили?

Нет, верно и так и так. Просто если при приёме на работу тебя попросят выслать пример кода, а ты пошлёшь if  checkbox1.Checked then checkbox1.Checked:=false else ... , не удивляйся, когда тебя "отфутболят".


 
Hmm ©   (2005-01-18 17:18) [12]

Дело в том, что любая критика должна иметь место. Я никогда не питал иллюзий о том, что мой код идеален. Человеку нужна была помощь (не думаю, что ему важна была именно оптимальность кода), ответов по сути вопроса не было, и я решил помочь, так как умею. И незачем через 5 часов после последнего поста, вытаскивать тему на вершину форума, ради подобного замечания.


 
Ega23 ©   (2005-01-18 17:21) [13]

2 Hmm ©   (18.01.05 17:18) [12]
И незачем через 5 часов после последнего поста, вытаскивать тему на вершину форума, ради подобного замечания.

Ты считаешь, что это замечание тебе ничем не помогло?


 
Hmm ©   (2005-01-18 17:28) [14]


> checkbox1.Checked := not checkbox1.Checked;

Это мне помогло.

> CheckBox.OnClick:=nil;
> Checkbox.Checked:=true;
> CheckBox.OnClick:=CheckBox1Click;

Это тоже много лучше, нежели [4].

А вот это:

> Когда я вижу такой код, у меня рука сразу тянется к пистолету.
> Правда, к водяному.

- явно лишнее. Пахнет сарказмом и понтами.


 
Ega23 ©   (2005-01-18 17:32) [15]

- явно лишнее. Пахнет сарказмом и понтами.

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


 
VMcL ©   (2005-01-26 00:19) [16]

>>Hmm ©  (18.01.05 17:28) [14]

Понтоваться я буду перед своим Group Leader"ом и CEO, поскольку от них зависит моя зряплата. Но явно не перед Вами или кем-либо ещё с этого форума.

WBW.

P.S. Если уж хочется настоящего сарказма, то зацените увиденный мной как-то код (правда, на VB.NET):
Public Function SomeFunction(<тут какие-нить параметры>) As Boolean
   Dim retValue As Boolean

   " ...

   retValue = SomeOtherFunction(...)
   If retValue = True Then
       Return True
   Else
       Return False
   End If
End Function


 
SergP ©   (2005-01-26 00:39) [17]


>  [16] VMcL ©   (26.01.05 00:19)


А прикинь, если бы он написал так:

Public Function SomeFunction(<тут какие-нить параметры>) As Boolean
   " ...
   Return SomeOtherFunction(...)
End Function

а оплата труда у него по количеству строк кода...



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.052 c
14-1105778142
Шишкин Илья
2005-01-15 11:35
2005.02.06
delphibase.endimus.ru


14-1105411877
Думкин
2005-01-11 05:51
2005.02.06
С днем рождения! 11 января


14-1105980997
Никита
2005-01-17 19:56
2005.02.06
Отобразить дерево реестра


11-1089331291
Vladimyr
2004-07-09 04:01
2005.02.06
Rotated text - не вращается, хоть тресни...


1-1106402346
kyn66
2005-01-22 16:59
2005.02.06
как найти дублирующиеся значения полей в таблице