Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.30;
Скачать: CL | DM;

Вниз

Не могу обратиться к компоненту   Найти похожие ветки 

 
Новенький в Делфи   (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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
7-97434
pvn
2002-03-06 05:57
2002.05.30
народ, помогите пожалуйста!!!


7-97441
esprit
2002-03-04 04:00
2002.05.30
Порты, как до них добраться


14-97411
MBo
2002-04-22 09:25
2002.05.30
Новая задачка


1-97340
Cybermonk
2002-05-17 08:58
2002.05.30
Вопрос


1-97228
Ismail
2002-05-17 12:36
2002.05.30
Принудительно закрыть проиложение