Software Development for kontrollpaneler rom for Windows Tablet – Form

Home Automation eHouse .
Lag den viktigste formen (layout av tabletten skjermen . Plassert på den viktigste Form 24 felt TPanel paneler for alle typer digitale utganger RM .
Disse vil danne på knappene for å slå ut RoomManager (eller elektrisk) .
I tillegg , fargen vil avhenge av tilstanden av lese ut .
Av denne grunn har vi brukt standard knapper eller lignende type TButton , fordi de ikke har mulighet til å endre fargen .
Vi kaller dem ” outputX ” hvor X er antallet av produksjonen .
Jeg trenger ikke å bli utplassert , fordi det vil gjøre det automatisk , dette programmet . For hver knapp , utgangen må tilordnes til samme hendelse (onClick) – output1Click .
Plassert på den viktigste Form 24 felt TPanel typen paneler for alle programmer til å kjøre RM .
Disse vil danne knappene for å slå den gjeldende RoomManager (dvs. , på / av elektriske apparater av gruppen med en endring i Måleinnganger av terskelverdiene anvendt for regulerte slike . temperatur) .
Vi kaller dem ” programX ” hvor X er antallet av knappen .
Tilsvarende , ikke nødvendig å distribuere , fordi det vil gjøre det automatisk , dette programmet .
For hver knapp , programmet skal tildeles samme hendelse (onClick) – program1Click .
På den viktigste formen for tekstetiketter er 16 typer TLabel å vise alle resultater av målinger av RoomManager (nummerert Label1 til Label16) .
Tilsvarende som i de ovennevnte tilfeller ikke trenger å distribuere .
Vis den endelige formen for  skjema for å skape rom kontrollpanel
Initialisering av formen:

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
prosedyren TForm1 . FormCreate (Sender: TObject) ;
Var alignx , buttonindex , rad , kolonne , k , i: integer ;
begynne
GetComputerName ; / / Få navnet på datamaskinen eller panel – leser
bane: = getcurrentdir () ; / / Få dagens lokale banen søknad katalog – leser katalogen som programmet
bane: = stringreplace (bane , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Få banen søknad eHouse
remotepath: = path ; / / Det samme bane for RemoteAccess for inicialization – ved begynnelsen av banen kartlagt for samme fjernaksess
loadnames_rm ; / / Load kontrolleren navn ehouse1
init_heat_temperature_names ; / / Init HeatManager navn
readethernetdevs ; / / Load kontrollere ethernet eHouse navn
i: = 1 ;
mens jeg < ; = Paramcount til / / utføre kommandolinje argument – behandler kommandolinjen
begynne
hvis mulig ( ‘ / X: ‘ , små bokstaver (ParamStr (i))) = 1 og deretter / / panel bredde – bredde av panelet
Form1 . Bredde: = chk_int (stringreplace (ParamStr (i) , ‘ / X: ‘ , ‘ ‘ , [Rfignorecase])) ;
hvis mulig ( ‘ / S: ‘ , små bokstaver (ParamStr (i))) = 1 og deretter / / panel høyde – høyde av panelet
Form1 . høyde: = chk_int (stringreplace (ParamStr (i) , ‘ / S: ‘ , ‘ ‘ , [Rfignorecase])) ;
hvis mulig ( ‘ / R: ‘ , små bokstaver (ParamStr (i))) = 1 og deretter / / enhetsnavn (RoomManager) – RoomManger navn
deviceindex: = RMDeviceIndexByName ((stringreplace (ParamStr (i) , ‘ / R: ‘ , ‘ ‘ , [Rfignorecase]))) ;
hvis mulig ( ‘ / A: ‘ , små bokstaver (ParamStr (i))) = 1 og deretter / / enhetsadressen (RoomManager) – RoomManager adresse
deviceindex: = (get_index_rm (stringreplace (ParamStr (i) , ‘ / A: ‘ , ‘ ‘ , [Rfignorecase]))) ;
hvis mulig ( ‘ / P: ‘ , små bokstaver (ParamStr (i))) = 1 og deretter / / ekstern tilgang banen – fjerntilgang banen
remotepath: = ((stringreplace (ParamStr (i) , ‘ / P: ‘ , ‘ ‘ , [Rfignorecase]))) ;
inc (i) ;
end ;
hvis Form1 . bredde < ; 100 så Form1 . bredde: = 800 ; / / Hvis feil parametere for størrelsen setter standard – mislighold
hvis Form1 . høyde < ; 100 så Form1 . høyde: = 600 ;
devicestoupdatestatus: = IntToStr (rm [deviceindex] . Adrha) + ‘ – ‘ + IntToStr (rm [deviceindex] . ADRL) ;
/ / Grense søker etter status RoomManager / filtrere ut andre enheter
/ / Sjekk enkelt enhet pannel for begrensning INNSATS
/ / Sjekk bare statusen for den valgte RoomManager ganger mindre CPU og server eHouse
outputbuttonnames (deviceindex) ; / / Initialiser knapper og etiketter navn – boots , knapper og tekst etiketter
Form1 . bildetekst: = ‘ eHouse Kontrollpanel: ‘ + Rm [deviceindex] . devname ; / / Set caption av de viktigste formene for RoomManager navn – header viser navnet på skjemaet RoomManager
Timer1 . Intervall: = 3000 ; / / Set syklisk oppgave intervall i millisekunder
Timer1 . Aktivert: = true ; / / Start automatiske oppgaver (statusoppdatering
k: = 1 ;
buttonindex: = 0 ; / / Aktuelt knappen (synlig) indeks – nåværende antall av (tilsynelatende)
rad: = 0 ; / / Aktuell knappen i raden – Nummeret på den aktuelle tasten i gjeldende linje
/ / Kolonne: = 0 ;
alignx: = (Form1 . clientWidth – (Rader) * (buttonwidth + etc. •)) div 2 ; / / Midtknappen på panel – sentrering blokker knapper
for i: = 0 til Form1 . ComponentCount – 1 / / Output-knappen automatisk oppsett – automatisk konfigurere Avslutt-knappen
begynne / / for hvert objekt på Form1 – for alle deler av Form1
hvis Form1 ( . Komponenter [i] er TPanel) / deretter / hvis objektet er TPanel (vår knappen) – hvis objekttypen TPanel (knapp)
begynne
hvis comparetext ((Form1 . komponenter [i] som TPanel) . navn , ‘ utgang ‘ + IntToStr (k)) = 0 / deretter / hvis navn BESTÅR (output)
begynne
rad: = buttonindex mod (rader) ; / / Beregn rader og kolonner indekser – beregner koordinatene av kolonnen og raden
kolonne: = buttonindex div (rader) ;
hvis lengde (OutputNames [k – 1])> ; 0 deretter / / viser bare utgang knapper med navnet – bare viser knapper med navnet
begynne
(Form1 . Komponenter [i] som TPanel) . venstre: = alignx + rad * (buttonwidth + etc. •) ; / / Beregn X-aksen possition – beregner sin posisjon i X-aksen
(Form1 . Komponenter [i] som TPanel) . top: = yoffsetouts + kolonne * (buttonheight + yspace) ; / / Beregn Y-aksen possition – beregner sin posisjon i Y-aksen
(Form1 . Komponenter [i] som TPanel) . bredde: = buttonwidth ; / / Set Bredde Knapper – Bredden av knappene
(Form1 . Komponenter [i] som TPanel) . høyde: = buttonheight ; / / Set Knapper Høyde – Mengden knapper
(Form1 . komponenter [i] som TPanel) . bildetekst: = Outputnames [k – 1] ; / / Set-knappen Bildetekst – setter knappetekst
(Form1 . komponenter [i] som TPanel) . Bevelinner: = bvRaised ;
(Form1 . komponenter [i] som TPanel) . BevelOuter: = bvRaised ;
(Form1 . komponenter [i] som TPanel) . font . Størrelse: = skrift ; / / Set Skriftstørrelse Button – setter skriftstørrelsen for knappen
inc (buttonindex) ; / / Neste-knappen synlig – se neste
end
annet
begynne
(Form1 . komponenter [i] som TPanel) . synlige: = false ; / / No Name = ikke viser knapp – fjern nøklene uten navn
end ;
inc (k) ; / / Neste-knappen – neste knapp
end ;
end ;
end ;
/ / / / / / / / / / / / De samme knappene for program – Tilsvarende for knappene for å starte programmer
buttonindex: = 0 ;
k: = 1 ;
for i: = 0 til Form1 . ComponentCount – 1 til
begynne
hvis Form1 ( . Komponenter [i] er TPanel) deretter
begynne
hvis comparetext ((Form1 . komponenter [i] som TPanel) . navn , ‘ program ‘ + IntToStr (k)) = 0, så
begynne

rad: = buttonindex mod (rader) ;
kolonne: = buttonindex div (rader) ;
hvis lengde (ProgramNames [k – 1])> ; 0 da
begynne
(Form1 . Komponenter [i] som TPanel) . venstre: = alignx + rad * (buttonwidth + etc. •) ;
(Form1 . Komponenter [i] som TPanel) . top: = yoffsetprograms + kolonne * (buttonheight + yspace) ;
(Form1 . Komponenter [i] som TPanel) . bredde: = buttonwidth ;
(Form1 . Komponenter [i] som TPanel) . høyde: = buttonheight ;
(Form1 . komponenter [i] som TPanel) . bildetekst: = Programnames [k – 1] ; / / Set-knappen bildetekstknapper for program – setter navnet programknappene
(Form1 . komponenter [i] som TPanel) . Bevelinner: = bvRaised ;
(Form1 . komponenter [i] som TPanel) . BevelOuter: = bvRaised ;
(Form1 . komponenter [i] som TPanel) . font . Størrelse: = skrift ;
inc (buttonindex) ;
end
annet
begynne
(Form1 . komponenter [i] som TPanel) . synlige: = false ;
end ;

inc (k) ;
end ;
end ;
end ;

k: = 1 ;
buttonindex: = 0 ;
/ / Alignx: = (Form1 . clientWidth – (Labelrows * (labelwidth + labelresultsize + etc. •))) div 2 ;
/ / / / / / / Analogicaly for etiketter – Tilsvarende , etiketten
for i: = 0 til Form1 . ComponentCount – 1 til
begynne
hvis Form1 ( . Komponenter [i] er TLabel) da
begynne
hvis comparetext ((Form1 . komponenter [i] som TLabel) . navn , ‘ etiketten ‘ + IntToStr (k)) = 0, så
begynne

rad: = buttonindex mod (labelrows) ;
kolonne: = buttonindex div (labelrows) ;
hvis lengde (LabelNames [k – 1])> ; 0 / deretter / hvis lengden på etikettekst> ; ; 0 – Hvis beskrivelsen
begynne
(Form1 . Komponenter [i] som TLabel) . venstre: = alignx + rad * (labelwidth + labelresultsize + etc. •) ; / / Beregn X plassering
(Form1 . Komponenter [i] som TLabel) . top: = yoffsetlabel + kolonne * (labelheight + yspace) ; / / Beregn Y plassering
(Form1 . Komponenter [i] som TLabel) . bredde: = labelwidth ;
(Form1 . Komponenter [i] som TLabel) . høyde: = labelheight ;
(Form1 . komponenter [i] som TLabel) . bildetekst: = LabelNames [k – 1] ; / / / Tilordne label bildetekster – headers egnede etiketter
(Form1 . komponenter [i] som TLabel) . font . farge: = clwhite ; / / Sett standard farge for etiketten – setter standard farge for etiketter
hvis mulig ( ‘ [ – % ] ‘ , LabelNames [k – 1])> ; 0 da (Form1 . komponenter [i] som TLabel) . font . farge: = clyellow ; / / Set farge for lysmåling – for måling av farge belysning
hvis mulig ( ‘ [ % ] ‘ , LabelNames [k – 1])> ; 0 da (Form1 . komponenter [i] som TLabel) . font . farge: = Claque ; / / Set fargemåling for prosent – farge for verdien av interesse
hvis mulig ( ‘ [C] ‘ , LabelNames [k – 1])> ; 0 da (Form1 . komponenter [i] som TLabel) . font . farge: = clwhite ; / / Set farge for temperaturkontroll – for fargetemperaturverdier
(Form1 . komponenter [i] som TLabel) . font . Størrelse: = labelfontsize ; / / Set skriftstørrelse for etiketten – setter skriftstørrelsen for teksten etiketten
inc (buttonindex) ; / / Neste synlig etikett – etiketten vises neste
end
annet
begynne
(Form1 . komponenter [i] som TLabel) . synlige: = false ; / / Skjul tekstetiketter uten – skjule etiketter uten textu
end ;
inc (k) ; / / Neste etikett – neste etikett
end ;
end ;
end ;
update_status ; / / Oppdater panel for aktuelle enheten status fra loggene – oppdaterer status for føreren av loggfilene fra serveren eHouse
end ;
Sluttresultatet etter auto – konfigurert og knapplassering av programmet og fjerne utallige elementer (hvis du ikke vil at de skal ha på panelet på grunn av restriksjoner på ferdsel eller bruk av output) .
 Den endelige effekten av den automatiske fordeling av elementer på Form
Les mer: Home Automation – Controllers eHouse
Home Automation eHouse Home Automation Produsent