Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
ВнизКак реализовать следующее? Найти похожие ветки
← →
ZeFiR © (2005-12-25 00:47) [0]Нужно сделать мультиоконный браузер... как сделать так чтоб при открытии новой страницы открывалась новая вкладка с TWebBrowser?
← →
FrykT © (2005-12-25 02:48) [1]TPageControl никак? :)))
← →
Klim © (2005-12-25 12:09) [2]Создай MDI приложение, каждая вкладка это форма, при нажатии на ссылку добавляй форму, останется только их упорядочить(как опере например)
← →
ZeFiR © (2005-12-25 13:26) [3]У меня не получается в TPageControl динамически создавать TWebBrowser... Пишет, что такой мол уже существует... Примерчик кода киньте плиз
← →
ZeFiR © (2005-12-25 13:28) [4]Мда... и еще вместе с TWebBrowser чтоб создавалась TComboBox...
← →
SergP © (2005-12-25 16:07) [5]Вот небольшой пример... А как засунуть туда Combobox думай сам.
Значит для начала опишем наш новый класс, типа браузер на вкладке...
type
TCustomTabSheet = class(TTabSheet)
public
WB: TWebBrowser;
constructor create(AOwner:TComponent); override;
destructor destroy; override;
end;
А вот это будут конструктор и деструктор.
В конструкторе вызываем унаследованный конструктор, т.е. создаем вкладку, затем создаем браузер и делаем наш объект его родителем.
Затем растягиваем браузер по всей вкладке.
constructor TCustomTabSheet.create(AOwner:TComponent);
begin
inherited create(AOwner);
WB:=TWebbrowser.Create(self);
TOleControl(WB).Parent:=self;
WB.Align:=alClient;
// далее делаем другие нужные нам операции по инициализации нашей фигни.
// например установим обработчик события OnNewWindow для браузера.
WB.OnNewWindow2:=NewWindow2;
end;
destructor TCustomTabSheet.destroy;
begin
FreeAndNil(WB);
inherited destroy;
end;
Вот как будет выглядеть обработчик события OnNewWindow2 у браузера.
procedure NewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
begin
ppDisp:=newwin.WB.Application;
end;
А вот так буде у нас выглядеть функция, которая создаст новую вкладку, и прицепит ее к имеющемуся pagecontrol"у
function newwin:TCustomTabSheet;
begin
Result:=TCustomTabSheet.create(self);
Result.pagecontrol:=pagecontrol1;
end;
А это у нас открытие УРЛа в браузере на активной вкладке:
procedure TForm1.WBnavigate(URL:string);
var
Sheet:TCustomTabSheet;
begin
if pagecontrol1.PageCount>0 then
begin
Sheet:=pagecontrol1.ActivePage as TCustomTabSheet;
Sheet.WB.Navigate(Combobox1.Text);
end;
end;
А это закрытие (уничтожение) активной вкладки.
procedure closepage;
var
Sheet:TCustomTabSheet;
begin
if PageControl1.PageCount>0 then
begin
Sheet:=pagecontrol1.ActivePage as TCustomTabSheet;
Sheet.Free;
end;
end;
Ну ИМХО достаточно. Далее сам думай...
← →
ZeFiR © (2006-01-01 15:38) [6]Че-то не катит... Кучу ошибок вылетает...
← →
SergP © (2006-01-02 12:28) [7]
> ZeFiR © (01.01.06 15:38) [6]
> Че-то не катит... Кучу ошибок вылетает...
Какие ошибки?
Да и я не приводил полный код, а только принцип.
Сделай процедуры методами твоей формы, типа если форма Form1, то не
procedure closepage;
а
procedure TForm1.closepage;
причем все где используются поля этой формы.
И вообще, мыль на sergp5566 [собака] rambler.ru, пришлю рабочий код. (правда старый и некрасивый), но приведешь в порядок сам.
← →
SergP. (2006-01-03 14:21) [8]А вообще лучше делать не в Pagecontrol, а более по человечески - MDI
ИМХО конечно....
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.01.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.054 c