Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Vererbte Frames finden... (https://www.delphipraxis.net/75223-vererbte-frames-finden.html)

litsa 16. Aug 2006 08:04


Vererbte Frames finden...
 
Hallo!

Habe folgendes Problem: zur Laufzeit erstelle ich Frames auf 'nem PageControl die bestimmte Namen erhalten. Wie kann ich auf die Frames zugreifen ohne den Namen anzugeben?? Mit FindComponent kann ich das net weil ich nen Namen angeben muss...Kann mir da jemand helfen?!

Danke!

Sascha L 16. Aug 2006 08:20

Re: Vererbte Frames finden...
 
Wenn du die Frames zur Laufzeit erstellst, dann musst du ja auch einen Variablen-Namen angeben, also wo ist das Problem?

Angel4585 16. Aug 2006 09:20

Re: Vererbte Frames finden...
 
ne er kann auch einfach nur

Delphi-Quellcode:
with TMyFrame.Create(Pcontrol)do
  begin
  Parent:=pcontrol;
  .
  .
  end;
machen, also ohne Variable.

Ich würde sagen das eine Variable geeigneter wäre:

Delphi-Quellcode:
myframe:=TMyFrame.Create(Pcontrol);
with myframe do
  begin
  Parent:=pcontrol;
  .
  .
  end;

litsa 16. Aug 2006 09:32

Re: Vererbte Frames finden...
 
Die Namen sind nicht immer die gleichen und die Anzahl der Frames die jedes mal erstellt werden variiert.
Ich möchte eine Prozedur aufrufen können die alle erstellten Frames durchläuft:

Delphi-Quellcode:
 
for i := 0 to MAin.PageControl1.PageCount - 1 do
begin
// hier soll eine procedure des Frames stehen
end;

Also frage ich mich wie ich auf alle ChildComponenten (als TmyFrame) des PageControl1 zugreifen kann ohne die Namen angeben zu müssen!


Vorläufig habe ich es so gelöst, dass tabs und frames gleiche Namen bekommen mit nem 'tab' bzw. 'frame' davor::

Delphi-Quellcode:
 
for i := 0 to MAin.PageControl1.PageCount - 1 do
begin
FrameName := copy(Main.PageControl1.Pages[i].Name, 4, length(Main.PageControl1.Pages[i].Name) - 3); //entfernt das wort 'tab'
(Main.PageControl1.Pages[i].FindComponent('frame' + frameName) as TmyFrame).Getsize(byt_);
end;
Trotzdem wenn jemand weiss wie das einfacher geht dann bitte!

litsa 16. Aug 2006 09:42

Re: Vererbte Frames finden...
 
..die Frames erstelle ich so:

Delphi-Quellcode:
procedure TStatusFr.NewFrame(n_: string);
var
  quTab:  TTabSheet;
  quFrame: TFrame;
begin
  quTab     := TTabSheet.Create(Main.PageControl1);
  quTab.PageControl := Main.PageControl1;
  quTab.Name := 'tab' + n_;
  quTab.Caption := n_;
  quTab.Show;
  with TmyFrame.Create(self) do
  begin
    Name   := 'frame' + n_;
    Caption := n_;
    Parent := quTab;
    Show;
    align := alClient;
  end;
end;

Angel4585 16. Aug 2006 10:04

Re: Vererbte Frames finden...
 
Mach aus dem ganzen eine Funktion bei der du das Frame als Result zurückgibst.
dann weise das Frame einem Array zu:

Delphi-Quellcode:
var
framefeld : array of TFrame;

.
.
procedure NeuesFrames(AName : string);
begin
SetLength(framefeld,Length(framefeld)+1);
framefeld[Length(framefeld)-1]:=DoNeuesFrame(AName);
end;

Nur so als Ansatz ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 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