Главная страница
    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.45 MB
Время: 0.009 c
3-78785
GIL
2003-11-05 14:37
2003.11.24
QuickReport


1-78998
Движняк
2003-11-13 22:21
2003.11.24
Слежение за приложением


6-79098
Wizard_1
2003-09-29 22:45
2003.11.24
FTP


1-79017
Dp
2003-11-14 09:51
2003.11.24
WordDocument повторно не открывается


3-78837
Nick-From
2003-11-02 13:00
2003.11.24
Проблема в FastReport





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