Вниз
Скачать: CL | DM;

Как реализовать следующее?   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
8-1123675869
dDan
2005-08-10 16:11
2006.01.22
Очистить канву PaintBox а


8-1123596947
alexandr-m
2005-08-09 18:15
2006.01.22
Как быстро загрузить и отобразить JPEG ?


1-1135011563
oleggar
2005-12-19 19:59
2006.01.22
2 вопроса


6-1128492766
Mx
2005-10-05 10:12
2006.01.22
Подключение по одному порту, ответ по другому, на основе Indy


1-1134687807
Батала
2005-12-16 02:03
2006.01.22
Как определить какая кнопка нажата (не путать с символами)?




   Наверх