Autor Beitrag
sebwa2k
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 02.05.04 14:19 
hallo
ich hab da eine Frage zu Findcomponent.

in meinem Programm, wird derden zur laufzeit auf einem Pagecontrol tabsheets mit einem Memo erzeugt, soweit kein Problem.

die memos wollte ich mit

ausblenden Quelltext
1:
TMemo(FindComponent('Testmemo')).Lines.Add('test');					


ansprechen, allerdings erhalte ich dabei eine Zugriffsverletzung.#
das Problem ist glaube ich das
der Parent der memos das Tabsheet ist.

auf das memo1, auf form1 kann ich so
ausblenden Quelltext
1:
TMemo(FindComponent('memo1')).Lines.Add('test');					

ohne Probleme zugreifen.
Aber wie klappt das, wenn ein Tabsheet der Parent ist???

Mit freundlichen Grüßen
Sebastian
toms
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1099
Erhaltene Danke: 2



BeitragVerfasst: So 02.05.04 14:26 
Zitat:
Aber wie klappt das, wenn ein Tabsheet der Parent ist???


Hi,

Spielt keine Rolle, ob die Form oder das TabSheet das Parent ist.

Hab's kurz ausprobiert und funzt wunderbar:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
procedure TForm1.Button1Click(Sender: TObject);
var
  Memo: TMemo;
begin
  Memo := TMemo.Create(Self);
  Memo.Parent := TabSheet1;
  Memo.Name := 'Testmemo';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  TMemo(FindComponent('Testmemo')).Lines.Add('test');
end;
sebwa2k Threadstarter
Hält's aus hier
Beiträge: 8



BeitragVerfasst: So 02.05.04 14:53 
Ok danke,
der entscheidende Fehler bei mir war
memo := Tmemo.create(pagecontrol1); habs nun gegen self ersetzt und es klappt.

besten dank.

schönen tag noch

Sebastian
Motzi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2931

XP Prof, Vista Business
D6, D2k5-D2k7 je Prof
BeitragVerfasst: So 02.05.04 15:44 
Delphi Hilfe hat folgendes geschrieben:
Indicates whether a given component is owned by the component.

function FindComponent(const AName: string): TComponent;

Description

FindComponent returns the component in the Components property array with the name that matches the string in the AName parameter. Use FindComponent to determine whether a given component is owned by another.

FindComponent ist eine Methode von TComponent und durchsucht das Array mit allen Komponenten die die aufrufende Instanz als Owner haben. Wenn du beim Aufruf von Create also PageControl1 angibst, dann musst du auch die FindComponent-Methode von PageControl1 aufrufen um das Memo zu finden:
ausblenden Delphi-Quelltext
1:
TMemo(PageControl1.FindComponent('Testmemo')).Lines.Add('test');					

_________________
gringo pussy cats - eef i see you i will pull your tail out by eets roots!