Desenvolvimento de Software para salas de painéis de controle para Windows Tablet – Forma

Domótica Ehouse .
Criar o formulário principal (layout da tela de tablet . Colocado no formulário principal painéis TPanel 24 campos para todos os tipos de saídas digitais RM .
Estes irão formar os botões para ligar para fora RoomManager (ou elétrica) .
Além , a cor vai depender do estado da leitura .
Por esta razão, usamos os botões padrão ou tipo similar TButton , porque eles não têm a possibilidade de alterar a cor .
Nós os chamamos ” outputX ” onde X é o número de saída .
Eu não preciso para ser implantado , porque ele vai fazer isso automaticamente , esta aplicação . Para cada botão , a saída deve ser atribuído ao mesmo evento (onClick) – output1Click .
Colocado no Form principal 24 campos de painéis do tipo TPanel para todos os programas a correr RM .
Estes irão formar os botões para ligar o RoomManager corrente (isto é, , on / off dispositivos eléctricos do grupo com uma mudança nas entradas de medição dos limiares usado para regular tais . temperatura) .
Nós os chamamos ” programX ” onde X é o número do botão .
Similarmente , há necessidade de implantar , porque ele vai fazer isso automaticamente , esta aplicação .
Para cada botão , o programa deve ser atribuído ao mesmo evento (onClick) – program1Click .
Sobre a forma principal de etiquetas de texto são 16 tipos TLabel para mostrar todos os resultados das medições de RoomManager (numeradas Label1 para Label16) .
Da mesma forma como nos casos acima referidos não é necessário implantar .
Ver a forma final para o  formar para criar painel de controle do espaço
Inicialização do formulário:

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
procedimento TForm1 . FormCreate (Sender: TObject) ;
var alignx , buttonindex , linha , coluna , k , i: inteiro ;
começar
GetComputerName ; / / Pega o nome do computador ou do painel – lê o
caminho: = getcurrentdir () ; / / Pega o diretório do aplicativo atual caminho local – lê o diretório em que o programa
caminho: = StringReplace caminho ( , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Obter caminho de eHouse aplicação
RemotePath: path = ; / / O mesmo caminho para remoteaccess para INICIALIZAÇÃO – no início do trajecto mapeado para o mesmo acesso remoto
loadnames_rm ; / Carga / nomes do controlador ehouse1
init_heat_temperature_names ; / / HeatManager Init nomes
readethernetdevs ; / / Carregar os controladores de nomes eHouse ethernet
i: = 1 ;
enquanto i < ; = Paramcount para / / executar argumento de linha de comando – processa a linha de comando
começar
se pos ( ‘ / X: ‘ , minúsculas (ParamStr (i))) = 1 largura então / painel / – largura do painel
form1 . Largura: = chk_int (StringReplace (ParamStr (i) , ‘ / X: ‘ , ‘ ‘ , [Rfignorecase])) ;
se pos ( ‘ / S: ‘ , minúsculas (ParamStr (i)) de altura) = 1 painel, em seguida / / – altura do painel
form1 . height: = chk_int (StringReplace (ParamStr (i) , ‘ / S: ‘ , ‘ ‘ , [Rfignorecase])) ;
se pos ( ‘ / R: ‘ , minúsculas (ParamStr (i))) = 1, então o nome / dispositivo / (RoomManager) – Nome RoomManger
deviceindex: = RMDeviceIndexByName ((StringReplace (ParamStr (i) , ‘ / R: ‘ , ‘ ‘ , [Rfignorecase]))) ;
se pos ( ‘ / A: ‘ , minúsculas (ParamStr (i))) = 1, então o endereço / dispositivo / (RoomManager) – Endereço RoomManager
deviceindex: = (get_index_rm (StringReplace (ParamStr (i) , ‘ / A: ‘ , ‘ ‘ , [Rfignorecase]))) ;
se pos ( ‘ / P: ‘ , minúsculas (ParamStr (i))) = 1, então o caminho de acesso / / remoto – caminho de acesso remoto
RemotePath: = ((StringReplace (ParamStr (i) , ‘ / P: ‘ , ‘ ‘ , [Rfignorecase]))) ;
inc (i) ;
final ;
se form1 . largura < ; 100 então form1 . width: = 800 ; / / Se os parâmetros errados para o tamanho padrão define – padrões
se form1 . altura < ; 100 então form1 . height: = 600 ;
devicestoupdatestatus: = IntToStr rm ([deviceindex] . Adrha) + ‘ – ‘ + IntToStr rm ([deviceindex] . ADRL) ;
/ Limite / procurando RoomManager status atual / filtrar outros dispositivos
/ / Verificar único dispositivo pannel para UTILIZAÇÃO limitação
/ / Verificar apenas o status da CPU selecionado vezes menos RoomManager e Ehouse servidor
outputbuttonnames (deviceindex) ; / / Inicializar botões e nomes de rótulos – botas , botões e etiquetas de texto
form1 . Legenda: = ‘ Ehouse Painel de Controle: ‘ + Rm [deviceindex] . devname ; / / Set legenda das principais formas de Nome RoomManager – cabeçalho mostra o nome do RoomManager forma
timer1 . Intervalo: = 3000 ; / Intervalo da tarefa / Set cíclica em milissegundos
timer1 . Enabled: = true ; / / Iniciar tarefas automáticas (atualização de status
k: = 1 ;
buttonindex: = 0 ; / / Botão atual índice (visível) – o número atual da (aparente)
linha: = 0 ; Botão / / corrente na linha – número da tecla de corrente na linha de corrente
/ Coluna /: = 0 ;
alignx: = (form1 . clientWidth – (Linhas) * (+ buttonWidth Xspace) div) 2 ; / Centro / botões no painel – centralização botões blocos
for i: = 0 para form1 . ComponentCount – 1 / / Saída de instalação botão automático – automaticamente configurar o botão Sair
begin / / para cada objeto form1 – para todos os elementos do Form1
if (form1 . Componentes [i] é TPanel) then / / se o objeto é TPanel (nosso botão) – se o TPanel tipo de objeto (botão)
começar
se comparetext ((form1 . componentes [i] como TPanel) . nome , ‘ saída ‘ + IntToStr (k)) = 0 then / / se o nome CONSISTE (saída)
começar
linha: = MOD buttonindex (linhas) ; / / Calcular linhas e colunas índices – calcula as coordenadas da coluna e linha
coluna: = div buttonindex (linhas) ;
se o comprimento (OutputNames [k – 1])> ; 0, / / ​​Só mostra botões ouput com o nome – só mostra botões com o nome
começar
(Form1 . Componentes [i] como TPanel) . esquerda: = alignx linha + * (+ buttonWidth Xspace) ; / / Calcular possition eixo X – calcula a sua posição no eixo X
(Form1 . Componentes [i] como TPanel) . superior: = yoffsetouts coluna + * (+ buttonheight yspace) ; / / Calcular o possition eixo Y – calcula a sua posição no eixo Y
(Form1 . Componentes [i] como TPanel) . width: = buttonWidth ; / Set / Botões Largura – Largura dos botões
(Form1 . Componentes [i] como TPanel) . height: = buttonheight ; / / Set Botões Altura – A quantidade de botões
(Form1 . componentes [i] como TPanel) . Legenda: = Outputnames [k – 1] ; / Legenda Botão / Set – define o texto do botão
(Form1 . componentes [i] como TPanel) . Bevelinner: = bvRaised ;
(Form1 . componentes [i] como TPanel) . BevelOuter: = bvRaised ;
(Form1 . componentes [i] como TPanel) . fonte . Tamanho: = fontsize ; / / SET Tamanho da fonte – define o tamanho da fonte para o botão
inc (buttonindex) ; / / Botão Avançar visível – ver o próximo
final
outro
começar
(Form1 . componentes [i] como TPanel) . visíveis: = false ; / / Não = nome não mostrar o botão – remover as chaves sem um nome
final ;
inc (k) ; Botão / / Next – botão ao lado
final ;
final ;
final ;
/ / / / / / / / / / / / Os mesmos botões para programa – Da mesma forma para os botões para lançar programas
buttonindex: = 0 ;
k: = 1 ;
for i: = 0 para form1 . ComponentCount – 1 a
começar
if (form1 . Componentes [i] TPanel é) então
começar
se comparetext ((form1 . componentes [i] como TPanel) . nome , ‘ programa ‘ + IntToStr (k)) = 0, então
começar

linha: = MOD buttonindex (linhas) ;
coluna: = div buttonindex (linhas) ;
se o comprimento (ProgramNames [k – 1])> ; 0 então
começar
(Form1 . Componentes [i] como TPanel) . esquerda: = alignx linha + * (+ buttonWidth Xspace) ;
(Form1 . Componentes [i] como TPanel) . superior: = yoffsetprograms coluna + * (+ buttonheight yspace) ;
(Form1 . Componentes [i] como TPanel) . width: = buttonWidth ;
(Form1 . Componentes [i] como TPanel) . height: = buttonheight ;
(Form1 . componentes [i] como TPanel) . Legenda: = Programnames [k – 1] ; Botões botão / SET / legenda para programa – define o nome dos botões de programas
(Form1 . componentes [i] como TPanel) . Bevelinner: = bvRaised ;
(Form1 . componentes [i] como TPanel) . BevelOuter: = bvRaised ;
(Form1 . componentes [i] como TPanel) . fonte . Tamanho: = fontsize ;
inc (buttonindex) ;
final
outro
começar
(Form1 . componentes [i] como TPanel) . visíveis: = 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
for i: = 0 para form1 . ComponentCount – 1 a
começar
if (form1 . Componentes [i] é TLabel), então
começar
se comparetext ((form1 . componentes [i] como TLabel) . nome , ‘ etiqueta ‘ + IntToStr (k)) = 0, então
começar

linha: = MOD buttonindex (labelrows) ;
coluna: = div buttonindex (labelrows) ;
se o comprimento (LabelNames [k – 1])> ; 0, / / ​​se o comprimento do texto label> ; ; 0 – se a descrição é
começar
(Form1 . Componentes [i] como TLabel) . esquerda: = alignx linha + * (labelwidth + + labelresultsize Xspace) ; / / Calcular a localização X
(Form1 . Componentes [i] como TLabel) . superior: = yoffsetlabel coluna + * (+ labelheight yspace) ; / / Calcula o local Y
(Form1 . Componentes [i] como TLabel) . width: = labelwidth ;
(Form1 . Componentes [i] como TLabel) . height: = labelheight ;
(Form1 . componentes [i] como TLabel) . Legenda: = LabelNames [k – 1] ; / / / Atribuir legendas rótulo – cabeçalhos rotulagem adequada
(Form1 . componentes [i] como TLabel) . fonte . color: = clwhite ; Cor padrão / / Set para a etiqueta – define a cor padrão dos rótulos
se pos ( ‘ [ – % ] ‘ , LabelNames [k – 1])> ; 0 então (form1 . componentes [i] como TLabel) . fonte . color: = clyellow ; Cor / Set / para medição de luz – para a medição da cor de iluminação
se pos ( ‘ [ % ] ‘ , LabelNames [k – 1])> ; 0 então (form1 . componentes [i] como TLabel) . fonte . color: = Claque ; Medição de cor / Set / por cento – cor para o valor de interesse
se pos ( ‘ [C] ‘ , LabelNames [k – 1])> ; 0 então (form1 . componentes [i] como TLabel) . fonte . color: = clwhite ; / / Conjunto de cor para controle da temperatura – para valores de temperatura de cor
(Form1 . componentes [i] como TLabel) . fonte . Tamanho: = labelfontsize ; / Tamanho da fonte / Set para a etiqueta – define o tamanho da fonte do rótulo de texto
inc (buttonindex) ; / / Rótulo seguida visível – rótulo aparece ao lado
final
outro
começar
(Form1 . componentes [i] como TLabel) . visíveis: = false ; / / Ocultar rótulos de texto sem – ocultar rótulos sem textu
final ;
inc (k) ; / Label / Next – próxima etiqueta
final ;
final ;
final ;
update_status ; / / Atualização do painel para status atual do dispositivo a partir de logs – atualizações de status do motorista dos arquivos de log do servidor Ehouse
final ;
O resultado final depois da auto – configurados e colocação de botão pelo programa e remover elementos incalculáveis ​​(se você não quer que eles tenham no painel por causa de restrições aos direitos de acesso ou uso do produto) .
 O efeito final da distribuição automática de elementos no Formulário
Leia mais: Domótica – Controladores Ehouse
Domótica Ehouse Fabricante de Domótica