Sign in Join
Wiki copytemporary

TAChart Tutorial: Getting started/fi: what changed

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

OldNewLine
11## Johdanto
22
33![](/wiki-images/2/2f/Tachart_getting_started_step6.png)
44
55Jos halutaan lisätä kaavio tai diagrammi Lazaruksen lomakkeelle niin [[TAChart]] komponentteja kannattaa katsoa. Tämä on vakio Lazarus paketti kaavioiden näyttämiseen.
66
77Tässä opetusohjelmassa tehdään joitakin matemaattisia toimintoja TAChart:lla. Luomme kaavion jossa on kolme viivakuvaajaa (LineSeries)
88
9-`   y = cos (x),`\
10-`   y = sin (x), ja`\
11-`   y = cos (x) * sin (x). `
9+```text
10+ y = cos (x),
11+ y = sin (x), ja
12+ y = cos (x) * sin (x).
13+```
1214
1315Aluksi yhdistetään datapisteitä, siksi käytämme "viivakuvaajaa". TAChart, tietenkin, mahdollistaa käyttää monia muitakin kuvaajia, esimerkiksi palkkia, aluetta, piirakkaa, tai jopa kehittyneitä tyyppejä kuten B-käyrä tai laatikko-jana kuvaajaa.
1416
1517## Mitä tarvitaan?
1618
1719Tämä opas on aika perusteellinen. Mutta pohjaksi tietenkin tarvitaan perustiedot Object Pascal kielestä ja Lazarus IDE:stä.
1820
1921TAChart sisältyy vakiona Lazarukseen, joten ei ole tarvetta etsiä tätä pakettia jostain paikasta internetistä. Älä kuitenkaan käytä liian vanhaa versiota Lazaruksesta koska TAChart kehitetään aktiivisesti ja jotkut ominaisuudet saattavat muuttua versiosta toiseen.
2022
2123Parasta on, jos noudatat tätä opasta vaihe vaiheelta. Haluessasi voit käyttää tämän artikkelin lopussa olevaa valmista lähdekoodia.
2224
2325## Uusi projekti
2426
2527![](/wiki-images/9/95/TAChart_component_palette.png)
2628
2729Aluksi, luomme uuden projektin Lazaruksessa, ja komponenttipaletilta valitaan sivu "Chart". Klikkaa äärimmäisenä vasemmalla olevaa kuvaketta, TChart komponentti, ja lisää se lomakkeelle. Näet lomakkeella tyhjän kaavion jossa on x- ja y-akselit.
2830
2931![](/wiki-images/6/63/TAChart_GettingStarted_Step1.png)
3032
3133## Kuvaajan lisääminen
3234
3335Nyt lisätään kuvaaja. Tämä onnistuu kaksoisnapsauttamalla TChart komponenttia (tai hiiren kakkospainikkeella ja valitse "Muokkaa kuvaajia" ponnahdusvalikosta). TAChart sarjan editori tulee näkyviin. Se on edelleen tyhjä, mutta kun valitset "Lisää" näet valikon jossa on TAChart paketissa olevat kaikki kuvaajat. Valitse "viivakuvaaja". Toista tämä vielä kaksi kertaa, luot siis yhteensä kolme viivakuvaajaa kaavioon. Ne eivät vielä näy kaaviossa, koska niissä ei vielä ole dataa. Jos ei dataa - niin ei näytetä. Tämä korjaantuu hetkessä.
3436
3537![](/wiki-images/6/6f/TAChart_GettingStarted_Step1a.png)
3638
3739Tässä välissä on hyvä katsoa komponenttimuokkainta. TAChart käyttää varsin monimutkaista luokkiuen ja säiliöiden arkkitehtuuria, joten on tärkeää ymmärtää oliopuu. Tässä vaiheessa projektia nähdään TChart komponentti ja sen lapset, kolme viivakuvaajaa (Line Series) ja AxisList jolla on Left ja Bottom akselit lapsina. Kuvaajien nimet on rakennettu: `Chart< numero >< kuvaajan englanninkielinen nimi >< numero >`.
3840
3941![](/wiki-images/c/ce/Tachart_getting_started_object_tree.png)
4042
4143Kuvaajille voidaan antaa enemmän kuvaavat nimet, kuten `SinSeries`, `CosSeries` ja `SinCosSeries`. Tätä tarkoitusta varten, klikkaa kutakin kuvaajaa ja muuttaa kuvaajan nimeä `Name` ominaisuudessa varattuun kenttään komponenttimuokkaimessa.
4244
4345## Lisätään data
4446
4547Nyt on aika lisätä dataa. Helpoin vaihtoehto on lisätä dataa on lisätä se lomakketta luotaessa. Kirjoitetaan ne lomakkeen `OnCreate` tapahtumaan. Tietenkin "todellisessa" projektissa, voit lisätä tietoja muissakin tilanteissa, esimerkiksi kun napin painalluksella, joka voisi aloittaa laskemisen tai lukea tietoja tiedostosta.
4648
4749``` pascal
4850procedure TForm1.FormCreate(Sender: TObject);
4951const
5052 N = 100;
5153 MIN = -10;
5254 MAX = 10;
5355var
5456 i: Integer;
5557 x: Double;
5658begin
5759 for i:=0 to N-1 do begin
5860 x := MIN + (MAX - MIN) * i /(N - 1);
5961 SinSeries.AddXY(x, sin(x));
6062 CosSeries.AddXY(x, cos(x));
6163 SinCosSeries.AddXY(x, sin(x)*cos(x));
6264 end;
6365end;
6466```
6567
6668Tämä metodi luo 100 datapistettä kuhunkin kuvaajaan. X:n arvot lasketaan olevan yhtä kaukana välillä `MIN` ja `MAX` eli -10 ja 10. Tärkeät rivit ovat ne joissa kutsutaan kunkin kuvaajan `AddXY` metodia. Tämä metodi vie x- ja y-koordinaatit kunkin datapisteeseen ja lisää ne sisäisen luetteloon. On myös ylikuormitettu versioita tähän metodiin, jossa voit myös siirtää tekstin datapisteen sekä yksittäisen värin, mutta emme tarvitse tätä ominaisuutta tällä kertaa.
6769
6870Mainittu luettelo on niin sanottu chart source - tämä on luokka, joka tarjoaa datat piirtämiseen. Voit käyttää sisäänrakennettua chart source:a, tai voit linkittää erikseen kuvaajaan. On erilaisia chart source:ja komponenttipalettissa, kuten
6971
7072- `TListChartSource` joka tallentaa datat luetteloon (tämän typpistä nyt käytetään)
7173- `TDBChartSource` joka on rajapinta tietokannan tietueisiin ja kenttiin
7274- `TUserDefinedChartSource` joka antaa erittäin yleisen pääsyn dataan, esimerkiksi, tallennetaan taulukkoon käyttäjän määrittät tietueet
7375- `TCalculatedChartSource` jonka avulla voidaan analysoida kuvaajan ja näyttää tulokset toisessa.
7476
7577Tämä on nyt tarpeeksi chart sources - sisäänrakennettu chart source riittää tähän projektiin.
7678
7779![](/wiki-images/b/b8/Tachart_getting_started_step2.png)
7880
7981Ok, käännä ja aja nyt ohjelma. Näemme kolme käyrää, ja x-akseli automaattisesti näyttä että datat vaihtelevat välillä -10 ja 10. No - ei aivan huono, mutta kaukana täydellisestä: kaavio on hyvin sekava, ei voi erottaa yksittäisiä rivejä, ja ei voi kertoa mikä kuvaaja kuuluu mihinkin.
8082
8183## Kuvaajien alustaminen
8284
8385Herää ajatus että selkeyttä voitaisiin saada muuttamalla eri kuvaajien värit erilaiseksi. Tämä tehdään valitsemalla komponenttimuokkaimessa kunkin kuvaajan oliopuussa muuttamalla `SeriesColor`ominaisuutta halutun väriseksi. `SeriesColor` määrittää sen värin joka yhdistää kuvaajan datapisteet.
8486
8587Kun muutit kaikki eri väriseksi ja käännät sen niin näet kuvaajat värillisinä. Mutta ohjelman käyttäjä ei voi erottaa mitä mitäkin on. Tarvitsemme selityspalkin (legend).
8688
8789## Lisätään selityspalkki (legend)
8890
8991Korosta kaavio ja komponenttimuokkaimessa mene kohtaan `Legend` ja avaa sen osa-ominaisuudet. Lopussa on `Visible` joka on oletuksena `false` - niin vaihda se `true`:ksi ja käännä.
9092
9193![](/wiki-images/2/2e/Tachart_getting_started_step3.png)
9294
9395No, siitä tuli parempi. Se mikä puuttuu, on selittävä teksti kullekin kuvaajalle, kuten `y = sin(x)`. Tätä varten kullakin kuvaajalla on ominaisuus `Title` - tässä on se teksti, joka näkyy selityspalkissa kunkin kuvaajan symbolin jälkeen. Seuraavaksi käydään läpi kaikki kuuvaajat uudelleen ja asetetaan komponenttimuokkaimessa `Title` kohdassa `y=sin(x)`, `y=cos(x)` tai `y=sin(x)*cos(x)` kuvaajaa vastaavasti.
9496
9597![](/wiki-images/5/5f/Tachart_getting_started_step4.png) ![](/wiki-images/2/20/Tachart_getting_started_step4a.png)
9698
9799Nyt kun kääntää niin kaavio on lähes täydellinen. Lähes - koska selityspalkki on melko suuri ja kaavio vie jäljellä olevan tilan joka on suhteellisesti katsoen pieni. Tietenkin voidaan kasvattaa lomakkeen kokoa. Toisaalta voidaan selityspalkki laittaa kaavion alle. Tämä onnistuu muuttamalla kaavion omaisuutta `Legend` ja asetamalla `Alignment` arvoksi `laBottomCenter` . Sekä myös asettaa `ColumnCount` arvoksi 3 , muuten kuvaajien selitystekstit ei tulee olemaan peräkkäin.
98100
99101![](/wiki-images/3/37/Tachart_getting_started_step5.png)
100102
101103Ah! - Kolmas merkintä on katkaistu, koska ikkuna ei ole tarpeeksi leveä. Muuta kaavion Align-ominaisuus `alClient`:ksi ja lisää ikkunan leveys hieman.
102104
103105## Hienosäätö
104106
105107Muutamia asioita voidaan vielä parantaa: akseleilla tulisi olla otsikko, kuten "x-akseli" ja "y-akseli", vastaavasti siellä pitäisi olla myös otsikko kaavion yläpuolella.
106108
107109Asetettaaksi otsikon x-akselille se onnistuu valitsemalla kaavion oliopuusta AxisList:n kohta `Bottom`. Avaa sen aliominaisuudet, etsi kohta `Title` ja sen aliominaisuuksiin. `Caption` kohdassa oleva teksti näytetään kaaviossa. Jos `Visible` on asetettu arvoon `true`. Tässä voidaan myös määrittää fontin tyyli. Tee sama `Left` kohtaan.
108110
109111Vastaavasti samaa menetelmää voidaan käyttää asettamaan kaavion otsikko: Siirry kaavion omaisuuteen `Title` , kirjoita otsikko kenttään `Text` (tässä voi käyttää monirivistä tekstiä) ja aseta `Visible` arvoon `true`.
110112
111113Ja lopuksi, voidaan käyttää vaikka kaavion taustalla valkoista väriä, tämä on muuttamalla omaisuutta `BackColor`. Ja ehkä ruudukkoa olisi vähemmän korostettava, eli se voisi näyttää paremmalta jos väri olisi `clSilver`. Muuta Left:n ja Bottom:n omaisuutta `Grid.Color` vaihtaaksesi sen.
112114
113115## Valmis!
114116
115117Lopulta kaavio näyttää tältä. Aika hieno? Eikä se ollut ollenkaan vaikeaa ...
116118
117119Jos haluat lisätietoja TAChart:sta niin vilkaise [[TAChart documentation]] ja tutkia joitakin niistä monista demoista, jotka tulevat TAChart:n mukana. Ne löytyvät kansiosta `components\tachart\demo` (ovat Lazaruksessa mukana).
118120
119121![](/wiki-images/2/2f/Tachart_getting_started_step6.png)
120122
121123## Lähdekoodi
122124
123125Tämän opetusohjelman lähdekoodi löytyy kansiosta *tutorials/getting_started* nimellä *getting_started.lpi*.
124126
125127### Projekti tiedosto
126128
127129``` pascal
128130program project1;
129131
130132{$mode objfpc}{$H+}
131133
132134uses
133135 {$IFDEF UNIX}{$IFDEF UseCThreads}
134136 cthreads,
135137 {$ENDIF}{$ENDIF}
136138 Interfaces, // this includes the LCL widgetset
137139 Forms, Unit1, tachartlazaruspkg
138140 { you can add units after this };
139141
140142{$R *.res}
141143
142144begin
143145 RequireDerivedFormResource := True;
144146 Application.Initialize;
145147 Application.CreateForm(TForm1, Form1);
146148 Application.Run;
147149end.
148150```
149151
150152### Unit1.pas
151153
152154``` pascal
153155unit Unit1;
154156
155157{$mode objfpc}{$H+}
156158
157159interface
158160
159161uses
160162 Classes, SysUtils, FileUtil, TAGraph, TASeries, Forms, Controls, Graphics,
161163 Dialogs;
162164
163165type
164166
165167 { TForm1 }
166168
167169 TForm1 = class(TForm)
168170 Chart1: TChart;
169171 SinSeries: TLineSeries;
170172 CosSeries: TLineSeries;
171173 SinCosSeries: TLineSeries;
172174 procedure FormCreate(Sender: TObject);
173175 private
174176 { private declarations }
175177 public
176178 { public declarations }
177179 end;
178180
179181var
180182 Form1: TForm1;
181183
182184implementation
183185
184186{$R *.lfm}
185187
186188{ TForm1 }
187189
188190procedure TForm1.FormCreate(Sender: TObject);
189191const
190192 N = 100;
191193 MIN = -10;
192194 MAX = 10;
193195var
194196 i: Integer;
195197 x: Double;
196198begin
197199 for i:=0 to N - 1 do begin
198200 x := MIN + (MAX - MIN) * i / (N - 1);
199201 SinSeries.AddXY(x, sin(x));
200202 CosSeries.AddXY(x, cos(x));
201203 SinCosSeries.AddXY(x, sin(x)*cos(x));
202204 end;
203205
204206end;
205207
206208end.
207209```
208210
209211### Unit.lfm
210212
211-``` pascal
213+``` lfm
212214object Form1: TForm1
213215 Left = 14
214216 Height = 244
215217 Top = 137
216218 Width = 347
217219 Caption = 'Form1'
218220 ClientHeight = 244
219221 ClientWidth = 347
220222 OnCreate = FormCreate
221223 LCLVersion = '1.1'
222224 object Chart1: TChart
223225 Left = 0
224226 Height = 244
225227 Top = 0
226228 Width = 347
227229 AxisList = <
228230 item
229231 Grid.Color = clSilver
230232 Minors = <>
231233 Title.LabelFont.Orientation = 900
232234 Title.LabelFont.Style = [fsBold]
233235 Title.Visible = True
234236 Title.Caption = 'y axis'
235237 end
236238 item
237239 Grid.Color = clSilver
238240 Alignment = calBottom
239241 Minors = <>
240242 Title.LabelFont.Style = [fsBold]
241243 Title.Visible = True
242244 Title.Caption = 'x axis'
243245 end>
244246 BackColor = clWhite
245247 Foot.Brush.Color = clBtnFace
246248 Foot.Font.Color = clBlue
247249 Legend.Alignment = laBottomCenter
248250 Legend.ColumnCount = 3
249251 Legend.Visible = True
250252 Title.Brush.Color = clBtnFace
251253 Title.Font.Color = clBlue
252254 Title.Font.Style = [fsBold]
253255 Title.Text.Strings = (
254256 'My first chart'
255257 )
256258 Title.Visible = True
257259 Align = alClient
258260 ParentColor = False
259261 object SinSeries: TLineSeries
260262 Title = 'y=sin(x)'
261263 LinePen.Color = clRed
262264 end
263265 object CosSeries: TLineSeries
264266 Title = 'y=cos(x)'
265267 LinePen.Color = clBlue
266268 end
267269 object SinCosSeries: TLineSeries
268270 Title = 'y=sin(x)*cos(x)'
269271 LinePen.Color = clGreen
270272 end
271273 end
272274end
273275```
274276
275277---
276278*From the Free Pascal wiki, page "TAChart Tutorial: Getting started/fi", as it stood on 2020-02-29 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