Главная страница
    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.064 c
15-1450281394
aka
2015-12-16 18:56
2017.01.15
Чтение/запись графа из файла


15-1456097809
Kerk
2016-02-22 02:36
2017.01.15
Работа стоя


15-1453757404
Юрий
2016-01-26 00:30
2017.01.15
С днем рождения ! 26 января 2016 вторник


15-1452378602
Юрий
2016-01-10 01:30
2017.01.15
С днем рождения ! 10 января 2016 воскресенье


15-1445245394
Kerk
2015-10-19 12:03
2017.01.15
Анатолий Подгорецкий





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