Главная страница
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.039 c
3-1106727322
Behemoth
2005-01-26 11:15
2005.02.27
Проблема и логинами при приаттачивании базы MSSQL


1-1108024408
TVB
2005-02-10 11:33
2005.02.27
Отчеты QPR


14-1107163602
X9
2005-01-31 12:26
2005.02.27
Работа с PHP.


14-1107942071
Koala
2005-02-09 12:41
2005.02.27
Microsoft запатентовала кожу человека


14-1107432712
КаПиБаРа
2005-02-03 15:11
2005.02.27
Опрос - рефакторинг