Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.22;
Скачать: 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 вся ветка

Текущий архив: 2006.01.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
2-1136364746
Acul
2006-01-04 11:52
2006.01.22
чтение файла


6-1128667011
marcel
2005-10-07 10:36
2006.01.22
кириллица в ссылке


3-1132829235
FesSumy
2005-11-24 13:47
2006.01.22
F1! Экспорт из DBF в XML.


2-1136505514
DoSpyRap
2006-01-06 02:58
2006.01.22
Удалённое копирование


2-1136371371
psa247
2006-01-04 13:42
2006.01.22
ListView !