Mikä on delphin käyttöliittymä. Tiivistelmä: Delphi-ohjelmointiympäristön avoimien rajapintojen käyttö. Normaalit käyttöliittymäelementit

Yksi ja eniten vahvuuksia ympäristöön Delphi ohjelmointi on sen avoin arkkitehtuuri, jonka ansiosta Delphi mahdollistaa eräänlaisen metaohjelmoinnin, jolloin voit "ohjelmoida ohjelmointiympäristöä". Tämä lähestymistapa vie Delphin laadullisesti uudelle tasolle sovelluskehitysjärjestelmissä ja mahdollistaa muiden integroinnin työkaluja, joka tukee lähes kaikkia sovellusjärjestelmien luomisen vaiheita. Näin laaja valikoima mahdollisuuksia avautuu Delphissä toteutetun ns. avoimien rajapintojen konseptin ansiosta, jotka ovat yhteyslinkki IDE:n (Integrated Development Environment) ja ulkoisten työkalujen välillä.

Tämä artikkeli on omistettu Delphin avoimille käyttöliittymille ja antaa yleiskatsauksen niiden tarjoamista ominaisuuksista. Delphi määrittelee kuusi avointa käyttöliittymää: työkaluliittymä, suunnitteluliittymä, asiantuntijaliittymä, tiedostoliittymä, muokkausliittymä ja versionhallintaliittymä. On epätodennäköistä, että tämän artikkelin puitteissa pystyisimme kattamaan ja havainnollistamaan yksityiskohtaisesti kunkin niistä ominaisuuksia. Delphin lähdetekstit auttavat sinua ymmärtämään käsiteltäviä asioita perusteellisemmin, onneksi kehittäjät ovat toimittaneet niille yksityiskohtaisia ​​kommentteja. Julkisia rajapintoja edustavien luokkien ilmoitukset ovat vastaavissa moduuleissa hakemistossa...\Delphi\Source\ToolsAPI. Suunnitteluliittymä (moduuli DsgnIntf.pas) tarjoaa työkaluja ominaisuuseditorien ja komponenttieditorien luomiseen.

Ominaisuus- ja komponenttieditorit ovat erillisen keskustelun arvoinen aihe, joten muistetaan vain, että ominaisuuseditori ohjaa Object Inspectorin toimintaa yrittäessään muuttaa vastaavan ominaisuuden arvoa ja komponenttieditori aktivoituu kaksoisnapsauttamalla hiiren vasen painike lomakkeelle sijoitetun komponentin kuvan päälle. Version Control Interface (VCSIntf.pas-moduuli) on tarkoitettu versionhallintajärjestelmien luomiseen. Versiosta 2.0 lähtien Delphi tukee integroitua versionhallintajärjestelmää Intersolv PVCS, joten useimmissa tapauksissa ei ole tarvetta kehittää omaa järjestelmää. Tästä syystä jätämme huomiotta myös versionhallintaliittymän. Tiedostoliittymän (FileIntf.pas-moduulin) avulla voit ohittaa työtiedoston IDE-järjestelmä, joka antaa sinulle mahdollisuuden valita omalla tavalla tiedostojen tallentamiseen (esimerkiksi tietokantapalvelimen Memo-kenttiin). Edit Interface (moduuli EditIntf.pas) tarjoaa pääsyn lähdetekstipuskuriin, jonka avulla voit analysoida ja luoda koodia, määrittää ja muuttaa kohdistimen sijaintia koodieditori-ikkunassa sekä ohjata lähdetekstin syntaktista korostusta.

Erikoisluokat tarjoavat rajapinnat lomakkeeseen sijoitettuihin komponentteihin (komponentin tyypin määrittäminen, viittausten hankkiminen ylä- ja alakomponentteihin, ominaisuuksien käyttö, kohdistuksen siirto, poistaminen jne.), itse lomakkeeseen ja projektin resurssitiedostoon. Muokkausliittymän avulla voit myös tunnistaa ns. modulaariset ilmoitukset, jotka määrittävät reaktion tapahtumiin, kuten moduulin lähdetekstin muuttaminen, lomakkeen muuttaminen, komponentin uudelleennimeäminen, moduulin tallentaminen, uudelleennimeäminen tai poistaminen, projektin resurssitiedoston muuttaminen, jne. Työkalun käyttöliittymä (ToolIntf-moduuli. pas) tarjoaa kehittäjille keinon saada yleistä tietoa IDE:n tilasta ja suorittaa toimintoja, kuten projektien ja yksittäisten tiedostojen avaamista, tallentamista ja sulkemista, moduulin luomista, nykyisen projektin tietojen hankkimista. (moduulien ja lomakkeiden lukumäärä, niiden nimet jne.) , rekisteröinti tiedostojärjestelmä, rajapintojen järjestäminen yksittäisiin moduuleihin jne. Modulaaristen ilmoitusten lisäksi Tool Interface määrittelee lisäosat, jotka ilmoittavat tapahtumista, kuten tiedostojen ja projektien avaamisesta/sulkemisesta, työpöytäprojektitiedoston lataamisesta ja tallentamisesta, projektimoduulien lisäämisestä/poissulkemisesta, pakettien asentamisesta/poistamisesta, projektin kokoamisesta ja in Toisin kuin modulaariset ilmoitukset, lisäosien ilmoittajien avulla voit peruuttaa joidenkin tapahtumien suorittamisen.

Lisäksi Tool Interface tarjoaa tavan päästä Delphi IDE:n päävalikkoon, jolloin voit upottaa siihen lisäkohteita. Expert Interface (ExtIntf.pas-moduuli) on perusta asiantuntijoiden luomiselle - ohjelmistomoduuleille, jotka on sisäänrakennettu IDE:hen laajentamaan sen toimintoja. Esimerkki asiantuntijasta on Delphi Database Form Wizard, joka luo lomakkeen tietokantataulukon sisällön tarkastelua ja muuttamista varten. Asiantuntijaluokan määrittämisen jälkeen meidän on varmistettava, että Delphi "oppii" asiantuntijastamme. Tätä varten sinun on rekisteröitävä se kutsumalla RegisterLibraryExpert-proseduuri ja välitettävä sille parametrina asiantuntijaluokan esiintymä. Tehdään esimerkkinä yksinkertainen esStandard-tyylinen asiantuntija, joka, kun valitset vastaavan Delphi-valikkokohdan, näyttää viestin, että se on käynnissä. Kuten yllä olevasta taulukosta näet, esStandard-tyyli edellyttää kuuden menetelmän ohittamista:

Jotta asiantuntija saadaan "toimiin", sinun on valittava Komponentti/Asenna komponentti... -valikkokohta, valittava Selaus-valintaikkunasta asiantuntijan sisältävä moduuli (tapauksessamme exmpl_01.pas), napsauta OK ja dclusr30.dpk-paketin kääntämisen jälkeen Delphin päävalikon Ohje-osiossa Simple Expert 1 -kohdan pitäisi ilmestyä, kun se on valittuna, näkyviin tulee ilmoitus "Standard Expert aloitti!". Miksi Delphi sijoittaa asiantuntija-valikkokohdan Ohje-osioon, jää mysteeriksi. Jos et pidä siitä, että valikon kohta näkyy missä Delphi haluaa, ei missä haluat, seuraava vaihtoehto on mahdollinen: luo asiantuntija apuohjelmatyyliin, joka eliminoi automaattinen luominen valikkokohta ja lisää valikkokohta "manuaalisesti" työkaluliittymän avulla. Näin voit asettaa uuden kohteen sijainnin päävalikossa mielivaltaisella tavalla.

Lisätäksesi valikkokohdan, käytä työkalurajapinnan perustana olevaa TIToolServices-luokkaa sekä luokkia TIMenuIntf, TIMEnuItemIntf, jotka toteuttavat liitännät IDE-päävalikkoon ja sen kohtiin. ToolServices-luokan TIToolServices ilmentymä luo itse IDE, kun se alustetaan. Huomaa, että vastuu Delphin päävalikon ja sen kohteiden käyttöliittymien julkaisemisesta on täysin kehittäjällä. Matkan varrella monimutkaistaan ​​hieman asiantuntijan toiminnallista kuormitusta: kun aktivoit sen valikkokohdan, se antaa varmenteen vuonna avatun projektin nimestä. Tämä hetki ympäristössä: Tässä esimerkissä keskeisellä paikalla on AddIDEMenuItem-toiminto, joka lisää valikkokohdan Delphi IDE:n päävalikkoon. Parametreina se vastaanottaa uuden valikkokohdan tekstin, sen tunnisteen, sen kohdan tunnisteen, jonka eteen uusi kohta lisätään, symbolinen esitys näppäin, jolla yhdessä Ctrl-näppäimen kanssa pääsee nopeasti uuteen kohteeseen, sekä tapahtumakäsittelijä, joka vastaa uuden kohteen valintaa. Olemme lisänneet uuden valikkokohdan Näytä-osioon ennen Kellot-kohtaa.

Tutustutaanpa nyt ilmoittajiin. Määritetään apuohjelma, joka seuraa projektien sulkeutumista/avaamista ja muokkaa aktiivisen projektin nimen tallentavaa kenttää vastaavasti (jätämme lyhennyksen vuoksi pois sellaisten menetelmien toteutuksen, jotka eivät ole muuttuneet edelliseen esimerkkiin verrattuna): Toteuttaaksemme ilmoituksen, olemme määrittäneet TAddInNotifier-luokan, joka on jälkeläinen TIAddInNotifier, ja ohittanut FileNotification-menetelmän. IDE kutsuu tätä menetelmää aina, kun tapahtuu tapahtuma, johon apuohjelman ilmoittaja voi vastata (jokainen tällainen tapahtuma on merkitty vastaavalla TFileNotification-tyypin vakiolla). TAddInNotifier-luokan Asiantuntija-kenttä on tottunut palautetta asiantuntijan kanssa (TAddInNotifier.FileNotification-menetelmä). Asiantuntijan tuhoajassa ilmoittaja poistetaan ja ilmoittaja tuhotaan. Havainnollistetaan nyt modulaaristen ilmaisimien käyttöä. Luodaan apuohjelman asiantuntija, joka lähettää viestejä jokaisesta projektitiedoston tallennustoimenpiteestä (lyhyyden vuoksi emme esitä meille jo tuttujen menetelmien toteutusta): Tässä esimerkissä apuohjelman asiantuntija seuraa tapahtumia vastaten hankkeiden avaamista/päättämistä.

Joka kerta kun projekti avataan, rekisteröidään projektitiedostoa vastaava modulaarinen ilmoitus. Toteutuksen suhteen modulaariset ilmoitukset ovat samanlaisia ​​kuin lisäosoittimet: määrittelemme TModuleNotifier-luokan, joka on TIModuleNotifierin jälkeläinen, ja ohitamme sen Notify- ja ComponentRenamed-metodit. IDE kutsuu Notify-menetelmää, kun tiettyjä tähän moduuliin liittyviä tapahtumia tapahtuu; Tässä menetelmässä määritetään reaktio tiettyyn tapahtumaan. ComponentRenamed-menetelmää kutsutaan, kun komponentin nimi moduulilomakkeessa muuttuu. Huomaa, että emme käytä tätä menetelmää, mutta meidän on ohitettava se, muuten komponentin nimen muuttuessa kutsutaan perusluokan abstraktia menetelmää, mikä johtaa arvaamattomiin seurauksiin.

Modulaarisen ilmoituksen rekisteröinti on hieman monimutkaisempi prosessi kuin apuilmoituksen rekisteröinti: hankimme ensin moduulirajapinnan (TIModuleInterface) ja sitten rekisteröimme ilmoituksen moduulirajapinnalla. Kun projekti suljetaan, modulaarisen ilmoituksen rekisteröinti poistetaan (jälleen TIMOduleInterfacen avulla) ja ilmoittaja tuhoutuu. Lopuksi näytämme, kuinka voit määrittää kursorin sijainnin koodieditori-ikkunassa. Luodaan asiantuntija, joka vastaavaa valikkokohtaa valittaessa näyttäisi viestin, joka sisältää aktiivisen tiedoston nimen ja kursorin sijainnin siinä (vain oleellisten toteutus tämä esimerkki menetelmät): Kohdistimen sijainnin määrittämiseksi meidän on hankittava seuraava rajapintojen sarja: modulaarinen liitäntä (TIModuleInterface); koodieditorin käyttöliittymä (TIEditorInterface); moduulin esittelyliittymä editoriikkunassa (TIEditView).

Jos asiantuntijavalikon kohtaa valittaessa lähdetekstitiedosto (*.pas) on aktiivinen, näyttöön tulee viesti, joka sisältää aktiivisen tiedoston nimen ja kursorin nykyisen sijainnin siinä. Jos aktiivinen tiedosto ei ole pas-tiedosto, viestiä ei lähetetä. Saadaksesi aktiivisen tiedoston nimen, käytä TIToolServices-luokan GetCurrentFile-metodia. Tämä päättää pohdiskelumme tapoista käyttää avoimia käyttöliittymiä. CD-ROM sisältää kaikkien annettujen esimerkkien lähdekoodin. CD-ROM sisältää myös monimutkaisemman ja yksityiskohtaisemman esimerkin, joka sisältää apuohjelman asiantuntijan, jonka avulla käyttäjä voi lisätä Delphi-moduulien lähdetekstin kirjanmerkkeihin. Lyhyt opas Bookmarks Expertin asentamiseen ja käyttöön on tiedostossa bkmrks97.htm. Joten tämä artikkeli tarjoaa yleiskatsauksen avoimista liitännöistä ja esimerkkejä niiden käytöstä. Toistakaamme vielä kerran: avoimien käyttöliittymien lähdekoodien saatavuuden ansiosta voit helposti ymmärtää sinua kiinnostavat yksityiskohdat. Toivomme, että avoimien käyttöliittymien tarjoamat mahdollisuudet antavat sinulle enemmän kuin yhden rohkean ja hyödyllisen idean.

Olio-ohjelmointi (OOP) sisältää luokan käsitteen lisäksi myös rajapinnan peruskäsitteen.

Mikä on käyttöliittymä ja mitä ominaisuuksia sen kanssa työskenteleminen on Delphi-ohjelmointikielellä?

Käyttöliittymä on semanttinen ja syntaktinen rakennelma ohjelmakoodissa, jota käytetään määrittämään luokan tai komponentin tarjoamat palvelut (Wikipedia).

Pohjimmiltaan rajapinta määrittelee luettelon ominaisuuksista ja menetelmistä, joita on käytettävä, kun työskennellään tämän rajapinnan toteuttaman luokan kanssa, sekä niiden allekirjoituksen (nimi, tietotyyppi, hyväksytyt parametrit (menettelyille ja funktioille) jne.). Näin ollen luokan, joka toteuttaa tietyn rajapinnan, on toteutettava kaikki sen komponentit. Lisäksi tiukasti sen mukaisesti, miten ne on kuvattu siinä.

Liitäntöjä verrataan usein abstrakteihin luokkiin, mutta kaikista yhtäläisyyksistä huolimatta tämä vertailu ei ole täysin oikea. Abstraktien luokkien avulla voit ainakin hallita jäsenten näkyvyyttä. Samanaikaisesti rajapinnoille ei ole määritelty laajuuksia.

Liitäntöjen avulla voit tehdä arkkitehtuurista joustavamman, koska ne yhdistävät pääsyn johonkin toimintoon ja auttavat myös välttämään useita luokan periytymiseen liittyviä ongelmia (rajapinnat voivat myös periytyä toisiltaan).

Voit ilmoittaa liittymän Delphissä käyttämällä liitäntäavainsanaa. Tämä on sama avainsana, joka määrittää moduulin osan, jota voidaan käyttää ulkopuolelta (välillä avainsanoja käyttöliittymä ja toteutus). Liittymää määritettäessä käytetään kuitenkin eri syntaksia, kuten luokkien ilmoittamisessa.

Delphi/Pascal

IMyNewInterface = liitäntämenettely InterfaceProc; loppu;

IMyNewInterface =käyttöliittymä

menettely InterfaceProc ;

loppu;

Siten itse käyttöliittymän ilmoitussyntaksi ei eroa pohjimmiltaan muista ohjelmointikielistä (Pascaliin perustuvan syntaksin ominaisuuksia ei lasketa). Samanaikaisesti rajapintojen toteutuksella on useita ominaispiirteitä.

Tosiasia on, että Delphi-rajapinnat otettiin alun perin käyttöön tukemaan COM-tekniikkaa. Siksi IIInterface-rajapinta, joka Delphissa on kaikkien muiden liitäntöjen esi-isä (eräänlainen TObject-analogi), sisältää jo kolme perusmenetelmää työskennellä tämän tekniikan kanssa: QueryInterface, _AddRef, _Release. Tämän seurauksena, jos luokka toteuttaa minkä tahansa rajapinnan, sen on myös toteutettava nämä menetelmät. Vaikka tämä luokka ei ole tarkoitettu COM-työhön.

Tämän IIInterface-liitännän ominaisuuden ansiosta Delphin käyttö käyttöliittymät johtavat useimmissa tapauksissa ilmeisen käyttämättömien ominaisuuksien lisäämiseen luokkaan.

On olemassa kirjastoluokka TInterfaceObject, joka sisältää jo näiden menetelmien toteutuksen, eikä niistä periytyessään tarvitse niitä itse toteuttaa. Mutta koska Delphi ei tue usean luokan periytymistä, sen käyttö aiheuttaa usein vain lisävaikeuksia jo vaadittujen toimintojen suunnittelussa ja toteutuksessa.

Kaikki tämä johti siihen, että kaikista rajapintojen tarjoamista mahdollisuuksista huolimatta niiden käytännön käyttö Delphissä ei läheskään mennyt pidemmälle kuin työskentely COM:n kanssa.

Koska ne on optimoitu toimimaan pääasiassa tällä tekniikalla, rajapinnat tai pikemminkin niiden toiminnallisuus ja arkkitehtoniset rajoitukset eivät oikeuta itseään muita ongelmia ratkaistaessa.

Siksi monet Delphi-ohjelmoijat ovat edelleen itse asiassa vailla tehokasta ja joustavaa työkalua sovellusarkkitehtuurin kehittämiseen.

Luominen käyttöliittymä käyttäjä rajoittuu valitsemaan komponenttipaletista ohjelman toimimiseen, palvelemiseen tarvittavat Delphi-komponentit käyttöliittymä hallinta sekä käyttöliittymä tietojen näyttäminen ja siirtäminen lomakkeelle myöhemmän asettelun kanssa.

Luomasi käyttöliittymän tulee käyttää käyttäjille tuttuja vakioelementtejä ja tarjota mahdollisimman kätevää. Kaikki tämä määräytyy viime kädessä sellaisen kriteerin mukaan kuin käyttöliittymän tehokkuus - maksimaaliset tulokset pienellä vaivalla.
Käyttäjäystävällisen käyttöliittymän luomisen periaatteet tunnetaan. Kuten eniten yleiset periaatteet Käyttöliittymiä luotaessa voidaan ottaa huomioon kolme pääasiaa:

  1. Ohjelman pitäisi auttaa suorittamaan tehtävä, eikä siitä tule sitä tehtävää.
  2. Kun työskentelet ohjelman kanssa, käyttäjän ei pitäisi tuntea olevansa hölmö.
  3. Ohjelman tulee toimia siten, että käyttäjä ei pidä tietokonetta tyhmänä.
Ensimmäinen periaate- tämä on käyttöliittymän niin kutsuttu "avoimuus". Käyttöliittymän tulee olla intuitiivinen, helppo oppia, eikä se saa aiheuttaa käyttäjälle ongelmia, jotka hänen on voitettava työprosessin aikana. Käytä vakiokomponentteja ilman tarpeetonta koristelua, käytä tuttuja ohjaustekniikoita, joita vastaavat ohjelmat käyttävät, niin saavutat suorituskriteerit ensimmäinen periaate.

Toinen periaate on laiminlyödä käyttäjien älyllisiä kykyjä. Omasta kokemuksestani tiedän, että usein käyttäjät eivät vain osaa työskennellä tietokoneella, vaan pelkäävät yksinkertaisesti tehdä mitään itse. Siksi käyttöliittymän tulee olla mahdollisimman ystävällinen.
Lisäksi käyttäjien pelot ovat usein perusteltuja, koska ohjelman ja jopa tietokoneen kustannuksia ei voi verrata esimerkiksi monen vuoden työllä luodun tietokannan kustannuksiin. Siksi ohjelmoijan on käyttöliittymää luodessaan aina rakennettava ohjelmaan "idioottivarma suojaus" - virheellisiä toimia ja virheellisten tietojen syöttämistä vastaan. Mutta jotkut ohjelmoijat ovat liian innostuneet tällaisesta suojauksesta, tekevät siitä liian häiritsevän, ja sen seurauksena ohjelman toiminta muistuttaa kuuluisaa "askel vasemmalle, askel oikealle katsotaan pakoksi"! Ja se, mitä ohjelmoija luo ratkaisuksi ongelmaan, alkaa itse luoda ongelmia.
Noudattaa toinen periaate ohjelman ei tarvitse antaa "korjata" käyttäjän toimia ja osoittaa tarkasti, kuinka hänen tulisi toimia, pakottamalla hänet kapeaan kehykseen. Sinun ei myöskään pidä hukata liikaa informatiivisten kehotteiden näyttämiseen, varsinkaan valintaikkunaan, koska tämä häiritsee käyttäjää työstä. Olisi parempi tarjota mahdollisuus poistaa vihjeet kokonaan käytöstä.

Kolmas periaate on luoda ohjelma, jolla on korkeimmat mahdolliset "henkiset" ominaisuudet. Nopeasta kehityksestä huolimatta tietokonelaitteisto, jopa laajalti käytettyjä ohjelmia voidaan vain hyvin ehdollisesti kutsua tekoälyksi. Ne häiritsevät käyttäjän kokemusta näyttämällä valintaikkunat tyhmillä kysymyksillä, jotka aiheuttavat hämmennystä yksinkertaisimmissakin tilanteissa. Tämän seurauksena käyttäjät huutavat sydämessään: "Mikä tyhmä kone!"
Minua henkilökohtaisesti ärsyttävät melkein kaikkien jatkuvat kysymykset tekstieditorit siitä, tallennetaanko muutettu teksti, vaikka alkuperäinen ja nykyinen teksti eivät eroa millään symbolilla. Kyllä, kirjoitin jotain, mutta sitten palautin kaiken takaisin, onko se todella mahdotonta selvittää! Minun täytyy tarkistaa, enkö ole pilannut mitään.

Yritä noudattaa seuraavia sääntöjä:

Normaalit käyttöliittymäelementit
Käytä tämän liitäntäelementin vakiokomponentteja. Kohdattuaan ohjelmasi käyttäjä ei tuhlaa aikaa toistensa tuntemiseen, vaan alkaa heti työskennellä - tämä on yksi ammattimaisesti tehdyn ohjelman merkkejä.
Pieni paletti työkaluja
Älä käytä liikaa eri komponentteja. Ja luonnollisesti, kun olet käyttänyt yhtä vakiokomponenttia jossain yhdessä paikassa, käytä sitä myös vastaavassa tapauksessa.
Tasainen väli säätimien välillä
Sijoita käyttöliittymäelementit samalle etäisyydelle toisistaan. Satunnaisesti hajallaan olevat komponentit luovat tunteen epäammattimaisesti tehdystä tuotteesta. Ja päinvastoin, huolellisesti tarkistettu painikkeiden, kytkimien, valintaruutujen ja muiden lomakkeen käyttöliittymän muodostavien komponenttien sijoittelu on merkki laadukkaasta työstä.
TabOrder. "Oikea järjestys
TabOrder on järjestys, jossa näytön kohdistin liikkuu säätimien välillä, kun näppäintä painetaan Tab. Oikein kirjoitetussa ohjelmassa kursori liikkuu käyttäjän ohjelman kanssa työskentelyn logiikkaa noudattaen. Ohjelmaa luodessaan ohjelmoija usein muuttaa komponentteja, poistaa joitakin ja lisää tarvittaessa. Tämän seurauksena sisään valmis ohjelma kohdistin hyppää kaoottisesti lomakkeen ympärillä. Kun olet suorittanut ohjelman, älä unohda määrittää asetuksia TabOrder.
Fontin valinta
Jätä vain fontit rauhaan. Delphin oletusfontit sopivat kaikkiin järjestelmiin, joissa ohjelmasi saattaa toimia. Käytä lihavoitua fonttia vain korostaaksesi tärkeitä elementtejä. Sovellus kursivoitu ja erityisesti alleviivaus, jonka käyttäjä saattaa luulla hyperlinkiksi, on huono muoto.
Värien valinta
Mitä tulee käyttöliittymäelementtien väreihin, aivan kuten fonttienkin tapauksessa, on parempi jättää ne oletuksena vakioiksi. Delphi käyttää Windowsin järjestelmäpalettia ja käyttäjä voi helposti muokata värejä muuttamalla sitä.
Vaihtoehtoinen hallinta
Ammattitaidolla tehtyä ohjelmaa tulee voida ohjata paitsi hiirellä myös näppäimistöllä. Ei saa olla toimintoja, joita voidaan suorittaa vain hiirellä (piirtäminen graafiset editorit ei lasketa!). Eniten käytettyjä toimintoja varten sinun tulee tarjota "pikanäppäimet" nopeaa käyttöä varten.
Käyttöliittymä tiilet
Mitä tulee käyttöliittymän tiettyihin elementteihin, käyttäjän vuorovaikutuksen laatu ohjelman kanssa riippuu:
  • ohjauselementin vastaavuus sen suorittamaan tehtävään;
  • säännöt, joiden mukaan ohjauselementti toimii.
    Tällä sivulla käsitellään joidenkin käyttöliittymäelementtien luomisen sääntöjä.
Ja nyt haluan näyttää, mitä työkaluja Delphi tarjoaa lomakkeen komponenttien hallintaan, niiden suhteellisen sijainnin ja kohdistimen käyttäytymisen näppäintä painettaessa Tab.

Järjestä ensin komponentit suhteessa toisiinsa oikeassa järjestyksessä on tarpeen korostaa niitä. Voit yksinkertaisesti ympyröidä lomakkeen alueen, joka sisältää valitut komponentit. Tai pitämällä " Siirtää", käytä samaa hiirtä jokaisen valittavan komponentin osoittamiseen. Napsauta hiirtä uudelleen valitun komponentin päällä (samalla kun painat " Siirtää") poistaa sen valinnan.

Valittuja komponentteja voidaan hallita yhtenä kokonaisuutena - siirtää lomakkeella, määrittää arvot samoihin ominaisuuksiin, kopioida (asennusta varten esimerkiksi toiselle lomakkeelle), jopa poistaa.

Napsauta nyt oikealla painikkeella jokin komponenteista ja valitse ponnahdusvalikosta Sijainti -> Tasaa... Näyttöön tulee valintaikkuna, jonka avulla voit säätää ryhmän komponenttien vaaka- ja pystysijaintia. Meidän on esimerkiksi kohdistettava neljä painikettamme vasemmalle ja varmistettava, että niiden välillä on sama pystysuora etäisyys. Voit tehdä tämän valitsemalla valintanapit Vaaka: Vasemmat sivut Ja Pysty: Tilaa tasaisesti.

Valitsemalla kohteen Keskusta, järjestämme komponentit niin, että niiden keskipisteet sijaitsevat samalla rivillä vaaka- tai pystysuunnassa, ja tuote Keskellä ikkunassa siirtää komponentteja ikkunan keskelle, myös vaaka- tai pystysuunnassa.

Samalla valikkorivillä Tab O rder... aiheuttaa valintaikkunan, joka ohjaa kohdistimen liikkumista käyttöliittymäelementtien välillä, kun näppäintä painetaan Tab. Kun lomake tulee näyttöön, kohdistin on luonnollisesti valintaikkunan ensimmäisellä rivillä olevan komponentin päällä. Ja sitten se siirtyy luettelossa alaspäin. Valintaikkunassa kaksi sinistä ylös- ja alanuolta ohjaavat valitun komponentin sijaintia. Valitse haluamasi komponentti, siirrä se nuolilla haluamallesi riville luettelossa ja niin edelleen.

Valittaessa valikkokohtaa Ohjaus -> Näkyviin tulee alivalikko, joka koostuu kahdesta kohdasta:

  • Tuo eteen
  • Lähetä takaisin
Nämä ovat komponenttimenetelmiä, jotka ovat saatavilla myös ohjelmallisesti. Button1.SendToBack siirtää painikkeen "taustalle" ja Button1.BringToFront- tuo eteen". Eli jos yksi komponentti on sijoitettu toisen yläpuolelle, nämä menetelmät vaihtavat paikkojaan. Tapaukset, joissa tämä saattaa päteä, ovat melko ilmeisiä. Tämä artikkeli perustuu foorumeilla esitettyihin kysymyksiin: "Kuinka voin palauttaa merkkijonon DLL:stä?", "Kuinka välittää ja palauttaa tietueiden joukko?", "Kuinka välittää lomake DLL-tiedostoon?".

Jotta et vietä puolta elämästäsi sen selvittämiseen, tässä artikkelissa nostan kaiken lautaselle.

Tämän artikkelin aiheita on käsitelty tässä blogissa useammin kuin kerran vaihtelevassa määrin, mutta tässä artikkelissa ne on koottu yhteen ja perusteltu. Lyhyesti sanottuna voit heittää linkin tähän artikkeliin niille, jotka kehittävät DLL-tiedostoja.

Tärkeä muistiinpano: artikkeli pitää lukea peräkkäin. Koodiesimerkit tarjotaan vain muodossa esimerkkejä, jokaisessa artikkelin vaiheessa (kohdassa) esimerkkikoodi lisätään uusilla tiedoilla. Esimerkiksi aivan artikkelin alussa ei ole virheenkäsittelyä, vaan "klassiset" menetelmät on merkitty (kuten GetLastError , sdtcall-konvention käyttö jne.), jotka korvataan sopivammilla artikkelin edetessä. Tämä tehtiin, jotta "uudet" ("epätavalliset") mallit eivät herättäisi kysymyksiä. Muussa tapauksessa jokaiselle esimerkille on lisättävä huomautus, kuten: "tätä käsitellään alla olevassa kappaleessa, mutta sitä käsitellään tässä kappaleessa." Joka tapauksessa artikkelin lopussa on linkki valmiiseen koodiin, joka on kirjoitettu ottaen huomioon kaikki artikkelissa sanottu. Voit vain ottaa sen ja käyttää sitä. Ja artikkeli selittää miksi ja miksi. Jos et ole kiinnostunut "miksi ja miksi", vieritä loppuun johtopäätökseen ja linkkiin ladataksesi esimerkki.