Hallo Programmierer,
ich hätte gerade mal wieder ein Problem, wie folgt:
Ich stricke mir gerade eine Komponente zusammen, in der ich aus kosmetischen Gründen und der Einfachheit halber ein TMemo integrieren möchte.
Was mich schon mal gestört hat, ist das, dass ich von aussen keinen Zugriff auf die Lines erhalte.
Das könnte ich ja umgehen, wäre nicht so schlimm. Nicht doll, aber eben verschmerzbar.
Dass ich aber innerhalb der Komponente nicht auf die Memo zugreifen kann, stört mich dann schon.
ein bisschen Code zum Verständniss
Delphi-Quellcode:
TMBMemo = class(TGraphicControl)
private
fErrorMessage : String;
fLines : TStringList;
fMemo : TMemo;
Procedure AnalyseText;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Paint; Override;
published
Procedure SetMessage (Const Value : TStringList);
procedure Clear;
Property Point : TPoint Write GetPoint;
Property SearchWord : String Read fWort;
Property Memo : TMemo write fMemo;
Das Memo aus dem Property-Teil habe ich wieder rausgenommen, da ich von aussen nicht auf die Lines zugreifen kann. Kennt hier jemand ne Möglichkeit?
Jetzt aber zum 2. und auch dem Haupt-Problem
Deklaration im Constructor
Delphi-Quellcode:
constructor TMBWebMemo.Create(AOwner: TComponent);
begin
inherited;
Try
MyHandle := WndHandle;
WndHandle := FindWindow('TLoader',NIL);
fLines := TStringList.Create;
fMemo := TMemo.Create(self);
fMemo.ScrollBars := ssHorizontal;
fMemo.Parent := Self.Parent; // hab ich versucht, wegen des fehlenden Parent!
// kein Erfolg damit
Width := 300;
Height:= 400;
fErrorMessage := 'TMBMemo: Create succesful';
SendMessage(WndHandle, WM_CompError, 0, lParam(PChar(fErrorMessage)));
Except
fErrorMessage := 'TMBMemo: Create failed';
SendMessage(WndHandle, WM_CompError, 0, lParam(PChar(fErrorMessage)));
End;
WndHandle := MyHandle;
fErrorMessage := '';
end;
in einer anderen Prozedur knallt es dann aber an der Stelle
Delphi-Quellcode:
for i := 0 to Self.fBlocks.Count - 1 do
Begin
fBlock := fBlocks[i];
fMemo.Lines.Add (fBlock.Eintrag); <<<== und hier knallt es mit der Meldung
"Control has no parent window"
for j := 0 to fMemo.Lines.Count - 1 do
Begin
Self.fBlock.EintragList.Add(fMemo.Lines[j]);
End;
j := Self.fBlock.EintragList.Count;
End;
Beim Thema Font kannte ich das schon und hab es auch lösen können. Dummerweise weiss ich mir an dieser Stelle nicht zu helfen.
Ich danke allen schon mal im Voraus.