AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Zugruffs fehler in einer zur Laufzeit erstellten komponente
Thema durchsuchen
Ansicht
Themen-Optionen

Zugruffs fehler in einer zur Laufzeit erstellten komponente

Ein Thema von kingflo · begonnen am 5. Jun 2005 · letzter Beitrag vom 5. Jun 2005
Antwort Antwort
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
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Zugruffs fehler in einer zur Laufzeit erstellten kompone

  Alt 5. Jun 2005, 08:09
Hallo Flo,

da hast du wohl irgendwann von TWebBrowser auf TSynEdit umgestellt und mittendrin aufgehört - oder?

Delphi-Quellcode:
function THTML.CreateTab(pc: TPageControl, sURL, sCaption: string): TTabSheet;
var
  se: TSynEdit;
begin
  // Create a new TabSheet
  Result := TTabSheet.Create(self);
  try
    // Assign TTabSheet Properties
    with Result do begin
      PageControl := pc;
      Parent := pc;
      Caption := sCaption;
      PageIndex := Succ(pc.ActivePageIndex);
    end;

    // Create an instance
    se := TSynEdit.Create(ts);
    with se do begin
      // put TSynEdit on TTabSheet
      Parent := Result;

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

    pc.ActivePage := Result;
  except
    Result.Free;
  end;
end;
Delphi-Quellcode:
function THTML.GetCurrentEdit: TSynEdit;
begin
  Result := nil;
  with PageControl3.ActivePage do
    if ControlCount = 0 then
      Result := nil
    else if Controls[0] is TSynEdit then
      Result := TSynEdit(Controls[0])
    else
      Result := HTMLCodeEditor;
end;
Und hier denke ich interessiert dich der Editor nach erfolgtem Change:
Delphi-Quellcode:
procedure THTML.PageControl3Change(Sender: TObject);
begin
  // Get the Previous (Current) SynEdit
  with PageControl3.ActivePage do
    if ControlCount > 0 then
      if Controls[0] is TSynEdit then
        HTMLCodeEditor := TSynEdit(Controls[0]);
end;
Grüße vom marabu

[edit=alcaeus]Wieder code- durch delphi-Tags ersetzt. Mfg, alcaeus[/edit]
  Mit Zitat antworten Zitat
kingflo

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

Re: Zugruffs fehler in einer zur Laufzeit erstellten kompone

  Alt 5. Jun 2005, 11:37
Danke
Florian Gilde
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:27 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