Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-1107470118
Usser
2005-02-04 01:35
2005.02.27
ZX-Spectrum (вспомнить молодость)


3-1105480229
chir
2005-01-12 00:50
2005.02.27
Как правильно формировать запрос?


1-1108030234
Zhenja
2005-02-10 13:10
2005.02.27
QReport. Печать. Помогите пожалуйста.


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


3-1107136265
mlitkin
2005-01-31 04:51
2005.02.27
Как узнать была ли изменена база?





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