Component Forvirring? Prøv Maler

The Perpetual Newbie Journal Entry # 3.1 Denne artikkelen ble først dukket opp på http: //www.undu.comCode gjenbruk. Mantraet av alle Delphi programmerere av hva erfaring nivå. Ikke re-oppfinne hjulet. Kjøp denne tredjeparts komponent eller at bibliotek og program lykkelig hver etter. Og hvis du ikke kan eller ikke vil kjøpe det, bygge din own.And så jeg gjorde. Min første komponenten var en enkel TLabel kommer som kom gjennomsiktig og satt til Arial Bold fra begynnelsen. Et enkelt komponent og en stor tidsbesparende. I tillegg til TLblArialB, jeg også opprettet en TLblTimesB langs de samme linjene. Jeg bruker dem hele time.With erfaring kommer ambisjon. Jeg ønsket å lage sammensatte komponenter. Spesielt ønsket jeg en tekstboks variant som ville være nummer spesifikke. Jeg ønsket dialogboksen for å ha en variabel bildetekst og rask eiendom, minimum og maksimum for den spinner og jeg ønsket asInteger og asString stil egenskaper. Stikke hånden ned bøker av både Ray Konopka og Marco Cantu, var jeg i stand til å få en versjon av komponenten oppe og går. Men som mange av oss, hadde min ambisjon overgått mine abilities.There ble problematisk tegn. Første gang jeg kjørte komponent i et testprogram, dialogboksen kom opp med den forventede valg av numeriske feltet. Men andre gang, på OK-knappen var det valgte kontroll og tredje gang var det på Avbryt. Selvfølgelig, jeg var enten lekker minne eller ikke ødelegge min lille objekt riktig. Jeg kunne bare ikke stole på den komponenten i det virkelige liv. Jeg plukket på TInputDlgInt kode tidvis i løpet av de neste par weeks.But deretter en uformell re-lese fra Cantu bok ga meg grunn til å klapse pannen min og rope "Eureka!" Selv om ikke så elegant, jeg hadde en tid og kostnadseffektivt alternativ til å utvikle dialogen ved bare å stjele fra min egen kode med en komponent mal. Og etableringen kunne ikke være enklere. Jeg ringte opp en av mine tidligere programmer med en fungerende hånd brosteinsbelagte versjon av dialogen. Jeg valgte alle elementene på skjemaet, og deretter gikk til komponenter | CREATE COMPONENT MAL på menyen. Jeg godtok standardplassering på paletten av maler og endret ikonet til et bitmap jeg hadde laget for min dyrebare TInputDlgInt komponent. Jeg endret standardnavnet TLabelTemplate til TInputIntTemplate og trykk OK. Mine kreative wizardry krav var ved veis ende. I min nåværende prosjekt, opprettet jeg en ny form som heter FInputDlgInt å ringe fra den viktigste formen. Jeg dro til malen paletten og dratt den splitter nye TInputIntTemplate til skjemaet, og det raskt fylt ut skjemaet med alle mine gjenstander nøye opprettet. Jeg kunne ha endret teksten til hva jeg hadde tenkt å bruke i det bestemte programmet, men jeg forlot alt unchanged.In min hovedprogrammet, opprettet jeg en kode innsikt mal som jeg kalte IdlgI. Det var: FInputDlgInt: = TFInputDlgInt.create (null); med FInputDlgInt ikke begynne bildetekst: = '|'; LblPrompt.caption: = ''; eInput.Minimum: = 0; eInput.Maximum: = 0; prøve showmodal; //Lagre alle verdiene som trengs her endelig fri; slutt; enden, å ha reddet form til et felles bibliotek mappe i stedet for programmappen. Jeg har nå det nærmeste du kommer en komponent kan jeg vil, uten store anstrengelser. Klart jeg har lyst til å løse feilene i min egen komponent. Og jeg vil i tiden. Men i mellomtiden har jeg jobbet gjenbruk av kode. Og det er en tid og money-maker.It bør bemerkes at bruken av en felles bibliotek skjema plassert på et sentralt sted er et eksempel på kode-gjen uten nødvendigheten av å skape en komponent eller til og med en mal. Det er fordi dette eksempelet var en selvforsynt dialog. Men å ha malen tilgjengelig tillater meg å lage den samme effekten på et panel i en form. Og for andre sammensatte kreasjoner, for eksempel en knapp bar med tilhørende dialoger for å utføre en rekke oppgaver, komponenten mal er en rask måte å få det meste av grovarbeidet gjort, uten å bekymre deg om å ha alle bitene raffinert til uansett programmering stil krever. Gary Mugford Idea Mechanic Inc Bramalea ON Canada



Previous:
Next Page: