Software Development for Kontrolpaneler værelser til Windows Tablet – Form

Home Automation eHouse .
Skab den vigtigste form (layout af tabletten skærmen . Placeret på de vigtigste Form 24 felter TPanel paneler til alle typer af digitale udgange RM .
De vil danne knapperne for at slå ud RoomManager (eller elektrisk) .
Desuden , farven vil afhænge af tilstanden af ​​udlæse .
Af denne grund har vi brugt de standard knapper eller lignende type TButton , fordi de ikke har mulighed for at ændre farven .
Vi kalder dem ” outputX ” hvor X er antallet af output .
Jeg behøver ikke at blive anvendt , fordi det vil gøre det automatisk , denne ansøgning . For hver knap , Udgangen skal tildeles den samme begivenhed (onClick) – output1Click .
Placeret på de vigtigste Form 24 felter TPanel typen paneler for alle programmer til at køre RM .
De vil danne knapperne til at skifte den nuværende RoomManager (dvs. , on / off elektriske apparater i gruppen med en ændring i de målte input af de tærskler, der anvendes til at regulere sådanne . temperatur) .
Vi kalder dem ” programX ” hvor X er antallet af knappen .
Tilsvarende , ikke nødvendigt at anvende , fordi det vil gøre det automatisk , denne ansøgning .
For hver knap , programmet bør tildeles den samme begivenhed (onClick) – program1Click .
På den vigtigste form for tekstetiketter er 16 typer TLabel at vise alle resultaterne af målingerne af RoomManager (nummereret Label1 til Label16) .
Samme måde som i ovennævnte tilfælde ikke nødvendigt at anvende .
Se den endelige form for  danne at skabe plads kontrolpanel
Initialisering af formen:

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
procedure TForm1 . FormCreate (Sender: TObject) ;
var alignx , buttonindex , række , kolonne , k , i: integer ;
begynde
GetComputerName ; / / Hent navnet på computeren eller panel – læser
sti: = getcurrentdir () ; / / Hent det aktuelle lokale sti ansøgning bibliotek – læser den mappe, hvor programmet
sti: = stringreplace (sti , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Hent vej ansøgning eHouse
remotepath: = sti ; / / Det samme vej for remoteaccess for inicialization – ved begyndelsen af ​​banen kortlagt til den samme fjernadgang
loadnames_rm ; / / Load controller navne ehouse1
init_heat_temperature_names ; / / Init HeatManager navne
readethernetdevs ; / / Load controllere ethernet eHouse navne
i: = 1 ;
mens jeg < ; = Paramcount til / / udføre Kommandolinjeargumentet – behandler kommandolinjen
begynde
hvis pos ( ‘ / X: ‘ , små bogstaver (ParamStr (i))) = 1 derefter / / panel bredde – bredden af ​​panelet
Form1 . Bredde: = chk_int (stringreplace (ParamStr (i) , ‘ / X: ‘ , ‘ ‘ , [Rfignorecase])) ;
hvis pos ( ‘ / S: ‘ , små bogstaver (ParamStr (i))) = 1 derefter / / panel højde – højde af panelet
Form1 . højde: = chk_int (stringreplace (ParamStr (i) , ‘ / S: ‘ , ‘ ‘ , [Rfignorecase])) ;
hvis pos ( ‘ / R: ‘ , små bogstaver (ParamStr (i))) = 1 derefter / / enhedsnavn (RoomManager) – RoomManger navn
deviceindex: = RMDeviceIndexByName ((stringreplace (ParamStr (i) , ‘ / R: ‘ , ‘ ‘ , [Rfignorecase]))) ;
hvis pos ( ‘ / A: ‘ , små bogstaver (ParamStr (i))) = 1 derefter / / enhedsadresse (RoomManager) – RoomManager adresse
deviceindex: = (get_index_rm (stringreplace (ParamStr (i) , ‘ / A: ‘ , ‘ ‘ , [Rfignorecase]))) ;
hvis pos ( ‘ / P: ‘ , små bogstaver (ParamStr (i))) = 1 derefter / / fjernadgang sti – fjernadgang sti
remotepath: = ((stringreplace (ParamStr (i) , ‘ / P: ‘ , ‘ ‘ , [Rfignorecase]))) ;
inc (i) ;
ende ;
hvis Form1 . bredde < ; 100 derefter Form1 . bredde: = 800 ; / / Hvis forkerte parametre for størrelse sætter standard – defaults
hvis Form1 . højde < ; 100 derefter Form1 . højde: = 600 ;
devicestoupdatestatus: = IntToStr (rm [deviceindex] . Adrha) + ‘ – ‘ + IntToStr (rm [deviceindex] . adrl) ;
/ / Limit søger efter aktuel status RoomManager / bortfiltrere andre enheder
/ / Check for enkelt anordning pannel for begrænsning UTILISATION
/ / Check kun status for den valgte RoomManager gange mindre CPU og server eHouse
outputbuttonnames (deviceindex) ; / / Initialiser knapper og etiketter navne – støvler , knapper og tekstetiketter
Form1 . billedtekst: = ‘ eHouse Kontrolpanel: ‘ + Rm [deviceindex] . devname ; / / Set billedtekst af de vigtigste former for RoomManager navn – header viser navnet på formen RoomManager
timer1 . Interval: = 3000 ; / / Set cyklisk opgave interval i millisekunder
timer1 . Aktiveret: = true ; / / Start automatiske opgaver (statusopdatering
k: = 1 ;
buttonindex: = 0 ; / / Aktuelt knap (synlig) indeks – det aktuelle nummer (tilsyneladende)
række: = 0 ; / / Aktuelt knap i rækken – Nummeret på den aktuelle nøgle i den aktuelle linje
/ / Kolonne: = 0 ;
alignx: = (Form1 . clientWidth – (Rækker) * (buttonwidth + Xspace)) div 2 ; / / Center knapperne på panelet – centreringselementer blokke knapper
for i: = 0 til Form1 . ComponentCount – 1 / / Output-knappen automatisk opsætning – automatisk konfigurere knappen Afslut
begynde / / for hvert objekt på Form1 – for alle elementer i Form1
if (Form1 . Komponenter [i] er TPanel) derefter / / hvis objektet er TPanel (vores knap) – hvis objekttypen TPanel (knap)
begynde
Hvis comparetext ((Form1 . komponenter [i] som TPanel) . navn , ‘ output ‘ + IntToStr (k)) = 0 og derefter / / hvis navn CONSIST (output)
begynde
række: = buttonindex mod (rækker) ; / / Beregn rækker og kolonner indekser – beregner koordinaterne af kolonnen og rækken
kolonne: = buttonindex div (rækker) ;
hvis længde (OutputNames [k – 1])> ; 0 og derefter / / Only viser ouput knapper med navnet – kun viser knapper med navnet
begynde
(Form1 . Komponenter [i] som TPanel) . venstre: = alignx + række * (buttonwidth + Xspace) ; / / Beregn X-akse possition – beregner sin position i X-aksen
(Form1 . Komponenter [i] som TPanel) . top: = yoffsetouts + kolonne * (buttonheight + yspace) ; / / Beregn Y-aksen possition – beregner sin position i Y-aksen
(Form1 . Komponenter [i] som TPanel) . bredde: = buttonwidth ; / / Set Bredde Knapper – Bredde af knapperne
(Form1 . Komponenter [i] som TPanel) . højde: = buttonheight ; / / Set Buttons Højde – Mængden af ​​knapper
(Form1 . komponenter [i] som TPanel) . billedtekst: = Outputnames [k – 1] ; / / Set billedtekst – indstiller knapteksten
(Form1 . komponenter [i] som TPanel) . Bevelinner: = bvRaised ;
(Form1 . komponenter [i] som TPanel) . BevelOuter: = bvRaised ;
(Form1 . komponenter [i] som TPanel) . skrifttype . Størrelse: = fontsize ; / / Set Font Size Button – sætter skriftstørrelsen for knap
inc (buttonindex) ; / / Knappen Næste synlig – se næste
ende
ellers
begynde
(Form1 . komponenter [i] som TPanel) . synlige: = false ; / / No Name = vises ikke på knappen – fjerne nøgler uden et navn
ende ;
inc (k) ; / / Knappen Næste – næste knap
ende ;
ende ;
ende ;
/ / / / / / / / / / / / De samme knapper til program – Tilsvarende for knapperne til at iværksætte programmer
buttonindex: = 0 ;
k: = 1 ;
for i: = 0 til Form1 . ComponentCount – 1 til
begynde
if (Form1 . Komponenter [i] er TPanel) derefter
begynde
Hvis comparetext ((Form1 . komponenter [i] som TPanel) . navn , ‘ program ‘ + IntToStr (k)) = 0
begynde

række: = buttonindex mod (rækker) ;
kolonne: = buttonindex div (rækker) ;
hvis længde (ProgramNames [k – 1])> ; 0,
begynde
(Form1 . Komponenter [i] som TPanel) . venstre: = alignx + række * (buttonwidth + Xspace) ;
(Form1 . Komponenter [i] som TPanel) . top: = yoffsetprograms + kolonne * (buttonheight + yspace) ;
(Form1 . Komponenter [i] som TPanel) . bredde: = buttonwidth ;
(Form1 . Komponenter [i] som TPanel) . højde: = buttonheight ;
(Form1 . komponenter [i] som TPanel) . billedtekst: = Programnames [k – 1] ; / / Set Knapteksten knapper til program – sætter navnet på programmet knapper
(Form1 . komponenter [i] som TPanel) . Bevelinner: = bvRaised ;
(Form1 . komponenter [i] som TPanel) . BevelOuter: = bvRaised ;
(Form1 . komponenter [i] som TPanel) . skrifttype . Størrelse: = fontsize ;
inc (buttonindex) ;
ende
ellers
begynde
(Form1 . komponenter [i] som TPanel) . synlige: = false ;
ende ;

inc (k) ;
ende ;
ende ;
ende ;

k: = 1 ;
buttonindex: = 0 ;
/ / Alignx: = (Form1 . clientWidth – (Labelrows * (labelwidth + labelresultsize + Xspace))) div 2 ;
/ / / / / / / Analogicaly for etiketter – Tilsvarende , etiketten
for i: = 0 til Form1 . ComponentCount – 1 til
begynde
if (Form1 . Komponenter [i] er TLabel) og derefter
begynde
Hvis comparetext ((Form1 . komponenter [i] som TLabel) . navn , ‘ etiket ‘ + IntToStr (k)) = 0
begynde

række: = buttonindex mod (labelrows) ;
kolonne: = buttonindex div (labelrows) ;
hvis længde (LabelNames [k – 1])> ; 0 og derefter / / hvis længden af ​​etikettekst> ; ; 0 – hvis beskrivelsen er
begynde
(Form1 . Komponenter [i] som TLabel) . venstre: = alignx + række * (labelwidth + labelresultsize + Xspace) ; / / Beregn X placering
(Form1 . Komponenter [i] som TLabel) . top: = yoffsetlabel + kolonne * (labelheight + yspace) ; / / Beregn Y location
(Form1 . Komponenter [i] som TLabel) . bredde: = labelwidth ;
(Form1 . Komponenter [i] som TLabel) . højde: = labelheight ;
(Form1 . komponenter [i] som TLabel) . billedtekst: = LabelNames [k – 1] ; / / / Tildel etiket billedtekster – headers egnede mærker
(Form1 . komponenter [i] som TLabel) . skrifttype . farve: = clwhite ; / / Set standard farve for etiket – sætter standard farve til etiketter
hvis pos ( ‘ [ – % ] ‘ , LabelNames [k – 1])> ; 0, (Form1 . komponenter [i] som TLabel) . skrifttype . farve: = clyellow ; / / Set farve til lys måling – til måling af farve belysning
hvis pos ( ‘ [ % ] ‘ , LabelNames [k – 1])> ; 0, (Form1 . komponenter [i] som TLabel) . skrifttype . farve: = Claque ; / / Set farvemåling for procent – farve for værdien af ​​interesse
hvis pos ( ‘ [C] ‘ , LabelNames [k – 1])> ; 0, (Form1 . komponenter [i] som TLabel) . skrifttype . farve: = clwhite ; / / Set farve til temperaturstyring – til farve temperaturværdier
(Form1 . komponenter [i] som TLabel) . skrifttype . Størrelse: = labelfontsize ; / / Set skriftstørrelse til etiket – sætter skriftstørrelsen for teksten etiket
inc (buttonindex) ; / / Næste synligt mærke – etiket vises næste
ende
ellers
begynde
(Form1 . komponenter [i] som TLabel) . synlige: = false ; / / Skjul tekstetiketter uden – skjule etiketter uden textu
ende ;
inc (k) ; / / Næste etiket – næste etiket
ende ;
ende ;
ende ;
update_status ; / / Update panel for aktuelle enhed status fra logs – opdaterer status for føreren af ​​logfilerne fra serveren eHouse
ende ;
Det endelige resultat efter auto – konfigureret og knap placering af programmet og fjerne utallige elementer (hvis du ikke vil have dem til at have på panelet på grund af begrænsninger i retten til adgang eller brug af output) .
 Den endelige virkning af automatisk distribution af elementer på den formular
Læs mere: Home Automation – Controllere eHouse
Home Automation eHouse Home Automation Producent