การพัฒนาซอฟต์แวร์สำหรับห้องพักแผงควบคุมสำหรับ Windows แท็บเล็ต – ฟอร์ม

บ้านอัตโนมัติ 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) ;
alignx var , buttonindex , แถว , คอลัมน์ , K , i: จำนวนเต็ม ;
เริ่ม
GetComputerName ; / / รับชื่อของคอมพิวเตอร์หรือแผง – อ่าน
เส้นทาง: getcurrentdir = () ; / / Get ไดเรกทอรีท้องถิ่นเส้นทางปัจจุบันโปรแกรม – อ่านไดเรกทอรีที่โปรแกรม
เส้นทาง: = stringreplace เส้นทาง ( , ‘ \ Bin ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / Get เส้นทางของแอพลิเคชัน eHouse
remotepath: เส้นทาง = ; / / เส้นทางเดียวกันสำหรับ Remoteaccess สำหรับ inicialization – ที่จุดเริ่มต้นของเส้นทางแมปสำหรับการเข้าถึงระยะไกลเดียวกัน
loadnames_rm ; / โหลด / ชื่อตัวควบคุม ehouse1
init_heat_temperature_names ; / / heatmanager Init ชื่อ
readethernetdevs ; ควบคุม / / โหลด Ethernet ชื่อ eHouse
i: = 1 ;
ในขณะที่ฉัน < ; = Paramcount ไป / / ดำเนินการอาร์กิวเมนต์บรรทัดคำสั่ง – บรรทัดคำสั่งประมวลผล
เริ่ม
ถ้า pos ( ‘ / X: ‘ , พิมพ์เล็ก (ParamStr (i))) = 1 กว้างแล้ว / แผง / – ความกว้างของแผง
Form1 . ความกว้าง: = chk_int (stringreplace (ParamStr (i) , ‘ / X: ‘ , ‘ ‘ , [Rfignorecase])) ;
ถ้า pos ( ‘ / S: ‘ , พิมพ์เล็ก (ParamStr (i)) สูง) = 1 แผงแล้ว / / – ความสูงของแผง
Form1 . ความสูง = chk_int (stringreplace (ParamStr (i) , ‘ / S: ‘ , ‘ ‘ , [Rfignorecase])) ;
ถ้า pos ( ‘ / R: ‘ , พิมพ์เล็ก (ParamStr (i))) = 1 แล้วชื่อ / อุปกรณ์ / (RoomManager) – ชื่อ RoomManger
deviceindex: RMDeviceIndexByName = ((stringreplace (ParamStr (i) , ‘ / R: ‘ , ‘ ‘ , [Rfignorecase]))) ;
ถ้า pos ( ‘ /: ‘ , พิมพ์เล็ก (ParamStr (i))) = 1 แล้วที่อยู่ / อุปกรณ์ / (RoomManager) – ที่อยู่ RoomManager
deviceindex: = (get_index_rm (stringreplace (ParamStr (i) , ‘ /: ‘ , ‘ ‘ , [Rfignorecase]))) ;
ถ้า pos ( ‘ / P: ‘ , พิมพ์เล็ก (ParamStr (i))) = 1 เส้นทางการเข้าถึงแล้ว / / ระยะไกล – เส้นทางการเข้าถึงระยะไกล
remotepath: = ((stringreplace (ParamStr (i) , ‘ / P: ‘ , ‘ ‘ , [Rfignorecase]))) ;
Inc (i) ;
ปลาย ;
ถ้า Form1 . ความกว้าง < ; 100 แล้ว Form1 . ความกว้าง = 800 ; / / ถ้าพารามิเตอร์ที่ไม่ถูกต้องสำหรับขนาดกำหนดค่าเริ่มต้น – เริ่มต้น
ถ้า Form1 . ความสูง < ; 100 แล้ว Form1 . ความสูง: = 600 ;
devicestoupdatestatus: Rm = IntToStr ([deviceindex] . Adrha) + ‘ – ‘ + RM IntToStr ([deviceindex] . adrl) ;
/ จำกัด / ค้นหา RoomManager สถานะปัจจุบัน / กรองอุปกรณ์อื่น ๆ
/ / ตรวจสอบ pannel เดียวอุปกรณ์สำหรับ UTILISATION ข้อ จำกัด
/ / ตรวจสอบเฉพาะสถานะของ RoomManager ครั้ง CPU น้อยที่เลือกและ eHouse เซิร์ฟเวอร์
outputbuttonnames (deviceindex) ; / / เริ่มต้นปุ่มและชื่อป้าย – รองเท้าบูท , ปุ่มและป้ายข้อความ
Form1 . คำบรรยายภาพ: = ‘ แผงควบคุม eHouse: ‘ + Rm [deviceindex] . devname ; คำอธิบาย / / ชุดรูปแบบหลักของชื่อ RoomManager – ส่วนหัวจะแสดงชื่อของ RoomManager รูปแบบ
Timer1 . ช่วงเวลา: = 3000 ; / วงจรช่วงชุด / งานในหน่วยมิลลิวินาที
Timer1 . เปิดใช้งาน: = true ; / / เริ่มงานโดยอัตโนมัติ (update สถานะ
K: = 1 ;
buttonindex: = 0 ; / ปุ่มดัชนี / ปัจจุบัน (มองเห็น) – หมายเลขปัจจุบันของ (ชัดเจน)
แถว: = 0 ; ปุ่ม / / ปัจจุบันในแถว – จำนวนของคีย์ปัจจุบันในบรรทัดปัจจุบัน
/ / คอลัมน์: = 0 ;
alignx: = (Form1 . clientWidth – (แถว) * (+ buttonwidth Xspace) div) 2 ; / ศูนย์ / ปุ่มบนแผง – ตรงกลางปุ่มบล็อก
สำหรับ i = 0 ถึง Form1 . ComponentCount – เอาท์พุท 1 / / ปุ่มตั้งค่าอัตโนมัติ – กำหนดค่าโดยอัตโนมัติปุ่ม Exit
เริ่มต้น / / สำหรับแต่ละวัตถุบน Form1 – สำหรับองค์ประกอบทั้งหมดของ Form1
ถ้า (Form1 . ส่วนประกอบ [i] เป็น TPanel) แล้ว / / ถ้าวัตถุเป็น TPanel (ปุ่มของเรา) – ถ้า TPanel ประเภทวัตถุ (ปุ่ม)
เริ่ม
ถ้า comparetext ((Form1 . ส่วนประกอบ [i] เป็น TPanel) . ชื่อ , ‘ เอาท์พุต ‘ + IntToStr (k)) = 0 แล้ว / / ถ้าชื่อประกอบด้วย (output)
เริ่ม
แถว: = MOD buttonindex (แถว) ; / / คำนวณแถวและคอลัมน์ดัชนี – คำนวณพิกัดของคอลัมน์และแถว
คอลัมน์: = div buttonindex (แถว) ;
ถ้าความยาว (OutputNames [k – 1])> ; 0 แล้ว / / แสดงปุ่มเฉพาะ ouput ที่มีชื่อ – จะแสดงเฉพาะปุ่มที่มีชื่อ
เริ่ม
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . ซ้าย: = แถว alignx + * (+ buttonwidth Xspace) ; / / possition คำนวณแกน X – คำนวณตำแหน่งในแกน X
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . บน = yoffsetouts คอลัมน์ + * (+ buttonheight yspace) ; / / คำนวณ possition แกน Y – คำนวณตำแหน่งในแกน Y
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . ความกว้าง = buttonwidth ; / / ตั้งปุ่มกว้าง – ความกว้างของปุ่ม
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . ความสูง = buttonheight ; ปุ่ม / / ตั้งค่าความสูง – จำนวนของปุ่ม
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . คำบรรยายภาพ: = Outputnames [k – 1] ; คำอธิบายของปุ่ม / / ตั้ง – ชุดข้อความที่ปุ่ม
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . Bevelinner = bvRaised ;
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . BevelOuter = bvRaised ;
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . ตัวอักษร . ขนาด: = fontsize ; / / ตั้งปุ่มขนาดตัวอักษร – ชุดขนาดตัวอักษรสำหรับปุ่ม
Inc (buttonindex) ; / / ปุ่มถัดไปสามารถมองเห็นได้ – ดูต่อไป
ปลาย
อื่น
เริ่ม
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . ที่มองเห็น: เท็จ = ; / / ไม่มี = ชื่อไม่แสดงปุ่ม – ลบคีย์ที่ไม่มีชื่อ
ปลาย ;
Inc (K) ; / / ปุ่มถัดไป – ปุ่มต่อไป
ปลาย ;
ปลาย ;
ปลาย ;
/ / / / / / / / / / / / ปุ่มเดียวกันสำหรับโปรแกรม – ในทำนองเดียวกันสำหรับปุ่มในการเปิดโปรแกรม
buttonindex: = 0 ;
K: = 1 ;
สำหรับ i = 0 ถึง Form1 . ComponentCount – 1 ถึง
เริ่ม
ถ้า (Form1 . ส่วนประกอบ [i] TPanel เป็น) แล้ว
เริ่ม
ถ้า comparetext ((Form1 . ส่วนประกอบ [i] เป็น TPanel) . ชื่อ , ‘ โครงการ ‘ + IntToStr (k)) = 0 แล้ว
เริ่ม

แถว: = MOD buttonindex (แถว) ;
คอลัมน์: = div buttonindex (แถว) ;
ถ้าความยาว (ProgramNames [k – 1])> ; 0 แล้ว
เริ่ม
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . ซ้าย: = แถว alignx + * (+ buttonwidth Xspace) ;
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . บน = yoffsetprograms คอลัมน์ + * (+ buttonheight yspace) ;
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . ความกว้าง = buttonwidth ;
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . ความสูง = buttonheight ;
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . คำบรรยายภาพ: = Programnames [k – 1] ; ปุ่ม / / ตั้งปุ่มคำอธิบายสำหรับโปรแกรม – ตั้งค่าชื่อของปุ่มโปรแกรม
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . Bevelinner = bvRaised ;
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . BevelOuter = bvRaised ;
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . ตัวอักษร . ขนาด: = fontsize ;
Inc (buttonindex) ;
ปลาย
อื่น
เริ่ม
(Form1 . ส่วนประกอบ [i] เป็น TPanel) . ที่มองเห็น: เท็จ = ;
ปลาย ;

Inc (K) ;
ปลาย ;
ปลาย ;
ปลาย ;

K: = 1 ;
buttonindex: = 0 ;
/ / Alignx: = (Form1 . clientWidth – (Labelrows * (labelwidth + + labelresultsize Xspace)) div) 2 ;
/ / / / / / / Analogicaly สำหรับป้าย – เหมือนกับ , ฉลาก
สำหรับ i = 0 ถึง Form1 . ComponentCount – 1 ถึง
เริ่ม
ถ้า (Form1 . ส่วนประกอบ [i] TLabel เป็น) แล้ว
เริ่ม
ถ้า comparetext ((Form1 . ส่วนประกอบ [i] เป็น TLabel) . ชื่อ , ‘ ฉลาก ‘ + IntToStr (k)) = 0 แล้ว
เริ่ม

แถว: = MOD buttonindex (labelrows) ;
คอลัมน์: = div buttonindex (labelrows) ;
ถ้าความยาว (LabelNames [k – 1])> ; 0 แล้ว / / ถ้าความยาวของข้อความ label> ; ; 0 – ถ้าอธิบายเป็น
เริ่ม
(Form1 . ส่วนประกอบ [i] เป็น TLabel) . ซ้าย: = แถว alignx + * (labelwidth + + labelresultsize Xspace) ; / / ตำแหน่งคำนวณ x
(Form1 . ส่วนประกอบ [i] เป็น TLabel) . Re: = คอลัมน์ yoffsetlabel + * (+ labelheight yspace) ; / / คำนวณตำแหน่ง Y
(Form1 . ส่วนประกอบ [i] เป็น TLabel) . ความกว้าง = labelwidth ;
(Form1 . ส่วนประกอบ [i] เป็น TLabel) . ความสูง = labelheight ;
(Form1 . ส่วนประกอบ [i] เป็น TLabel) . คำบรรยายภาพ: = LabelNames [k – 1] ; / / / กำหนดคำอธิบายภาพฉลาก – ส่วนหัวที่เหมาะสมฉลาก
(Form1 . ส่วนประกอบ [i] เป็น TLabel) . ตัวอักษร . สี = clwhite ; สีเริ่มต้น / / ตั้งป้าย – การตั้งค่าสีเริ่มต้นของป้าย
ถ้า pos ( ‘ [ – % ] ‘ , LabelNames [k – 1])> ; 0 แล้ว (Form1 . ส่วนประกอบ [i] เป็น TLabel) . ตัวอักษร . สี = clyellow ; สี / / ตั้งสำหรับการวัดแสง – สำหรับการวัดแสงสี
ถ้า pos ( ‘ [ % ] ‘ , LabelNames [k – 1])> ; 0 แล้ว (Form1 . ส่วนประกอบ [i] เป็น TLabel) . ตัวอักษร . สี = Claque ; วัดสี / / ตั้งร้อยละ – สีสำหรับมูลค่าของดอกเบี้ย
ถ้า pos ( ‘ [C] ‘ , LabelNames [k – 1])> ; 0 แล้ว (Form1 . ส่วนประกอบ [i] เป็น TLabel) . ตัวอักษร . สี = clwhite ; / สี / ชุดสำหรับการจัดการอุณหภูมิ – สำหรับค่าอุณหภูมิสี
(Form1 . ส่วนประกอบ [i] เป็น TLabel) . ตัวอักษร . ขนาด: = labelfontsize ; ขนาดตัวอักษร / / ตั้งป้าย – กำหนดขนาดของตัวอักษรสำหรับป้ายข้อความ
Inc (buttonindex) ; / / ป้ายที่มองเห็นถัดไป – ฉลากจะปรากฏถัดจาก
ปลาย
อื่น
เริ่ม
(Form1 . ส่วนประกอบ [i] เป็น TLabel) . ที่มองเห็น: เท็จ = ; / / ซ่อนป้ายข้อความโดยไม่ต้อง – ซ่อนป้ายโดยไม่ต้อง textu
ปลาย ;
Inc (K) ; / / ป้ายถัดไป – ป้ายต่อไป
ปลาย ;
ปลาย ;
ปลาย ;
update_status ; / อัพเดต / แผงสำหรับสถานะปัจจุบันอุปกรณ์จากบันทึก – การปรับปรุงสถานะของคนขับรถของล็อกไฟล์จากเซิร์ฟเวอร์ eHouse
ปลาย ;
ผลลัพธ์ที่ได้หลังจากอัตโนมัติ – การกำหนดค่าและการจัดวางปุ่มโดยโปรแกรมและลบองค์ประกอบบอกเล่า (ถ้าคุณไม่ต้องการให้มีการบนแผงเพราะข้อ จำกัด สิทธิในการเข้าถึงหรือการใช้เอาท์พุท) .
 ผลสุดท้ายของการกระจายอัตโนมัติขององค์ประกอบแบบฟอร์ม
อ่านเพิ่มเติม: บ้านอัตโนมัติ – ควบคุม eHouse
บ้านอัตโนมัติ eHouse ผู้ผลิตระบบอัตโนมัติหน้าแรก