Développement de logiciels pour les salles de panneaux de commande pour Windows Tablet – Forme

Domotique ehouse .
Créer le formulaire principal (mise en page de l'écran de tablette . Placé sur le formulaire principal panneaux TPanel 24 champs pour tous les types de sorties numériques RM .
Celles-ci forment les boutons pour tourner RoomManager (ou électrique) .
En plus , la couleur dépendra de l'état de la lecture .
Pour cette raison, nous avons utilisé les boutons standard ou de type similaire TButton , parce qu'ils n'ont pas la possibilité de changer la couleur .
Nous les appelons ” outputX ” où X est le numéro de la sortie .
Je n'ai pas besoin d'être déployée , parce qu'il le fera automatiquement , cette application . Pour chaque bouton , la sortie doit être affectée au même événement (onClick) – output1Click .
Placé sur le formulaire principal 24 terrains de panneaux de type TPanel pour tous les programmes à exécuter RM .
Celles-ci forment les boutons pour commuter le courant RoomManager (c.-à- , marche / arrêt des appareils électriques du groupe avec un changement dans les entrées de mesure des seuils utilisés pour réguler tels . température) .
Nous les appelons ” programX ” où X est le numéro de la touche .
De la même façon , pas nécessaire de déployer , parce qu'il le fera automatiquement , cette application .
Pour chaque bouton , le programme doit être affecté à l'événement même (onClick) – program1Click .
Sur la principale forme d'étiquettes de texte existe 16 types TLabel pour afficher tous les résultats des mesures de RoomManager (numérotés de Label1 à Label16) .
De la même manière que dans les cas ci-dessus n'ont pas besoin de déployer .
Voir la version définitive de la  former pour créer panneau de commande salle
Initialisation de la forme:

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
procédure TForm1 . FormCreate (Sender: TObject) ;
var AlignX , buttonindex , rangée , colonne , k , i: integer ;
commencer
GetComputerName ; / / Obtenir le nom de l'ordinateur ou du panneau de – lit l'
chemin: getcurrentdir = () ; / / Obtenir le répertoire courant application locale chemin – lit le répertoire dans lequel le programme
chemin: = StringReplace (chemin , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Récupère le chemin de l'application ehouse
remotePath: = chemin ; / / La même chemin pour remoteaccess pour inicialization – au début de la voie tracée pour l'accès à distance même
loadnames_rm ; Les noms de contrôleur / / Charger ehouse1
init_heat_temperature_names ; / / Init Gestionnaire de chaleur noms
readethernetdevs ; / / Charge les contrôleurs Ethernet noms ehouse
i: = 1 ;
while i < ; = ParamCount à / / effectuer l'argument de ligne de commande – traite la ligne de commande
commencer
si pos ( ‘ / X: ‘ , minuscules (ParamStr (i))) = 1 then / / largeur du panneau – la largeur du panneau
form1 . Largeur: = chk_int (StringReplace (ParamStr (i) , ‘ / X: ‘ , ‘ ‘ , [Rfignorecase])) ;
si pos ( ‘ / S: ‘ , minuscules (ParamStr (i))) = 1 then / / panneau de hauteur – hauteur du panneau
form1 . hauteur: = chk_int (StringReplace (ParamStr (i) , ‘ / S: ‘ , ‘ ‘ , [Rfignorecase])) ;
si pos ( ‘ / R: ‘ , minuscules (ParamStr (i))) = 1 alors le nom / / appareil (RoomManager) – Nom RoomManger
deviceindex: = RMDeviceIndexByName ((StringReplace (ParamStr (i) , ‘ / R: ‘ , ‘ ‘ , [Rfignorecase]))) ;
si pos ( ‘ / A: ‘ , minuscules (ParamStr (i))) = 1, alors l'adresse / / appareil (RoomManager) – Adresse RoomManager
deviceindex: = (get_index_rm (StringReplace (ParamStr (i) , ‘ / A: ‘ , ‘ ‘ , [Rfignorecase]))) ;
si pos ( ‘ / P: ‘ , minuscules (ParamStr (i))) = 1, alors le chemin d'accès / / à distance – chemin d'accès à distance
remotePath: = ((StringReplace (ParamStr (i) , ‘ / P: ‘ , ‘ ‘ , [Rfignorecase]))) ;
inc (i) ;
fin ;
si form1 . largeur < ; 100 puis form1 . largeur: = 800 ; / / Si de mauvais paramètres par défaut pour la taille fixe – par défaut
si form1 . hauteur < ; 100 puis form1 . hauteur: = 600 ;
devicestoupdatestatus: = IntToStr (rm [deviceindex] . Adrha) + ‘ – ‘ + IntToStr (rm [deviceindex] . ADRL) ;
/ / Limite la recherche de RoomManager état actuel / filtrer d'autres appareils
/ / Vérifie dispositif unique panneau de limitation UTILISATION
/ / Vérifie que le statut de la RoomManager fois moins de ressources processeur sélectionné et ehouse serveur
outputbuttonnames (deviceindex) ; / / Initialiser les boutons et les noms des étiquettes – bottes , les boutons et les étiquettes de texte
form1 . légende: = ‘ Panneau de configuration ehouse: ‘ + Rm [deviceindex] . devname ; / / Set légende des principales formes de Nom RoomManager – en-tête indique le nom de la forme RoomManager
timer1 . Intervalle: = 3000 ; / Intervalle / Set tâche cyclique en millisecondes
timer1 . Enabled: = true ; / / Début des tâches automatiques (mise à jour d'état
k: = 1 ;
buttonindex: = 0 ; / Bouton / courant (visible) indice – le nombre actuel de l'(apparente)
r: = 0 ; Bouton / / Courant dans la ligne – numéro de la clé de courant dans la ligne de courant
/ / Colonne: = 0 ;
AlignX: = (form1 . clientWidth – (Rangées) * (buttonWidth + Xspace)) div 2 ; / / Centre touches du panneau de – centrage boutons blocs
pour i: = 0 to form1 . ComponentCount – 1 / / Output setup bouton automatique – automatiquement configurer le bouton Quitter
begin / / pour chaque objet sur form1 – pour tous les éléments de la Form1
if (form1 . Composants [i] est TPanel), puis / / si l'objet est TPanel (notre bouton) – si le TPanel type d'objet (bouton)
commencer
si CompareText ((form1 . composants [i] comme TPanel) . nom , ‘ sortie ‘ + IntToStr (k)) = 0 then / / si le nom CONSIST (sortie)
commencer
r: = buttonindex mod (lignes) ; / / Calcul de lignes et de colonnes des index – calcule les coordonnées de la colonne et de ligne
colonne: = buttonindex div (lignes) ;
si la longueur (OutputNames [k – 1])> ; 0 alors / / Affiche uniquement les boutons sorties que le nom – montre seulement les boutons avec le nom
commencer
(Form1 . Composants [i] comme TPanel) . à gauche: = AlignX + ligne * (buttonWidth + Xspace) ; / / Calculer possition axe X – calcule la position dans l'axe X
(Form1 . Composants [i] comme TPanel) . top: = yoffsetouts + colonne * (buttonheight + yspace) ; / / Calcul de la possition axe Y – calcule la position dans l'axe Y
(Form1 . Composants [i] comme TPanel) . largeur: = buttonWidth ; / / Set Boutons Largeur – Largeur des boutons
(Form1 . Composants [i] comme TPanel) . hauteur: = buttonheight ; / / Set Boutons Hauteur – Le nombre de boutons
(Form1 . composants [i] comme TPanel) . légende: = Outputnames [k – 1] ; / Caption Bouton / Set – définit le texte du bouton
(Form1 . composants [i] comme TPanel) . Bevelinner: = bvRaised ;
(Form1 . composants [i] comme TPanel) . BevelOuter: = bvRaised ;
(Form1 . composants [i] comme TPanel) . fonte . Taille: fontsize = ; / / Set Bouton Taille de la police – définit la taille de la police pour le bouton
inc (buttonindex) ; / / Next bouton visible – voir le prochain
fin
d'autre
commencer
(Form1 . composants [i] comme TPanel) . visibles: = false ; / / Pas de nom = ne pas afficher le bouton – supprimer les clés sans nom
fin ;
inc (k) ; / / Next – bouton à côté
fin ;
fin ;
fin ;
/ / / / / / / / / / / / Les mêmes boutons pour le programme – De même pour les boutons pour lancer des programmes
buttonindex: = 0 ;
k: = 1 ;
pour i: = 0 to form1 . ComponentCount – 1 à
commencer
if (form1 . Composants [i] est TPanel) puis
commencer
si CompareText ((form1 . composants [i] comme TPanel) . nom , ‘ programme ‘ + IntToStr (k)) = 0 alors
commencer

r: = buttonindex mod (lignes) ;
colonne: = buttonindex div (lignes) ;
si la longueur (ProgramNames [k – 1])> ; 0 alors
commencer
(Form1 . Composants [i] comme TPanel) . à gauche: = AlignX + ligne * (buttonWidth + Xspace) ;
(Form1 . Composants [i] comme TPanel) . top: = yoffsetprograms + colonne * (buttonheight + yspace) ;
(Form1 . Composants [i] comme TPanel) . largeur: = buttonWidth ;
(Form1 . Composants [i] comme TPanel) . hauteur: = buttonheight ;
(Form1 . composants [i] comme TPanel) . légende: = Programnames [k – 1] ; / / Définition des boutons de légende du bouton de programme – définit le nom des boutons de programmes
(Form1 . composants [i] comme TPanel) . Bevelinner: = bvRaised ;
(Form1 . composants [i] comme TPanel) . BevelOuter: = bvRaised ;
(Form1 . composants [i] comme TPanel) . fonte . Taille: fontsize = ;
inc (buttonindex) ;
fin
d'autre
commencer
(Form1 . composants [i] comme TPanel) . visibles: = false ;
fin ;

inc (k) ;
fin ;
fin ;
fin ;

k: = 1 ;
buttonindex: = 0 ;
/ / AlignX: = (form1 . clientWidth – (Labelrows * (labelwidth + + labelresultsize Xspace))) div 2 ;
/ / / / / / / Analogicaly pour les étiquettes – De la même façon , l'étiquette
pour i: = 0 to form1 . ComponentCount – 1 à
commencer
if (form1 . Composants [i] est TLabel), puis
commencer
si CompareText ((form1 . composants [i] comme TLabel) . nom , ‘ étiquette ‘ + IntToStr (k)) = 0 alors
commencer

r: = buttonindex mod (labelrows) ;
colonne: = buttonindex div (labelrows) ;
si la longueur (LabelNames [k – 1])> ; 0 alors / / si la longueur du texte de l'étiquette> ; ; 0 – si la description est
commencer
(Form1 . Composants [i] comme TLabel) . à gauche: = AlignX + ligne * (labelwidth + + labelresultsize Xspace) ; / / Calculer emplacement X
(Form1 . Composants [i] comme TLabel) . top: = yoffsetlabel + colonne * (HauteurEtiquette + yspace) ; / / Calcul de la position Y
(Form1 . Composants [i] comme TLabel) . largeur: = labelwidth ;
(Form1 . Composants [i] comme TLabel) . hauteur: = HauteurEtiquette ;
(Form1 . composants [i] comme TLabel) . légende: = LabelNames [k – 1] ; / / / Affecte les légendes d'étiquette – têtes d'étiquettes appropriées
(Form1 . composants [i] comme TLabel) . fonte . couleur: = clwhite ; Couleur par défaut / / Set pour étiquettes – définit la couleur par défaut des libellés
si pos ( ‘ [ – % ] ‘ , LabelNames [k – 1])> ; 0 alors (form1 . composants [i] comme TLabel) . fonte . couleur: = clYellow ; Couleur / / Set pour la mesure de la lumière – pour la mesure de la couleur d'éclairage
si pos ( ‘ [ % ] ‘ , LabelNames [k – 1])> ; 0 alors (form1 . composants [i] comme TLabel) . fonte . couleur: = Claque ; Mesure de la couleur / / Set pour pour cent – la couleur de la valeur de l'intérêt
si pos ( ‘ [C] ‘ , LabelNames [k – 1])> ; 0 alors (form1 . composants [i] comme TLabel) . fonte . couleur: = clwhite ; / / Définir la couleur pour la gestion de la température – pour des valeurs de température de couleur
(Form1 . composants [i] comme TLabel) . fonte . Taille: = labelfontsize ; / Taille de la police / Set pour étiquettes – définit la taille de la police pour l'étiquette de texte
inc (buttonindex) ; / / Label suivant visibles – étiquette apparaît à côté
fin
d'autre
commencer
(Form1 . composants [i] comme TLabel) . visibles: = false ; / / Masquer les étiquettes de texte sans – masquer les étiquettes sans textu
fin ;
inc (k) ; / / Label suivant – étiquette suivante
fin ;
fin ;
fin ;
update_status ; / / Mise à jour du panneau de statut actuel de l'appareil à partir de grumes – met à jour le statut du conducteur des fichiers journaux du serveur ehouse
fin ;
Le résultat final après que l'auto – configuré et l'emplacement des boutons par le programme et supprimer des éléments indicibles (si vous ne voulez pas qu'ils ont sur le panneau en raison de restrictions sur les droits d'accès ou de l'utilisation de la sortie) .
 L'effet final de la distribution automatique des éléments sur le formulaire
En savoir plus: Domotique – Contrôleurs ehouse
Domotique ehouse Fabricant Domotique