Software Development för kontrollpaneler rum för Windows Tablet – Form

Home Automation eHouse .
Skapa den viktigaste formen (layout av tabletten skärmen . Placerad på huvudformuläret 24 fält TPanel paneler för alla typer av digitala utgångar RM .
Dessa kommer att utgöra knapparna för att bli RoomManager (eller elektrisk) .
Dessutom , färgen kommer att bero på tillståndet hos det utlästa .
Av den anledningen har vi använt de vanliga knapparna eller liknande TButton , eftersom de inte har möjlighet att ändra färg .
Vi kallar dem ” outputX ” där X är antalet utgående .
Jag behöver inte sättas , eftersom det kommer att göra det automatiskt , denna ansökan . För varje knapp , utgången måste tilldelas samma händelse (onClick) – output1Click .
Placerad på huvudformuläret 24 fält TPanel typ paneler för alla program att köra RM .
Dessa kommer att utgöra knapparna för att växla den nuvarande RoomManager (dvs. , på / av elektriska apparater i gruppen med en förändring i mätingångar de tröskelvärden som används för att reglera sådana . temperatur) .
Vi kallar dem ” programX ” där X är numret på knappen .
Likaså , inget behov av att använda , eftersom det kommer att göra det automatiskt , denna ansökan .
För varje knapp , Programmet bör tilldelas samma händelse (onClick) – program1Click .
På den viktigaste formen av textetiketter är 16 typer TLabel att visa alla resultat från mätningar av RoomManager (numrerade Label1 till Label16) .
På samma sätt som i ovanstående fall behöver inte använda .
Se den slutliga formen för  formulär för att skapa panel rumsreglering
Initiering av formen:

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
förfarande TForm1 . FormCreate (Avsändare: TObject) ;
var alignx , buttonindex , rad , kolumn , k , I: heltal ;
börja
GetComputerName ; / / Hämta namn datorn eller panel – läser
sökväg: = getcurrentdir () ; / / Hämta aktuell lokal sökväg ansökan – läser katalogen som programmet
sökväg: = stringreplace (väg , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Hämta väg ansökan eHouse
remotepath: = sökväg ; / / Samma väg för RemoteAccess för inicialization – vid början av banan avbildas för samma fjärråtkomst
loadnames_rm ; / / Load controller namn ehouse1
init_heat_temperature_names ; / / Init HeatManager namn
readethernetdevs ; / / Ladda styrenheter ethernet eHouse namn
i: = 1 ;
medan jag < ; = Paramcount till / / utföra argument kommandoraden – bearbetar kommandoraden
börja
om möjligt ( ‘ / X: ‘ , gemener (ParamStr (i))) = 1 och sedan / / panelbredd – bredd av panelen
Form1 . Bredd: = chk_int (stringreplace (ParamStr (i) , ‘ / X: ‘ , ‘ ‘ , [Rfignorecase])) ;
om möjligt ( ‘ / S: ‘ , gemener (ParamStr (i))) = 1 och sedan / / panelhöjd – höjd av panelen
Form1 . höjd: = chk_int (stringreplace (ParamStr (i) , ‘ / S: ‘ , ‘ ‘ , [Rfignorecase])) ;
om möjligt ( ‘ / R: ‘ , gemener (ParamStr (i))) = 1 och sedan / / enhetsnamn (RoomManager) – RoomManger namn
deviceindex: = RMDeviceIndexByName ((stringreplace (ParamStr (i) , ‘ / R: ‘ , ‘ ‘ , [Rfignorecase]))) ;
om möjligt ( ‘ / A: ‘ , gemener (ParamStr (i))) = 1 och sedan / / enhetsadress (RoomManager) – RoomManager adress
deviceindex: = (get_index_rm (stringreplace (ParamStr (i) , ‘ / A: ‘ , ‘ ‘ , [Rfignorecase]))) ;
om möjligt ( ‘ / P: ‘ , gemener (ParamStr (i))) = 1 och sedan / / fjärråtkomst väg – fjärråtkomst väg
remotepath: = ((stringreplace (ParamStr (i) , ‘ / P: ‘ , ‘ ‘ , [Rfignorecase]))) ;
inc (i) ;
slut ;
Om Form1 . bredd < ; 100 då Form1 . bredd: = 800 ; / / Om fel parametrar för storlek sätter standard – standardvärden
Om Form1 . höjd < ; 100 då Form1 . höjd: = 600 ;
devicestoupdatestatus: = IntToStr (RM [deviceindex] . Adrha) + ‘ – ‘ + IntToStr (RM [deviceindex] . adrl) ;
/ / Gränsvärde söker efter aktuell status RoomManager / filtrera bort andra enheter
/ / Kontrollera enda enhet panel för begränsning ANVÄNDNING
/ / Kontrollera bara status för den valda RoomManager gånger mindre CPU och server eHouse
outputbuttonnames (deviceindex) ; / / Initiera knappar och etiketter namn – stövlar , knappar och textetiketter
Form1 . bildtext: = ‘ eHouse Kontrollpanelen: ‘ + Rm [deviceindex] . devname ; / / Ställ bildtext av de viktigaste formerna av RoomManager namn – header visar namnet på formuläret RoomManager
Timer1 . Intervall: = 3000 ; / / Ställ cyklisk uppgift intervall i millisekunder
Timer1 . Aktiverad: = true ; / / Start automatiska uppgifter (statusuppdatering
k: = 1 ;
buttonindex: = 0 ; / / Aktuell knappen (synlig) index – nuvarande nummer (skenbart)
v: = 0 ; / / Aktuell knappen i rad – Numret på den aktuella nyckeln i den aktuella raden
/ / Kolumn: = 0 ;
alignx: = (Form1 . clientWidth – (Rader) * (buttonwidth + Xspace)) div 2 ; / / Center knapparna på panelen – centrerings block knappar
för i: = 0 till Form1 . ComponentCount – 1 / / output-knappen automatisk inställning – automatiskt konfigurera knappen Avsluta
börja / / för varje objekt på Form1 – för alla delar av Form1
if (Form1 . Komponenter [i] är TPanel) sedan / / om objektet är TPanel (vår knapp) – Om objekttypen TPanel (knapp)
börja
Om comparetext ((Form1 . komponenter [i] som TPanel) . namn , ‘ utgång ‘ + IntToStr (k)) = 0 sedan / / om namn BESTÅR (utgång)
börja
v: = buttonindex mod (rader) ; / / Beräkna rader och kolumner index – beräknar koordinaterna för kolumn och rad
kolumn: = buttonindex div (rader) ;
om längd (OutputNames [k – 1])> ; 0 och sedan / / visar endast Ouput knappar med namnet – endast visar knappar med namnet
börja
(Form1 . Komponenter [i] som TPanel) . vänster: = alignx + v * (buttonwidth + Xspace) ; / / Beräkna X-axeln possition – beräknar sin position i X-axeln
(Form1 . Komponenter [i] som TPanel) . Överst: = yoffsetouts + kolumn * (buttonheight + yspace) ; / / Beräkna Y-axeln possition – beräknar sin position i Y-axeln
(Form1 . Komponenter [i] som TPanel) . bredd: = buttonwidth ; / / Ställ Bredd Knappar – Bredd av knapparna
(Form1 . Komponenter [i] som TPanel) . höjd: = buttonheight ; / / SET-knapparna Höjd – Mängden knappar
(Form1 . komponenter [i] som TPanel) . bildtext: = Outputnames [k – 1] ; / / Set Bildtext – sätter knapptexten
(Form1 . komponenter [i] som TPanel) . Bevelinner: = bvRaised ;
(Form1 . komponenter [i] som TPanel) . BevelOuter: = bvRaised ;
(Form1 . komponenter [i] som TPanel) . typsnitt . Storlek: = Teckenstorlek ; / / Ställ teckenstorlek knapp – anger teckenstorleken för knappen
Inc (buttonindex) ; / / Nästa för synligt – se nästa
slut
annars
börja
(Form1 . komponenter [i] som TPanel) . synliga: = False ; / / No Name = visas inte knappen – ta bort nycklar utan namn
slut ;
inc (k) ; / / Nästa-knapp – nästa knapp
slut ;
slut ;
slut ;
/ / / / / / / / / / / / Samma knappar för program – Likaså för knapparna för att starta program
buttonindex: = 0 ;
k: = 1 ;
för i: = 0 till Form1 . ComponentCount – 1 till
börja
if (Form1 . Komponenter [i] är TPanel) sedan
börja
Om comparetext ((Form1 . komponenter [i] som TPanel) . namn , ‘ programmet ‘ + IntToStr (k)) = 0 då
börja

v: = buttonindex mod (rader) ;
kolumn: = buttonindex div (rader) ;
om längd (ProgramNames [k – 1])> ; 0 då
börja
(Form1 . Komponenter [i] som TPanel) . vänster: = alignx + v * (buttonwidth + Xspace) ;
(Form1 . Komponenter [i] som TPanel) . Överst: = yoffsetprograms + kolumn * (buttonheight + yspace) ;
(Form1 . Komponenter [i] som TPanel) . bredd: = buttonwidth ;
(Form1 . Komponenter [i] som TPanel) . höjd: = buttonheight ;
(Form1 . komponenter [i] som TPanel) . bildtext: = Programnames [k – 1] ; / / SET bildtext knappar för program – sätter namnet på programmet knappar
(Form1 . komponenter [i] som TPanel) . Bevelinner: = bvRaised ;
(Form1 . komponenter [i] som TPanel) . BevelOuter: = bvRaised ;
(Form1 . komponenter [i] som TPanel) . typsnitt . Storlek: = Teckenstorlek ;
Inc (buttonindex) ;
slut
annars
börja
(Form1 . komponenter [i] som TPanel) . synliga: = False ;
slut ;

inc (k) ;
slut ;
slut ;
slut ;

k: = 1 ;
buttonindex: = 0 ;
/ / Alignx: = (Form1 . clientWidth – (Labelrows * (labelwidth + labelresultsize + Xspace))) div 2 ;
/ / / / / / / Analogicaly för etiketter – Likaså , etiketten
för i: = 0 till Form1 . ComponentCount – 1 till
börja
if (Form1 . Komponenter [i] är TLabel) då
börja
Om comparetext ((Form1 . komponenter [i] som TLabel) . namn , ‘ etikett ‘ + IntToStr (k)) = 0 då
börja

v: = buttonindex mod (labelrows) ;
kolumn: = buttonindex div (labelrows) ;
om längd (LabelNames [k – 1])> ; 0 sedan / / om längden på etikettext> ; ; 0 – om beskrivningen är
börja
(Form1 . Komponenter [i] som TLabel) . vänster: = alignx + v * (labelwidth + labelresultsize + Xspace) ; / / Beräkna X plats
(Form1 . Komponenter [i] som TLabel) . Överst: = yoffsetlabel + kolumn * (labelheight + yspace) ; / / Beräkna Y-plats
(Form1 . Komponenter [i] som TLabel) . bredd: = labelwidth ;
(Form1 . Komponenter [i] som TLabel) . höjd: = labelheight ;
(Form1 . komponenter [i] som TLabel) . bildtext: = LabelNames [k – 1] ; / / / Tilldela etikett bildtexter – headers lämpliga märkningar
(Form1 . komponenter [i] som TLabel) . typsnitt . färg: = clwhite ; / / Sätt standard färg för etikett – sätter standard färg för etiketter
om möjligt ( ‘ [ – % ] ‘ , LabelNames [k – 1])> ; 0 då (Form1 . komponenter [i] som TLabel) . typsnitt . färg: = clyellow ; / / Ställ färg för ljusmätning – för mätning av färg belysning
om möjligt ( ‘ [ % ] ‘ , LabelNames [k – 1])> ; 0 då (Form1 . komponenter [i] som TLabel) . typsnitt . färg: = Claque ; / / Ställ färgmätning för procent – färg för värdet av intresse
om möjligt ( ‘ [C] ‘ , LabelNames [k – 1])> ; 0 då (Form1 . komponenter [i] som TLabel) . typsnitt . färg: = clwhite ; / / Ställ in färg för temperatur hantering – för färgtemperatur värden
(Form1 . komponenter [i] som TLabel) . typsnitt . Storlek: = labelfontsize ; / / Ställ teckenstorlek för etikett – anger teckenstorleken för texten etikett
Inc (buttonindex) ; / / Nästa synligt märke – etikett visas bredvid
slut
annars
börja
(Form1 . komponenter [i] som TLabel) . synliga: = False ; / / Dölj textetiketter utan – dölja etiketter utan textu
slut ;
inc (k) ; / / Nästa etikett – nästa etikett
slut ;
slut ;
slut ;
update_status ; / / Uppdatering panel för aktuell enhetens status från stockar – uppdaterar status föraren av loggfilerna från servern eHouse
slut ;
Slutresultatet efter automatisk – konfigurerad och knapp placering av programmet och ta bort otaliga element (om du inte vill att de ska ha på panelen grund av begränsningar i rätten till tillgång eller användning av produktionen) .
 Den slutliga effekten av den automatiska fördelningen av element på blankett
Läs mer: Home Automation – Controllers eHouse
Home Automation eHouse Hemautomation Tillverkare