Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.05.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.004 c
7-39870
DimNK
2002-02-14 10:23
2002.05.13
Работа с модемом


1-39781
hogus
2002-04-28 08:03
2002.05.13
Работа с Временем (TDateTime)


1-39750
ZimZum
2002-04-27 22:24
2002.05.13
Копирование текста


3-39664
Sava
2002-04-17 15:11
2002.05.13
Создаю таблицу... Грабли!


1-39793
Sound
2002-04-29 10:44
2002.05.13
ListBox и перетаскивание елементов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский