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

Вниз

FindComponent   Найти похожие ветки 

 
Тохус   (2003-11-12 22:27) [0]

На одной форме 15 Label c именами lblCh1, lblCh2 и т.д.
На другой - 15 Трекбаров Trackbar1, Trackbar2 и т.д.
Нужно выставить положение трекбара в соответствии со значением лейбла.
Пишу так:
For i:=1 to 15 do
begin
With TLabel(FindComponent("lblCh"+IntToStr(i))) do
CH[i]:=255-StrToInt(Caption);
With TTrackbar(FindComponent("frmPult.TrackBar"+IntToStr(i))) do
position:=CH[i]; //здесь АV

end;


Вопрос, почему происходит AV?


 
Юрий Федоров   (2003-11-12 22:32) [1]

потому что не находится такой компонент, следовательно FindComponent возвращает nil ,указатель "вникуда"
Компонент не находится потому, что написано неправильно.
надо так :
With TTrackbar(frmPult.FindComponent("TrackBar"+IntToStr(i)))


 
Тохус   (2003-11-12 22:48) [2]

Все равно не пашет :((
Если прогонять по шагам, массив СH заполняется правильно, а вот
frmPult=nil
TTrackBar = symbol was eliminated by linker


 
Тохус   (2003-11-12 23:10) [3]

Хмм-м
Даже если указать напрямую
frmPult.TrackBar1.Position:=CH[1];
то получается AV.
Похоже туплю...
Модуль второй формы подключен, даже автозаполнение кода после
fmPult. работает...
В чем же проблема?..


 
Юрий Федоров   (2003-11-12 23:18) [4]

ессли бы не был подключен модуль, не откомпилиорвалось бы
frmPult=nil
вот и ответ, форма (экземпляр класса) не создаана
то есть лиибо ее нужно включить в AutoCreate список, либо создавать руками в какой-то момент


 
Тохус   (2003-11-12 23:26) [5]

Форма совершенно точно создана - это происходит в событии FormCreat главной формы:

Var NFPult:TfrmPult;

...

NFPult:=TfrmPult.Create(Application);
NFPult.Show;


Есть, правда одно НО: эта форма рисовалась моим коллегой, и он зачем-то сделал её на основе CLX. Возможно, загвоздка именно в этом. Хотя в других местах они вроде нормально взаимодействуют...


 
Юрий Федоров   (2003-11-12 23:34) [6]

загвоздка в том, что ты запоммнил указатель на создаанную форму в указателе NFPult :
NFPult:=TfrmPult.Create(Application);
а обраащааешься к ней через frmPult.
Это другой указаатель.
Напишии так

NFPult:=TfrmPult.Create(Application);
frmPult:=NFPult;
NFPult.Show;

Хотя это через одно место. И смесь CLX с VCL вв одном проекте - тоже через то самое место


 
Тохус   (2003-11-12 23:45) [7]

КРУТО!!!
Хоть и через одно место, а работает.
Большое спасибо.
А насчет CLX и VCL - проект уже такой большой, что я не очень знаю все его тонкости, - возможно, есть какая-то необходимость в такой смеси, а может он просто где-то нашел эту форму и ему в падлу было переделать. Хотя ComCtrls там достаточно сильно различаются. Надо будет узнать
Еще раз спасибо!



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

Форум: "Основная";
Текущий архив: 2003.11.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
1-78976
Aleksandr
2003-11-14 13:02
2003.11.24
Как вернуть дочернее окно в начало координат клиентской области?


1-78959
lokka
2003-11-12 00:56
2003.11.24
PHP и COM


3-78767
Кщд
2003-11-05 08:11
2003.11.24
Рассылка сообщений сообщений подключенным к БД пользователям


1-78991
Василь
2003-11-14 12:36
2003.11.24
алгоритм перевода `Jan 11, 2003` в дату кот. мне нужна...


1-79035
Relaxxx
2003-11-12 17:18
2003.11.24
Нужна очень странная вещь....ДЕРЕВО-ТАБЛИЦА???????7





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский