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