Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2016, 23:35   #1
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию Обратится к компоненту на динамически созданной форме

Доброго времени суток!

Код:
Form := Application.FindComponent('form11') as TForm;
if Assigned(Form) then
проверяю вот так существует ли форма, если существует то нужно обратиться к компоненту WebBrowser который на ней лежит, как это сделать?
nibufep вне форума Ответить с цитированием
Старый 07.05.2016, 01:01   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так же
Код:
MyWeb:=Form.FindComponent('WebBrowser');
или через перебор всех Form.Components и проверку, подходит ли найденный компонент под ваши критерии:
Код:
  for i := 0 to Form.ComponentCount - 1 do
    if (Form.Components[i] is TWebBrowser) then ....
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.05.2016, 10:22   #3
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

а как потом обращаться к этому компоненту?

Код:
var
  Form: TForm;
  MyWeb: TComponent;
  MyWeb2: TWebBrowser;
begin
Form := Application.FindComponent('form11') as TForm;
if Assigned(Form) then
   MyWeb := Form.FindComponent('WebBrowser');
if Assigned(MyWeb) then
   MyWeb2 := MyWeb;
....
я имею ввиду что-то типа этого, но так не работает...
nibufep вне форума Ответить с цитированием
Старый 07.05.2016, 10:49   #4
Dmitry33RU
Пользователь
 
Регистрация: 09.10.2014
Сообщений: 62
По умолчанию

Код:
var
MyWeb: TWebBrowser;
begin
...
MyWeb := (Form.FindComponent('WebBrowser') as TWebBrowser);
Dmitry33RU вне форума Ответить с цитированием
Старый 07.05.2016, 11:07   #5
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Код:
                  if Assigned(Form) then
                  begin
                    for a := 0 to Form.ComponentCount - 1 do
                    begin
                      if (Form.Components[a] is TWebBrowser) then
                      begin
                        MyWeb2 := (Form.Components[a] as TWebBrowser);
                        doc := MyWeb2.Document as IHTMLDocument2;
                        term := doc.parentWindow as IHTMLWindow2;
                        term.execScript('TYT JS CODE', 'javascript');
                      end;
                    end;
                  end;
Почему то не работает...
nibufep вне форума Ответить с цитированием
Старый 07.05.2016, 11:45   #6
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Код:
                  if Assigned(Form) then
                  begin
                    for a := 0 to Form.ComponentCount - 1 do
                    begin
                      if (Form.Components[a] is TWebBrowser) then
                      begin
                        MyWeb2 := (Form.Components[a] as TWebBrowser);
                        doc := MyWeb2.Document as IHTMLDocument2;
                        term := doc.parentWindow as IHTMLWindow2;
                        term.execScript('TYT JS CODE', 'javascript');
break;
                      end;
                    end;
                  end;
а если так то работает, почему? Компонент WebbRowser на форме 1

Последний раз редактировалось Вадим Мошев; 07.05.2016 в 13:11.
nibufep вне форума Ответить с цитированием
Старый 07.05.2016, 12:46   #7
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
проверяю вот так существует ли форма
почему именно так?
сколько экземпляров класса формы может существовать одновременно?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 07.05.2016, 13:02   #8
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
почему именно так?
сколько экземпляров класса формы может существовать одновременно?

Сколько угодно
nibufep вне форума Ответить с цитированием
Старый 07.05.2016, 13:22   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

тогда тем более не понимаю этого:
Код:
Application.FindComponent('form11')
глупость какая-то, ведь есть жэ Screen.Forms[], но лучше вообще свой список завести.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 07.05.2016, 14:56   #10
nibufep
Форумчанин
 
Регистрация: 02.08.2014
Сообщений: 476
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
тогда тем более не понимаю этого:
Код:
Application.FindComponent('form11')
глупость какая-то, ведь есть жэ Screen.Forms[], но лучше вообще свой список завести.
мне кажется так проще, ведь Screen.Forms придеться циклом перебирать, ищя нужную форму
nibufep вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение размера динамически созданного StringGrid на динамически созданной форме loom12 Общие вопросы Delphi 2 08.09.2014 15:35
массив Edit создан динамически а обратится не знаю как! Xatiko Помощь студентам 1 06.03.2013 01:24
Работа с динамически созданной формой Airou C++ Builder 1 12.07.2011 10:58
Как подключить модули к динамически созданной форме? MyIE Общие вопросы Delphi 22 13.10.2010 20:29
Обратится к объекту, созданному динамически StrToFloat Помощь студентам 6 20.01.2010 18:53