AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Problem mit dynamischem Erstellen und Freigeben

Problem mit dynamischem Erstellen und Freigeben

Ein Thema von Thunderchild · begonnen am 5. Apr 2004 · letzter Beitrag vom 6. Apr 2004
Antwort Antwort
Benutzerbild von Thunderchild
Thunderchild

Registriert seit: 12. Nov 2003
Ort: Nohra
139 Beiträge
 
Delphi 7 Personal
 
#1

Problem mit dynamischem Erstellen und Freigeben

  Alt 5. Apr 2004, 07:09
Hallo,

ich habe einen Frame, in dem sich eine WebBrowser-Kompo befindet. Im Hauptfenster sitzt ein TabControl. Die Tabs erstelle uch zur Laufzeit und fülle sie mit je einem Frame.
Schon mal richtig geraten - es geht um einen Mehrfensterbrowser.

Leider habe ich folgendes Problem:
häufig - jedoch nicht immer - bekomme ich, nachdem ich einen Reiter geschlossen habe - Zugriffsverletzungen, sobald ich irgendwo hinins Hauptfenster klicke.

Ich verwende folgenden Code zum Erstellen einer TabSeite:
Delphi-Quellcode:
procedure Tfm.abAddBrowserWindowExecute;
var sheet:tTabSheet; browser:tWebBrowser;
    f:TfBrowser; // die Instanz des Frames
    item:tTreeNode;
begin
  sheet:=TTabSheet.Create(fm); // fm=Hauptformular (FormMain)
  sheet.PageControl:=pcBrowser;
  pcBrowser.ActivePage:=sheet;

  f:=TfBrowser.create(sheet);
  f.Parent:=sheet;
  f.Align:=alClient;
  with f.Browser do begin
    OnTitleChange:=TitleChange;
    OnBeforeNavigate2:=BeforeNavigate;
    OnDownloadBegin:=DownloadBegin;
    OnDownloadComplete:=DownloadComplete;
    OnNewWindow2:=NewWindow;
    OnProgressChange:=ProgressChange;
    if cbNewBrowserIsOffline.checked then Offline:=true
  end;
  // Eintrag in Übersichtsliste für die Seite
  item:=tvBrowserSheets.Items.AddNode(nil,nil,'',nil,naAdd);
end;
Zum Schließen des Tabs habe ich Folgendes fabriziert:
Delphi-Quellcode:
procedure CloseBrowserWindow(index:integer);
var pc:tTabSheet; f:tfBrowser;
begin with fm do try
  pc:=pcBrowser.Pages[index];
  if index=pcBrowser.PageCount-1 then pcBrowser.ActivePageIndex:=index-1;
  f:=(pc.Controls[0] as tfBrowser);
  f.Free;
  pc.Free;
  pcBrowser.Visible:=pcBrowser.PageCount>0;
  tvBrowserSheets.Items.Delete(tvBrowserSheets.Items[index]); // Listeneintrag dazu löschen
except halt
end end;
Ich nehme stark an, daß ich da einen Fehler mit dem Erzeugen/Freigeben gemacht habe. Findet jemand den Fehler? Ich habe zum Test mal das f.Free hier oben weg gemacht (da ja ein Owner bei seiner Auflösung dafür sorgt, daß seine "Kinder" auch gelöscht werden), aber da kams immer noch.

Gruß an die Frau
Das letzte Schöne, das in C geschrieben wurde, war Schuberts 9. Sinfonie.
Meine Softwareseite (Link aktualisiert am 13.12.2006).
  Mit Zitat antworten Zitat
Benutzerbild von Thunderchild
Thunderchild

Registriert seit: 12. Nov 2003
Ort: Nohra
139 Beiträge
 
Delphi 7 Personal
 
#2

Re: Problem mit dynamischem Erstellen und Freigeben

  Alt 6. Apr 2004, 16:39
Ich habe noch weiter getestet. Mittlerweile konnte ich das Problem (hoffentlich) etwas eingrenzen; sobald ich das TabControl verlasse (also ein anderes Control den Fokus bekommt), erhalte ich die Zugriffsverletzung.
So langsam glaube ich, es hat mit der angezeigten Seite zu tun. Als Beispiel www.ebay.de; hier kommt der Fehler. Aber auf anderen Seiten kommt er nicht.

Ich habe bei anderen Threads, wo es um tWebBrowser ging, immer wieder das OLEDocument im Code gesehen. Muß ich darüber den WebBrowser freigeben, nicht über free?

Außerdem: woran erkenne ich, daß das Browserfenster von der angezeigten Seite geschlossen würd, zum Beispiel ein PopUp, das sich per Javascript schließt? Ein OnClose gibt es nämlich nicht.
Das letzte Schöne, das in C geschrieben wurde, war Schuberts 9. Sinfonie.
Meine Softwareseite (Link aktualisiert am 13.12.2006).
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz