软件开发的控制面板客房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 家庭自动化制造商