Windows Tablet için Kontrol Panelleri odalar için Yazılım Geliştirme – Form

Ev Otomasyonu eHouse .
Ana form (tablet ekran düzeni oluşturma . RM dijital çıkışlar her türlü ana Formu 24 alan TPanel paneller yerleştirilmiş .
Bunlar RoomManager (veya elektrik) söndürmek için düğmeleri oluşturacak .
Buna ek olarak , renk okuma durumuna bağlıdır .
Bu nedenle standart düğmeler veya benzer tipte TButton kullanılır , onlar rengini değiştirmek için imkanı yok, çünkü .
Biz onları arayın ” outputX ” X çıkış sayıdır .
Ben konuşlanmış olması gerekmez , bunu otomatik olarak yapacak, çünkü , Bu uygulamanın . Her düğme için , çıkış aynı olay (onClick) atanmalıdır – output1Click .
RM çalıştırmak için tüm programlar için ana formu 24 alan TPanel türü paneller üzerine yerleştirilmiş .
Bunlar mevcut RoomManager (yani geçiş için düğmeler oluşturacak , eşiklerinin ölçüm girişleri değişikliği ile grup elektrikli cihazların açık / kapalı gibi düzenlemek için kullanılır . sıcaklık) .
Biz onları arayın ” programX ” X düğmesi sayıdır .
Aynı , dağıtmak için gerek , bunu otomatik olarak yapacak, çünkü , Bu uygulamanın .
Her düğme için , Program aynı olay (onClick) atanmalıdır – program1Click .
Metin etiket ana form üzerinde TLabel (Label16 için Label1 sayılı) RoomManager ölçümleri tüm sonuçlarını görüntülemek için 16 türleridir .
Benzer şekilde yukarıda durumda olduğu gibi dağıtmak gerekmez .
Için son şeklini görüntüle  oda kontrol paneli oluşturmak için oluşturmak
Formun başlatma:

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
prosedürü TForm1 . FormCreate (Sender: TObject) ;
var alignx , buttonindex , sıra , sütun , k , i: integer ;
başlamak
GetComputerName ; / / Veya bilgisayar panelin adı alın – okur
yol: = getcurrentdir () ; / / Geçerli yerel yolu uygulama dizini alın – dizin okur program
yol: = stringreplace (yol , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Uygulama eHouse yolu alın
remotePath: path = ; Inicialization için remoteaccess için / / aynı yolu – yol başında aynı uzaktan erişim için eşleştirilmiş
loadnames_rm ; / / Yük denetçi isimlerini ehouse1
init_heat_temperature_names ; / / Init heatmanager isimleri
readethernetdevs ; / / Yük denetleyicileri ethernet eHouse isimleri
: i = 1 ;
ise i < ; = / Hiç paramCount / komut satırı argümanı gerçekleştirilecek – komut satırı işler
başlamak
eğer pos ( ‘ / X: ‘ , küçük harf (ParamStr (i))) = 1 then / / panel genişliği – Panelin genişlik
form1 . Genişlik: = chk_int (stringreplace (ParamStr (i) , ‘ / X: ‘ , ‘ ‘ , [Rfignorecase])) ;
eğer pos ( ‘ / S: ‘ , (ParamStr (i)) küçük harfe) = 1 then / / panel yüksekliği – panelinin boy
form1 . yüksekliği: = chk_int (stringreplace (ParamStr (i) , ‘ / S: ‘ , ‘ ‘ , [Rfignorecase])) ;
eğer pos ( ‘ / R: ‘ , (ParamStr (i)) küçük harfe) = 1 then / / aygıt adı (RoomManager) – RoomManger adı
deviceindex: = RMDeviceIndexByName ((stringreplace (ParamStr (i) , ‘ / R: ‘ , ‘ ‘ , [Rfignorecase]))) ;
eğer pos ( ‘ / A: ‘ , küçük harf (ParamStr (i))) = 1 then / / cihaz adresi (RoomManager) – RoomManager adresi
deviceindex: = (get_index_rm (stringreplace (ParamStr (i) , ‘ / A: ‘ , ‘ ‘ , [Rfignorecase]))) ;
eğer pos ( ‘ / P: ‘ , küçük harf (ParamStr (i))) = 1 then / / uzaktan erişim yolu – uzaktan erişim yolu
remotePath: = ((stringreplace (ParamStr (i) , ‘ / P: ‘ , ‘ ‘ , [Rfignorecase]))) ;
inc (i) ;
uç ;
form1 eğer . genişliği < ; 100 sonra form1 . width: = 800 ; / / Boyutu için yanlış parametreler varsayılan ayarlar varsa – Varsayılanları
form1 eğer . yükseklik < ; 100 sonra form1 . yüksekliği: = 600 ;
devicestoupdatestatus: = IntToStr (rm [deviceindex] . Adrha) + ‘ – ‘ + IntToStr (rm [deviceindex] . adrl) ;
Mevcut durumu RoomManager arıyor / / Limit / diğer cihazları filtre
/ / Sınırlama KULLANIM için tek cihaz paneli kontrol edin
/ / Sadece seçilen RoomManager kat daha az CPU durumunu ve sunucu eHouse kontrol
outputbuttonnames (deviceindex) ; / / Düğmeleri ve etiket isimleri Initialize – bot , düğmeleri ve metin etiketleri
form1 . caption: = ‘ eHouse Kontrol Paneli: ‘ + Rm [deviceindex] . devname ; RoomManager İsim temel formları / / Set yazısı – üstbilgi şekil RoomManager adını gösteren
Timer1 . Interval: = 3000 ; Milisaniye / / Set siklik görev aralığı
Timer1 . Etkin: = true ; / / (Durum güncellemesini otomatik görevler başlayın
k: = 1 ;
buttonindex: = 0 ; / / Current butonuna (görünür) endeksi – mevcut sayısı (görünür)
satır: = 0 ; Satır / / Current butonuna – akım hattı içinde mevcut anahtar sayısı
/ / Sütun: = 0 ;
alignx: = (form1 . clientWidth – (Satır) * (buttonWidth + Xspace)) div 2 ; / / Merkez panelindeki düğmeleri – merkezleme blokları düğmeleri
i: = 0 ile form1 . ComponentCount – 1 / / Çıkış düğmesi otomatik kurulum – otomatik Çık düğmesini yapılandırmak
form1 her nesne için / / başlar – Form1 tüm elemanlar için
(form1 eğer . Bileşenleri [i]) TPanel o zaman / / nesne TPanel ise (bizim düğmesi) – Eğer nesne türü TPanel (düğme)
başlamak
Eğer comparetext ((form1 . bileşenleri [i] TPanel gibi) . isim , ‘ çıktı ‘ + IntToStr (k)) = 0 then / / (çıkışı) adı OLUŞMAKTADIR eğer
başlamak
satır: = buttonindex mod (satır) ; / / Satır ve sütun indeksleri hesaplayın – sütun ve satır koordinatları hesaplar
Sütun: = buttonindex div (satırlar) ;
uzunluğu (OutputNames [k varsa – 1])> ; 0 o / / Sadece ismi ile çıkış düğmeleri gösterir – Sadece adı düğmeleri gösterir
başlamak
(Form1 . Bileşenleri [i] TPanel gibi) . Sol: = alignx + satır * (buttonWidth + Xspace) ; / / Hesapla X ekseni aşağı konumdayken – X ekseni konumunu hesaplar
(Form1 . Bileşenleri [i] TPanel gibi) . top: = yoffsetouts + sütun * (buttonheight + yspace) ; / / Y ekseni aşağı konumdayken hesaplayın – Y ekseni konumunu hesaplar
(Form1 . Bileşenleri [i] TPanel gibi) . width: = buttonWidth ; / / Set Genişliği Düğmeler – Düğmeleri genişliği
(Form1 . Bileşenleri [i] TPanel gibi) . yüksekliği: = buttonheight ; / / Set Düğmeler Yüksekliği – Butonların miktar
(Form1 . bileşenleri [i] TPanel gibi) . caption: = Outputnames [k – 1] ; / / Set Düğmesi Caption – düğme metni ayarlar
(Form1 . bileşenleri [i] TPanel gibi) . Bevelinner: = bvRaised ;
(Form1 . bileşenleri [i] TPanel gibi) . BevelOuter: = bvRaised ;
(Form1 . bileşenleri [i] TPanel gibi) . yazı . Boyut: = fontsize ; / / Set Yazı Tipi Boyutu Düğmesi – düğmesi için yazı tipi boyutunu ayarlar
inc (buttonindex) ; / / Sonraki düğmesi görünür – sonraki bakın

başka
başlamak
(Form1 . bileşenleri [i] TPanel gibi) . görünür: = false ; / / No name = düğmesi görünmüyor – isim vermeden anahtarlarını kaldırın
uç ;
inc (k) ; / / Sonraki düğmesi – sonraki düğmesine
uç ;
uç ;
uç ;
Programı için / / / / / / / / / / / / aynı düğmeleri – Benzer düğmeleri programları başlatmak için
buttonindex: = 0 ;
k: = 1 ;
i: = 0 ile form1 . ComponentCount – 1
başlamak
(form1 eğer . Bileşenleri [i] TPanel ise) o
başlamak
Eğer comparetext ((form1 . bileşenleri [i] TPanel gibi) . isim , ‘ program ‘ = 0 + IntToStr (k))
başlamak

satır: = buttonindex mod (satır) ;
Sütun: = buttonindex div (satırlar) ;
uzunluğu (ProgramNames [k varsa – 1])> ; Sonra 0
başlamak
(Form1 . Bileşenleri [i] TPanel gibi) . Sol: = alignx + satır * (buttonWidth + Xspace) ;
(Form1 . Bileşenleri [i] TPanel gibi) . top: = yoffsetprograms + sütun * (buttonheight + yspace) ;
(Form1 . Bileşenleri [i] TPanel gibi) . width: = buttonWidth ;
(Form1 . Bileşenleri [i] TPanel gibi) . yüksekliği: = buttonheight ;
(Form1 . bileşenleri [i] TPanel gibi) . caption: = Programnames [k – 1] ; Program için / / Set tuşuna resim yazısı düğmeleri – Program düğmelerin adını ayarlar
(Form1 . bileşenleri [i] TPanel gibi) . Bevelinner: = bvRaised ;
(Form1 . bileşenleri [i] TPanel gibi) . BevelOuter: = bvRaised ;
(Form1 . bileşenleri [i] TPanel gibi) . yazı . Boyut: = fontsize ;
inc (buttonindex) ;

başka
başlamak
(Form1 . bileşenleri [i] TPanel gibi) . görünür: = false ;
uç ;

inc (k) ;
uç ;
uç ;
uç ;

k: = 1 ;
buttonindex: = 0 ;
/ / Alignx: = (form1 . clientWidth – (Labelrows * (labelwidth + labelresultsize + Xspace))) Div 2 ;
/ / / / / / / Analogicaly Etiketleri için – Aynı , Etiket
i: = 0 ile form1 . ComponentCount – 1
başlamak
(form1 eğer . Bileşenleri [i] TLabel sonra) olduğunu
başlamak
Eğer comparetext ((form1 . bileşenleri TLabel olarak [i]) . isim , ‘ etiket ‘ = 0 + IntToStr (k))
başlamak

satır: = buttonindex mod (labelrows) ;
Sütun: = buttonindex div (labelrows) ;
uzunluğu (LabelNames [k varsa – 1])> ; 0 o / / eğer etiket metninin uzunluğu> ; ; 0 – açıklama ise,
başlamak
(Form1 . Bileşenler TLabel olarak [i]) . Sol: = alignx + satır * (labelwidth + labelresultsize + Xspace) ; / / Hesapla X konumu
(Form1 . Bileşenler TLabel olarak [i]) . top: = yoffsetlabel + sütun * (labelheight + yspace) ; / / Y konumu hesaplama
(Form1 . Bileşenler TLabel olarak [i]) . width: = labelwidth ;
(Form1 . Bileşenler TLabel olarak [i]) . yüksekliği: = labelheight ;
(Form1 . bileşenleri TLabel olarak [i]) . caption: = LabelNames [k – 1] ; / / / Etiket başlıklar atayın – başlıklarını uygun etiketler
(Form1 . bileşenleri TLabel olarak [i]) . yazı . renk: = clwhite ; Etiket / / Set varsayılan renk – etiketler için varsayılan rengini ayarlar
eğer pos ( ‘ [ – % ] ‘ , LabelNames [k – 1])> ; Sonra 0 (form1 . bileşenleri TLabel olarak [i]) . yazı . renk: = clyellow ; Işık ölçümü için / / Set renkli – renkli aydınlatma ölçümü için
eğer pos ( ‘ [ % ] ‘ , LabelNames [k – 1])> ; Sonra 0 (form1 . bileşenleri TLabel olarak [i]) . yazı . renk: = Claque ; Yüzde / / Set renk ölçüm – İlgi değeri için renk
eğer pos ( ‘ [C] ‘ , LabelNames [k – 1])> ; Sonra 0 (form1 . bileşenleri TLabel olarak [i]) . yazı . renk: = clwhite ; Sıcaklık yönetimi için / / Set renkli – renk sıcaklığı değerleri için
(Form1 . bileşenleri TLabel olarak [i]) . yazı . Boyut: = labelfontsize ; Etiket / / Set font boyutu – metin etiketi için yazı tipi boyutunu ayarlar
inc (buttonindex) ; / / Sonraki görünür etiketi – etiketin yanında görünür

başka
başlamak
(Form1 . bileşenleri TLabel olarak [i]) . görünür: = false ; / / Olmadan metin etiketleri gizle – textu olmadan etiketleri gizle
uç ;
inc (k) ; / / Sonraki etiketi – sonraki etiket
uç ;
uç ;
uç ;
update_status ; / / Güncelleme günlükleri mevcut cihaz durumu için panel – Sunucu eHouse gelen günlük dosyalarının sürücü güncellemeleri durumu
uç ;
Oto sonra sonuçta – yapılandırılmış ve düğme yerleşimi programı tarafından ve (onları çünkü erişim haklarına ilişkin kısıtlamalar panelinde ya da çıkış kullanmak istemiyorsanız) hesapsız öğeleri kaldırmak .
 Form elemanlarının otomatik dağıtım nihai etki
Devamını oku: Ev Otomasyonu – Kontrolörler eHouse
Ev Otomasyonu eHouse Ev Otomasyonu Üretici