Главная страница
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
1-97292
Andrey__
2002-05-18 17:16
2002.05.30
Как откомпилировать стандартный компонент Delphi?


1-97286
Demon Ltd
2002-05-18 00:31
2002.05.30
Копи файла


14-97383
BigBadMutuh
2002-04-14 12:10
2002.05.30
Как из Офиса выдрать дистрибутив Ворда.


1-97326
[BAD]Angel
2002-05-19 15:21
2002.05.30
Нужна помошь с переводом текста


3-97192
sergrrey
2002-05-02 12:34
2002.05.30
Как уменьшить объем используемой оперативки?