Форум: "Основная";
Текущий архив: 2002.05.30;
Скачать: [xml.tar.bz2];
ВнизНе могу обратиться к компоненту Найти похожие ветки
← →
Новенький в Делфи (2002-05-19 15:23) [0]Есть двумерный массив TPanel (создан програмно), соответственно у каждой панели уникальное имя.
Когда я пытаюсь изменить у какой-либо панели цвет следующим образом:
(FindComponent(NameStr) as TPanel).color:=clGray;
(namestr - имя компонента)
то мне выдаётся ошибка Access vialation что-то такое...
Но что мне не понятно больше всего, так это если я для эксперимента ставли следующие строки:
(FindComponent(NameStr) as TPanel).Free;
то ошбики не было, но собственно и компонента не исчезала с формы, а случае если написать следующее:
ShowMEssage((FindComponent(NameStr) as TPanel).Caption);
то мне показывает пустой Caption, хотя это не так.
Помогите разобраться что не так?
← →
Anatoly Podgoretsky (2002-05-19 17:38) [1]Ты очень самоуверен, что namestr будет обязательно найден
← →
Lady BadnBadn (2002-05-19 18:03) [2]Как вы создаете компоненты? (код в студию)
Как генерите имя панелей?
И, когда находите компонент, проверяйте его на Nil(сохраняйте в промежуточную переменную).
← →
Новенький в Делфи (2002-05-19 20:41) [3]1) я уверен что имя панели есть.
2) для эксперемента вместо переменной ставил явное имя, всё равно не работает.
for i:=0 to High(chet1)-1 do
for j:=0 to High(chet1)-1 do
begin
Chet1[i+1,j+1]:= TPanel.Create(Form1.pnTable);
with Chet1[i+1,j+1] do
begin
Parent:=Form1.pnTable;
BevelInner:=bvRaised;
visible:=true;
Name:="p1_"+IntToStr(j+1)+"_"+IntToStr(i+1)+"_";
Caption:="";
SetBounds(SX[1]+(j*20),SY[1]+(i*20),20,20);
onCLick:= Form1.ChetClick;
Color:=clSilver;
end;
вообщем ногами не бейте, как написал так написал :)
дальше в другой процедуре
...
NameStr:= TPanel(Sender).name;
NameStr[2]:="2"; // у меня четыре массива Chet1,chet2,chet3,chet4, соответственно каждый создавался таким же кодом.
(FindComponent(NameStr) as TPanel).color:=clGray;
← →
Новенький в Делфи (2002-05-19 20:46) [4]в конце имелась ввиду процедура ChetClick ( обработчик нажатия на панель)
← →
MBo (2002-05-19 22:47) [5]Owner у тебя - не форма, а какая-то Form1.pnTable.
Она ими владеет, для НЕЕ и вызывай FindComponents.
Form1.pnTable.FindComponent...
← →
Новенький в Делфи (2002-05-19 22:52) [6]MBo Спасибо! Попробую!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.05.30;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c