Вниз
Скачать: CL | DM;

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

← →
Алексин   (2007-06-23 22:12) [0]

доброго времени суток,мастера.
Нкждаюсь в помощи с циклом.
На форме куча checkbox"s
делаю цикл на проврку ихнего свойства checked:
for I:=1 to 25 do begin
If checkbox[i].Checked=true then begin
memo1.lines.add(intostr(i));
end;

что не так?
Спасибо за ответы


← →
sinus ©   (2007-06-23 22:35) [1]

> for I:=1 to 25 do begin
> If checkbox[i].Checked=true then begin
> memo1.lines.add(intostr(i));
> end;

дай угадаю делфи ругается на данный код?

самый простой способ это создать массив
arr_chbx : [ 1..25]  of TCheckBox;

проверка состояния - т.е. отмечен или нет

for i:=1 to 25 do
   if  arr_chbx[i].Checked  then
     begin
        ///делаешь то что тебе надо
     end


← →
Алексин   (2007-06-23 22:43) [2]

спасибо,странно что сам не догадался)


← →
ppcumax ©   (2007-06-24 01:53) [3]

Мне сейчас это тоже пригодилось, но, сделал 5 чекбоксов arr[1,2...5] выставил на форме

procedure TForm1.Button1Click(Sender: TObject);
var
arr:array[1..5] of TCheckBox;
i:integer;
begin
Memo1.Clear;
for i:=1 to 5 do
begin
if arr[i].Checked=true then
begin
Memo1.Lines.Add(IntToStr(i));
end;
end;

Ошибка: Acess Violation at ....

Что не так делаю?


← →
Германн ©   (2007-06-24 02:04) [4]


> ppcumax ©   (24.06.07 01:53) [3]
>
> Мне сейчас это тоже пригодилось, но, сделал 5 чекбоксов
> arr[1,2...5] выставил на форме
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> arr:array[1..5] of TCheckBox;
> i:integer;
> begin
> Memo1.Clear;
> for i:=1 to 5 do
> begin
> if arr[i].Checked=true then
> begin
> Memo1.Lines.Add(IntToStr(i));
> end;
> end;
>
> Ошибка: Acess Violation at ....
>
> Что не так делаю?
>

Всё!

Не ну больше у меня сегодня сил нет. (Праздновал юбилей.)
Но всё же. Голова человеку нужна не только как место для причёски. Ну хоть чуть-чуть подумать, что и как должен представлять из себя массив из sinus ©   (23.06.07 22:35) [1]. Где его объявлять и как его заполнять.


← →
Однокамушкин   (2007-06-24 08:56) [5]

Если совсем не хочется думать, можно использовать один жутко расточительный в смысле процессорного времени, но работоспособный способ:

for i := 1 to 25 do
 if TCheckBox(FindComponent("CheckBox" + IntToStr(i))).Checked then
   Memo1.Lines.Add(IntToStr(i));


И вообще никаких массивов не нужно...

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


← →
Leonid Troyanovsky ©   (2007-06-24 10:22) [6]


> ppcumax ©   (24.06.07 01:53) [3]

> Мне сейчас это тоже пригодилось, но, сделал 5 чекбоксов
> arr[1,2...5] выставил на форме

Возьми TCheckListBox и будет тебе щастье.

Ну и, конечно, книжечку к.л. почитай.

--
Regards, LVT.



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

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.013 c
1-1179149236
Strate
2007-05-14 17:27
2007.07.15
Вытащить запущенный экземпляр.


2-1182317706
sergeyst
2007-06-20 09:35
2007.07.15
Как работать с динамическими массивами в TurboPascal?


2-1181996130
WhiteCat
2007-06-16 16:15
2007.07.15
Добавление записи в DBGrid


2-1181502728
Golikov
2007-06-10 23:12
2007.07.15
как запустить стандартный просмоторщик изображений и факсов Windo


2-1182101663
Newlifeforme
2007-06-17 21:34
2007.07.15
помогите нарисовать дугу




   Наверх