Sign in Join
Wiki copytemporary

Frames/fi: what changed

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

OldNewLine
1-**[[TFrame]]** eli kehys on säiliö komponenteille ja hyvin samankaltainen kuin [[TForm|​​lomake]]. Niiden ainutlaatuinen kyky on, että ne voidaan upottaa lomakkeelle tai toisiin kehyksiin (TFrame). Lomake tallennetaan kahteen tiedostoon: koodi tallennetaan .pas-tiedostoon ja muotoilu .lfm-tiedostoon.
2-
3-
4-
5-## Contents
6-
7- * 1 Miten luodaan kehys eli frame?
8- * 2 Miten sijoitat kehyksen lomakkeelle tai toiseen kehykseen?
9- * 3 Mihin niitä voidaan käyttää?
10- * 4 Yksityisten muuttujien alustus
11- * 5 Näyte dynaamisesta luomisesta
12- * 6 Katso myös
1+**[[TFrame]]** eli kehys on säiliö komponenteille ja hyvin samankaltainen kuin [[TForm|​​lomake]]. Niiden ainutlaatuinen kyky on, että ne voidaan upottaa lomakkeelle tai toisiin kehyksiin (TFrame). Lomake tallennetaan kahteen tiedostoon: koodi tallennetaan .pas-tiedostoon ja muotoilu .lfm-tiedostoon.
132
143## Miten luodaan kehys eli frame?
154
16-Valitse tiedosto-valikosta: Tiedosto -> Uusi... valikon kohta ja avautuvassa valintaikkunassa valitse "Frame".
5+Valitse tiedosto-valikosta: Tiedosto -\> Uusi... valikon kohta ja avautuvassa valintaikkunassa valitse "Frame".
176
18-[![Frame new.PNG](/wiki-images/6/6d/Frame_new.PNG)](</File:Frame_new.PNG>)
7+![](/wiki-images/6/6d/Frame_new.PNG)
198
209## Miten sijoitat kehyksen lomakkeelle tai toiseen kehykseen?
2110
22-[[Component Palette/fi|Komponenttipaletin]] [[Standard tab/fi|[[Standard-välilehdellä]] on erityinen [[TFrame]]-komponentti.
11+[[Component Palette/fi|Komponenttipaletin]] [[[[Standard tab/fi|Standard-välilehdellä]] on erityinen [[TFrame]]-komponentti.
2312
24-Kun se pudotetaan lomakkeelle tai toiseen kehykseen, IDE pyytää valitsemaan jonkin kehyksen. Paketeissa olevia kehyksiä ei ole vielä toteutettu. Mutta voidaan luoda kehyksiä koodilla jopa paketeissa. Ei voi luoda kehyksiin ristikkäisiä viittauksia - IDE kieltää tämän, koska ei voida asettaa FrameA: ta FrameA: ksi, eikä FrameA: ta voi rakentaa FrameA: ksi.
13+Kun se pudotetaan lomakkeelle tai toiseen kehykseen, IDE pyytää valitsemaan jonkin kehyksen. Paketeissa olevia kehyksiä ei ole vielä toteutettu. Mutta voidaan luoda kehyksiä koodilla jopa paketeissa. Ei voi luoda kehyksiin ristikkäisiä viittauksia - IDE kieltää tämän, koska ei voida asettaa FrameA: ta FrameA: ksi, eikä FrameA: ta voi rakentaa FrameA: ksi.
2514
26-
27-[![Frame add.PNG](/wiki-images/3/35/Frame_add.PNG)](</File:Frame_add.PNG>)
15+![](/wiki-images/3/35/Frame_add.PNG)
2816
2917## Mihin niitä voidaan käyttää?
3018
31-Ne ovat tarpeen, kun on joukko komponentteja, joita halutaan käyttää useissa lomakkeissa. Ryhmän välillä pitäisi olla sama ohjaus ja logiikka sovelluksen eri ikkunoissa (lomakkeissa). Voidaan ryhmitellä toistetut ohjaukset ja logiikat yhteen kehykseen ja käyttää kyseistä kehystä eri paikoissa. Siksi ei tarvitse toistaa ohjauksen työtä asettelemalla ja kirjoittamalla logiikkaa.
19+Ne ovat tarpeen, kun on joukko komponentteja, joita halutaan käyttää useissa lomakkeissa. Ryhmän välillä pitäisi olla sama ohjaus ja logiikka sovelluksen eri ikkunoissa (lomakkeissa). Voidaan ryhmitellä toistetut ohjaukset ja logiikat yhteen kehykseen ja käyttää kyseistä kehystä eri paikoissa. Siksi ei tarvitse toistaa ohjauksen työtä asettelemalla ja kirjoittamalla logiikkaa.
3220
33-
34-Voidaan esimerkiksi haluta siirtää kohteita kahden luetteloruudun (listbox) välillä painikkeilla. Joten voidaan luoda kehys kahdella listboxilla ja tarvittavilla painikkeilla, kirjoittaa logiikkaa liikkuvien kohteiden kohdalle ja käyttää sitten kehystä kaikissa lomakkeissa tarpeen mukaan. Lisäksi, jos havaitaan virhe kehyskoodissa niin voidaan korjata se kerralla kehyksen koodissa sen sijaan, että se korjattaisiin n-kertaa kaikissa sitä käyttävissä lomakkeissa.
21+Voidaan esimerkiksi haluta siirtää kohteita kahden luetteloruudun (listbox) välillä painikkeilla. Joten voidaan luoda kehys kahdella listboxilla ja tarvittavilla painikkeilla, kirjoittaa logiikkaa liikkuvien kohteiden kohdalle ja käyttää sitten kehystä kaikissa lomakkeissa tarpeen mukaan. Lisäksi, jos havaitaan virhe kehyskoodissa niin voidaan korjata se kerralla kehyksen koodissa sen sijaan, että se korjattaisiin n-kertaa kaikissa sitä käyttävissä lomakkeissa.
3522
36-Suunniteltu kehys:
23+Suunniteltu kehys:
3724
38-[![Frame example.PNG](/wiki-images/1/13/Frame_example.PNG)](</File:Frame_example.PNG>)
25+![](/wiki-images/1/13/Frame_example.PNG)
3926
40-
41-Kyseinen kehys sijoiteltu lomakkeelle:
27+Kyseinen kehys sijoiteltu lomakkeelle:
4228
43-[![Frame embedded.PNG](/wiki-images/1/17/Frame_embedded.PNG)](</File:Frame_embedded.PNG>)
29+![](/wiki-images/d/d4/Frame_embedded.PNG%E2%80%8E)
4430
45-Sama kehys sijoitettu toiselle lomakkeelle:
31+Sama kehys sijoitettu toiselle lomakkeelle:
4632
47-[![Frame embedded2.PNG](/wiki-images/8/88/Frame_embedded2.PNG)](</File:Frame_embedded2.PNG>)
33+![](/wiki-images/3/36/Frame_embedded2.PNG%E2%80%8E)
4834
4935## Yksityisten muuttujien alustus
5036
51-TFrameilla ei ole OnCreate- tai OnDestroy-tapahtumia, joiden avulla yksityisiä muuttujia voidaan alustaa ja vapauttaa. Voidaan ylikirjoittaa ([[Override]]) oletusrakentaja ja -tuhoaja tekemään tämän.
52-```
37+TFrameilla ei ole OnCreate- tai OnDestroy-tapahtumia, joiden avulla yksityisiä muuttujia voidaan alustaa ja vapauttaa. Voidaan ylikirjoittaa ([[Override]]) oletusrakentaja ja -tuhoaja tekemään tämän.
38+
39+``` pascal
5340TFrame1 = class(TFrame)
54- private
55- MyObj: TObject;
56- public
57- constructor Create(TheOwner: TComponent); override;
58- destructor Destroy; override;
59- end;
60-
61- constructor TFrame1.Create(TheOwner: TComponent);
62- begin
63- inherited Create(TheOwner);
64- MyObj := TObject.Create;
65- end;
66-
67- destructor TFrame1.Destroy;
68- begin
69- MyObj.Free
70- inherited Destroy;
71- end;
41+ private
42+ MyObj: TObject;
43+ public
44+ constructor Create(TheOwner: TComponent); override;
45+ destructor Destroy; override;
46+ end;
47+
48+constructor TFrame1.Create(TheOwner: TComponent);
49+begin
50+ inherited Create(TheOwner);
51+ MyObj := TObject.Create;
52+end;
53+
54+destructor TFrame1.Destroy;
55+begin
56+ MyObj.Free
57+ inherited Destroy;
58+end;
7259```
7360
7461## Näyte dynaamisesta luomisesta
7562
76-Koska komponenttipaletin TFrame-komponenttia ei tarvita niin se on aika helppoa. Voidaan myös tehdä sivunmuutostyyppisovelluksen (kuten älypuhelinsovellus) tallennusresursseilla
77-```
63+Koska komponenttipaletin TFrame-komponenttia ei tarvita niin se on aika helppoa. Voidaan myös tehdä sivunmuutostyyppisovelluksen (kuten älypuhelinsovellus) tallennusresursseilla
64+
65+``` pascal
7866unit Unit1;
79-
80- {$mode objfpc}{$H+}
81-
82- interface
83-
84- uses
85- Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
86-
87- type
88-
89- { TForm1 }
90-
91- TForm1 = class(TForm)
92- Button1: TButton;
93- GroupBox1: TGroupBox;
94- procedure Button1Click(Sender: TObject);
95- procedure FormCreate(Sender: TObject);
96- private
97- { private declarations }
98- Frame: TFrame;
99- public
100- { public declarations }
101- end;
102-
103- var
104- Form1: TForm1;
105-
106- implementation
107- uses
108- Unit2{TFrame1}, Unit3{TFrame2}, Unit4{TFrame3};
109-
110- {$R *.lfm}
111-
112- { TForm1 }
113-
114- procedure TForm1.FormCreate(Sender: TObject);
115- begin
116- Frame := TFrame1.Create(GroupBox1);
117- Frame.Parent := GroupBox1;
118- end;
119-
120- procedure TForm1.Button1Click(Sender: TObject);
121- begin
122- if not Assigned(Frame) then
123- begin
124- Frame := TFrame1.Create(GroupBox1);
125- Frame.Parent := GroupBox1;
126- end else if Frame is TFrame1 then begin
127- Frame.Free;
128- Frame := TFrame2.Create(GroupBox1);
129- Frame.Parent := GroupBox1;
130- end else if Frame is TFrame2 then begin
131- Frame.Free;
132- Frame := TFrame3.Create(GroupBox1);
133- Frame.Parent := GroupBox1;
134- end else begin
135- FreeAndNil(Frame);
136- end;
137- end;
138-
139- end.
67+
68+{$mode objfpc}{$H+}
69+
70+interface
71+
72+uses
73+ Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
74+
75+type
76+
77+ { TForm1 }
78+
79+ TForm1 = class(TForm)
80+ Button1: TButton;
81+ GroupBox1: TGroupBox;
82+ procedure Button1Click(Sender: TObject);
83+ procedure FormCreate(Sender: TObject);
84+ private
85+ { private declarations }
86+ Frame: TFrame;
87+ public
88+ { public declarations }
89+ end;
90+
91+var
92+ Form1: TForm1;
93+
94+implementation
95+uses
96+ Unit2{TFrame1}, Unit3{TFrame2}, Unit4{TFrame3};
97+
98+{$R *.lfm}
99+
100+{ TForm1 }
101+
102+procedure TForm1.FormCreate(Sender: TObject);
103+begin
104+ Frame := TFrame1.Create(GroupBox1);
105+ Frame.Parent := GroupBox1;
106+end;
107+
108+procedure TForm1.Button1Click(Sender: TObject);
109+begin
110+ if not Assigned(Frame) then
111+ begin
112+ Frame := TFrame1.Create(GroupBox1);
113+ Frame.Parent := GroupBox1;
114+ end else if Frame is TFrame1 then begin
115+ Frame.Free;
116+ Frame := TFrame2.Create(GroupBox1);
117+ Frame.Parent := GroupBox1;
118+ end else if Frame is TFrame2 then begin
119+ Frame.Free;
120+ Frame := TFrame3.Create(GroupBox1);
121+ Frame.Parent := GroupBox1;
122+ end else begin
123+ FreeAndNil(Frame);
124+ end;
125+end;
126+
127+end.
140128```
141129
142130## Katso myös
143131
144- * [[TFrame]]
132+- [[TFrame]]
145133
146134---
147-*From the Free Pascal wiki, page "Frames/fi", as the Internet Archive kept it on 2025-04-20. 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).*
135+*From the Free Pascal wiki, page "Frames/fi", as it stood on 2020-02-16 after a change by Trev, 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