Slik bruker du avmerkingsbokser i et DBGrid

Tetra Images/Getty Images
Det er mange måter og grunner til å tilpasse utdataene til enDBGridi Delphi . En måte er å legge til avmerkingsbokser slik at resultatet blir mer visuelt attraktivt.
Som standard, hvis du har et boolsk felt i datasettet ditt, DBGridviser demsom 'True' eller 'False' avhengig av verdien til datafeltet. Det ser imidlertid mye bedre ut hvis du velger å bruke en 'sann' avkrysningsbokskontroll for å aktivere redigering av feltene.
Opprett en prøveapplikasjon
Start et nytt skjema i Delphi, og plasser en TDBGrid, TADOTable og TADOConnection, TDataSource.
La alle komponentnavnene være som de var da de først ble sluppet inn i skjemaet (DBGrid1, ADOQuery1, AdoTable1, etc.). Bruk Object Inspector til å angi en ConnectionString-egenskap for ADOConnection1-komponenten (TADOConnection) til å peke på eksempelet QuickiesContest.mdb MS Access-databasen.
Koble DBGrid1 til DataSource1, DataSource1 til ADOTable1, og til slutt ADOTable1 til ADOConnection1. ADOTable1 TableName-egenskapen skal peke til artikkeltabellen (for å få DBGrid til å vise postene til artikkeltabellen).
Hvis du har satt alle egenskapene riktig, når du kjører applikasjonen (gitt at Active-egenskapen til ADOTable1-komponenten er True), bør du som standard se at DBGrid viser det boolske feltets verdi som 'True' eller 'False' avhengig av på verdien av datafeltet.
Avmerkingsboks i et DBGrid
For å vise en avmerkingsboks inne i en celle i et DBGrid, må vi gjøre en tilgjengelig for oss under kjøring.
Velg siden 'Datakontroller' påKomponentpalettog velg en TDBCheckbox . Slipp en hvor som helst på skjemaet - det spiller ingen rolle hvor, siden det meste av tiden vil være usynlig eller sveve over rutenettet.
Tips: TDBCheckBox er en databevisst kontroll som lar brukeren velge eller velge bort en enkelt verdi, som er passende for boolske felt.
Sett deretter egenskapen Synlig til False. Endre Color-egenskapen til DBCheckBox1 til samme farge som DBGrid (slik at den blander seg med DBGrid) og fjern bildeteksten.
Viktigst av alt, sørg for at DBCheckBox1 er koblet til DataSource1 og til riktig felt.
Merk at alle egenskapsverdiene til DBCheckBox1 ovenfor kan settes i skjemaets OnCreate-hendelse slik:
|_+_|
Det som kommer etterpå er den mest interessante delen. Mens vi redigerer det boolske feltet i DBGrid, må vi sørge for at DBCheckBox1 er plassert over ('flytende') cellen i DBGrid som viser det boolske feltet.
For resten av de (ikke-fokuserte) cellene som bærer de boolske feltene (i 'Vinner'-kolonnen), må vi gi en grafisk representasjon av den boolske verdien (sant/usant). Dette betyr at du trenger minst to bilder for å tegne: ett for avmerket tilstand (sann verdi) og ett for ukontrollert tilstand (falsk verdi).
Den enkleste måten å oppnå dette på er å bruke Windows API DrawFrameControl-funksjonen til å tegne direkte på DBGrids lerret.
Her er koden i DBGrids OnDrawColumnCell hendelsesbehandler som oppstår når rutenettet må male en celle.
|_+_|For å fullføre dette trinnet, må vi sørge for at DBCheckBox1 er usynlig når vi forlater cellen:
|_+_|Vi trenger bare to hendelser til å håndtere.
Merk at når du er i redigeringsmodus, går alle tastetrykk til DBGrids celle, vi må sørge for at de sendes til CheckBox. Når det gjelder en CheckBox, er vi først og fremst interessert i [Tab] og [Mellomrom]-tasten. [Tab] skal flytte inndatafokuset til neste celle, og [Mellomrom] skal bytte tilstanden til avmerkingsboksen.
|_+_|Det kan være hensiktsmessig at bildeteksten til avmerkingsboksen endres når brukeren merker av eller fjerner merket. Merk at DBCheckBox har to egenskaper (ValueChecked og ValueUnChecked) som brukes til å spesifisere feltverdien representert av avkrysningsboksen når den er merket av eller ikke.
Denne ValueChecked-egenskapen inneholder 'Ja, en vinner!', og ValueUnChecked er lik 'Ikke denne gangen'.
|_+_|Kjør prosjektet, og du vil se avmerkingsboksene over hele vinnerfeltets kolonne.