![]() |
Zugruffs fehler in einer zur Laufzeit erstellten komponente
:gruebel: Hallo ich habe ein PageControl in der ich immer bei bedarf ein neuen Tabsheet erstelle mit einem TSynEdit drin.
Das mache ich so: Aufruf:
Delphi-Quellcode:
Funktion sieht so aus:
CreateTab('Leer', 'Dokument');
Delphi-Quellcode:
So weit so gut...
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 jetzt habe ich eine Funktion GetCurrentEdit So deklariert:
Delphi-Quellcode:
Ausehen tut sie So:
public
function GetCurrentEdit: TSynEdit;
Delphi-Quellcode:
HTMLCodeEditor ist übrigens so deklariert:
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;
Delphi-Quellcode:
So in dem OnChanging Event von PageControl3 mache ich dieses
private
{ Private-Deklarationen } HTMLCodeEditor: TSynEdit;
Delphi-Quellcode:
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
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; 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] |
Re: Zugruffs fehler in einer zur Laufzeit erstellten kompone
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:
Und hier denke ich interessiert dich der Editor nach erfolgtem Change:
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;
Delphi-Quellcode:
Grüße vom marabu
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; [edit=alcaeus]Wieder code- durch delphi-Tags ersetzt. Mfg, alcaeus[/edit] |
Re: Zugruffs fehler in einer zur Laufzeit erstellten kompone
Danke
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz