軟件開發的控制面板客房Windows平板 – 形式

家庭自動化 eHouse .
創建的主要形式(平板電腦屏幕的佈局 . 放在主​​窗體上的24幅TPanel面板為所有類型的數字輸出RM .
這將形成按鈕來打開RoomManager(或電) .
此外 , 顏色將取決於被讀出的狀態 .
為此,我們採用了標準的按鈕或相似類型TButton的 , ,因為它們不具有來改變顏色的可能性 .
我們稱他們為 ” outputX ” 其中X是數量的輸出 .
我並不需要以被部署 , 因為它會做,它會自動 , 此應用程序 . 對於每一個按鈕 , 的輸出必須被分配到相同的事件(的onClick) – output1Click .
放在上運行的所有程序的主窗體24 TPanel類型的面板,RM .
這些將形成的按鈕用於切換電流的RoomManager(即 , /關電氣設備的組的變化閾值的測量輸入端,用於調節等 . 溫度) .
我們稱他們為 ” 節目X ” 其中,X是該按鈕的數目 .
同樣 , 無需部署 , 因為它會做,它會自動 , 此應用程序 .
對於每一個按鈕 , 程序應該被分配到相同的事件(的onClick) – program1Click .
主窗體上的文本標籤的16種類型的TLabel,以顯示所有的RoomManager的測量結果(label1的Label16) .
同樣地,如在上述情況下,不需要部署 .
查看最終的  形成創造空間控制面板
初始化的形式是:

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
程序TForm1 . FormCreate中(發件人:TObject的) ;
VAR alignx , buttonindex , 行 , 柱 , K表 , 我:整數 ;
開始
GetComputerName ; / /獲取計算機的名稱或面板 – 讀取
路徑:= getcurrentdir() ; / /將當前的本地路徑的應用程序目錄 – 讀取的目錄,在此,程序
路徑:= stringreplace(路徑 , ‘ \斌 ‘ , ‘ \ ‘ , [Rfignorecase]) ; / /獲取路徑的應用程序eHouse
remotepath:=路徑 ; / /相同的路徑遠程訪問為inicialization – 在開頭的路徑相同的遠程訪問映射為
loadnames_rm ; / /加載控制器名稱ehouse1
init_heat_temperature_names ; / /初始化heatmanager的名稱
readethernetdevs ; / /加載控制器以太網eHouse名
I:= 1 ;
而我< ; = Paramcount / /執行命令行參數 – 處理命令行
開始
如果pos( ‘ / X: ‘ , 小寫(ParamStr這(I)))= 1 / /面板的寬度 – 面板的寬度
form1的 . 寬度:= chk_int(stringreplace(ParamStr這(I) , ‘ / X: ‘ , ‘ ‘ , [Rfignorecase])) ;
如果pos( ‘ / S: ‘ , 小寫(ParamStr這(I)))= 1 / /面板高度 – 面板的高度
form1的 . 高度:= chk_int(stringreplace(ParamStr這(I) , ‘ / S: ‘ , ‘ ‘ , [Rfignorecase])) ;
如果pos( ‘ / R: ‘ , 小寫(ParamStr這(I)))= 1 / /設備名稱(RoomManager) – RoomManger名稱
deviceindex:= RMDeviceIndexByName((stringreplace(ParamStr這(I) , ‘ / R: ‘ , ‘ ‘ , [Rfignorecase]))) ;
如果pos( ‘ / A: ‘ , 小寫(ParamStr這(I)))= 1 / /設備地址(RoomManager) – RoomManager地址
deviceindex:=(get_index_rm(stringreplace(ParamStr這(I) , ‘ / A: ‘ , ‘ ‘ , [Rfignorecase]))) ;
如果pos( ‘ / P: ‘ , 小寫(ParamStr這(I)))= 1 / /遠程訪問路徑 – 遠程訪問路徑
remotepath:=((stringreplace(ParamStr這(ⅰ) , ‘ / P: ‘ , ‘ ‘ , [Rfignorecase]))) ;
INC(ⅰ) ;
結束 ;
如果form1的 . 寬度< ; 100的話,form1的 . 寬度:800 ; / /如果錯誤的參數的大小設置默認 – 默認
如果form1的 . 高度< ; 100的話,form1的 . 高度:600 ;
devicestoupdatestatus:= IntToStr(的RM [deviceindex] . Adrha)+ ‘ – ‘ + IntToStr(的RM [deviceindex] . ADRL) ;
/ /限制搜索的當前狀況RoomManager /過濾器等設備
/ /檢查單台設備潘內爾限制動用
/ /只檢查所選的RoomManager倍以下的CPU和服務器的狀態eHouse
outputbuttonnames(deviceindex) ; / /初始化按鈕和標籤名稱 – 靴子 , 按鈕和文本標籤
form1的 . 標題: ‘ eHouse控制面板: ‘ + RM [deviceindex] . DEVNAME ; / /設置標題的主要形式RoomManager名稱 – 標題顯示的名稱的形式RoomManager
定時器 . 間隔時間:3000 ; / /設置循環任務的時間間隔(以毫秒為單位)
定時器 . 啟用:= TRUE ; / /開始自動工作(狀態更新
K:= 1 ;
buttonindex:= 0 ; / /當前按鈕指數(可見的) – 當前的(明顯的)
行:= 0 ; / /當前行中的按鈕 – 在當前行的當前關鍵數
/ /列:= 0 ;
alignx:=(Form1中 . clientWidth – (行)*(buttonwidth + Xspace))DIV ; / /中心面板上的按鈕 – 圍繞塊按鈕
對於i = 0到Form1 . ComponentCount – 1 / /輸出“按鈕自動設置 – 自動配置“退出”按鈕
在Form1上開始/ /為每個對象 – 在Form1的所有元素
(form1的 . 組件[I]是TPanel)/ /如果對象是TPanel(按鈕) – 如果對象類型TPanel(按鈕)
開始
如果comparetext((form1的 . 組件[i]作為TPanel) . 名稱 , ‘ 產量 ‘ + IntToStr(K))= 0,/ /然後,如果名稱由(輸出)
開始
行:= buttonindex MOD(行) ; / /計算的行和列的索引 – 計算的列和行的坐標
列:= buttonindex格(行) ;
如果長度(OutputNames [K – 1])> ; 0,則/ /只顯示輸出中按鈕的名稱 – 只示出了按鈕的名稱
開始
(Form1中 . 組件[i]作為TPanel) . 左起:= alignx +行*(buttonwidth + Xspace) ; / /計算X軸的論壇位置最後 – 計算其位置在X軸
(Form1中 . 組件[i]作為TPanel) . 頂:yoffsetouts +列*(buttonheight + yspace) ; / /計算Y軸的論壇位置最後 – 計算其位置在Y軸
(Form1中 . 組件[i]作為TPanel) . 寬度:= buttonwidth下 ; / /設置寬度按鈕 – 的按鈕中的寬度
(Form1中 . 組件[i]作為TPanel) . 高度:= buttonheight下 ; / /設置按鈕的高度 – 按鈕的量
(Form1中 . 組件[i]作為TPanel) . 標題:Outputnames [K – 1] ; / /設置按鈕標題 – 設置按鈕文本
(Form1中 . 組件[i]作為TPanel) . 斜面內部:= bvRaised的 ;
(Form1中 . 組件[i]作為TPanel) . BevelOuter:= bvRaised的 ;
(Form1中 . 組件[i]作為TPanel) . 字形 . 大小:字體大小 ; / /設置字體大小“按鈕 – 設置按鈕的字體大小
公司(buttonindex) ; / /下一步“按鈕可見 – 請參閱下
結束
其他
開始
(Form1中 . 組件[i]作為TPanel) . 可見:= FALSE ; / /的名稱=不顯示按鈕 – 刪除鍵沒有名字的。
結束 ;
公司(K) ; / /下一個按鈕 – 下一個按鈕
結束 ;
結束 ;
結束 ;
/ / / / / / / / / / / /相同的按鈕,用於程序 – 同樣的按鈕來啟動程序
buttonindex:= 0 ;
K:= 1 ;
對於i = 0到Form1 . ComponentCount – 1至
開始
(form1的 . 組件[i]是TPanel)
開始
如果comparetext((form1的 . 組件[i]作為TPanel) . 名稱 , ‘ 程序 ‘ + IntToStr(K))= 0,則
開始

行:= buttonindex MOD(行) ;
列:= buttonindex格(行) ;
如果長度(ProgramNames [K – 1])> ; 0,則
開始
(Form1中 . 組件[i]作為TPanel) . 左起:= alignx +行*(buttonwidth + Xspace) ;
(Form1中 . 組件[i]作為TPanel) . 頂:= yoffsetprograms +列*(buttonheight + yspace) ;
(Form1中 . 組件[i]作為TPanel) . 寬度:= buttonwidth下 ;
(Form1中 . 組件[i]作為TPanel) . 高度:= buttonheight下 ;
(Form1中 . 組件[i]作為TPanel) . 標題:Programnames [K – 1] ; / /設置按鈕的標題按鈕程序 – 設置程序按鈕的名稱
(Form1中 . 組件[i]作為TPanel) . 斜面內部:= bvRaised的 ;
(Form1中 . 組件[i]作為TPanel) . BevelOuter:= bvRaised的 ;
(Form1中 . 組件[i]作為TPanel) . 字形 . 大小:字體大小 ;
公司(buttonindex) ;
結束
其他
開始
(Form1中 . 組件[i]作為TPanel) . 可見:= FALSE ;
結束 ;

公司(K) ;
結束 ;
結束 ;
結束 ;

K:= 1 ;
buttonindex:= 0 ;
/ / Alignx:=(Form1中 . clientWidth – (Labelrows(labelwidth + labelresultsize + Xspace)))DIV 2 ;
/ / / / / / / Analogicaly為標籤 – 同樣 , 的標籤
對於i = 0到Form1 . ComponentCount – 1至
開始
(form1的 . 組件[i]是的TLabel)
開始
如果comparetext((form1的 . 組件[我的TLabel) . 名稱 , ‘ 標籤 ‘ + IntToStr(K))= 0,則
開始

行:= buttonindex模(labelrows) ;
列:= buttonindex格(labelrows) ;
如果長度(LabelNames [K – 1])> ; 0 / /然後,如果標籤文本的長度> ; ; 0 – 如果描述是
開始
(Form1中 . 組件[I]的TLabel) . 左起:= alignx +行*(labelwidth + labelresultsize + Xspace) ; / /計算X位置
(Form1中 . 組件[I]的TLabel) . 頂:= yoffsetlabel +柱*(labelheight + yspace) ; / /計算Y位置
(Form1中 . 組件[I]的TLabel) . 寬度:= labelwidth下 ;
(Form1中 . 組件[I]的TLabel) . 高度:= labelheight下 ;
(Form1中 . 組件[我的TLabel) . 標題:LabelNames [K – 1] ; / / /指定標籤說明 – 頭適當的標籤
(Form1中 . 組件[我的TLabel) . 字形 . 顏色:= clwhite下 ; / /設置默認顏色標籤 – 設置標籤的默認顏色
如果pos( ‘ [ – % ] ‘ , LabelNames [K – 1])> ; 0,則(form1的 . 組件[我的TLabel) . 字形 . 顏色:= clyellow下 ; / /設置顏色的光測量 – 用於測量的顏色照明
如果pos( ‘ [ % ] ‘ , LabelNames [K – 1])> ; 0,則(form1的 . 組件[我的TLabel) . 字形 . 顏色:Claque ; / /設置顏色測量% – 感興趣的值的顏色
如果pos( ‘ [C] ‘ , LabelNames [K – 1])> ; 0,則(form1的 . 組件[我的TLabel) . 字形 . 顏色:= clwhite下 ; / /設置顏色溫度管理 – 色溫度值
(Form1中 . 組件[我的TLabel) . 字形 . 大小:labelfontsize ; / /設置字體大小的標籤 – 設置字體大小的文本標籤
公司(buttonindex) ; / /下一個可見的標籤 – 標籤旁邊出現
結束
其他
開始
(Form1中 . 組件[我的TLabel) . 可見:= FALSE ; / /隱藏文字標籤,而 – 隱藏沒有textu標籤
結束 ;
公司(K) ; / /下一個標籤 – 下一個標籤
結束 ;
結束 ;
結束 ;
update_status ; / /從當前設備狀態日誌更新面板 – 狀態更新的驅動程序從服務器的日誌文件eHouse
結束 ;
最終的結果後,自動 – 配置和按鈕位置的程序和刪除無盡的元素(如果你不想在面板上,因為他們有訪問的權利的限制或使用的輸出) .
 自動分配的元素在表格上的最終效果
了解更多: 家庭自動化 – 控制器 eHouse
家庭自動化 eHouse 家庭自動化製造商