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

Вниз

Помогите обратится к компоненту, расположенному на другой форме!   Найти похожие ветки 

 
Борис   (2002-09-19 15:07) [0]

Всем привет!

Вообще не думал, что возникнет такой вот косяк!
В общем етсь родительская MDI форма!
Дочернии MDI формы (разные, каждой по 1) вызываются вот так:

procedure Tfmain.SpeedItem1Click(Sender: TObject);
var iCount : integer;
i : boolean;
begin
i:=true;

for iCount:= MDIChildCount-1 downto 0 do
if MDIChildren[iCount].Name= "fbase" then i := false;

if i=true then
Tfbase.Create(Self);

end;

Ну и так для каждой.

Вот есть MDI формы fbase and ffilter

Как обратиться с формы fbase на форму ffilter, я обращаюсь так, а оказывается нельзя так делать!
Я обращаюсь например так (с формы fbase)
ffilter.Edit1.Text:="555";


 
lenin   (2002-09-19 15:09) [1]


> Как обратиться с формы fbase на форму ffilter, я обращаюсь
> так, а оказывается нельзя так делать!

А почему нельзя (что дельфя говорит), может ты модуль с ffilter в uses не объявил?


 
Борис   (2002-09-19 15:14) [2]

Да все объявил! Именно с одно дочерней на другую не получается ;-)

Я уже мучился, взял, на другой просто TEdit бросил, и фиг, не пашет!


 
lenin   (2002-09-19 15:19) [3]

А что пишет?


 
Борис   (2002-09-19 15:34) [4]

Скриншот (около 6Кб) см здесь:
http://www.selsoft.ru/error1.jpg


 
Борис   (2002-09-19 15:44) [5]

И еще, проверил, даже с родительской нельзя обратиться к компоненту на дочерней!

Может проблема в том, как я создаю эту форму?

И главное, форма точно создана!


 
lenin   (2002-09-19 15:46) [6]

Попробуй так:
for iCount:= главная_форма.MDIChildCount-1 downto 0 do
if главная форма.MDIChildren[iCount].Name = "Form2" then (form1.MDIChildren[iCount] as TForm2).Edit1.text:="555";


 
Андрей Прокофьев   (2002-09-19 15:49) [7]

if i=true then
Tfbase.Create(Self);
Здесь ошибка


 
Alx2   (2002-09-19 15:51) [8]

>Борис © (19.09.02 15:44)

Та переменная, через которую ты хочешь получить доступ к нужной форме, скорее всего не проинициализированна.

Насколько я понял, они все создаются как Tfbase.Create(Self);
И указатели на конкретные экземпляры форм сидят в MDIChildren.
Поэтому, как вариант, нужно искать в MDIChildren нужную форму, выполнить приведение типов, если таковая имеется, и получить доступ к ее компонентам.


 
Борис   (2002-09-19 15:55) [9]

to Андрей Прокофьев
А в чем, вроде ищу в списке доступных, если нет такой, то создаю ;-)

to Alx2
Да нет, каждый создается со своим именем!
Вот как создается другая форма:
for iCount:= MDIChildCount-1 downto 0 do
if MDIChildren[iCount].Name= "fbasedetail" then i := false;

if i=true then Tfbasedetail.Create(Self);


 
Alx2   (2002-09-19 16:04) [10]

>if MDIChildren[iCount].Name= "fbasedetail"
не всегда имеет отношение к реальному имени. Здесь Name - просто cв-во класса. Но и его можно использовать для доступа (искать нужную форму по имени в списке других форм)


 
Борис   (2002-09-19 16:13) [11]

Спасибо ВСЕМ!
Доступ удалось получить! Все работает!
Еще раз спасибо ;-)


 
lenin   (2002-09-19 16:13) [12]


> Борис © (19.09.02 15:55)

Если бы ты создовал не так
Tfbase.Create(Self);
а
fbase:=Tfbase.Create(Self);
Тогда бы, наверное, все было нормально.




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

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

Наверх




Память: 0.47 MB
Время: 0.008 c
3-97956
billybons
2002-09-09 08:01
2002.09.30
DBGrid


14-98329
Skier
2002-08-30 11:54
2002.09.30
ТРЕБУЕТСЯ - ШВЕЙ ! (с) С. Довлатов


1-98173
Cobalt
2002-09-16 09:35
2002.09.30
Проблема со строками 8-(


14-98294
still
2002-09-04 14:05
2002.09.30
Опять про железо


1-98083
Dmitriy Polskoy
2002-09-19 17:34
2002.09.30
Куда пропадает ключ?





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