Einzelnen Beitrag anzeigen

kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#1

Zugruffs fehler in einer zur Laufzeit erstellten komponente

  Alt 5. Jun 2005, 00:04
Hallo ich habe ein PageControl in der ich immer bei bedarf ein neuen Tabsheet erstelle mit einem TSynEdit drin.

Das mache ich so:

Aufruf:
CreateTab('Leer', 'Dokument'); Funktion sieht so aus:

Delphi-Quellcode:
function THTML.CreateTab(sURL, sCaption: string): TTabSheet;
var
  ts: TTabSheet;
  WB: TSynEdit;
begin
  // Create a new TabSheet
  ts := TTabSheet.Create(PageControl3);
  Result := ts;
  try
    // Assign TTabSheet Properties
    ts.PageControl := PageControl3;
    ts.Parent := PageControl3;
    ts.Caption := sCaption;
    ts.PageIndex := PageControl3.ActivePageIndex + 1;

    // Create a instance
    WB := TSynEdit.Create(ts);

    // put TWebbrowser on TTabSheet
    TControl(WB).Parent := ts;
    // or: Ts.InsertControl(WB);

    // Properties
    WB.Align := alClient;
    WB.Highlighter:=htmledit.Highlighter;
    WB.Visible := True;

    PageControl3.ActivePage := ts;


  except
    ts.Free;
  end;
end;
So weit so gut...
So jetzt habe ich eine Funktion GetCurrentEdit

So deklariert:
Delphi-Quellcode:
  public
  function GetCurrentEdit: TSynEdit;
Ausehen tut sie So:
Delphi-Quellcode:
function THTML.GetCurrentEdit: TSynEdit;
begin
  Result := nil;
  with PageControl3 do
    if ActivePage.ControlCount > 0 then
    begin
      if ActivePage.Controls[0] is TWebbrowser then
      begin
        Result := (TSynEdit(ActivePage.Controls[0]));
      end else
        Result := HTMLCodeEditor;
    end;
end;
HTMLCodeEditor ist übrigens so deklariert:
Delphi-Quellcode:
  private
    { Private-Deklarationen }
    HTMLCodeEditor: TSynEdit;
So in dem OnChanging Event von PageControl3 mache ich dieses

Delphi-Quellcode:
procedure THTML.PageControl3Changing(Sender: TObject;
  var AllowChange: Boolean);
begin
  // Get the Previous (Current) Webbrowser
  with PageControl3 do
    if ActivePage.ControlCount > 0 then
      if ActivePage.Controls[0] is TSynEdit then
        HTMLCodeEditor := GetCurrentEdit;
end;
So und wenn ich jetzt mit dem Aktiven HTMLCodeEditor was machen möchte schmiert mir immer das Programm ab z.B wollte ich einfach nur

HTMLCodeEditor.lines.clear sagen aber es schmiert immer ab....


Kann mir da bitte jemand helfen?
Wo ist den der riesen Fehler???? Bitte helft mir

Danke Flo

[edit=alcaeus]Fuer Delphi-Code gibts die [.delphi]-Tags, nicht die [.code]-Tags Mfg, alcaeus[/edit]
Florian Gilde
  Mit Zitat antworten Zitat