Graafisten käyttöliittymien ohjelmointi -02

Yleisiä virheitä tai vinkejä ongelmiin


Graafisten käyttöliittymien ohjelmointi -01

Yleisiä virheitä tai vinkejä ongelmiin


004 Kysymys: Kuinka tehdään projekti Builderillä?
    Vastaus: MFC-ohjelma seuraavasti:
               1.File/New/MFC Wizard
               2.anna projektille nimi ja vaihda pallukka Project-kohdalle
               3.talleta "oikeaan" paikkaan
               4.Project/Add to project ja tarvittavat tiedostot (esim. kolmio.cpp)
               5.DECLARE_MESSAGE_MAP() jälkeen ei saa olla puolipistettä!
             WinAPI-ohjelma seuraavasti:
               1. Valitse New/Console Wizard
               2. Valitse C, ja poista Console Application
               3. Jos sinulla on jo valmis C-tiedosto, niin laita ruksi kohtaan
                  Specify Project Source ja kirjoita tiedoston nimi.
               4. Muista tehdä Save Project As.
               5. Lisää projektiin tarvitsemasi muut tiedostot.
             Console-ohjelma seuraavasti:
               1,3,4 ja 5 kuten WinApi
               2. Valitse C/CPP tarpeen mukaan, ja ruksaa Console Application

003 Kysymys: Delphi ohjelma kääntyy, mutta mitään ei ilmesty näkyviin?
    Vastaus: Katso ettei käytetä sekaisin CLX ja VLC-kirjastoja
             Eli samassa ohjelmassa ei ole esim. sekä QForms että Forms.
             Kokeile myös Project/Build All.

002 Kysymys: DemoWWW ei toimi
    Vastaus: Onko N-levy olemassa (komentorivillä NET USE)?
             Jos ei ole, niin:  net use n: \\wwwmit\mnt
             Onko N:\bin polussa (komentorivillä SET)?
             Jos ei ole, niin set path=n:\bin;%path%

001 Kysymys: Miten Delphi-komponentti testataan dynaamisesti
    Vastaus: Luodaan formin OnCreatessa tai jonkin buttonin OnClikissä
             ks: test2.pas - auton testaus
                 laskuri.pas - laskurin testaus

Graafisten käyttöliittymien ohjelmointi -00

Yleisiä virheitä tai vinkejä ongelmiin


001 Kysymys: WinApi tai MFC-ohjelmani ei käänny
    Vastaus: ks: ongelmat.txt - pääteohjauksissa vastaan tulleita yleisiä ongelmia

Graafisten käyttöliittymien ohjelmointi -97

Yleisiä virheitä tai vinkejä ongelmiin


001 Kysymys: Miten käsitellään joukkoa samalla tavalla
             nimettyjä komponentteja?
    Vastaus: ks. ForLabel.pas
002 Kysymys: Miten luetaan tiedostoja Delphissä.
    Vastaus: 1) Käyttämällä tiedostoa tietokantana
             2) Lukemalla riveittäin merkkijonoja ja pilkkomalla itse osiin
             3) Luetaan koko tiedosto TStringList -olioon.
             4) Käytetään .ini-tiedostoja
    Malli kohtiin 2-4

003 Kysymys: 1) Miten tehdään komponentti, joka vaihtaa kuvaansa Delphissä?
             2) Miten komponentti voi lähettää viestin?
             3) Miten luodaan oma bittikartta ajon aikana?
    Vastaus: 1) Peritään esim. TPaintBox ja ylimääritellään (override)
                Paint-metodi.  Jonkin attribuutin perusteella päätetään
                mitä piirretään.  Piirto esim. MoveTo-kutsuilla tai piirtämällä
                bittikartta.  Bittikartta voi olla TBitmap tai TImageList
             2) a) Lisätään komponenttiin osoittimia Event-metodeihin ja
                   toimitaan kuten esim. nappulan OnClick -tapahtuman kanssa.
                b) Lähetetään todella API:n SendMessage jollekin ikkunalle.
             3) Luodaan bittikartta ja piirretään bittikartan Canvakselle.
    Malli kohtiin 1,2a ja 3 = Autokomponentti, joka kääntyy reunoilla ja
    antaa isännälleen tapahtuman jokaisesta liikahduksesta ja kääntymisestä.

004 Kysymys: Miten käytetään omaa kursoria Delphissä.
    Vastaus: 1) Piirretään kursoriresurssi
             2) Ladataan kursori käyttöön ajonaikana
    Malli oman kursorin käytöstä


Graafisten käyttöliittymien ohjelmointi -96

Yleisiä virheitä

001 Ajonaikainen virhe:
    You have accidentally used the dummy version of OwlMain
     Esim. on
         int OwlMain(int,char far *)
     Vaika pitää olla
         int OwlMain(int,char far *[])


002 TicTac tyyppisen nappulat eivät näy:
     Esim. OWL 2.5:ssa MoveWindow ei toimi konstruktorissa
     Tee joko SetupWindow ja siirrä MoveWindow sinne TAI
     sijoita Attr.X = x; jne...