1.5.1997 build 4 1x2 Rich ohjelman laajennukset ============================== 1. Yleistä 2. 1NF tiedostot 3. OAN tiedostot 4. pitkä##.dat 5. lotto##.dat ja vilot##.dat 6. 1x2rich.ini 7. Taustan piirto 8. ohjelma.!!!:n käyttö 9. Budjetin lisäys *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* Yleistä ------- Ohjelma tukee myös käyttäjien itse tehtyjä laajennuksia. Näitä voivat kaikki ohjelman käyttäjät tehdä itse. Oman laajennuksen tekemiseen tarvitaan: * ohjelma.exe 'itse ohjelma * ohjelma.1nf 'infotiedosto jota päävalikko hyödyntää * tieto.dat 'mahdolliset laajennusohjelman tarvitsemat tiedostot Ohjelman on hyvä tukea seuraavia järjestelyitä: * ohjelma.!!! * end.$$$ * taustan piirto Tämä dokumentti selvittää tiedostomuotoja sekä päävalikon suhdetta aliohjelmiin. Ohjelmat tottelevat end.$$$ -käskyä, eli jos ko. tiedosto löytyy, suljetaan ohjelma. 1x2 Rich tutkii tätä kahden sekunnin välein. Jos ohjelma.!!! -löytyy, sieltä löytyviä käskyjä toteutetaan seuraavasti: Käsky Tapahtuma Versiot ----------------------------------------------- #0 Normaali 1.301+ #1 Minimized 1.301+ #2 Maximized 1.301+ #ConnectOnNet Lähetä tiedotOnNettiin 1.31 #end Suljetaan ohjelma 1.31 Normaali -------- Palauttaa ikkunan koon normaaliksi. Minimized --------- Muuttaa ikkunan koon pienennetyksi. Maximized --------- Suurentaa ikkunan koko kuvaruudun laajuiseksi ConnectOnNet ------------ Lähettää ikkunan tiedot Veikkauksen OnNet-järjestelmään. Ohjelma käynnistää selaimen ja jos tämä ei onnistu, osoite kopioidaan leikepöydälle. End --- Lopetetaan ohjelma. *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* 1NF tiedostot ------------- Ohjelma tukee myös käyttäjien itse tehtyjä laajennuksia. Näitä voivat kaikki ohjelman käyttäjät tehdä itse. Jokainen päävalikkoon lisättävä ohjelma tai tiedosto vaatii .1NF tiedoston, jonka rakenne on seuraava. '-merkit poistetaan. ----------Alku---------- 1. Headeri, jonka avulla ohjelma tunnistaa että kyseessä on oikea tyyppi '1x2 Rich ohjelman kuvaustiedosto' 2. Tiedostotyypin versio (1NF), versiossa 1.30 1 '1' 3. Ajettava ohjelma (esim. lotto.exe) 4. Painikkeen teksti (esim. Lotto ja Vikinglotto) 5. Ohjelman title (Options|aplication|title) 6. Laajennuksen versio (esim v. 1.0) 7. Tekijä (esim. Nettipaja) 8. Kuvatiedoston nimi (BMP) (esim. butlotto.bmp) ----------Loppu---------- ' VB Koodi fnum = FreeFile Open fname For Input As fnum Input #fnum, onko ' If onko <> "1x2 Rich ohjelman kuvaustiedosto" Then MsgBox fname & " on " & onko & ", tiedosto ei ehkä lataudu oikein!" End If Input #fnum, tyyli If tyyli < 1 Or tyyli > 1 Then MsgBox fname & " on uudempaa tai vanhempaa tyyppiä (" & tyyli & "), tiedosto ei ehkä lataudu oikein!" End If Input #fnum, onko If fileexists(onko) = False Then fname2 = onko Mid(fname2, Len(fname2) - 2, 3) = "exe" If fileexists(fname2) = False Then dis = False MsgBox onko & " ohjelma on määritelty tiedostossa " & fname & ", mutta sitä ei löydy!" End If Else fname2 = onko End If Input #fnum, onko If onko <> "" Then fileinfo = onko Else fileinfo = "[" & fname & "]" Input #fnum, onko If onko <> "" Then acti = onko Input #fnum, onko If onko <> "" Then verssu = onko Else verssu = "[tuntematon]" Input #fnum, onko If onko <> "" Then credit = onko Else credit = "[Nettipaja]" Input #fnum, onko If fileexists(onko) = True Then pic = onko Else pic = "" Close 'VB Koodi loppu *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* OAN tiedostot versio 2 (1x2rich 1.2) ------------------------------------ OAN tiedostoihin tallennetaan otteluanalyysit, eli analyysi-ikkunan tiedot. OAN versio 4 jota käyttää analyysi v. 1.31 'VB koodi alku, oan.bas Attribute VB_Name = "oan" ' .OAN Moduuli 'kenttien datat Global oandat(1 To 6, 0 To 5) As Integer 'pisteet koti, tasa... Global apiste(1 To 3) As Integer Global kerroin1 As Single, kerroinx As Single Global kerroin2 As Single Global jengi1 As String, jengi2 As String Global prokoti As Single, provieras As Single, protasa As Single Global tuloskoti As Single, tulosvieras As Single Global suhtker(1 To 3) As Integer Global painotus As Integer Global kommentti As String Public Sub lataaoan(fname As String) On Error GoTo uups Dim soi As Integer, soj As Integer fnum = FreeFile If fileexists(fname) Then Open fname For Input As fnum Input #fnum, tyyli If tyyli < 1 And tyyli > 4 Then MsgBox fname & " on uudempi tai vanhempi (" & tyyli & "). Yritetään silti jatkaa." End If Input #fnum, onko If onko <> "Otteluanalyysi" Then MsgBox "Tiedosto on (" & onko & "), ei voida jatkaa!" Close Exit Sub End If Input #fnum, jengi1 Input #fnum, jengi2 For loi = 0 To 5 For loj = 1 To 6 Input #fnum, oandat(loj, loi) Next Next Line Input #fnum, onko If tyyli > 3 Then kerroin1 = CSng(onko) / 100 Else kerroin1 = Val(onko) End If Line Input #fnum, onko If tyyli > 3 Then kerroinx = CSng(onko) / 100 Else kerroinx = Val(onko) End If Line Input #fnum, onko If tyyli > 3 Then kerroin2 = CSng(onko) / 100 Else kerroin2 = Val(onko) End If Input #fnum, painotus If tyyli > 1 Then Input #fnum, kommentti If tyyli > 2 Then Input #fnum, prokoti '3 versioalku Input #fnum, protasa Input #fnum, provieras Line Input #fnum, onko tuloskoti = Val(onko) / 100 Line Input #fnum, onko tulosvieras = Val(onko) / 100 For soi = 1 To 3 Input #fnum, apiste(soi) Next For soi = 1 To 3 Input #fnum, suhtker(soi) Next End If Close Else MsgBox "Tiedostoa " & fname & " ei löydy!" End If Exit Sub uups: MsgBox Error, , "Lataa .oan: " & fname Resume Next End Sub Public Sub tallennaoan(fname) On Error GoTo nohei Dim soi As Integer, soj As Integer fnum = FreeFile Open fname For Output As fnum Print #fnum, "4" Print #fnum, "Otteluanalyysi" Print #fnum, jengi1 Print #fnum, jengi2 For soi = 0 To 5 For soj = 1 To 6 Print #fnum, oandat(soj, soi) Next Next Print #fnum, kerroin1 * 100 Print #fnum, kerroinx * 100 Print #fnum, kerroin2 * 100 Print #fnum, painotus If ur <> 2 Then kommentti = "Tehty rekisteröimättömällä versiolla." Print #fnum, kommentti Print #fnum, prokoti '3 versioalku Print #fnum, protasa Print #fnum, provieras Print #fnum, tuloskoti * 100 Print #fnum, tulosvieras * 100 For soi = 1 To 3 Print #fnum, apiste(soi) Next For soi = 1 To 3 Print #fnum, suhtker(soi) Next Close Exit Sub nohei: MsgBox Error, , "Tallenna .oan" Resume Next End Sub 'VB Koodi loppu *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* pitkä##.dat tiedostot versio 5 (1x2 Rich 1.2) --------------------------------------------- Pitkävetotiedosto. ----------Alku---------- 1. Tiedostotyypin versio (pitkä##.dat), versiossa 1.2x '5' '5' 2. Headeri, jonka avulla ohjelma tunnistaa että kyseessä on oikea tyyppi 'Pitkävetotiedosto' 3. Panos 4. Hinta 5. Järjestelmä: 1, 4, 5, 10, 15, 20 tai 60 6. Kohteet 7. Tiedot -\ kohtet - Kohde - merkki1 - merkkix - merkki2 - Mahdollisuus prosentteina 1 (pro1) - Mahdollisuus prosentteina x (prox) - Mahdollisuus prosentteina 2 (pro2) - Ottelu -\ 3 - kerroin -/ - Kohteen mahdollisuus toteutua (pro1 + prox + pro2) -\ jos tyyli > 4 - Ottelun OAN tiedosto -/ -/ 8. Viikko 9. Vuosi ----------Loppu---------- ' VB Koodi: Open fname For Input As fnum Input #fnum, tyyli If tyyli < 4 Or tyyli > 5 Then Close MsgBox "Uudempi tai vanhempi tiedosto (" & tyyli & "), ei voida jatkaa !" Exit Sub End If Line Input #fnum, onko If onko <> "Pitkävetotiedosto" Then MsgBox "Tämä on _* " & onko & " *_, ei voida jatkaa !" Close Exit Sub End If Input #fnum, pitkäpanos Input #fnum, pitkähinta Input #fnum, pitkäjärj Input #fnum, pkm For i = 1 To pkm Input #fnum, pitkäkohde(i) text1(i - 1).Text = Val(pitkäkohde(i)) Input #fnum, pitmerkki1(i) Input #fnum, pitmerkkix(i) Input #fnum, pitmerkki2(i) Input #fnum, pro1(i) Input #fnum, prox(i) Input #fnum, pro2(i) Line Input #fnum, ottelu(i) For j = 1 To 3 Line Input #fnum, kerroin(i, j) ' ! line ! Next textkerroin1(i - 1) = kerroin(i, 1) textkerroinx(i - 1) = kerroin(i, 2) textkerroin2(i - 1) = kerroin(i, 3) Input #fnum, pitpc(i) If tyyli > 4 Then Line Input #fnum, pottfname(i) End If Next i Input #fnum, viikko Input #fnum, vuosi hscrollviikko.Value = viikko hscrollvuosi.Value = vuosi Close ' VB koodi loppu *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* lotto##.dat ja vilot##.dat tiedostot versio 4 --------------------------------------------- Lottotiedostojen rakenne (1x2 Rich 1.2 ja 1.30) ' VB koodi fnum = FreeFile Open fname For Input As fnum Input #fnum, tyyli If tyyli <> 4 Then MsgBox "Tämä on uudempi tai vanhempi lottotiedosto, ei voida jatkaa!" Close Exit Sub End If '*******Tyyli4******** If tyyli = 4 Then Line Input #fnum, onko If onko = "Lottotiedosto" Then Else msg = "Äläpä lottoa, tämä ei ole 1x2rich Lottotiedosto" msg = msg + ". Tämä on " & onko MsgBox msg, , versio Close Exit Sub End If Input #fnum, lottotyyli '1=Lotto, 2=Vikinglotto Input #fnum, lottorivi 'montako riviä Input #fnum, lottojärj 'Lotto: järjestelmä, 1= tavallinen, 2=järj8... 6=harava12... 'Vikinglotto: 1=tavallinen,2=järj8... 7=harava12... Input #fnum, lottoviikot 'viikkoa voimassa Input #fnum, viikko Input #fnum, vuosi hscrollviikko.Value = viikko hscrollvuosi.Value = vuosi HScrollviikko_Change If lottotyyli = 1 Then For i = 1 To lottorivi For j = 1 To lottojärj + 6 Input #fnum, lottonum(i, j) Next Next End If If lottotyyli = 2 Then For i = 1 To lottorivi For j = 1 To lottojärj + 5 Input #fnum, lottonum(i, j) Next Next End If Close 'VB koodi loppu *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* 1x2rich.ini tiedosto versiot 1, 2 ja 3 -------------------------------------- Versio 1 -> 1.2 2 -> 1.30x 3 -> 1.31 ' VB Koodi: Attribute VB_Name = "LATAAINI" Sub lataaini() 'varsinainen ini On Error GoTo lierr fname = "1x2rich.ini" If fileexists(fname) = True Then fnum = FreeFile Open fname For Input As fnum Line Input #fnum, onko If onko <> "1x2rich initiedosto" Then Close MsgBox fname & " on " & onko Exit Sub End If Input #fnum, tyyli If tyyli < 1 Or tyyli > 3 Then Close MsgBox fname & " on uudempi (" & tyyli & ") kuin ohjelma. (x<>1)" Exit Sub End If Line Input #fnum, onko Input #fnum, painotussäätö If tyyli > 1 Then Line Input #fnum, onko Input #fnum, tausta End If If tyyli > 2 Then Line Input #fnum, onko Input #fnum, gBrowserName End If Close Else painotussäätö = 5 tausta = True gBrowserName = "" MsgBox "Tiedostoa " & fname & " ei löydy!" End If If painotussäätö < 0.1 Or painotussäätö > 50 Then painotussäätö = 5 Exit Sub lierr: MsgBox Error, , "Lataa 1x2rich.ini" Resume Next End Sub ' VB koodi loppu *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* Taustan piirto -------------- Kaikki 1x2rich 1.30 versiosta ylöspäin piirtävät taustan seuraavalla koodilla. ' VB Koodi: Sub pita(frm As Form) On Error GoTo pitar Dim px As Integer, py As Integer 'tausta.picture on taustan apukehys 'tausta.bmp on vakiotausta 'kutsu koodia ' 'pita me ' 'Pistä tämä Bassiin: ' ' Declare Function bitblt Lib "GDI" (ByVal ThDC%, ByVal Tx%, ByVal Ty%, ByVal w%, ByVal h%, ByVal ShDC%, ByVal Sx%, ByVal Sy%, ByVal rop&) As Integer ' If tausta = True Then Screen.MousePointer = 11 If fileexists("tausta.bmp") Then frm.tausta.Picture = LoadPicture("tausta.bmp") Debug.Print "koko:", frm.ScaleWidth, frm.tausta.Width For px = 0 To frm.ScaleWidth + frm.tausta.Width Step frm.tausta.Width For py = 0 To frm.ScaleHeight + frm.tausta.Height Step frm.tausta.Height x% = bitblt(frm.hDC, px, py, frm.tausta.Width, frm.tausta.Height, frm.tausta.hDC, 0, 0, &HCC0020) Next py Next px DoEvents frm.Refresh End If Screen.MousePointer = 0 End If Exit Sub pitar: MsgBox Error, , "pita" Exit Sub End Sub 'VB koodi loppu *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ohjelma.!!!:n käyttö -------------------- Ajetaan ohjelma butlaunch(index) tai activoidaan activatetitle(index) ja kirjoitetaan ohjelma.!!! ' VB Koodi AppActivate activatetitle(index) If Err Then x = Shell(butlaunch(index), 1) Debug.Print butlaunch(index) Else 'Jos löytyy, lähetä viesti "normaali" fname = butlaunch(index) Mid(fname, Len(fname) - 2, 3) = "!!!" fnum = freefile Open fname For Output As fnum Print #fnum, "#0" Close End If ' VB koodi loppu Tarkastatetaan löytyykö end.$$$ tai ohjelma.!!! ' VB koodi If fileexists("end.$$$") = True Then End Dim fnamex As String fnamex = "lotto.!!!" fnum = FreeFile If fileexists(fnamex) Then ' HUOM fnamex !!! ' ^ Open fnamex For Input As fnum Input #fnum, onko Call event(Me, onko) Close Kill fnamex End If ' VB Koodi loppu Eventit ' VB koodi Sub event(frm As Form, eventcmd As String) Dim eventverssu As String eventverssu = "1x2 Rich event v. 1.31" Select Case eventcmd Case "#0" frm.WindowState = 0 Case "#1" frm.WindowState = 1 Case "#2" frm.WindowState = 2 Case "#end" '1.31+ End Case "#ConnectOnNet" '1.31+ On Error Resume Next frm.DDEThing.Text = "ConnectOnNet" Case Else MsgBox "Tuntematon käsky " & eventcmd, , eventverssu End Select End Sub ' VB Koodi loppu *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* ************************************************************ *<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>**<>* Budjettiin lisäys ----------------- Budjettiin voidaan helposti lisätä tapahtuma seuraavien koodien avulla. ' VB Koodi If ur = 2 Then i = MsgBox("Lisätäänkö tämä budjettiin ?", 4 + 32 + 256) If i = 7 Then Exit Sub lisääbudjet ("Budjet|" & tieto(1).Caption & "|Tulosveto||" & tulhinta & "|") ' Tunniste päiväys aihe ^^- ei+, ^^- hinta End If ' VB Koodi loppu Lisääbudjet sub ' VB Koodi Sub lisääbudjet(textiä As String) On Error GoTo Hupskeikkaaa fnum = FreeFile Open "budjet.!!!" For Append As fnum Print #fnum, textiä Close Exit Sub Hupskeikkaaa: MsgBox Error, , "Lisääbudjet: " & textiä Resume Next End Sub ' VB Koodi loppu