![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
CheckBox [D6, WinXP]
serko © (2005-01-17 20:32:00)Почему когда я программно делаю CheckBox1.Checked:=true или CheckBox1.Checked:=false срабатывает событие Checkbox1.OnClick? Как этого избежать?
SergP (2005-01-26 00:39:00) [1]
> [16] VMcL © (26.01.05 00:19)
А прикинь, если бы он написал так:
Public Function SomeFunction(<тут какие-нить параметры>) As Boolean
' ...
Return SomeOtherFunction(...)
End Function
а оплата труда у него по количеству строк кода...
VMcL (2005-01-26 00:19:00) [2]>> 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
Ega23 (2005-01-18 17:32:00) [3]- явно лишнее. Пахнет сарказмом и понтами.
Привыкай. Если выкладываешь код - будь готов к тому, что его могут назвать "полный бред", "ахинея" и т.п.
Hmm (2005-01-18 17:28:00) [4]
> checkbox1.Checked := not checkbox1.Checked;
Это мне помогло.
> CheckBox.OnClick:=nil;
> Checkbox.Checked:=true;
> CheckBox.OnClick:=CheckBox1Click;
Это тоже много лучше, нежели [4].
А вот это:
> Когда я вижу такой код, у меня рука сразу тянется к пистолету.
> Правда, к водяному.
- явно лишнее. Пахнет сарказмом и понтами.
Ega23 (2005-01-18 17:21:00) [5]2 Hmm © (18.01.05 17:18) [12]
И незачем через 5 часов после последнего поста, вытаскивать тему на вершину форума, ради подобного замечания.
Ты считаешь, что это замечание тебе ничем не помогло?
Hmm (2005-01-18 17:18:00) [6]Дело в том, что любая критика должна иметь место. Я никогда не питал иллюзий о том, что мой код идеален. Человеку нужна была помощь (не думаю, что ему важна была именно оптимальность кода), ответов по сути вопроса не было, и я решил помочь, так как умею. И незачем через 5 часов после последнего поста, вытаскивать тему на вершину форума, ради подобного замечания.
Ega23 (2005-01-18 17:08:00) [7]Эт типа на место поставили?
Нет, верно и так и так. Просто если при приёме на работу тебя попросят выслать пример кода, а ты пошлёшьif checkbox1.Checked then checkbox1.Checked:=false else ..., не удивляйся, когда тебя "отфутболят".
Hmm (2005-01-18 16:22:00) [8]
> checkbox1.Checked := not checkbox1.Checked;
Эт типа на место поставили?
VMcL (2005-01-18 08:18:00) [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]
serko (2005-01-18 03:15:00) [10]Ну спасиба ребята! Еще не проверял, но думаю все логично!
Hmm (2005-01-18 00:42:00) [11]Так и знал, что можно проще )
SergP (2005-01-17 23:17:00) [12]
> Как этого избежать?
CheckBox.OnClick:=nil;
Checkbox.Checked:=true;
CheckBox.OnClick:=CheckBox1Click;
Jel (2005-01-17 22:48:00) [13]Можно еще и положение мышки проверить в обработчике, только извраты все это. Какая разница откуда установили свойство? Почему в одном случае реакция нужна а в другом нет?
Hmm (2005-01-17 22:46:00) [14]
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: Возможно есть другие, более простые варианты, тем неменее и этот работает :)
Apocalepse (2005-01-17 22:46:00) [15]Потому что так и должно быть :-)
Jel (2005-01-17 22:44:00) [16]На самом деле это логично. В onClick обычно предпринимают действия отражающие реальное состояние CheckBox-а. Ты меняешь состояние, пусть и программно - событие вызывается.
serko (2005-01-17 22:21:00) [17]че такой сложный вопрос?