Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.47 MB
Время: 0.05 c
14-1135434810
Nic
2005-12-24 17:33
2006.01.22
Как поставить поверх WinME...


14-1135978840
Sergey Masloff
2005-12-31 00:40
2006.01.22
Оказывается сегодня уже 31


8-1123418199
Nick Denry
2005-08-07 16:36
2006.01.22
Изменяющийся регион или скины как у Windows Media Player a


14-1135585883
ilya39
2005-12-26 11:31
2006.01.22
версия ADO


1-1134852272
Steplerr
2005-12-17 23:44
2006.01.22
Как использовать "голубой" стиль Win XP





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