Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
ВнизКак нужно удалять TwebBrowser ? Найти похожие ветки
← →
bloodman © (2005-02-11 17:45) [0]В рантайме создаю несколько TwebBrowser , для проверки устанавливаю им parentWindow на хендл панели. Браузеры появляются но не удаляются когда я вызываю метод Destroy .. как правильно удалять ?
← →
Александр Иванов © (2005-02-11 17:58) [1]bloodman © (11.02.05 17:45)
Код покажи, и во всяком случае лучше пользовать Free
← →
begin...end © (2005-02-11 18:09) [2]> bloodman © (11.02.05 17:45)
ParentWindow устанавливать не нужно. Как и для других динамически создаваемых компонентов, для экземпляра TWebBrowser"а нужно указать Parent"а и (необязательно) Owner"а. В случае TWebBrowser напрямую использовать свойство Parent: TWinControl не удастся, т.к. в самом TWebBrowser есть свойство Parent: IDispatch. Чтобы назначить родителя WebBrowser"у, можно обратиться к свойству Parent предка: TControl(WebBrowser).Parent := ...
← →
bloodman © (2005-02-11 18:30) [3]Вообщем дело обстоит так: Есть класс(TBrunchScaner) , он содержит другой класс(TObjectScaner) , последний содержит TwebBrowser
TBrunchScaner = class
constructor Create(...;CallBack: TCAllbackunc);
destructor Destroy();
...
protected
WebBrowser : TWebBrowser;
ObjectScaners : array of TObjectScaner;
Call : TCAllbackunc;
....
private
end;
constructor TObjectScaner.Create(ID1:Integer;CallBack : TCAllbackunc);
begin
Webbrowser:=nil;
Call:=CallBack;
ID:=ID1;
WebBrowser:=TWebBrowser.Create(nil);
Webbrowser.ParentWindow:=MainForm.Form.tsS.Handle;
Webbrowser.Align:=alTop;
Webbrowser.Left:=Random(400);
Webbrowser.Top:=Random(400);
end;
destructor TObjectScaner.Destroy;
begin
Webbrowser.Free;
inherited;
end;
constructor TBrunchScaner.Create(...;CallBack: TCAllbackunc);
begin
Webbrowser:=nil;
Call:=CallBack;
WebBrowser:=TWebBrowser.Create(nil);
...
end;
destructor TBrunchScaner.Destroy;
begin
WebBrowser.Destroy;
inherited;
end;
procedure TBrunchScaner.Destroyer(ID :Integer);
begin
//MessageDlg("Destroy!"+IntToStr(ID),mtInformation,[mbOK],0);
ObjectScaners[ID].Free;
ObjectScaners[ID]:=nil;
ScanersCount:=ScanersCount-1;
ProgressBar.Position:=ProgressBar.Position+1;
end;
Вообщем есть метотд у TBrunchScaner под названием scan суть его сводится к тому что он в цикле создает несколько экземпляров TObjectScaner вот так :
For i := 0 to n do
begin
ar[i]:=TObjectScaner.create(i,destroer);
ar[i].scan(..)
...
end;
После отработки метода scan он в конце через Callback вызывает Destroyer , который должен уничтожить объект (и webbrowser соответственно) . Все вроде отрабатывает , но IE не пропадает с формы и при следующем вызове Create появляется еще один IE :(
← →
bloodman © (2005-02-11 19:21) [4]послн того как написал override после деструкторов удаляются... НО память не освобождается! :(( Диспетчере задач :( После работы она занимает 60 мегабайт! :( Подскажите что не так .:(
← →
ТехникПТО © (2005-02-11 20:01) [5]А чем тебя Free не устраивает?? И зачем тебе constructor??
Я делал массив браузеров и делал Free нужному...
Но я делал создание на TabSheet... ну и контрол интерфеса конечно же на него при OnNewWindow...
← →
bloodman © (2005-02-11 20:06) [6]Почему не устраивает , усраивает только free это и есть destroy только с проверкой на nil и все.. Какой конструктор? Те что у моих классов? Для того чтобу создать TWebBrowser и присвоить другим переменным нужные значения..
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.02.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c