Desenvolvemento de software para salas de paneis de control para Windows Tablet – Forma

Domótica Ehouse .
Crear o formulario principal (esquema da pantalla de tablet . Colocado no formulario principal paneis TPanel 24 campos para todo tipo de saídas dixitais RM .
Estes han formar os botóns para conectar a fóra RoomManager (ou eléctrica) .
Ademais , a cor dependerá do estado da lectura .
Por esta razón, usamos os botóns estándar ou tipo similar TButton , porque eles non teñen a posibilidade de cambiar a cor .
Nós os chamamos ” outputX ” onde X é o número de saída .
Eu non teño para ser implantado , porque vai facelo automaticamente , esta aplicación . Para cada botón , a saída debe ser atribuído ao mesmo evento (onClick) – output1Click .
Colocado no Form principal 24 campos de paneis de tipo TPanel para todos os programas a executar RM .
Estes han formar os botóns para conectar o RoomManager actual (é dicir, , on / off dispositivos eléctricos do grupo con un cambio nas entradas de medición dos limiares usado para regular tales . temperatura) .
Nós os chamamos ” programX ” onde X é o número do botón .
Similarmente , hai necesidade de implantar , porque vai facelo automaticamente , esta aplicación .
Para cada botón , o programa debe ser atribuído ao mesmo evento (onClick) – program1Click .
Sobre a forma principal de etiquetas de texto son 16 tipos TLabel para amosar todos os resultados das medicións de RoomManager (numeradas Label1 para Label16) .
Do mesmo xeito que nos casos anteriores refire non é necesario implantar .
Ver a forma final ao  formar para crear panel de control do espazo
Inicio do formulario:

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
procedemento TForm1 . FormCreate (Sender: TObject) ;
var alignx , buttonindex , liña , columna , k , I: enteiro ;
comezar
GetComputerName ; / / Pega o nome do computador ou do panel – le o
camiño: = getcurrentdir () ; / / Pega o directorio da aplicación actual camiño local – le o directorio en que o programa
camiño: = StringReplace camiño ( , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Obter camiño de eHouse aplicación
RemotePath: path = ; / / O mesmo camiño remoteaccess para inicio – no inicio do traxecto mapeado para o mesmo acceso remoto
loadnames_rm ; / Carga / nomes do controlador ehouse1
init_heat_temperature_names ; / / HeatManager init nomes
readethernetdevs ; / / Cargar os controladores de nomes eHouse ethernet
i: = 1 ;
mentres i < ; = Paramcount a / / executar argumento de liña de comandos – procesa a liña de comandos
comezar
se pos ( ‘ / X: ‘ , minúsculas (ParamStr (i))) = 1 ancho entón / panel / – ancho do taboleiro
form1 . Ancho: = chk_int (StringReplace (ParamStr (i) , ‘ / X: ‘ , ‘ ‘ , [Rfignorecase])) ;
se pos ( ‘ / S: ‘ , minúsculas (ParamStr (i)) de altura) = 1 panel, a continuación / / – altura do panel
form1 . height: = chk_int (StringReplace (ParamStr (i) , ‘ / S: ‘ , ‘ ‘ , [Rfignorecase])) ;
se pos ( ‘ / R: ‘ , minúsculas (ParamStr (i))) = 1, entón o nome / dispositivo / (RoomManager) – Nome RoomManger
deviceindex: = RMDeviceIndexByName ((StringReplace (ParamStr (i) , ‘ / R: ‘ , ‘ ‘ , [Rfignorecase]))) ;
se pos ( ‘ / A: ‘ , minúsculas (ParamStr (i))) = 1, entón o enderezo / dispositivo / (RoomManager) – Enderezo RoomManager
deviceindex: = (get_index_rm (StringReplace (ParamStr (i) , ‘ / A: ‘ , ‘ ‘ , [Rfignorecase]))) ;
se pos ( ‘ / P ‘ , minúsculas (ParamStr (i))) = 1, entón o camiño de acceso / / remoto – camiño de acceso remoto
RemotePath: = ((StringReplace (ParamStr (i) , ‘ / P ‘ , ‘ ‘ , [Rfignorecase]))) ;
Inc (i) ;
final ;
se form1 . ancho < ; 100 entón form1 . width: = 800 ; / / Se os parámetros equivocados para o tamaño estándar define – patróns
se form1 . altura < ; 100 entón form1 . height: = 600 ;
devicestoupdatestatus: = IntToStr rm ([deviceindex] . Adrha) + ‘ – ‘ + IntToStr rm ([deviceindex] . ADRL) ;
/ Límite / buscar RoomManager estado actual / filtrar outros dispositivos
/ / Comprobar único dispositivo pannel para uso limitación
/ / Comprobar só o estado da CPU seleccionado veces menos RoomManager e Ehouse servidor
outputbuttonnames (deviceindex) ; / / Inicializar botóns e nomes de etiquetas – botas , botóns e as etiquetas de texto
form1 . Lenda: = ‘ Ehouse Panel de Control: ‘ + Rm [deviceindex] . devname ; / / Set subtítulos das principais formas de Nome RoomManager – cabeceira contén o nome do RoomManager forma
timer1 . Rango: = 3000 ; / Intervalo da tarefa / Set cíclica en milisegundos
timer1 . Enabled: = true ; / / Iniciar tarefas automáticas (actualización de estado
K: = 1 ;
buttonindex: = 0 ; / / Button actual índice (visible) – o número actual da (aparente)
liña: = 0 ; Botón / / corrente na liña – número da tecla de corrente na liña de corrente
/ Columna /: = 0 ;
alignx: = (form1 . clientWidth – (Liñas) * (+ buttonWidth Xspace) div) 2 ; / Centro / botóns no panel – centralización botóns bloques
é i: = 0 para form1 . ComponentCount – 1 / / Saída de instalación botón automático – automaticamente configurar o botón Saír
begin / / para cada obxecto form1 – para todos os elementos do Form1
if (form1 . Compoñentes [i] é TPanel) THEN / / se o obxecto é TPanel (o noso botón) – o TPanel tipo de obxecto (botón)
comezar
se comparetext ((form1 . compoñentes [i] como TPanel) . nome , ‘ saída ‘ + IntToStr (k)) = 0 THEN / / o nome consiste (saída)
comezar
liña: = MOD buttonindex (liñas) ; / / Calcular liñas e columnas índices – calcula as coordenadas da columna e liña
columna: = p buttonindex (liñas) ;
se a lonxitude (OutputNames [k – 1])> ; 0, / / ​​Só mostra botóns ouput co nome – só amosa botóns co nome
comezar
(Form1 . Compoñentes [i] como TPanel) . esquerda: = alignx liña + * (+ buttonWidth Xspace) ; / / Calcular possition eixe X – calcula a súa posición no eixe X
(Form1 . Compoñentes [i] como TPanel) . superior: = yoffsetouts columna + * (+ buttonheight yspace) ; / / Calcular o possition eixe Y – calcula a súa posición no eixe Y
(Form1 . Compoñentes [i] como TPanel) . width: = buttonWidth ; / Set / Botóns Ancho – Ancho dos botóns
(Form1 . Compoñentes [i] como TPanel) . height: = buttonheight ; / / Set Botóns Altura – A cantidade de botóns
(Form1 . compoñentes [i] como TPanel) . Lenda: = Outputnames [k – 1] ; / Lenda Botón / Set – define o texto do botón
(Form1 . compoñentes [i] como TPanel) . Bevelinner: = bvRaised ;
(Form1 . compoñentes [i] como TPanel) . BevelOuter: = bvRaised ;
(Form1 . compoñentes [i] como TPanel) . fonte . Tamaño: = fontsize ; / / SET Tamaño da fonte – define o tamaño da fonte para o botón
Inc (buttonindex) ; / / Botón Seguinte visible – ver o seguinte
final
outro
comezar
(Form1 . compoñentes [i] como TPanel) . visibles: = false ; / / Non = nome non mostrar o botón – eliminar as claves sen nome
final ;
Inc (k) ; Botón / / Next – botón ao lado
final ;
final ;
final ;
/ / / / / / / / / / / / Os mesmos botóns para programa – Do mesmo xeito para os botóns para lanzar programas
buttonindex: = 0 ;
K: = 1 ;
é i: = 0 para form1 . ComponentCount – 1 a
comezar
if (form1 . Compoñentes [i] TPanel é) entón
comezar
se comparetext ((form1 . compoñentes [i] como TPanel) . nome , ‘ programa ‘ + IntToStr (k)) = 0, entón
comezar

liña: = MOD buttonindex (liñas) ;
columna: = p buttonindex (liñas) ;
se a lonxitude (ProgramNames [k – 1])> ; 0 entón
comezar
(Form1 . Compoñentes [i] como TPanel) . esquerda: = alignx liña + * (+ buttonWidth Xspace) ;
(Form1 . Compoñentes [i] como TPanel) . superior: = yoffsetprograms columna + * (+ buttonheight yspace) ;
(Form1 . Compoñentes [i] como TPanel) . width: = buttonWidth ;
(Form1 . Compoñentes [i] como TPanel) . height: = buttonheight ;
(Form1 . compoñentes [i] como TPanel) . Lenda: = Programnames [k – 1] ; Botóns botón / SET / subtítulos para programa – define o nome dos botóns de programas
(Form1 . compoñentes [i] como TPanel) . Bevelinner: = bvRaised ;
(Form1 . compoñentes [i] como TPanel) . BevelOuter: = bvRaised ;
(Form1 . compoñentes [i] como TPanel) . fonte . Tamaño: = fontsize ;
Inc (buttonindex) ;
final
outro
comezar
(Form1 . compoñentes [i] como TPanel) . visibles: = false ;
final ;

Inc (k) ;
final ;
final ;
final ;

K: = 1 ;
buttonindex: = 0 ;
/ / Alignx: = (form1 . clientWidth – (Labelrows * (labelwidth + + labelresultsize Xspace)) div) 2 ;
/ / / / / / / Analogicaly para Etiquetas – Similarmente , o rótulo
é i: = 0 para form1 . ComponentCount – 1 a
comezar
if (form1 . Compoñentes [i] é TLabel), entón
comezar
se comparetext ((form1 . compoñentes [i] como TLabel) . nome , ‘ etiqueta ‘ + IntToStr (k)) = 0, entón
comezar

liña: = MOD buttonindex (labelrows) ;
columna: = p buttonindex (labelrows) ;
se a lonxitude (LabelNames [k – 1])> ; 0, / / ​​se a lonxitude do texto label> ; ; 0 – a descrición
comezar
(Form1 . Compoñentes [i] como TLabel) . esquerda: = alignx liña + * (labelwidth + + labelresultsize Xspace) ; / / Calcular a localización X
(Form1 . Compoñentes [i] como TLabel) . superior: = yoffsetlabel columna + * (+ labelheight yspace) ; / / Calcula o local Y
(Form1 . Compoñentes [i] como TLabel) . width: = labelwidth ;
(Form1 . Compoñentes [i] como TLabel) . height: = labelheight ;
(Form1 . compoñentes [i] como TLabel) . Lenda: = LabelNames [k – 1] ; / / / Asignar etiquetas etiqueta – cabeceiras etiquetaxe adecuada
(Form1 . compoñentes [i] como TLabel) . fonte . color: = clwhite ; Cor estándar / / Set para a etiqueta – Configura a cor por defecto dos rótulos
se pos ( ‘ [ – % ] ‘ , LabelNames [k – 1])> ; 0 entón (form1 . compoñentes [i] como TLabel) . fonte . color: = clyellow ; Cor / Set / a medición de luz – para a medición da cor de iluminación
se pos ( ‘ [ % ] ‘ , LabelNames [k – 1])> ; 0 entón (form1 . compoñentes [i] como TLabel) . fonte . color: = afección ; Medición de cor / set / por cento – cor para o valor de interese
se pos ( ‘ [C] ‘ , LabelNames [k – 1])> ; 0 entón (form1 . compoñentes [i] como TLabel) . fonte . color: = clwhite ; / / Conxunto de cor para control da temperatura – para valores de temperatura de cor
(Form1 . compoñentes [i] como TLabel) . fonte . Tamaño: = labelfontsize ; / Tamaño da fonte / Set para a etiqueta – define o tamaño da fonte da etiqueta de texto
Inc (buttonindex) ; / / Etiqueta continuación visible – etiqueta aparece ó lado
final
outro
comezar
(Form1 . compoñentes [i] como TLabel) . visibles: = false ; / / Ocultar etiquetas de texto sen – ocultar etiquetaxe sen textu
final ;
Inc (k) ; / Label / Next – seguinte etiqueta
final ;
final ;
final ;
update_status ; / / Actualización do panel para o estado actual do dispositivo dende rexistros – actualizacións de estado do condutor dos arquivos de log do servidor Ehouse
final ;
O resultado final despois da auto – configurados e colocación de botón polo programa e eliminar elementos incalculables (se non quere que eles teñan no panel por mor de restricións aos dereitos de acceso ou uso do produto) .
 O efecto final da distribución automática de elementos no formulario
Ler máis: Domótica – Controladores Ehouse
Domótica Ehouse Fabricante de Domótica