![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с чексбоксами....
markers © (2004-11-25 10:37:00)Вообщем что то я не пойму малость, сделал код который запишнул в оброботчик он клин в чексбоксах На форме 6 чексбоксов
в обработчике такой код:
if (VisibleUserName.Checked = False) and (StaticVisiblePoleCount <= 1) then
VisibleUserName.Checked:=True
else if (VisibleUserName.Checked = False) and (StaticVisiblePoleCount >= 2) Then
StaticVisiblePoleCount:=StaticVisiblePoleCount-1
else if (VisibleUserName.Checked = True) and (StaticVisiblePoleCount > 1) Then
StaticVisiblePoleCount:=StaticVisiblePoleCount+1;
Работает всё нормально, но почему-то через некоторое время кликанья, появляется откуда-то лишняя единица, которая портит всю погоду... да в переменной StaticVisiblePoleCount содержится число чекнутых чексбоксов (Пока присваиваю самостоятельно в он креат формы цифру 6 (Количество отмеченных чекбоксов))
Извиняюсь что так коряво объяснил но думаю вы поймете, главное это код, и где в нем изъян уловить не могу..... Помогите плиз;)
markers (2004-11-25 15:28:00) [1]Ух, наконец-то всё пашет рулезно;) Спасибо всем ребята!;) (И девушки если есть;) Такая мелочь а как кость встанет в горле!;) Ещё раз спасибо;)
markers (2004-11-25 12:26:00) [2]Сделал панель, на которой 7 видимых объектов, при bsSkinPanel8.ControlCount-1 определяется 48, ну ладно но на третьем цыкле вылетает List index out of bounds (3)
markers (2004-11-25 12:16:00) [3]даперло, сейчас проверяю
markers (2004-11-25 12:10:00) [4]Какие - то страности, в шикле прогоняется всего три компонента хотя их много.... А дальше не заходит, что-то я запутался... :(
Сюда на заходит
for i := 0 to ControlCount-1 do
begin
if (Controls[i] is TbsSkinCheckRadioBox) then
TbsSkinCheckRadioBox - Скинованный чексбокс...
Вообщем я что-то вообще не понимаю, вроде заходила до другой правки но не этого
Cosinus (2004-11-25 11:45:00) [5]
> markers © (25.11.04 11:36) [12]
Не понял я что то тебя. Объясни поразвернутее, что у тебя не работает.
cae (2004-11-25 11:42:00) [6]Еще вариант - поместить все CheckBoxs, например, на панель и писать так :
for i := 0 to Panel1.ControlCount-1 do
begin
.........
end ;
markers (2004-11-25 11:36:00) [7]Всё вроде работает, только что-то с первого галка не снимается, почему-то тэг стоит у всех
Cosinus (2004-11-25 11:28:00) [8]
> markers © (25.11.04 11:25) [9]
Опоздал, ты сам додумался :)))
Cosinus (2004-11-25 11:27:00) [9]
> markers © (25.11.04 11:23) [7]
if (TCheckBox(Controls[i]).Checked) and (TCheckBox(Controls[i]).Tag {Tag только для примера, использовать можно все, что угодно}=1) then...
markers (2004-11-25 11:25:00) [10]2 clickmaker кстати может как-нибудь к твоему коду прикрутить тэг, и по нему проверять?
markers (2004-11-25 11:25:00) [11]2 Sash © Ещё хуже.... в начала ничего, а потом когда ставишь метку, а снять её уже невозможно... (Поставил и переправил в каждом обработчике OnClick чекбоксов)
markers (2004-11-25 11:23:00) [12]2 clickmaker, это конечно круто не спорю, но это все черкс боксы на форме будет проверять, а как быть когда нужно только 6 определенных, а не все, которых там хватает...
clickmaker (2004-11-25 11:20:00) [13]
> при клике не чексбоксе мы должны выяснить сколько чексбоксов
> уже отмечено, если ниодного, то не разверашь убирать галку
> с текущего, а если хоть один из шести уже отмечен, то разрешаем
> снять метку
AllowUncheck := false;
for i := 0 to ControlCount-1 do begin
if (Controls[i] is TCheckBox) then begin
if TCheckBox(Controls[i]).Checked then AllowUncheck := true;
end;
end;
if (not TCheckBox(Sender).Checked) and (not AllowUncheck) then
TCheckBox(Sender).Checked := true;
Sash (2004-11-25 11:16:00) [14]по моему будет так:
if (VisibleUserName.Checked = False) and (StaticVisiblePoleCount <= 1)
then VisibleUserName.Checked:=True;
if (VisibleUserName.Checked = False) and (StaticVisiblePoleCount >= 2)
Then StaticVisiblePoleCount:=StaticVisiblePoleCount-1;
if (VisibleUserName.Checked = True) and (StaticVisiblePoleCount > 1)
Then StaticVisiblePoleCount:=StaticVisiblePoleCount+1;
markers (2004-11-25 11:14:00) [15]Но радио здесь не пойдет потому-что может быть выбранное любое количество которое >1 <=6
markers (2004-11-25 11:13:00) [16]Неважно зачем шесть чексбоксов, главное необходимо, чтоб хоть один из шести чексбоксов был включен в обязательном порядке Тоесть при клике не чексбоксе мы должны выяснить сколько чексбоксов уже отмечено, если ниодного, то не разверашь убирать галку с текущего, а если хоть один из шести уже отмечен, то разрешаем снять метку
Sandman25 (2004-11-25 11:09:00) [17]Никто не понял, зачем нужно шесть чекбоксов вместо одного
markers (2004-11-25 10:59:00) [18]Никто не понял чтоли мой вопрос из-за кривизны написания?