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

Вниз

Динамическое создание TChromium   Найти похожие ветки 

 
Vlad   (2015-05-01 20:30) [0]

Здравствуйте.

Пробую динамически создавать Chromium следующим способом:

procedure TChromF.NewTab(num: integer);
var ts: TTabSheet; c: TChromium;
begin
ts := TTabSheet.Create(CF_PC);
ts.Name := "ts"+IntToStr(num);
ts.PageControl := CF_PC;
c := TChromium.Create(CF_PC.Pages[num-1]);
c.Parent := CF_PC.Pages[num-1];
c.Align := alClient;
c.Name := "c"+IntToStr(num);
end;

Создается вкладка( ts2 ) в списке компонентов которой есть c2 - TChromium( хотя на вид не ясно есть он или нет ). А при обращении к нему, например:

procedure TChromF.CF_URL_CBKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
var cnum: integer; chm: tchromium;
begin
cnum := CF_PC.ActivePageIndex+1;
// по нажатию на Enter переходим по адресу
if Key=13 then begin
chm := TChromium(FindComponent("c"+IntToStr(cnum)));
chm.Load(CF_URL_CB.Text); end;
end;

На строке chm.Load происходит ошибка. Нашел в сети пример:

procedure TForm1.Button1Click(Sender: TObject);
var
 NPageControl: TPageControl;
 NTab: TTabSheet;
 Chromium: TChromium;
 i: integer;
begin
//  if OpenDialog1.Execute then
 begin
 // создаем новый TabSheet
   NTab := TTabSheet.Create(PageControl1);
   with NTab do
   begin
     PageControl := PageControl1;
     Caption := "Закладка " + IntToStr(PageControl1.Tag + 1);
     Name := "Page" + IntToStr(PageControl1.Tag);
   end;
 NPageControl := TPageControl.Create(NTab);

 with NPageControl do
 begin
   Parent := NTab;
   Align := alClient;
   TabPosition:=tpLeft;
   Name := "PageControl" + IntToStr(PageControl1.Tag);
 end;
 for i := 0 to 0 do
 begin
   NTab := TTabSheet.Create(NPageControl);
   with NTab do
   begin
     PageControl := NPageControl;
     Name := "Page" + IntToStr(i);
   end;
 end;
 NPageControl.Pages[0].Caption:="виз";

 Chromium := TChromium.Create(NPageControl.Pages[0]);
 Chromium.Parent := NPageControl.Pages[0];
 Chromium.Name := "Chromium" + IntToStr(PageControl1.Tag);
 Chromium.Align := alClient;

 PageControl1.Tag := PageControl1.Tag + 1;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
 s: string;
 Chm: TChromium;
begin
//  if OpenDialog1.Execute then
 begin
   // Получаем индекс текущей вкладки
   s := copy(PageControl1.Pages[PageControl1.ActivePageIndex].Name, 5,
             Length(PageControl1.Pages[PageControl1.ActivePageIndex].Name) - 4);

   Chm := (PageControl1.FindComponent("Page" + s).FindComponent("PageControl" + s).
          FindComponent("Page0").FindComponent("Chromium" + s) as TChromium);

   Chm.Load(Edit1.Text);

 end;
end;

Проверил - работает, вкладки создаются и Chromium тоже. Вопрос в том, что за манипуляции такие делаются при нажатии на button1. Зачем там создается NpageControl, цикл вообще бессмысленный ( от 0 до 0 - 1 проход ведь всего). Но в любом случае этот код работает, а мой нет. Подскажите чего не происходит у меня при создании Chromium, что есть в этом коде


 
Ega23 ©   (2015-05-01 23:03) [1]

Вдумчиво вглядываться лень, но на первый взгляд ты при создании Owner заем-то вкладку ставишь. А FindComponent - от формы идёт.


 
Vlad   (2015-05-02 10:05) [2]

Ничего себе и правда, спасибо. Поменял строку

c := TChromium.Create(CF_PC.Pages[num-1]);
на
c := TChromium.Create(ChromF);

и все заработало.


 
icWasya ©   (2015-05-05 11:10) [3]

Правильно
c := TChromium.Create(Self);


 
Ega23 ©   (2015-05-05 11:24) [4]


> Правильно
> c := TChromium.Create(Self);


Может это у него такой хитромудрый аналог ассерта на то, чтобы ChromF как синглтон работала?
Хотя в целом - согласен.



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

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

Наверх





Память: 0.46 MB
Время: 0.044 c
15-1456494306
Rouse_
2016-02-26 16:45
2017.01.15
Нужна вычитка статьи


15-1452576702
sniknik
2016-01-12 08:31
2017.01.15
Помогите в анализе ошибок по дампам


2-1419250635
Drowsy
2014-12-22 15:17
2017.01.15
Вопрос по TShellTreeView.


6-1282282725
RGV
2010-08-20 09:38
2017.01.15
POP3


2-1427929641
Drowsy
2015-04-02 02:07
2017.01.15
Как определить, установлены ли обновления RTL2, RTL3 на Дельфи 6?





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