Software Development para sa mga kuwarto ng Control Panel para sa Windows Tablet – Anyo

Home Automation eHouse .
Lumikha ng ang pangunahing paraan (layout ng screen tablet . Inilagay sa pangunahing Form 24 mga patlang panel TPanel para sa lahat ng mga uri ng mga digital na output RM .
Mga ito ay bumubuo sa mga pindutan upang i-RoomManager (o electrical) .
At saka , kulay ay depende sa estado ng basahin ang .
Para sa kadahilanang ito ginamit namin ang karaniwang mga pindutan o katulad na uri ng TButton , dahil hindi nila ang posibilidad upang baguhin ang kulay .
Tinatawag namin ang mga ito ” outputX ” kung saan ang X ay ang bilang ng output .
Hindi ko kailangang i-deploy , dahil ito ay awtomatikong gawin ito , ang application na ito . Para sa bawat pindutan , output Dapat na nakatalaga sa parehong kaganapan (onClick) – output1Click .
Inilagay sa pangunahing Form 24 mga patlang TPanel uri panel para sa lahat ng mga programa upang patakbuhin RM .
Mga ito ay bumubuo sa mga pindutan para sa paglipat sa kasalukuyang RoomManager (ie , sa / off electrical device ng pangkat na may pagbabago sa pagsukat ng input ng threshold na ginagamit para sa kumokontrol tulad . temperatura) .
Tinatawag namin ang mga ito ” programX ” kung saan ang X ay ang bilang ng pindutan .
Nang katulad , hindi na kailangang mag-deploy , dahil ito ay awtomatikong gawin ito , ang application na ito .
Para sa bawat pindutan , ang programa ay dapat na nakatalaga sa parehong kaganapan (onClick) – program1Click .
Sa pangunahing paraan ng mga label ng teksto ay 16 uri TLabel upang ipakita ang lahat ng mga resulta ng mga sukat ng RoomManager (bilang Label1 sa Label16) .
Katulad nito bilang sa itaas kaso hindi kailangang i-deploy .
Tingnan ang panghuling form para sa  bumuo upang lumikha ng room control panel
Pinasimulan ng form:

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
pamamaraan TForm1 . FormCreate (nagpadala: TObject) ;
var alignx , buttonindex , hilera , haligi , k , i: integer ;
simulan
GetComputerName ; / / Kunin ang pangalan ng computer o panel – binabasa ang
landas: = getcurrentdir () ; / / Kunin ang kasalukuyang lokal na path ng direktoryo ng application – bumabasa sa direktoryo kung saan ang programa
path: = stringreplace (landas , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Kunin ang landas ng application eHouse
remotepath: = landas ; / / Ang parehong landas para sa remoteaccess para inicialization – sa simula ng path nai-map para sa parehong malayuang pag-access
loadnames_rm ; / /-Load ang pangalan ng controller ehouse1
init_heat_temperature_names ; / / Init heatmanager pangalan
readethernetdevs ; / /-Load ethernet controllers eHouse pangalan
i: = 1 ;
habang i < ; = Paramcount sa / / isagawa ang argument ng linya ng command na – maproseso ang command line
simulan
kung pos ( ‘ / X: ‘ , lowercase (ParamStr (i))) = 1 pagkatapos / / panel lapad – lapad ng panel
form1 . Lapad: = chk_int (stringreplace (ParamStr (i) , ‘ / X: ‘ , ‘ ‘ , [Rfignorecase])) ;
kung pos ( ‘ / S: ‘ , lowercase (ParamStr (i))) = 1 pagkatapos / / taas ng panel – taas ng panel
form1 . taas: = chk_int (stringreplace (ParamStr (i) , ‘ / S: ‘ , ‘ ‘ , [Rfignorecase])) ;
kung pos ( ‘ / R: ‘ , lowercase (ParamStr (i))) = 1 / / aparato pangalan (RoomManager) – RoomManger pangalan
deviceindex: = RMDeviceIndexByName ((stringreplace (ParamStr (i) , ‘ / R: ‘ , ‘ ‘ , [Rfignorecase]))) ;
kung pos ( ‘ / A: ‘ , lowercase (ParamStr (i))) = 1 / / aparato address (RoomManager) – RoomManager address
deviceindex: = (get_index_rm (stringreplace (ParamStr (i) , ‘ / A: ‘ , ‘ ‘ , [Rfignorecase]))) ;
kung pos ( ‘ / P: ‘ , lowercase (ParamStr (i))) = 1 / / remote daanan – remote daanan
remotepath: = ((stringreplace (ParamStr (i) , ‘ / P: ‘ , ‘ ‘ , [Rfignorecase]))) ;
inc (i) ;
katapusan ;
kung form1 . lapad < ; 100 pagkatapos form1 . lapad: = 800 ; / / Kung maling parameter para sa laki nagtatakda default – default
kung form1 . taas < ; 100 pagkatapos form1 . taas: = 600 ;
devicestoupdatestatus: = IntToStr (rm [deviceindex] . Adrha) + ‘ – ‘ + IntToStr (rm [deviceindex] . adrl) ;
Ang / / Limitasyon na naghahanap para sa kasalukuyang katayuan RoomManager / filter ang iba pang mga device
/ / Suriin para sa solong aparato pannel para sa limitasyon UTILISATION
/ / Suriin lamang ang katayuan ng napiling RoomManager beses CPU mas at server eHouse
outputbuttonnames (deviceindex) ; / / Initialize ng mga pindutan at mga pangalan sa label – bota , mga pindutan at mga label ng teksto
form1 . caption: = ‘ eHouse Control Panel: ‘ + Rm [deviceindex] . devname ; / / Itakda ang caption ng pangunahing paraan ng RoomManager Pangalan – header ay nagpapakita ng mga pangalan ng anyong RoomManager
timer1 . Agwat: = 3000 ; / / Itakda ang cyclic gawain pagitan sa millisecond
timer1 . Pinagana: = true ; / / Simulan ang awtomatikong gawain (katayuan update
k: = 1 ;
buttonindex: = 0 ; / / Kasalukuyang pindutan (nakikita) index – ang kasalukuyang bilang ng (maliwanag)
hilera: = 0 ; / / Kasalukuyang pindutan sa hilera – bilang ng kasalukuyang key sa kasalukuyang linya
/ / Haligi: = 0 ;
alignx: = (form1 . clientWidth – (Hilera) * (buttonwidth + Xspace)) div 2 ; / / Center pindutan sa panel – pagsasentro bloke pindutan
para i: = 0 sa form1 . ComponentCount – 1 / / Output pindutan awtomatikong setup – awtomatikong i-configure ang mga pindutan ng Lumabas
simulan / / para sa bawat bagay sa form1 – para sa lahat ng mga elemento ng Form1
kung ang (form1 . Mga Bahagi ng [i] ay TPanel) pagkatapos / / kung ang bagay ay TPanel (aming pindutan) – kung ang uri ng bagay TPanel (pindutan)
simulan
kung comparetext ((form1 . bahagi [i] bilang TPanel) . pangalan , ‘ pagbubuhos ‘ + IntToStr (k)) = 0 pagkatapos / / kung pangalan binubuo (output)
simulan
hilera: = buttonindex mod (mga hilera) ; / / Kalkulahin ang mga hilera at haligi na-index – kinakalkula ang mga coordinate ng haligi at hilera
haligi: = buttonindex div (mga hilera) ;
kung haba (OutputNames [k – 1])> ; 0 pagkatapos / / Tanging nagpapakita ng mga pindutan sa ouput na may pangalan – Ipinapakita lamang ng mga pindutan na may pangalan na
simulan
(Form1 . Mga Bahagi ng [i] bilang TPanel) . kaliwa: = alignx + hilera * (buttonwidth + Xspace) ; / / Kalkulahin ang X axis possition – kinakalkula ang posisyon nito sa ang X axis
(Form1 . Mga Bahagi ng [i] bilang TPanel) . tuktok: = yoffsetouts + haligi * (buttonheight + yspace) ; / / Kalkulahin ang possition ng Y axis – kinakalkula ang posisyon nito sa ang Y axis
(Form1 . Mga Bahagi ng [i] bilang TPanel) . lapad: = buttonwidth ; / / Itakda Lapad Pindutan – Lapad ng mga pindutan
(Form1 . Mga Bahagi ng [i] bilang TPanel) . taas: = buttonheight ; / / Itakda Taas Pindutan – Ang halaga ng mga pindutan
(Form1 . bahagi [i] bilang TPanel) . caption: = Outputnames [k – 1] ; / / Itakda ang Button Caption – Nagtatakda ang teksto ng pindutan
(Form1 . bahagi [i] bilang TPanel) . Bevelinner: = bvRaised ;
(Form1 . bahagi [i] bilang TPanel) . BevelOuter: = bvRaised ;
(Form1 . bahagi [i] bilang TPanel) . Font . Laki: = fontsize ; / / Itakda ang Laki ng Font Pindutan – Nagtatakda ang laki ng font para sa pindutan
inc (buttonindex) ; / / Susunod na pindutan nakikita – tingnan ang susunod na
katapusan
iba
simulan
(Form1 . bahagi [i] bilang TPanel) . makikita: = false ; / / Walang mga = pangalan hindi ipakita ang pindutan – alisin ang mga key na walang pangalan
katapusan ;
inc (k) ; / / Pindutan ng Susunod – susunod na pindutan
katapusan ;
katapusan ;
katapusan ;
/ / / / / / / / / / / / Ang parehong pindutan para sa programa – Katulad nito para sa mga pindutan upang ilunsad ang mga programa
buttonindex: = 0 ;
k: = 1 ;
para i: = 0 sa form1 . ComponentCount – 1 hanggang
simulan
kung ang (form1 . Mga Bahagi ng [i] ay TPanel) pagkatapos
simulan
kung comparetext ((form1 . bahagi [i] bilang TPanel) . pangalan , ‘ programa ‘ + IntToStr (k)) = 0 pagkatapos
simulan

hilera: = buttonindex mod (mga hilera) ;
haligi: = buttonindex div (mga hilera) ;
kung haba (ProgramNames [k – 1])> ; 0 pagkatapos
simulan
(Form1 . Mga Bahagi ng [i] bilang TPanel) . kaliwa: = alignx + hilera * (buttonwidth + Xspace) ;
(Form1 . Mga Bahagi ng [i] bilang TPanel) . tuktok: = yoffsetprograms + haligi * (buttonheight + yspace) ;
(Form1 . Mga Bahagi ng [i] bilang TPanel) . lapad: = buttonwidth ;
(Form1 . Mga Bahagi ng [i] bilang TPanel) . taas: = buttonheight ;
(Form1 . bahagi [i] bilang TPanel) . caption: = Programnames [k – 1] ; / / Itakda ang pindutan caption pindutan para sa programa – nagtatakda ng pangalan ng pindutan ng programa
(Form1 . bahagi [i] bilang TPanel) . Bevelinner: = bvRaised ;
(Form1 . bahagi [i] bilang TPanel) . BevelOuter: = bvRaised ;
(Form1 . bahagi [i] bilang TPanel) . Font . Laki: = fontsize ;
inc (buttonindex) ;
katapusan
iba
simulan
(Form1 . bahagi [i] bilang TPanel) . makikita: = false ;
katapusan ;

inc (k) ;
katapusan ;
katapusan ;
katapusan ;

k: = 1 ;
buttonindex: = 0 ;
/ / Alignx: = (form1 . clientWidth – (Labelrows * (labelwidth + labelresultsize + Xspace))) div 2 ;
/ / / / / / / Analogicaly para Label – Nang katulad , ang label
para i: = 0 sa form1 . ComponentCount – 1 hanggang
simulan
kung ang (form1 . Mga Bahagi ng [i] ay TLabel) pagkatapos
simulan
kung comparetext ((form1 . bahagi [i] bilang TLabel) . pangalan , ‘ tatak ‘ + IntToStr (k)) = 0 pagkatapos
simulan

hilera: = buttonindex mod (labelrows) ;
haligi: = buttonindex div (labelrows) ;
kung haba (LabelNames [k – 1])> ; 0 pagkatapos / / kung ang haba ng teksto ng label> ; ; 0 – kung ang paglalarawan ay
simulan
(Form1 . Mga Bahagi ng [i] bilang TLabel) . kaliwa: = alignx + hilera * (labelwidth + labelresultsize + Xspace) ; / / Kalkulahin ang X lokasyon
(Form1 . Mga Bahagi ng [i] bilang TLabel) . tuktok: = yoffsetlabel + haligi * (labelheight + yspace) ; / / Kalkulahin ang Y lokasyon
(Form1 . Mga Bahagi ng [i] bilang TLabel) . lapad: = labelwidth ;
(Form1 . Mga Bahagi ng [i] bilang TLabel) . taas: = labelheight ;
(Form1 . bahagi [i] bilang TLabel) . caption: = LabelNames [k – 1] ; / / / Italaga ang mga caption label – header ng angkop label
(Form1 . bahagi [i] bilang TLabel) . Font . kulay: = clwhite ; / / Itakda ang default na kulay para sa label – Nagtatakda ang default na kulay para sa mga label
kung pos ( ‘ [ – % ] ‘ , LabelNames [k – 1])> ; 0 pagkatapos (form1 . bahagi [i] bilang TLabel) . Font . kulay: = clyellow ; / / Itakda ang kulay para sa pagsukat ng liwanag – para sa pagsukat ng kulay lighting
kung pos ( ‘ [ % ] ‘ , LabelNames [k – 1])> ; 0 pagkatapos (form1 . bahagi [i] bilang TLabel) . Font . kulay: = mga maglalangis ; / / Itakda ang kulay ng pagsukat para sa porsiyento – kulay para sa halaga ng interes
kung pos ( ‘ [C] ‘ , LabelNames [k – 1])> ; 0 pagkatapos (form1 . bahagi [i] bilang TLabel) . Font . kulay: = clwhite ; / / Itakda ang kulay para sa pamamahala ng temperatura – para sa mga halaga sa temperatura ng kulay
(Form1 . bahagi [i] bilang TLabel) . Font . Laki: = labelfontsize ; / / Itakda ang laki ng font para sa label – Nagtatakda ang laki ng font para sa mga label ng teksto
inc (buttonindex) ; / / Susunod na nakikita label – label na lilitaw sa tabi
katapusan
iba
simulan
(Form1 . bahagi [i] bilang TLabel) . makikita: = false ; / / Itago ang mga label ng teksto nang hindi – itago ang mga label na walang textu
katapusan ;
inc (k) ; / / Susunod na label – sa tabi ng label
katapusan ;
katapusan ;
katapusan ;
update_status ; / / I-update ang panel para sa kasalukuyang katayuan ng aparato mula sa mga tala ng – update ang katayuan ng mga driver ng mga file ng log mula sa eHouse server
katapusan ;
Ang resulta pagkatapos auto – -configure at placement ng pindutan ng programa at alisin ang pagkalaki-laki na mga elemento (kung hindi mo nais ang mga ito sa panel dahil sa mga paghihigpit sa mga karapatan ng pag-access o paggamit ng output ng) .
 Ang huling epekto ng awtomatikong pamamahagi ng mga elemento sa Form
Magbasa nang higit pa: Home Automation – Controllers eHouse
Home Automation eHouse Home Automation Manufacturer