Веб-браузер(WebBrowser) своими руками: восстание вкладок

Сейчас мы попробуем сделать вкладки. Если с самого начала ты не понял о чем речь, читай предыдущий материал тут. А мы продолжим. Нам нужен компонент PageControl со вкладки Win32, скальпель и симпатичная медсестра.

Размещаем на форме PageControl, жмем правой кнопкой по нему, точнее по верхней его части(если не знаешь где верх, попроси соседа помочь) и жми в появившемся меню New Page. Понравилось? Тогда жми еще раз. Ты получил две вкладки. Перейди на первую кликом мыши и перенеси на нее компонент с которым мы тебя уже познакомили - CppWebBrowser. Просто перетащи его в окне Object Treeview в TabSheet1. Оно над Object Inspector обычно. Сверим?

У нас получилось вот, что:

WebBrowser своими руками

Рисунок 1.

Теперь если ты переключишься на другую вкладку, то увидеть должен пустую страницу, то есть без CppWebBrowser. Первое, что мы сделаем - по нажатию клавиш Ctrl + t, будет создаватся новая вкладка. Простая, пустая вкладка. Для этого в событии onKeyDown компонента Form1, пиши следующий код:

if((Key=='T')&&(Shift==TShiftState() << ssCtrl)) //Ловим нажатие Ctrl+t
{
TTabSheet* newtab; //выделяем память под вкладку
newtab = new TTabSheet(this); //создаем вкладку в памяти
newtab->PageControl = PageControl1; //указываем, где она будет жить
newtab->Name = AnsiString("TabSheet")+IntToStr(PageControl1->PageCount+1); //дадим системное имя
newtab->Caption = "NewTab"; //дадим имя которое будет писатся на вкладке
}

Легко! Только не работает. Почему? Потому, что крокодил не ловится и кокос не растет. А еще потому, что по умолчанию через форму все не отлавливается. Сделай, чтоб отлавливалось сначала формой. Для этого в событии onCreate, компонента Form1 допиши такую строчку:

Form1->KeyPreview=true; //включаем режим, когда все нажатия проходят через форму

Опробовав, мы получили вот такое:

WebBrowser своими руками

Рисунок 2.

Теперь добавим к этому еще, чтоб при создании вкладки автоматически туда кидался компонент CppWebBrowser. Пробуем и дописываем в обработчик onKeyDown компонента Form1:

TCppWebBrowser* newbrowser;
newbrowser = new TCppWebBrowser(PageControl1); //выделяем память и объясняем куда хотим вставить новый компонент
newbrowser->TOleControl::Parent = newtab; //поясняем, куда конкретно вставить
newbrowser->TOleControl::Name = AnsiString("CppWebBrowser")+IntToStr(PageControl1->PageCount+1); //даем системное имя
newbrowser->TOleControl::Align = alClient; //расширяем на всю область

Вот и все. Теперь на каждой вкладке по браузеру. Только над ними надо еще взять контроль, но это в следующей части саги о браузере своими руками. Исходный код и релиз тут.




Ссылки:

К содержанию

© Copyright 2004-2017 - CMS Made Simple
Сайт работает на CMS Made Simple version 1.4.1

© Все печеньки Break-people.ru принадлежат авторам проекта.

Яндекс цитирования Рейтинг@Mail.ru Яндекс.Метрика