waapi.pas
aapinen.pas - WinAapinen
unit Aapinen;
{-------------------------------------------------------------------------------
Modulin tarkoituksena on olla WinAapisen pääohjelmana.
WinAapinen on tarkoitettu 1.5-5 vuotiaille erääksi apuvälineeksi
lukemisen opettelemiseen.
Tekijä: Vesa Lappalainen
Aika: 22.7.1996
Delphi-versio: 1.0 & 2.0
Muutokset: 22.7.1996
+ monipuolistettu käyttöä WinAapisen beta-versiosta (4.96)
23.8.1996
+ värien vaihto
+ Esto joka korkeintaan odotetaan ennen kuin uuden
nappulan saa painaa
+ CD-soitin optioksi (joku kone ei lähde käyntiin CD:n kanssa)
WinAapisen tietokantaa (WAapi.db) käsitellään WMuokkaa-ohjelmalla.
Tietokannan muoto löytyy sieltä.
WinAapisesa on kaksi päämoodia:
1. Kirjaimen painaminen arpoo jonkin ko. kirjaimella alkavan sanan
Optioista riippuen tällöin
- sanotaan sana
- näytetään sana
- näytetään sanan 1. kirjain isona
- näytetään sanan 1. kirjain pienenä
- näytetään mahdollinen sanaan liittyvä kuva
Välilyönnin painamisella sama sana toistetaan ja optiosta
riippuen kuten edellä sanotaa, näytetään ja annetaan kuva.
Tässä moodissa voidaan pelata esim. siten, että ...
2. Välilyönti (tai itse asiassa mikä tahansa näpääin) arpoo
tietokannasta sanan ja optioista riippuen jälleen sanoo, näyttää
ja/tai näyttää kuvan. Ennen sanomista voidaan vielä lisätä
sanomaan esim. "Mistä tulee ".
Tämän jälkeen pitää painaa oikeata kirjainta ja sitten saadaan
teksti "Hyvä" ja optioista riippuen sana uudelleen, sana näyttöön
ja sanaan liittyvä kuva.
Tässä moodissa voidaan pelata esim. siten, että ...
Kummassakin moodissa käyettävien sanoja ja kirjaimia voidaan rajata
tason avulla. Tietokannassa kullakin sanalla on tasonumero.
Voidaan esim. aivan opiskelun alkuvaiheessa pelata siten että
taso on 1-2 tai jopa 1-1. Tällöin kustakin kirjaimesta on käytössä
vain 2 tai yksi sanaa. Lisäksi kirjain-joukkoa voidaan rajata
antamalla esim. sallituiksi vain kirjaimet "AIMPÄ".
Myös tietokannassa voidaabn vaikemmat kirjaimet laittaa isommalle
tasolle, jolloin niitä ei saada alkuvaiheessa. Jatkossa yksinkertaisemmat
sanat voidaan rajata pois käyttämällä tasona esim. 3-9. Tasonumerot
ovat käyttäjän itsensä antamia eivätkä ne liity välttämättä mitenkään
ikävuosiin.
Tietokanta voidaan optiovalinnan mukaan pitää joko näkyvissä tai pois
näkyvistä "pelin" aikana.
Optiot on talletettu tiedostoon waapi.ini.
Moodikohtaiset optiot ovat osien "Options 1" ja vastaavasti "Options 2"
alla.
Tietokanta (waapi.db ja waapi.px) on samassa hakemistossa kuin itse
ohjelma samoin kuin kolme apuääntä (tyhjawav.wav, hyva.wav, kysymys.wav).
Muut äänet ovat hakemistossa wav\
Äänet voivat olla .wav, .mid, .avi tms. MediaPlayerin tuntemia tiedostoja.
Ääniä voi tehdä joko WMuokkaa-ohjelmalla tai millä tahansa esim. .wav
tiedostoja tuottavalla ohjelmalla. Itse asiassa jokin ohjelma, jolla
ääni voidaan leikata sopivan mittaiseksi ja säätää voimakkuus, olisi
kaikkein paras. Kutakin sanaa kohto pitää olla äänitiedosto.
Esim: Ä kirjaimesta tulee sana Äiti ja ääni luetaan tiedostosta aiti.wav.
Kuvat ovat hakemistossa bmp\
Kuvien pitää olla joko .bmp tai .wmf (Windows MetaFile) -tiedostoja.
.wmf-tiedostot vievä piirroskuvissa vähemmän tilaa.
Kuten äänienkin, pitää kutakin sanaa kohti olla oma .bmp -tiedosto.
Esim. äitin kuva voi olla skannattu tiedostoon aiti.bmp.
-------------------------------------------------------------------------------}
interface
uses
{ Windows, }Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, MPlayer, Mask, DBCtrls, DB, DBTables, ExtCtrls, Grids, Outline,
DirOutln, DBGrids, Menus,ali, TabNotBk, IniFiles, ComCtrls, chclr {, ComCtrls;}
;
type
TFormAapinen = class(TForm)
{ Näkymättömät komponentit ------------------------------------------------}
QueryAapinen: TQuery;
QueryAapinenKirjain: TStringField;
QueryAapinenNro: TFloatField;
QueryAapinenKuva: TStringField;
QueryAapinenSana: TStringField;
QueryAapinenAani: TStringField;
DataSourceAapinen: TDataSource;
MediaPlayerWav: TMediaPlayer;
MediaPlayerAvi: TMediaPlayer;
PopupMenuVari: TPopupMenu;
PopupVari: TMenuItem;
ColorChangeVari: TColorChange;
PanelMuut: TPanel; { Kaikki muut paitsi sana ------------------------------}
PanelTiedot: TPanel;
ButtonOptiot: TButton;
PanelOhjaimet: TPanel;
TabbedNotebookOhjaimet: TTabbedNotebook;
PanelTietokanta: TPanel;
DBEditKirjain: TDBEdit;
DBEditWavNimi: TDBEdit;
DBEditBmpNimi: TDBEdit;
DBGridAapinen: TDBGrid;
MediaPlayerCD: TMediaPlayer;
PanelOptiot: TPanel;
GroupBoxNakyy: TGroupBox;
LabelEnsin: TLabel;
CheckBoxKuva: TCheckBox;
CheckBoxAani: TCheckBox;
CheckBoxSana: TCheckBox;
CheckBoxIsoKirjain: TCheckBox;
CheckBoxPieniKirjain: TCheckBox;
LabelJalkeen: TLabel;
CheckBoxKuva2: TCheckBox;
CheckBoxAani2: TCheckBox;
CheckBoxSana2: TCheckBox;
CheckBoxIsokirjain2: TCheckBox;
CheckBoxPieniKirjain2: TCheckBox;
LabelTasoText: TLabel;
ComboBoxTaso: TComboBox;
Label_: TLabel;
ComboBoxTaso2: TComboBox;
LabelFont: TLabel;
MaskEditFont: TMaskEdit;
LabelEsto: TLabel;
MaskEditEsto: TMaskEdit;
CheckBoxIsotkirjaimet: TCheckBox;
CheckBoxTietokanta: TCheckBox;
CheckBoxKysymys: TCheckBox;
CheckBoxHyva: TCheckBox;
CheckBoxValilyontiArpoo: TCheckBox;
EditArvottavat: TEdit;
ButtonOptiotOK: TButton;
{ Panel optiot ----------------------------------------------------}
{ TabbedNotebookOhjaimet --------------------------------------------}
{ Panel ohjaimet ------------------------------------------------------}
PanelNappulat: TPanel;
ButtonPienena: TButton;
ButtonIsona: TButton;
{ Panel tiedot ----------------------------------------------------------}
PanelImage: TPanel;
ImageAapinen: TImage;
{ Panel muut --------------------------------------------------------------}
PanelSana: TPanel;
DBEditSana: TDBEdit;
CheckBoxCD: TCheckBox;
procedure MediaPlayerWavNotify(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure DBGridAapinenDblClick(Sender: TObject);
procedure DataSourceAapinenDataChange(Sender: TObject; Field: TField);
procedure ButtonIsonaClick(Sender: TObject);
procedure PanelSanaResize(Sender: TObject);
procedure CheckBoxIsotkirjaimetClick(Sender: TObject);
procedure TabbedNotebookOhjaimetChange(Sender: TObject;
NewTab: Integer; var AllowChange: Boolean);
procedure ButtonOptiotClick(Sender: TObject);
procedure ButtonOptiotOKClick(Sender: TObject);
procedure MaskEditFontChange(Sender: TObject);
procedure CheckBoxValilyontiArpooClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure PopupVariClick(Sender: TObject);
procedure CheckBoxCDClick(Sender: TObject);
private
{ Private declarations }
sanomassa : boolean;
aloitettu : TDateTime;
EdellinenOK : boolean;
yrityksia : integer;
MillaJatketaan:integer;
procedure LaitaKirjain;
procedure TyhjennaRuutu;
function SanoNykyinen1Kerran:integer;
function SanoNykyinen2Kerran:integer;
function ArvoTietue(c:char):integer;
function Sano(c:char):integer;
procedure SanoJaJatka(nimi:string; kumpi:integer);
function TutkiJaArvo(c:char):integer;
procedure TalletaIni(section:string);
procedure LueIni(section:string);
public
{ Public declarations }
end;
var
FormAapinen: TFormAapinen;
implementation
{$R *.DFM}
const IniNimi = '.\waapi.ini';
{------------------------------------------------------------------------------}
procedure TFormAapinen.LaitaKirjain;
{ Laittaa kirjaimen isona ja pienenä vastaaviin nappuloihin }
VAR key:string;
c,cp:char;
begin
if ( QueryAapinenKirjain.AsString <> '' ) then
c := QueryAapinenKirjain.AsString[1]
else
c := ' ';
c := isoksi(c); cp := pieneksi(c);
if ( c = cp ) then cp := ' ';
ButtonIsona.caption := c;
ButtonPienena.caption := cp;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.TyhjennaRuutu;
begin
ImageAapinen.Visible := CheckBoxKuva.Checked;
DBEditSana.Visible := CheckBoxSana.Checked;
ButtonIsona.Visible := CheckBoxIsokirjain.Checked;
ButtonPienena.Visible := CheckBoxPienikirjain.Checked;
end;
{------------------------------------------------------------------------------}
function TFormAapinen.SanoNykyinen1Kerran:integer;
{ Sanoo ja näyttää sanan optioiden perusteella 1. arpomisen jälkeen }
begin
SanoNykyinen1Kerran := 0;
if ( CheckBoxAani.Checked ) then begin
MediaPlayerWav.close;
SanoNykyinen1Kerran := SoitaTiedosto(QueryAapinenAani.AsString,MediaPlayerWav);
end;
if ( CheckBoxKuva.Checked ) then begin
NaytaTiedosto(QueryAapinenKuva.AsString,ImageAapinen,MediaPlayerAvi);
ImageAapinen.Visible := true;
end
else begin
MediaPlayerAvi.Close;
ImageAapinen.Visible := false; { Tämä vain jotta mahd. .AVI-kuva häviäisi }
ImageAapinen.Parent.Repaint; { - " - }
end;
DBEditSana.Visible := CheckBoxSana.Checked;
ButtonIsona.Visible := CheckBoxIsokirjain.Checked;
ButtonPienena.Visible := CheckBoxPienikirjain.Checked;
LaitaKirjain;
sanomassa := false;
end;
{------------------------------------------------------------------------------}
function TFormAapinen.SanoNykyinen2Kerran:integer;
{ Sanoo ja näyttää sanan optioiden perusteella "paljastaen sanan" }
begin
SanoNykyinen2Kerran := 0;
if ( CheckBoxAani2.Checked ) then begin
MediaPlayerWav.close;
SanoNykyinen2Kerran := SoitaTiedosto(QueryAapinenAani.AsString,MediaPlayerWav);
end;
if ( CheckBoxKuva2.Checked ) then begin
NaytaTiedosto(QueryAapinenKuva.AsString,ImageAapinen,MediaPlayerAvi);
ImageAapinen.Visible := true;
end
else begin
MediaPlayerAvi.Close;
ImageAapinen.Visible := false;
ImageAapinen.Parent.Repaint;
end;
DBEditSana.Visible := CheckBoxSana2.Checked;
ButtonIsona.Visible := CheckBoxIsokirjain2.Checked;
ButtonPienena.Visible := CheckBoxPienikirjain2.Checked;
LaitaKirjain;
sanomassa := false;
end;
{------------------------------------------------------------------------------}
function SQL_in(s:string):string;
{ Jos s = 'ABC', täytetään SQL ehdoksi: in ("A","B","C") }
var ehto:string;
i,len:integer;
begin
ehto := 'in (';
len := length(s);
for i:=1 to len do begin
ehto := ehto + '"' + s[i] + '",'
end;
SQL_in := ehto + '"XX")'; { Viimeinen hämäystä }
end;
{------------------------------------------------------------------------------}
function TFormAapinen.ArvoTietue(c:char):integer;
{-------------------------------------------------------------------------------
Arpoo uuden tietueen hakuehdon perusteella.
Jos c <= ' ', arvotaan koko tietokannasta ehdolla:
Jos esim. on rajattu arvonta kirjaimiin "ABC" ja taso 1-3, niin
kirjain in ("A","B","C") and Nro >= 1 and Nro <= 3
Jos kirjainten rajausehto puuttuu, niin käytetään vain tasorajoitusta.
Jos c > ' ', arvotaan ehdolla (esim c = 'A' )
kirjain = "A" and Nro >= 1 and Nro <= 3
Jos kirjainrajoitus on käytössä ja c ei kuulu kirjainjoukkoon, ei
arvota uutta tietuetta.
Tietokanta siirretään arvotun tietueen kohdalle.
Palautetaan:
0 = uusi arvonta onnistui
1 = ei arvottu
-------------------------------------------------------------------------------}
VAR key:string;
nro,lkm : longint;
arv,k_ehto : string;
begin
TyhjennaRuutu;
ArvoTietue := 1;
c := isoksi(c);
if ( c = '"' ) then exit; { SQL lause menee sekaisin " }
key := c; k_ehto := ''; arv := EditArvottavat.Text;
if ( key > ' ' ) then begin
k_ehto := 'Kirjain = "' + key + '" and ';
if ( arv > ' ' ) and ( Pos(key,arv) = 0 ) then exit;
end;
if ( k_ehto = '' ) and ( arv > ' ' ) then
k_ehto := 'Kirjain ' + SQL_in(arv) + ' and ';
QueryAapinen.Close; QueryAapinen.SQL.Clear;
QueryAapinen.SQL.Add('select * from WAapi where ' + k_ehto +
' Nro >= ' + ComboBoxTaso.Text +
' and Nro <= ' + ComboBoxTaso2.Text);
QueryAapinen.Open;
lkm := QueryAapinen.RecordCount;
if ( lkm = 0 ) then exit;
nro := Random(lkm)+1;
{ Siirrytään oikeaan tietueeseen }
if ( nro >= 2 ) then QueryAapinen.MoveBy(nro-1);
ArvoTietue := 0;
end;
{------------------------------------------------------------------------------}
function TFormAapinen.Sano(c:char):integer;
{-------------------------------------------------------------------------------
Palauttaa:
-1 = edellinen sanominen on kesken
1 = ei voi sanoa
0 = sanominen OK
Parametrit:
c = kirjain, joka sanotaan,
<= ' ' on erikoistapaus ja sillä sanotaan valittu sana
-------------------------------------------------------------------------------}
var esto:integer; ero : Double;
begin
sanomassa := true;
if ( c <= ' ' ) then begin Sano := SanoNykyinen2Kerran; exit; end;
try DBGridAapinen.SetFocus; except end;
Sano := -1;
if MediaPlayerWav.mode = mpPlaying then begin { Jos vielä soittaa edellistä }
esto := StrToInt(Trim(MaskEditEsto.Text));
ero := (Time - Aloitettu)*24*60*60*10;
if ( ero < esto ) then Exit;
MediaPlayerWav.close;
end;
ArvoTietue(c);
Aloitettu := Time;
Sano := SanoNykyinen1Kerran;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.MediaPlayerWavNotify(Sender: TObject);
begin
if ( MediaPlayerWav.NotifyValue <> nvSuccessful ) then exit;
MediaPlayerWav.notify := false;
MediaPlayerWav.OnNotify := NIL;
if ( MillaJatketaan = 1 ) then SanoNykyinen1Kerran;
if ( MillaJatketaan = 2 ) then SanoNykyinen2Kerran;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.SanoJaJatka(nimi:string; kumpi:integer);
begin
MediaPlayerWav.OnNotify := MediaPlayerWavNotify;
MillaJatketaan := kumpi;
SoitaTiedostoNotify('.\'+nimi+'.wav',MediaPlayerWav,true);
end;
{------------------------------------------------------------------------------}
function TFormAapinen.TutkiJaArvo(c:char):integer;
{ Tutkii onko painettu oikeata kirjainta edelliseen kysymykseen.
Jos on, niin seuraavalla painasulla sitten arvotaan uusi kysymys.
Jollei ole, lisätään yritysten määrää ja 3:lla väärällä arvotaan kuitenkin
uusi kysymys. ESCillä voidaan aina pyytää uusi kysymys
}
begin
TutkiJaArvo := -1;
if ( MediaPlayerWav.mode = mpPlaying ) then exit;
TutkiJaArvo := 0; sanomassa := true; Inc(yrityksia);
if ( c = #27 ) then yrityksia := 100; { ESC-näppäin arpoo aina uuden }
if ( not EdellinenOK ) and ( Isoksi(c) = QueryAapinenKirjain.AsString ) then begin
EdellinenOK := true;
if ( CheckBoxHyva.Checked ) then SanoJaJatka('Hyva',2);
exit;
end;
if ( EdellinenOK ) or ( yrityksia > 2 ) then begin
ArvoTietue(' ');
yrityksia := 0;
end;
if ( CheckBoxKysymys.Checked ) then SanoJaJatka('Kysymys',1);
EdellinenOK := FALSE;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.FormKeyPress(Sender: TObject; var Key: Char);
{ Koska lomakkeen KeyPreview on (toivottavasti) päällä, tullaan tänne aina
kun painetaan jotain ASCII-koodin tuottavaa merkkiä. Jollei KeyPreview
olisi päällä, tultaisiin tänne vain mikäli mikään lomakkeen kontrolleista
ei olisi valittuna, siis tuskin koskaan.
}
begin
if ( CheckBoxValilyontiArpoo.Checked ) then TutkiJaArvo(Key)
else Sano(Key);
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.DBGridAapinenDblClick(Sender: TObject);
begin
SanoNykyinen2Kerran;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.DataSourceAapinenDataChange(Sender: TObject;
Field: TField);
begin
if ( not sanomassa ) then SanoNykyinen1Kerran;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.ButtonIsonaClick(Sender: TObject);
begin
SanoNykyinen2Kerran;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.PanelSanaResize(Sender: TObject);
begin
DBEditSana.Width := PanelSana.Width;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.CheckBoxIsotkirjaimetClick(Sender: TObject);
begin
if ( CheckBoxIsotkirjaimet.Checked ) then
DBEditSana.CharCase := ecUpperCase
else
DBEditSana.CharCase := ecNormal;
QueryAapinen.Refresh;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.TabbedNotebookOhjaimetChange(Sender: TObject;
NewTab: Integer; var AllowChange: Boolean);
{ Tässä pitää KeyPreview ottaa pois päältä jos mennään Optiot-sivulle ja
vastaavasti laittaa takaisin kun sieltä poistutaan
}
begin
FormAapinen.KeyPreview := ( NewTab <> 1 );
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.ButtonOptiotClick(Sender: TObject);
begin
TabbedNotebookOhjaimet.PageIndex := 1;
TabbedNotebookOhjaimet.Visible := True;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.ButtonOptiotOKClick(Sender: TObject);
begin
TabbedNotebookOhjaimet.PageIndex := 0;
TabbedNotebookOhjaimet.Visible := CheckBoxTietokanta.Checked;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.LueIni(section:string);
var AapiIni:TIniFile;
begin
EdellinenOK := true; yrityksia := 0;
AapiIni := TIniFile.Create(IniNimi);
with AapiIni do begin
ComboBoxTaso.Text := ReadString(section,'Taso','1');
ComboBoxTaso2.Text := ReadString(section,'Taso 2','9');
MaskEditFont.Text := ReadString(section,'Font','140');
MaskEditEsto.Text := ReadString(section,'Esto','10');
EditArvottavat.Text := ReadString(section,'Arvottavat','');
CheckBoxIsotkirjaimet.Checked := ReadBool(section,'Isot kirjaimet' ,True);
CheckBoxTietokanta.Checked := ReadBool(section,'Tietokanta' ,True);
CheckBoxKuva.Checked := ReadBool(section,'Kuva' ,True);
CheckBoxAani.Checked := ReadBool(section,'Ääni' ,True);
CheckBoxSana.Checked := ReadBool(section,'Sana' ,True);
CheckBoxIsokirjain.Checked := ReadBool(section,'Iso kirjain' ,True);
CheckBoxPienikirjain.Checked := ReadBool(section,'Pieni kirjain' ,True);
CheckBoxKuva2.Checked := ReadBool(section,'Kuva 2' ,True);
CheckBoxAani2.Checked := ReadBool(section,'Ääni 2' ,True);
CheckBoxSana2.Checked := ReadBool(section,'Sana 2' ,True);
CheckBoxIsokirjain2.Checked := ReadBool(section,'Iso kirjain 2' ,True);
CheckBoxPienikirjain2.Checked := ReadBool(section,'Pieni kirjain 2',True);
CheckBoxKysymys.Checked := ReadBool(section,'Kysymys' ,True);
CheckBoxHyva.Checked := ReadBool(section,'Hyvä' ,True);
Free;
end;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.TalletaIni(section:string);
var AapiIni:TIniFile;
begin
AapiIni := TIniFile.Create(IniNimi);
with AapiIni do begin
WriteString(section,'Taso',ComboBoxTaso.Text);
WriteString(section,'Taso 2',ComboBoxTaso2.Text);
WriteString(section,'Font',MaskEditFont.Text);
WriteString(section,'Esto',MaskEditEsto.Text);
WriteString(section,'Arvottavat',EditArvottavat.Text);
WriteBool(section,'Isot kirjaimet',CheckBoxIsotkirjaimet.Checked);
WriteBool(section,'Tietokanta' ,CheckBoxTietokanta.Checked);
WriteBool(section,'Kuva' ,CheckBoxKuva.Checked);
WriteBool(section,'Ääni' ,CheckBoxAani.Checked);
WriteBool(section,'Sana' ,CheckBoxSana.Checked);
WriteBool(section,'Iso kirjain' ,CheckBoxIsokirjain.Checked);
WriteBool(section,'Pieni kirjain' ,CheckBoxPienikirjain.Checked);
WriteBool(section,'Kuva 2' ,CheckBoxKuva2.Checked);
WriteBool(section,'Ääni 2' ,CheckBoxAani2.Checked);
WriteBool(section,'Sana 2' ,CheckBoxSana2.Checked);
WriteBool(section,'Iso kirjain 2' ,CheckBoxIsokirjain2.Checked);
WriteBool(section,'Pieni kirjain 2' ,CheckBoxPienikirjain2.Checked);
WriteBool(section,'Kysymys' ,CheckBoxKysymys.Checked);
WriteBool(section,'Hyvä' ,CheckBoxHyva.Checked);
Free;
end;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.FormCreate(Sender: TObject);
var AapiIni:TIniFile;
begin
Randomize;
AapiIni := TIniFile.Create(IniNimi);
LueIni('Options 1');
with AapiIni do begin
CheckBoxValilyontiArpoo.Checked := ReadBool('Options','Välilyönti arpoo' ,False);
CheckBoxCD.Checked := ReadBool('Options','CD-soitin' ,False);
Free;
end;
ColorChangeVari.IniName := IniNimi;
ColorChangeVari.ReadColors;
if ( CheckBoxValilyontiArpoo.Checked ) then LueIni('Options 2');
TabbedNotebookOhjaimet.PageIndex := 0;
TabbedNotebookOhjaimet.Visible := CheckBoxTietokanta.Checked;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.FormClose(Sender: TObject; var Action: TCloseAction);
var AapiIni:TIniFile;
begin
AapiIni := TIniFile.Create(IniNimi);
with AapiIni do begin
WriteBool('Options','Välilyönti arpoo',CheckBoxValilyontiArpoo.Checked);
WriteBool('Options','CD-soitin' ,CheckBoxCD.Checked);
Free;
end;
if ( CheckBoxValilyontiArpoo.Checked ) then TalletaIni('Options 2')
else TalletaIni('Options 1');
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.MaskEditFontChange(Sender: TObject);
var code,koko:integer;
begin
Val(MaskEditFont.Text,koko,code);
DBEditSana.Font.Size := koko;
PanelSana.Height := DBEditSana.Height;
end;
{------------------------------------------------------------------------------}
procedure TFormAapinen.CheckBoxValilyontiArpooClick(Sender: TObject);
{ Kun "Välilyönti-arpoo" muuttuu, vaihdetaan ini-tiedostosta vastaavat
optiot ja talletetaan tietysti sitä ennen nykyisen tilan optiot.
}
begin
if ( CheckBoxValilyontiArpoo.Checked ) then begin
TalletaIni('Options 1');
LueIni('Options 2');
exit;
end;
TalletaIni('Options 2');
LueIni('Options 1');
end;
procedure TFormAapinen.PopupVariClick(Sender: TObject);
begin
ColorChangeVari.Ask(PopupMenuVari.PopupComponent);
end;
procedure TFormAapinen.CheckBoxCDClick(Sender: TObject);
begin
if CheckBoxCD.Checked then begin
MediaPlayerCD.DeviceType := dtCDAudio;
MediaPlayerCD.Enabled := true;
MediaPlayerCD.Visible := true;
MediaPlayerCD.AutoOpen := true;
MediaPlayerCD.Open;
end
else begin
MediaPlayerCD.Enabled := false;
MediaPlayerCD.AutoOpen := false;
MediaPlayerCD.DeviceType := dtAutoSelect;
MediaPlayerCD.Visible := false;
end;
end;
end.