Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.025 c
1-1106270038
jcrush
2005-01-21 04:13
2005.02.06
Разбивка сообщения по 70 символов..


1-1106263091
Gladiator
2005-01-21 02:18
2005.02.06
Форма не реагирует на нажатие Del


14-1105289750
Fin
2005-01-09 19:55
2005.02.06
У кого самый дорогой или дешевый Интернет


14-1106020502
Чеширский_Кот
2005-01-18 06:55
2005.02.06
"Губит людей не пиво...


4-1102973267
Вадим
2004-12-14 00:27
2005.02.06
SpeedButton Handle





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский