Sign in Join
Wiki copytemporary

Frames/de: what changed

Revision 2 to 3. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-**[[TFrame|TFrames]]** sind benannte Container für Komponenten und sind [[TForm|Formularen]] sehr ähnlich. Ihre einzigartige Fähigkeit besteht darin, dass sie in Formulare oder andere Frames eingebettet werden können. Als Formulare werden sie in zwei Dateien gespeichert: Der Code wird in einer .pas-Datei gespeichert, das Design in einer .lfm-Datei.
1+**[[TFrame|TFrames]]** sind benannte Container für Komponenten und sind [[TForm|Formularen]] sehr ähnlich. Ihre einzigartige Fähigkeit besteht darin, dass sie in Formulare oder andere Frames eingebettet werden können. Als Formulare werden sie in zwei Dateien gespeichert: Der Code wird in einer .pas-Datei gespeichert, das Design in einer .lfm-Datei.
22
33## Wie kann ich ein neues Frame erstellen?
44
5-Wählen Sie den Menüpunkt **Datei** und klicken Sie den Unterpunkt **Neu...** an. Wählen Sie im sich öffnenden Dialog "Frame".
5+Wählen Sie den Menüpunkt **Datei** und klicken Sie den Unterpunkt **Neu...** an. Wählen Sie im sich öffnenden Dialog "Frame".
66
7-![](/wiki-images/6/6d/Frame_new.PNG)
7+[![Frame new.PNG](/wiki-images/6/6d/Frame_new.PNG)](</File:Frame_new.PNG>)
88
99## Wie platziere ich ein Frame auf einem Formular oder einem anderen Frame?
1010
11-Die Registerkarte [[Standard tab|Standard]] der [[Component Palette|Komponentenpalette]] enthält die Komponente "[[TFrame]]". Wenn Sie sie auf dem Formular oder einem anderen Frame ablegen, werden Sie von der IDE dazu aufgefordert, einen der Projektframes auszuwählen. Frames in Packages können noch nicht angegeben werden, jedoch können Sie auch Frames im Code erstellen, die auch in Packages sein können. Sie können keine Frame Circles erstellen - die IDE wird es verbieten, d. h. Sie können FrameA nicht in FrameA platzieren, ebenso wenig ein Frame, das FrameA in FrameA enthält.
11+Die Registerkarte [[Standard tab|Standard]] der [[Component Palette|Komponentenpalette]] enthält die Komponente "[[TFrame]]". Wenn Sie sie auf dem Formular oder einem anderen Frame ablegen, werden Sie von der IDE dazu aufgefordert, einen der Projektframes auszuwählen (Der Auswahldialog wird erst erscheinen, wenn die TFrame-Komponente auf der Form platziert wurde, nicht wenn man einfach auf das Icon in der Toolbar klickt). Frames in Packages können noch nicht angegeben werden, jedoch können Sie auch Frames im Code erstellen, die auch in Packages sein können. Sie können keine Frame Circles erstellen - die IDE wird es verbieten, d. h. Sie können FrameA nicht in FrameA platzieren, ebenso wenig ein Frame, das FrameA in FrameA enthält.
1212
13-![](/wiki-images/3/35/Frame_add.PNG)
13+[![Frame add.PNG](/wiki-images/3/35/Frame_add.PNG)](</File:Frame_add.PNG>)
1414
1515## Wofür können Frames benutzt werden?
1616
17-Sie werden benötigt, wenn Sie eine Gruppe von Komponenten haben, die Sie in mehreren Formularen wiederverwenden möchten. Die Gruppe sollte in verschiedenen Fenstern (Formularen) Ihrer Anwendung über dieselben Steuerelemente und dieselbe Logik verfügen. Sie können diese sich wiederholenden Komponenten und Logik in einem Frame gruppieren und diesen Frame an verschiedenen Stellen verwenden. Dafür müssen Sie die Arbeit der Anordnung der Komponenten und des Schreibens ihrer Logik nicht wiederholen.
17+Sie werden benötigt, wenn Sie eine Gruppe von Komponenten haben, die Sie in mehreren Formularen wiederverwenden möchten. Die Gruppe sollte in verschiedenen Fenstern (Formularen) Ihrer Anwendung über dieselben Steuerelemente und dieselbe Logik verfügen. Sie können diese sich wiederholenden Komponenten und Logik in einem Frame gruppieren und diesen Frame an verschiedenen Stellen verwenden. Dafür müssen Sie die Arbeit der Anordnung der Komponenten und des Schreibens ihrer Logik nicht wiederholen.
1818
19-Sie haben beispielsweise zwei ListBoxes und Buttons, um Elemente zwischen ihnen zu verschieben. Sie können also ein Frame mit zwei ListBoxes und den notwendigen Buttons erstellen, die Logik für die sich bewegenden Elemente schreiben und Ihr Frame bei Bedarf für alle Formulare verwenden. Wenn Sie außerdem einen Fehler im Frame-Code finden, können Sie ihn einmal im Code beheben, anstatt ihn x-mal in allen Formularen zu beheben.
19+Sie haben beispielsweise zwei ListBoxes und Buttons, um Elemente zwischen ihnen zu verschieben. Sie können also ein Frame mit zwei ListBoxes und den notwendigen Buttons erstellen, die Logik für die sich bewegenden Elemente schreiben und Ihr Frame bei Bedarf für alle Formulare verwenden. Wenn Sie außerdem einen Fehler im Frame-Code finden, können Sie ihn einmal im Code beheben, anstatt ihn x-mal in allen Formularen zu beheben.
2020
21-Ein Frame im Designer:
21+Ein Frame im Designer:
2222
23-![](/wiki-images/1/13/Frame_example.PNG)
23+[![Frame example.PNG](/wiki-images/1/13/Frame_example.PNG)](</File:Frame_example.PNG>)
2424
25-Das Frame, auf einem Formular platziert:
25+Das Frame, auf einem Formular platziert:
2626
27-![](/wiki-images/d/d4/Frame_embedded.PNG%E2%80%8E)
27+[![Frame embedded.PNG](/wiki-images/1/17/Frame_embedded.PNG)](</File:Frame_embedded.PNG>)
2828
29-Das selbe Frame, auf einem anderen Formular platziert:
29+Das selbe Frame, auf einem anderen Formular platziert:
3030
31-![](/wiki-images/3/36/Frame_embedded2.PNG%E2%80%8E)
31+[![Frame embedded2.PNG](/wiki-images/8/88/Frame_embedded2.PNG)](</File:Frame_embedded2.PNG>)
3232
3333## Private Variablen initialisieren
3434
35-TFrame verfügt nicht über OnCreate- oder OnDestroy-Ereignisse, in denen private Variablen initialisiert und freigegeben werden können. Überschreiben Sie dazu den Standardkonstruktor und den Destruktor.
36-
37-``` pascal
35+TFrame verfügt nicht über OnCreate- oder OnDestroy-Ereignisse, in denen private Variablen initialisiert und freigegeben werden können. Überschreiben Sie dazu den Standardkonstruktor und den Destruktor.
36+```
3837TFrame1 = class(TFrame)
39- private
40- MyObj: TObject;
41- public
42- constructor Create(TheOwner: TComponent); override;
43- destructor Destroy; override;
44- end;
45-
46-constructor TFrame1.Create(TheOwner: TComponent);
47-begin
48- inherited Create(TheOwner);
49- MyObj := TObject.Create;
50-end;
51-
52-destructor TFrame1.Destroy;
53-begin
54- MyObj.Free
55- inherited Destroy;
56-end;
38+ private
39+ MyObj: TObject;
40+ public
41+ constructor Create(TheOwner: TComponent); override;
42+ destructor Destroy; override;
43+ end;
44+
45+ constructor TFrame1.Create(TheOwner: TComponent);
46+ begin
47+ inherited Create(TheOwner);
48+ MyObj := TObject.Create;
49+ end;
50+
51+ destructor TFrame1.Destroy;
52+ begin
53+ MyObj.Free
54+ inherited Destroy;
55+ end;
5756```
5857
5958## Beispiel für eine dynamische Erstellung
6059
61-Leichter, da eine TFrame-Komponente in der Komponentenpalette nicht erforderlich ist. Sie können außerdem eine Seitenwechsel-Anwendung (wie eine Smartphone-Anwendung) mit sicheren Ressourcen erstellen.
62-
63-``` pascal
60+Leichter, da eine TFrame-Komponente in der Komponentenpalette nicht erforderlich ist. Sie können außerdem eine Seitenwechsel-Anwendung (wie eine Smartphone-Anwendung) mit sicheren Ressourcen erstellen.
61+```
6462unit Unit1;
65-
66-{$mode objfpc}{$H+}
67-
68-interface
69-
70-uses
71- Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
72-
73-type
74-
75- { TForm1 }
76-
77- TForm1 = class(TForm)
78- Button1: TButton;
79- GroupBox1: TGroupBox;
80- procedure Button1Click(Sender: TObject);
81- procedure FormCreate(Sender: TObject);
82- private
83- { private declarations }
84- Frame: TFrame;
85- public
86- { public declarations }
87- end;
88-
89-var
90- Form1: TForm1;
91-
92-implementation
93-uses
94- Unit2{TFrame1}, Unit3{TFrame2}, Unit4{TFrame3};
95-
96-{$R *.lfm}
97-
98-{ TForm1 }
99-
100-procedure TForm1.FormCreate(Sender: TObject);
101-begin
102- Frame := TFrame1.Create(GroupBox1);
103- Frame.Parent := GroupBox1;
104-end;
105-
106-procedure TForm1.Button1Click(Sender: TObject);
107-begin
108- if not Assigned(Frame) then
109- begin
110- Frame := TFrame1.Create(GroupBox1);
111- Frame.Parent := GroupBox1;
112- end else if Frame is TFrame1 then begin
113- Frame.Free;
114- Frame := TFrame2.Create(GroupBox1);
115- Frame.Parent := GroupBox1;
116- end else if Frame is TFrame2 then begin
117- Frame.Free;
118- Frame := TFrame3.Create(GroupBox1);
119- Frame.Parent := GroupBox1;
120- end else begin
121- FreeAndNil(Frame);
122- end;
123-end;
124-
125-end.
63+
64+ {$mode objfpc}{$H+}
65+
66+ interface
67+
68+ uses
69+ Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
70+
71+ type
72+
73+ { TForm1 }
74+
75+ TForm1 = class(TForm)
76+ Button1: TButton;
77+ GroupBox1: TGroupBox;
78+ procedure Button1Click(Sender: TObject);
79+ procedure FormCreate(Sender: TObject);
80+ private
81+ { private declarations }
82+ Frame: TFrame;
83+ public
84+ { public declarations }
85+ end;
86+
87+ var
88+ Form1: TForm1;
89+
90+ implementation
91+ uses
92+ Unit2{TFrame1}, Unit3{TFrame2}, Unit4{TFrame3};
93+
94+ {$R *.lfm}
95+
96+ { TForm1 }
97+
98+ procedure TForm1.FormCreate(Sender: TObject);
99+ begin
100+ Frame := TFrame1.Create(GroupBox1);
101+ Frame.Parent := GroupBox1;
102+ end;
103+
104+ procedure TForm1.Button1Click(Sender: TObject);
105+ begin
106+ if not Assigned(Frame) then
107+ begin
108+ Frame := TFrame1.Create(GroupBox1);
109+ Frame.Parent := GroupBox1;
110+ end else if Frame is TFrame1 then begin
111+ Frame.Free;
112+ Frame := TFrame2.Create(GroupBox1);
113+ Frame.Parent := GroupBox1;
114+ end else if Frame is TFrame2 then begin
115+ Frame.Free;
116+ Frame := TFrame3.Create(GroupBox1);
117+ Frame.Parent := GroupBox1;
118+ end else begin
119+ FreeAndNil(Frame);
120+ end;
121+ end;
122+
123+ end.
126124```
127125
128126## Siehe auch
129127
130-- [[TFrame]]
128+ * [[TFrame]]
131129
132130---
133-*From the Free Pascal wiki, page "Frames/de", as it stood on 2020-03-08 after a change by Techno, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
131+*From the Free Pascal wiki, page "Frames/de", as the Internet Archive kept it on 2025-03-23, last changed on 2024-11-09. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history