Sign in Join
Wiki copytemporary

Frames/de: what changed

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

OldNewLine
11**[[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
55Wählen Sie den Menüpunkt **Datei** und klicken Sie den Unterpunkt **Neu...** an. Wählen Sie im sich öffnenden Dialog "Frame".
66
7-<figure>
8-<img src="Frame_new.PNG" title="Frame_new.PNG" />
9-<figcaption>Frame_new.PNG</figcaption>
10-</figure>
7+![](/wiki-images/6/6d/Frame_new.PNG)
118
129## Wie platziere ich ein Frame auf einem Formular oder einem anderen Frame?
1310
1411Die 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.
1512
16-<figure>
17-<img src="Frame_add.PNG" title="Frame_add.PNG" />
18-<figcaption>Frame_add.PNG</figcaption>
19-</figure>
13+![](/wiki-images/3/35/Frame_add.PNG)
2014
2115## Wofür können Frames benutzt werden?
2216
2317Sie 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.
2418
2519Sie 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.
2620
2721Ein Frame im Designer:
2822
29-<figure>
30-<img src="Frame_example.PNG" title="Frame_example.PNG" />
31-<figcaption>Frame_example.PNG</figcaption>
32-</figure>
23+![](/wiki-images/1/13/Frame_example.PNG)
3324
3425Das Frame, auf einem Formular platziert:
3526
36-<figure>
37-<img src="Frame_embedded.PNG‎" title="Frame_embedded.PNG‎" />
38-<figcaption>Frame_embedded.PNG‎</figcaption>
39-</figure>
27+![](/wiki-images/d/d4/Frame_embedded.PNG%E2%80%8E)
4028
4129Das selbe Frame, auf einem anderen Formular platziert:
4230
43-<figure>
44-<img src="Frame_embedded2.PNG‎" title="Frame_embedded2.PNG‎" />
45-<figcaption>Frame_embedded2.PNG‎</figcaption>
46-</figure>
31+![](/wiki-images/3/36/Frame_embedded2.PNG%E2%80%8E)
4732
4833## Private Variablen initialisieren
4934
5035TFrame 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.
5136
5237``` pascal
5338TFrame1 = class(TFrame)
5439 private
5540 MyObj: TObject;
5641 public
5742 constructor Create(TheOwner: TComponent); override;
5843 destructor Destroy; override;
5944 end;
6045
6146constructor TFrame1.Create(TheOwner: TComponent);
6247begin
6348 inherited Create(TheOwner);
6449 MyObj := TObject.Create;
6550end;
6651
6752destructor TFrame1.Destroy;
6853begin
6954 MyObj.Free
7055 inherited Destroy;
7156end;
7257```
7358
7459## Beispiel für eine dynamische Erstellung
7560
7661Leichter, 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.
7762
7863``` pascal
7964unit Unit1;
8065
8166{$mode objfpc}{$H+}
8267
8368interface
8469
8570uses
8671 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
8772
8873type
8974
9075 { TForm1 }
9176
9277 TForm1 = class(TForm)
9378 Button1: TButton;
9479 GroupBox1: TGroupBox;
9580 procedure Button1Click(Sender: TObject);
9681 procedure FormCreate(Sender: TObject);
9782 private
9883 { private declarations }
9984 Frame: TFrame;
10085 public
10186 { public declarations }
10287 end;
10388
10489var
10590 Form1: TForm1;
10691
10792implementation
10893uses
10994 Unit2{TFrame1}, Unit3{TFrame2}, Unit4{TFrame3};
11095
11196{$R *.lfm}
11297
11398{ TForm1 }
11499
115100procedure TForm1.FormCreate(Sender: TObject);
116101begin
117102 Frame := TFrame1.Create(GroupBox1);
118103 Frame.Parent := GroupBox1;
119104end;
120105
121106procedure TForm1.Button1Click(Sender: TObject);
122107begin
123108 if not Assigned(Frame) then
124109 begin
125110 Frame := TFrame1.Create(GroupBox1);
126111 Frame.Parent := GroupBox1;
127112 end else if Frame is TFrame1 then begin
128113 Frame.Free;
129114 Frame := TFrame2.Create(GroupBox1);
130115 Frame.Parent := GroupBox1;
131116 end else if Frame is TFrame2 then begin
132117 Frame.Free;
133118 Frame := TFrame3.Create(GroupBox1);
134119 Frame.Parent := GroupBox1;
135120 end else begin
136121 FreeAndNil(Frame);
137122 end;
138123end;
139124
140125end.
141126```
142127
143128## Siehe auch
144129
145130- [[TFrame]]
146131
147132---
148133*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).*

Back to history