Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.27;
Скачать: CL | DM;

Вниз

Как нужно удалять 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.057 c
14-1107817812
Yozh_Programmer
2005-02-08 02:10
2005.02.27
Помогите найти песню


1-1108349796
alena.svt
2005-02-14 05:56
2005.02.27
Code Explorer


6-1103430491
ASM1987
2004-12-19 07:28
2005.02.27
Товарищи Мастера Помогите


14-1107362868
Dell3r
2005-02-02 19:47
2005.02.27
Регистрация


1-1108445834
r.o.o.t
2005-02-15 08:37
2005.02.27
ВЕБКАМЕРА