Распрацоўка праграмнага забеспячэння для кантрольных панэляў памяшкання для Windows Tablet – Форма

Home Automation EHouse .
Стварэнне галоўнай формы (размяшчэнне экрана планшэта . Размешчаныя на галоўнай форме панэляў TPanel 24 палёў для ўсіх тыпаў лічбавых выхадаў RM .
Яны ўтвараюць кнопкі аказваюцца RoomManager (або электрычныя) .
У дадатак , Колер будзе залежаць ад стану зачытаць .
Па гэтай прычыне мы выкарыстоўвалі стандартныя кнопкі ці аналагічны тып TButton , таму што яны не маюць магчымасці змяніць колер .
Мы называем іх ” outputX ” дзе X гэты лік выходных .
Мне не трэба, каб быць разгорнута , таму што яна будзе рабіць гэта аўтаматычна , гэта прыкладанне . Для кожнай кнопкі , Выхад павінен быць аднесены да таго ж падзеі (OnClick) – output1Click .
Размешчаныя на галоўнай форме 24 палёў панэлі TPanel тыпу для ўсіх праграм, якія запускаюцца RM .
Яны ўтвараюць кнопкі для пераключэння бягучага RoomManager (г.зн. , Уключэнне / выключэнне электрычных прыбораў групы з зменамі ў вымяральных уваходаў парогі, якія выкарыстоўваюцца для рэгулявання такіх . тэмпература) .
Мы называем іх ” programX ” дзе X гэты лік кнопку .
Аналагічным чынам , няма неабходнасці ў разгортванні , таму што яна будзе рабіць гэта аўтаматычна , гэта прыкладанне .
Для кожнай кнопкі , Праграма павінна быць прызначана і тое ж падзея (OnClick) – program1Click .
На галоўнай форме тэкставых пазнак 16 тыпаў TLabel для адлюстравання ўсіх вынікаў вымярэнняў RoomManager (з нумарамі Label1 на Label16) .
Сапраўды гэтак жа, як і ў вышэйзгаданых выпадках не трэба разгарнуць .
Прагледзець канчатковыя формы  форму, каб стварыць пакаёвай панэлі кіравання
Ініцыялізацыя выглядзе:

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
Працэдура TForm1 . FormCreate (Sender: TObject) ;
VAR alignx , buttonindex , радок , калонка , да , I: Integer ;
пачынаць
GetComputerName ; / / Атрымаць імя кампутара ці панэлі – чытае
Шлях: = GetCurrentDir () ; / / Атрымаць бягучы лакальны каталог прыкладанняў шляхам – гаворыцца ў каталог, у якім праграма
Шлях: = StringReplace (шлях , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Атрымаць шлях прыкладання EHouse
RemotePath: = шлях ; / / Там жа шлях для аддаленага доступу для inicialization – У пачатку шляху адлюстроўваюцца на той жа выдалены доступ
loadnames_rm ; / / Загрузіць кантролер імёны ehouse1
init_heat_temperature_names ; / / Init heatmanager імёны
readethernetdevs ; / / Загрузіць кантролеры Ethernet імёны EHouse
I: = 1 ;
у той час як я < ; = ParamCount / / для выканання аргумент каманднага радка – апрацоўвае камандную радок
пачынаць
калі магчыма ( ‘ / X: ‘ , ніжні рэгістр (ParamStr (я))) = 1, то / / шырыня панэлі – Шырыня панэлі
form1 . Шырыня: = chk_int (StringReplace (ParamStr (I) , ‘ / X: ‘ , ‘ ‘ , [Rfignorecase])) ;
калі магчыма ( ‘ / S: ‘ , ніжні рэгістр (ParamStr (я))) = 1, то / / вышыня панэлі – Вышыня панэлі
form1 . Вышыня: = chk_int (StringReplace (ParamStr (I) , ‘ / S: ‘ , ‘ ‘ , [Rfignorecase])) ;
калі магчыма ( ‘ / R: ‘ , ніжні рэгістр (ParamStr (я))) = 1, то / / імя прылады (RoomManager) – RoomManger імя
deviceindex: = RMDeviceIndexByName ((StringReplace (ParamStr (I) , ‘ / R: ‘ , ‘ ‘ , [Rfignorecase]))) ;
калі магчыма ( ‘ / A: ‘ , ніжні рэгістр (ParamStr (я))) = 1, то / / адрас прылады (RoomManager) – RoomManager адрас
deviceindex: = (get_index_rm (StringReplace (ParamStr (I) , ‘ / A: ‘ , ‘ ‘ , [Rfignorecase]))) ;
калі магчыма ( ‘ / P: ‘ , ніжні рэгістр (ParamStr (я))) = 1, то / / выдалены доступ шлях – выдалены шлях доступу
RemotePath: = ((StringReplace (ParamStr (I) , ‘ / P: ‘ , ‘ ‘ , [Rfignorecase]))) ;
Inc (I) ;
канец ;
Калі Form1 . Шырыня < ; 100, то form1 . шырыня: = 800 ; / / Калі няправільныя параметры для памеру усталёўваецца па змаўчанні – Па змаўчанні
Калі Form1 . Вышыня < ; 100, то form1 . Вышыня = 600 ;
devicestoupdatestatus: = IntToStr (RM [deviceindex] . Adrha) + ‘ – ‘ + IntToStr (RM [deviceindex] . ADRL) ;
/ / Limit пошуку бягучага стану RoomManager / адфільтраваць іншыя прылады
/ / Праверка на адным прыладзе панэллю для абмежавання ПРЫМЯНЕННЕ
/ / Правяраем толькі статус абранага RoomManager разоў менш працэсараў і сервераў EHouse
outputbuttonnames (deviceindex) ; / / Ініцыялізацыі кнопкі і надпісы імёнаў – чаравікі , Кнопкі і тэкставыя пазнакі
form1 . Подпіс: = ‘ EHouse панэлі кіравання: ‘ + Rm [deviceindex] . devname ; / / Устанавіць загаловак з асноўных формаў RoomManager Імя – загалоўку адлюстроўваецца назва віду RoomManager
timer1 . Інтэрвал: = 3000 ; / / Устанавіць інтэрвал цыклічныя задачы ў мілісекундах
timer1 . Уключана: = True ; / / Запуск аўтаматычных задач (абнаўленне статусу
K: = 1 ;
buttonindex: = 0 ; / / Бягучы кнопкі (бачны) індэкс – бягучае лік (ўяўная)
радок: = 0 ; / / Бягучы кнопкі ў радку – нумар бягучага ключа ў бягучай радку
/ / Калонкі: = 0 ;
alignx: = (Form1 . ClientWidth – (Строк) * (buttonwidth + Xspace)) Div 2 ; / / Цэнтр кнопак на панэлі – цэнтравання блока кнопак
для I: = 0 да form1 . ComponentCount – 1 / / Output кнопку аўтаматычнай налады – аўтаматычна наладзіць кнопкі выхаду
Begin / / для кожнага аб'екта на Form1 – для ўсіх элементаў Form1
калі (form1 . Кампаненты [I] з'яўляецца TPanel), то / / калі аб'ект з'яўляецца TPanel (наша кнопка) – калі TPanel тып аб'екта (кнопка)
пачынаць
калі comparetext ((form1 . кампаненты [я], як TPanel) . імя , ‘ выхадны ‘ + IntToStr (к)) = 0, то / / калі імя адбудзецца (выхад)
пачынаць
радок: = buttonindex мода (радкі) ; / / Вылічыць радкоў і слупкоў індэксаў – вылічае каардынаты радка і слупка
калонкі: = buttonindex спраў (радкоў) ;
калі даўжыня (OutputNames [да – 1])> ; 0, то / / Толькі паказвае вывадзе кнопкі з імем – паказвае толькі кнопкі з імем
пачынаць
(Form1 . Кампаненты [я], як TPanel) . Злева направа: = alignx + радок * (buttonwidth + Xspace) ; / / Вылічыць восі Х possition – разлічвае сваю пазіцыю па восі X
(Form1 . Кампаненты [я], як TPanel) . ТОП: = yoffsetouts + калонкі * (buttonheight + yspace) ; / / Вылічыць possition восі Y – вылічае свае пазіцыі па восі Y
(Form1 . Кампаненты [я], як TPanel) . Шырыня: = buttonwidth ; / / Set Шырыня кнопак – Шырыня кнопак
(Form1 . Кампаненты [я], як TPanel) . Вышыня: = buttonheight ; / / Set Кнопкі Вышыня – Колькасць кнопак
(Form1 . кампаненты [я], як TPanel) . Подпіс: = Outputnames [да – 1] ; / / Усталяванне кнопкі хуткага запуску – задае тэкст кнопкі
(Form1 . кампаненты [я], як TPanel) . Bevelinner: = bvRaised ;
(Form1 . кампаненты [я], як TPanel) . BevelOuter: = bvRaised ;
(Form1 . кампаненты [я], як TPanel) . шрыфт . Памеры: = памер шрыфта ; / / Set Button Памер шрыфта – ўсталёўвае памер шрыфта для кнопкі
Inc (buttonindex) ; / / Наступная кнопка бачных – гл. наступны
канец
яшчэ
пачынаць
(Form1 . кампаненты [я], як TPanel) . бачным: = False ; / / Без назвы = не паказваць кнопкі – выдаліць ключы без імя
канец ;
Inc (к) ; / / Наступная кнопка – Наступная кнопка
канец ;
канец ;
канец ;
/ / / / / / / / / / / / Там жа кнопкі для праграмы – Сапраўды гэтак жа для кнопак для запуску праграм
buttonindex: = 0 ;
K: = 1 ;
для I: = 0 да form1 . ComponentCount – Ад 1 да
пачынаць
калі (form1 . Кампаненты [I] з'яўляецца TPanel), то
пачынаць
калі comparetext ((form1 . кампаненты [я], як TPanel) . імя , ‘ праграма ‘ + IntToStr (к)) = 0, то
пачынаць

радок: = buttonindex мода (радкі) ;
калонкі: = buttonindex спраў (радкоў) ;
калі даўжыня (ProgramNames [да – 1])> ; 0, то
пачынаць
(Form1 . Кампаненты [я], як TPanel) . Злева направа: = alignx + радок * (buttonwidth + Xspace) ;
(Form1 . Кампаненты [я], як TPanel) . ТОП: = yoffsetprograms + калонкі * (buttonheight + yspace) ;
(Form1 . Кампаненты [я], як TPanel) . Шырыня: = buttonwidth ;
(Form1 . Кампаненты [я], як TPanel) . Вышыня: = buttonheight ;
(Form1 . кампаненты [я], як TPanel) . Подпіс: = Programnames [да – 1] ; / / Усталяванне кнопкі хуткага запуску кнопкі для праграмы – задае імя праграмы кнопкамі
(Form1 . кампаненты [я], як TPanel) . Bevelinner: = bvRaised ;
(Form1 . кампаненты [я], як TPanel) . BevelOuter: = bvRaised ;
(Form1 . кампаненты [я], як TPanel) . шрыфт . Памеры: = памер шрыфта ;
Inc (buttonindex) ;
канец
яшчэ
пачынаць
(Form1 . кампаненты [я], як TPanel) . бачным: = False ;
канец ;

Inc (к) ;
канец ;
канец ;
канец ;

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 (к)) = 0, то
пачынаць

радок: = buttonindex мод (labelrows) ;
калонкі: = buttonindex спраў (labelrows) ;
калі даўжыня (LabelNames [да – 1])> ; 0, то / / калі даўжыня тэксту пазнакі> ; ; 0 – Калі апісанне
пачынаць
(Form1 . Кампаненты [я], як TLabel) . Злева направа: = alignx + радок * (labelwidth + + labelresultsize Xspace) ; / / Вылічыць месцазнаходжанне X
(Form1 . Кампаненты [я], як TLabel) . ТОП: = yoffsetlabel + калонкі * (labelheight + yspace) ; / / Вылічыць месцазнаходжанне Y
(Form1 . Кампаненты [я], як TLabel) . Шырыня: = labelwidth ;
(Form1 . Кампаненты [я], як TLabel) . Вышыня: = labelheight ;
(Form1 . кампаненты [я], як TLabel) . Подпіс: = LabelNames [да – 1] ; / / / Прысвоіць пазнаку подпісы – Загалоўкі прыдатныя пазнакі
(Form1 . кампаненты [я], як TLabel) . шрыфт . Колер: = clwhite ; / / Устанавіць колер па змаўчанні для этыкеткі – ўсталёўвае колер па змаўчанні для этыкетак
калі магчыма ( ‘ [ – % ] ‘ , LabelNames [да – 1])> ; 0, то (form1 . кампаненты [я], як TLabel) . шрыфт . Колер: = clyellow ; / / Устанавіць колер для вымярэння святла – для вымярэння колеру асвятлення
калі магчыма ( ‘ [ % ] ‘ , LabelNames [да – 1])> ; 0, то (form1 . кампаненты [я], як TLabel) . шрыфт . Колер: = Claque ; / / Устанавіць колер для вымярэння адсотка – Колер на кошт цікавасць
калі магчыма ( ‘ [C] ‘ , LabelNames [да – 1])> ; 0, то (form1 . кампаненты [я], як TLabel) . шрыфт . Колер: = clwhite ; / / Устанавіць колер для кіравання тэмпературай – для значэнняў каляровай тэмпературы
(Form1 . кампаненты [я], як TLabel) . шрыфт . Памеры: = labelfontsize ; / / Устанавіць памер шрыфта для этыкетак – ўсталёўвае памер шрыфта для тэкставай пазнакі
Inc (buttonindex) ; / / Наступная адрозны знак – Пазнака адлюстроўваецца наступная
канец
яшчэ
пачынаць
(Form1 . кампаненты [я], як TLabel) . бачным: = False ; / / Не паказваць тэкст этыкеткі без – схаваць этыкеткі без textu
канец ;
Inc (к) ; / / Наступная пазнака – наступнай этыкеткі
канец ;
канец ;
канец ;
update_status ; / / Абнавіць панэль для бягучага стану прылады з ацыліндраванага бервяна – Абнаўлення статусу кіроўцы лог-файлаў з сервера EHouse
канец ;
У выніку пасля аўтаматычнай – настроены і кнопкі размяшчэнне праграмы і выдаліце ​​невымоўнае элементы (калі вы не хочаце, каб у іх на панэль з-за абмежаванняў правоў доступу або выкарыстання выхадных) .
 Канчатковы эфект аўтаматычнага размеркавання элементаў на форме
Чытайце таксама: Home Automation – Кантролеры EHouse
Home Automation EHouse Вытворца Home Automation