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

Вниз

Боращение к компоненту расположенному на другой форме   Найти похожие ветки 

 
ProfiUgl   (2002-04-29 09:10) [0]

Доброго дня суток мастера!
У меня возникла вот такая проблема:
Например мне нужно поменять Caption у TLabel на другой форме(Form2 - MDI), причем на Form2 размещено 10 TLabel, и каждый раз смена Caption производится на разной TLabel, имя которой известнно.
Я делаю так:
procedure TButton1Click(Sender: TObject);
begin
With Form2 do
begin
TLabel(FindComponent(xxx)).Caption := "Ля-ля";
//где xxx - имя одной и TLabel
end;
end;
Возникает ошибка!
В чем дело? Модет кто поможет?


 
Виктор Щербаков   (2002-04-29 09:14) [1]

Ну, по всей видимости FindComponent возвращает nil, что служит причиной возникновения AV.
Ведь AV возникает?


 
ProfiUgl   (2002-04-29 09:30) [2]

Да AV возникает. Вероянто FindComponent производит поиск компанента не на Form2 а на Form1. Что делать?


 
Виктор Щербаков   (2002-04-29 09:35) [3]

Нет. Скорее всего ошибка в имени компонента ххх.
У меня твой код сработал.


 
ProfiUgl   (2002-04-29 09:44) [4]

На само то деле код во какой:
procedure TButton1Click(Sender: TObject);
Var s,ss : String;
begin
with form2 do
begin
s := kadridb.rsListSprav.fieldbyname("NmSprav").AsString;
ss := copy(s, 2, Length(s) - 1);
TIDGDBListView(FindComponent("List" + ss)).FillList;
end;
end;
Дело втом что в это же кусок кода в Form1 работает!?


 
Anatoly Podgoretsky   (2002-04-29 09:48) [5]

Это причина, которая говорит об вреде использования with, разве у тебя было бы сомнение если бы with не использовал.

ProfiUgl © (29.04.02 09:10)
Плюс в коде несколько потенциальных ошибок, скажем ты или рисковый или слишком самоуверенный человек.

1. Form2 может быть недействительна или вообще другая
2. FindComponent может не найти твой компонент


 
Виктор Щербаков   (2002-04-29 09:51) [6]

Какой owner у компонента с именем "List" + ss?
Может быть вовсе не Form2, а nil например.
Тогда FindComponent вернет nil, хотя компонент и будет отображаться на Form2.

Anatoly Podgoretsky © (29.04.02 09:48)
C with в данном коде всё OK, вроде нет причин для сомнений, а вот насчет самоуверенности - верно.


 
ProfiUgl   (2002-04-29 10:04) [7]

Виктор Щербаков © (29.04.02 09:51)
Этот компонент с именем ("List" + ss) я создавал в design-time следовательно у компонента owner получается Form1 или я что-то путаю?
А как присвоить моей компоненте owner Form2?


 
Anatoly Podgoretsky   (2002-04-29 10:07) [8]

Виктор Щербаков © (29.04.02 09:51)
Причины не знаю, а сомнение явно выражено :-)
Вообще with неизсекаемый источнок разного рода недоразумений


 
Song   (2002-04-29 10:11) [9]

Anatoly Podgoretsky © (29.04.02 10:07)
Вообще with неизсекаемый источнок разного рода недоразумений
Не стал бы однозначно так утверждать. Зависит от программиста.


 
Anatoly Podgoretsky   (2002-04-29 10:21) [10]

Практически у всех программистов происходят ошибки, а вот что зависит от программиста - хороший их быстро находит, а очень хороший использует with редко и с острожностью


 
Виктор Щербаков   (2002-04-29 10:30) [11]


> Этот компонент с именем ("List" + ss) я создавал в design-time
> следовательно у компонента owner получается Form1 или я
> что-то путаю?

Если так, то с Owner всё OK.
Но FindComponent всё равно возвращает nil. Неужели так сложно разобраться в причине? Она заключается в том, что Form2 не является владельцем компонента с именем "List" + ss.


 
Виктор Щербаков   (2002-04-29 10:36) [12]

... либо переменная Form2 ссылается не на экземпляр класса TForm2.


 
ProfiUgl   (2002-04-29 11:21) [13]

Виктор Щербаков © (29.04.02 10:30)
Извиняюсь за такой простой вопрос. А как сделать так чтобы Form2 являлась владельцем компонента с именем "List" + ss?


 
Anatoly Podgoretsky   (2002-04-29 11:38) [14]

При создании компонента указать собственником Form2



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

Текущий архив: 2002.05.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.013 c
3-39680
QWest
2002-04-17 10:59
2002.05.13
Вопрос по FoxPro.


1-39760
Юляша
2002-04-27 21:16
2002.05.13
Почему PageControl не отображается?


1-39766
AndreyS
2002-04-28 11:22
2002.05.13
Как принудительно сделать рефреш окна.


1-39725
Oleg_er
2002-04-27 12:10
2002.05.13
Расписать период времени


4-39888
cok
2002-03-08 14:53
2002.05.13
Хэндл активного окна.