- GKO, luennot 15.-17.4.2004
- Omat komponentit
- Materiaali: Delphi-monisteen lisäys
- [ http://www.mit.jyu.fi/vesal/kurssit/winohj/html/delphi/omakom.htm ]
- Ks. myös Delphilinkit
- Delphin avustuksessa ks. Component writer's guide
- Delphi-Komponentti:
- luokka, joka on peritty TComponent-luokasta
- Osittain automatisoitu muistinhallinta: Komponentti vastaa omistamistaan komponenteista (jokaisella komponentilla on owner-property, joka määrittää komponentin omistajan)
- Ominaisuudet (propertyt): 'julkaistuja' attribuutteja, joita käsitellään omilla get/set-metodeilla ja joita voi säätää suoraan suunnitteluvaiheessa
- Tapahtumat (events): metodiosoittimia, joita kutsutaan käyttäjän toimintojen (tai itse määriteltyjen tapahtumakutsujen) jälkeen. voidaan säätää suoraan suunnitteluvaiheessa
- TPersistent-oliota kehittyneempi serialisointi (propertyt)
- Integrointi Delphin käyttöliittymään: komponenttipaletti ja object inspector
- Delphi-komponentit ovat Windowsissa samalla myös COM-komponentteja (=muunnettavissa ActiveX-kontrolleiksi, joita voi käyttää esim. Visual Basicissa ja Web-sivuilla IE:llä)
- Komponentit varastoidaan BPL-kirjastoissa, jotka ovat Borlandin muokkaamia DLL:ia
- Eri sovellukset voivat jakaa samat BPL:t (itse asiassa koko Delphin ajonaikainen kirjasto on joukko DPL-tiedostoja)
- Voidaan käyttää myös C++ Builderista
- Komponentit ja tapahtumat
- Materiaali: Tapahtumapohjainen ohjelmointi
- [ http://www.mit.jyu.fi/vesal/kurssit/winohj/html/delphi/omakom02.htm ]
- Jatketaan Laskurikomponenttia Delphi-monisteen mukaan...
- OnChange-tapahtuma
- Autolaskuri Laskurikomponentilla + laskurien summa
- Lask-paketin LisaaButton: esimerkki komponenttien muistinhallinnasta
- Esimerkkikomponentteja Comps-hakemistossa:
- TColorChange (vrt. 16.4. demot. värin vaihto helposti)
- DynKentät (ks. Puhlusovellus, vrt. koodia komponentilla ja ilman)
- Autolaskuri-esimerkki uusilla komponenteilla
- 'kaasutus' sliderilla
- huom. nopeus 'attribuutti' get/set-metodeilla
- lomakkeen monistaminen
- alkuperäinen lomake vastaa monistetun lomakkeen tuhoamisesta ('omistaa' monistetun lomakkeen)
- Huom. muistinhallinta
- labelien dynaaminen luonti ja 'vanhentaminen'
- Yhteenveto: Delphi-luokkahierarkiaa...
- Esimerkki: Laskurikomponentti