![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что делаю не так? [D6, XP]
Новичок © (2009-06-22 21:43:00)Что делаю не так? Нужно на новой вкладке TTabSheet, динамически создать TWebBrowser. Вот код:
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
n:=Length(TabSheet)+1; //количество вкладок
SetLength(TabSheet,n); //увеличить размер массива на 1
TabSheet[n-1]:=TTabSheet.Create(self); //создать вкладку, n-1 т.к. нумерация с 0
TabSheet[n-1].Caption:='Вкладка '+IntToStr(n-1);
TabSheet[n-1].PageControl:=PageControl2;
PageControl2.ActivePage:=TabSheet[n-1]; //сделать активной
end;
procedure TForm1.BitBtn4Click(Sender: TObject);
var
wb:^TWebBrowser;//указатель
begin
New(wb);
wb^:=WebBrowser1;//теперь указатель указывает на старый компонент
WebBrowser1:=TWebBrowser.Create(self);//создаем новый одноименный компонент
TWinControl(WebBrowser1).Parent:=TabSheet;
WebBrowser1.Width:=406;
WebBrowser1.Height:=231;
WebBrowser1.Left:=350;
WebBrowser1.Top:=15;
//WebBrowser1.OnDocumentComplete:=WebBrowser1DocumentComplete;//передаем компоненту все полномочия старого
WebBrowser1.Navigate('www.google.ru');//загружаем страничку в компанент
wb^.Free;//уничтожаем старый компонент по указателю на него
end;
Новичок (2009-06-24 16:09:00) [1]После долгих измываний решил остановиться на этом.
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
n:=Length(TabSheet)+1; //количество вкладок
SetLength(TabSheet,n); //увеличить размер массива на 1
TabSheet[n-1]:=TTabSheet.Create(self); //создать вкладку, n-1 т.к. нумерация с 0
TabSheet[n-1].Caption:='Вкладка '+IntToStr(n-1);
TabSheet[n-1].PageControl:=PageControl2;
PageControl2.ActivePage:=TabSheet[n-1]; //сделать активной
CreateWb;
end;
procedure TForm1.CreateWb;
var WB:TWebBrowser;
begin
WB:=TWebBrowser.Create(tabsheet[n-1]);
tabsheet[n-1].InsertControl(WB);
wb.Align:=alclient;
end;
Новичок (2009-06-24 14:24:00) [2]А вот ещё хочу поинтересоваться. Если я динамически создаю WebBrowser, а потом его нужно закрыть. Получается его в массив тоже надо записывать?
Новичок (2009-06-24 14:02:00) [3]Согласен, что её видоизменил маленько. Но ведь работает! Учиться, учиться и ещё раз учиться! Как завещал великий дедушка Ленин!
Dennis I. Komarov (2009-06-24 09:06:00) [4]
> А ещё точнее - Денис виноват. :)
Аа..а, где? =-O
Я же выделил "подумать"...
Германн (2009-06-24 00:55:00) [5]
> {RASkov} © (23.06.09 23:58) [7]
>
> > [6] Новичок (23.06.09 15:26)
> > Как решил эту проблему я
>
> ты ее не решил.... немного видоизменил а код все равно не
> качественный :)
> И зачем в CreateWb; переменная wb?)
Привычка. Точнее "некий перевод" с ТП. Там ведь нужно было что-то передать процедуре New в качестве параметра.
А ещё точнее - Денис виноват. :)
{RASkov} (2009-06-23 23:58:00) [6]> [6] Новичок (23.06.09 15:26)
> Как решил эту проблему я
ты ее не решил.... немного видоизменил а код все равно не качественный :)
И зачем в CreateWb; переменная wb?)
Вот это:
> WebBrowser1.Width:=406;
> WebBrowser1.Height:=231;
> WebBrowser1.Left:=350;
> WebBrowser1.Top:=15;
делается вызовом одного лишь метода... но если следом устанавливаешь алигн, то смысл задавать размеры и положение?
Новичок (2009-06-23 15:26:00) [7]Может кому-то из начинающих интересно будет. Как решил эту проблему я....
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
n:=Length(TabSheet)+1; //количество вкладок
SetLength(TabSheet,n); //увеличить размер массива на 1
TabSheet[n-1]:=TTabSheet.Create(self); //создать вкладку, n-1 т.к. нумерация с 0
TabSheet[n-1].Caption:='Вкладка '+IntToStr(n-1);
TabSheet[n-1].PageControl:=PageControl2;
PageControl2.ActivePage:=TabSheet[n-1]; //сделать активной
CreateWb;
end;
procedure TForm1.CreateWb;
var
wb: TWebBrowser;
begin
WebBrowser1:=TWebBrowser.Create(self);//создаем новый одноименный компонент
TWinControl(WebBrowser1).Parent:=TWinControl(PageControl2.ActivePage); // Отобразить новый Webbrowser на активной странице PageControl
WebBrowser1.Width:=406;
WebBrowser1.Height:=231;
WebBrowser1.Left:=350;
WebBrowser1.Top:=15;
WebBrowser1.Align :=alClient;
WebBrowser1.Navigate(combobox1.Text);//загружаем страничку в компанент
end;
Dennis I. Komarov (2009-06-23 09:12:00) [8]
procedure TForm1.BitBtn4Click(Sender: TObject);
var
wb: TWebBrowser;
begin
WebBrowser1:=TWebBrowser.Create(self);
TWinControl(WebBrowser1).Parent:= TabSheet;
WebBrowser1.Width:=406;
WebBrowser1.Height:=231;
WebBrowser1.Left:=350;
WebBrowser1.Top:=15;
WebBrowser1.OnDocumentComplete:=WebBrowser1DocumentComplete;
WebBrowser1.Navigate('www.google.ru');
end;
Как-то так. Над выделеным - подумать
Германн (2009-06-23 00:31:00) [9]
> Новичок (22.06.09 22:05) [3]
>
>
> >
> > > wb:^TWebBrowser
> >
> >
> > что значит этот код?
>
> Указатель на старый компонент
>
xx : ^SomeObjectбыло нормой в ТурбоПаскале. Сейчас другие времена.
Надо прочитать хотя бы одну книжку по Дельфи.
Новичок (2009-06-22 22:05:00) [10]
>
> > wb:^TWebBrowser
>
>
> что значит этот код?
Указатель на старый компонент
Palladin (2009-06-22 22:01:00) [11]
> wb:^TWebBrowser
что значит этот код?
Anatoly Podgoretsky (2009-06-22 21:47:00) [12]Хотя бы это, дальше и смотреть не стал.
wb:^TWebBrowser;//указатель