![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите найти ошибку
Romm © (2007-04-14 09:37:00)
var
OptionForm: TOptionForm;
ArCheckBox: array[1..12] of TCheckBox;
procedure TOptionForm.FormCreate(Sender: TObject);
var
num,count:Byte;
begin
num:=0;
for count:=0 to OptionForm.ComponentCount do
begin
if (Components[count] is TCheckBox) then
begin
inc(num);
ArCheckBox[num]:=TCheckBox(Components[count]);
end;
end;
end;
проект компилируется, но при запуске проги вылетает окно с сообщением о ошибке: List index out of bounds (30). Окно с легкостью закрывает и прога работает нормально... ничего не понимаю.. :)
Romm (2007-04-14 17:02:00) [1]Оп, придумал:
Edit1.Text:=Copy(Mes,2,Length(Mes)-1);
правильно написал?А то я сегодня столько ачепяток делаю.. :)
Romm (2007-04-14 16:53:00) [2]Что-то я растерялся совсем и забыл как из строки str удалить3 первых символа... Напомните, люди добрые :)
Romm (2007-04-14 16:26:00) [3]
> {RASkov} (14.04.07 16:15) [24]
ок
{RASkov} (2007-04-14 16:15:00) [4]> [23] Romm © (14.04.07 14:17)
Можно
N:=555;
Object[i]:=TObject(N);
Вернуть
Integer(Object[i]);
Что-то в этом духе....
Romm (2007-04-14 14:17:00) [5]Такс, а можно число присвоить обьекту? :)
Romm (2007-04-14 14:12:00) [6]
> ItemIndex?
несколько не то..
> Item.Object?
щас посмотрю..
{RASkov} (2007-04-14 13:48:00) [7]> Есть такое св-во или нет?!
ItemIndex? Item.Object?
Romm (2007-04-14 13:42:00) [8]Есть такое св-во или нет?! Если нет, то как можно по итему найти нужный адрес??
Romm (2007-04-14 13:24:00) [9]???
Romm (2007-04-14 13:24:00) [10]И вот еще что.. :)
У TComboBox есть свойство, похожее на Tag, но для каждого итема.
Например если выбрать n-й итем, то Socket[n].adress:=Ip_adress[n];
Romm (2007-04-14 12:48:00) [11]
> Вдруг и это обидит
:)) ты еще точку забыл cb.Tag :))
ЮЮ (2007-04-14 12:43:00) [12]SocketActive[cbTag] .Active:= cb.Checked;
Жаже не знаю, исправлять ли свои ошибки. Вдруг и это обидит :)
Romm (2007-04-14 12:42:00) [13]
ЮЮ © (14.04.07 12:37) [12]
ЮЮ © (14.04.07 12:39) [13]
Благодаря Вам я сегодня СТОЛЬКО всего узнал, пасиб...
Romm (2007-04-14 12:40:00) [14]
> ЮЮ © (14.04.07 12:31) [11]
дык это ясно. я торопился и "всунул" не туда. И в таком виде.. короч - это все работает. Кроме кнопок и чекбоксов :))
ЮЮ (2007-04-14 12:39:00) [15]bt := TButton(FindComponent('Button' + IntToStr(cb.Tag)) );
ЮЮ (2007-04-14 12:37:00) [16]procedure TOptionForm.CheckBox1Click(Sender: TObject
var
cb: TChechBox;
bt: TButton;
begin
if (Sender = nil) or not (Sender is TCheckBox) then exit;
cb := TCheckBox(Sender);
bt := FindComponent('Button' + IntToStr(cb.Tag));
if (cb = nil) then exit;
bt.Enabled := cb.Checked;
SocketActive[cbTag] := cb.Checked;
end;
ЮЮ (2007-04-14 12:31:00) [17]
> ... Я тупой конечно, но не настолько :)))
Обсуждаемую величину на расстоянии не разглядеть, но:
Если MainForm - главная форма, а OptionForm - плдчиненная и не DataModule, то MainForm создается раньше OptionForm и с моменту выполнения TMainForm.FormCreate OptionForm просто обязан быть nil :)
Romm (2007-04-14 12:30:00) [18]Tag я у всех CheckBox'ов проставил с 1 по 12 для определения номера компонента.. Обьясни пожалуста как найти кнопу
ЮЮ (2007-04-14 12:26:00) [19];{пытаюсь изменить св-во Button1, если кликнули на CheckBox1}
Оно и изменится, если, конечно в CheckBox1.tag стоит не 1, а указательна на Button1, установленные в RunTime. Если же стоит 1, то Button1 надо сначала найти
Romm (2007-04-14 12:25:00) [20]
> Во-первых, это метод....
> и вызываться соответственно...
вот за ЭТО спасибо ОГРОМНОЕ, а вот за это:
> // надеюсьOptionForm уже создан
> // хотя вряд ли. Перенеси этот вызов в TMainForm.FormShow
>
... Я тупой конечно, но не настолько :)))