윈도우 태블릿에 대한 제어 패널 객실 소프트웨어 개발 – 형태

홈 자동화 eHouse .
기본 양식을 (태블릿 화면의 레이아웃 만들기 . RM 디지털 출력의 모든 유형에 대한 기본 양식 24 필드 TPanel 패널을에 배치 .
이러한 RoomManager (또는 전기)을 설정하는 버튼을 형성 할 .
게다가 , 색상은이 읽기의 상태에 따라 달라집니다 .
이러한 이유로 우리는 표준 단추 또는 유사한 유형 TButton을 사용 , 그들은 색상을 변경할 수있는 가능성이 없기 때문에 .
우리는 그들을 전화 ” outputX ” X 출력의 수입니다 .
나는 배포 할 필요가 없습니다 , 가 자동으로 할 것이기 때문에 , 이 응용 프로그램 . 각 버튼에 대한 , 출력은 동일한 이벤트 (onClick)에 할당해야합니다 – output1Click .
RM 실행하는 모든 프로그램의 주요 양식 24 필드 TPanel 형 패널에 배치 .
다음은 현재 RoomManager (예를 전환을위한 버튼을 형성 할 , 임계 값의 측정 입력의 변화와 함께 그룹의 전기 장치 ON / OFF 등 규제에 사용 . 온도) .
우리는 그들을 전화 ” programX ” X는 버튼의 숫자입니다 .
비슷하게 , 배포 할 필요 없다 , 가 자동으로 할 것이기 때문에 , 이 응용 프로그램 .
각 버튼에 대한 , 프로그램은 동일한 이벤트 (onClick)에 할당해야합니다 – program1Click .
텍스트 라벨의 주요 양식에 TLabel은 (Label16에 Label1을 번호) RoomManager의 측정의 모든 결과를 표시하려면 16 유형은 .
마찬가지로 위의 경우에서와 같이하면 배포 할 필요가 없습니다 .
에 대한 최종 양식을보기  객실 제어판을 만들 형성
양식의 초기화 :

/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /
절차 TForm1 . FormCreate (발신자 : TObject) ;
VAR alignx , buttonindex , 열 , 단 , 케이 , I : 정수 ;
시작하다
GetComputerName ; / / 컴퓨터 또는 패널의 이름을 가져 오기 – 를 읽고
경로 : = getcurrentdir () ; / / 현재 로컬 경로 응용 프로그램 디렉터리 가져 오기 – 디렉토리를 읽고있는 프로그램
경로 : = stringreplace (경로 , ‘ \ 빈 ‘ , ‘ \ ‘ , [Rfignorecase]) ; / / 응용 프로그램 eHouse의 경로를 가져 오기
remotepath : = 경로 ; inicialization에 대한 remoteaccess에 대한 / / 같은 경로 – 경로의 시작 부분에서 같은 원격 액세스에 대한 매핑
loadnames_rm ; / /로드 컨트롤러 이름 ehouse1
init_heat_temperature_names ; / / 초기화 heatmanager 이름
readethernetdevs ; / /로드 컨트롤러 이더넷 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 ( ‘ / A : ‘ , 소문자 (ParamStr은 (i))) = 1 다음 / / 장치 주소 (RoomManager) – RoomManager 주소
deviceindex : = (get_index_rm (stringreplace (ParamStr은 (i) , ‘ / A : ‘ , ‘ ‘ , [Rfignorecase]))) ;
경우 POS ( ‘ / P : ‘ , 소문자 (ParamStr은 (i))) = 1 다음 / / 원격 액세스 경로 – 원격 액세스 경로
remotepath : = ((stringreplace (ParamStr은 (i) , ‘ / P : ‘ , ‘ ‘ , [Rfignorecase]))) ;
주식회사은 (i) ;
끝 ;
Form1이 경우 . 폭 < ; 100 다음 Form1 . 폭 : = 800 ; / / 크기에 대한 잘못된 매개 변수가 기본값을 설정하는 경우 – 기본값
Form1이 경우 . 높이 < ; 100 다음 Form1 . 높이 : = 600 ;
devicestoupdatestatus : = IntToStr (RM [deviceindex] . Adrha) + ‘ – ‘ + IntToStr (RM [deviceindex] . adrl) ;
현재 상태 RoomManager을 검색 / / 제한 / 기타 장치를 필터링
/ / 제한 UTILISATION에 대한 단일 장치 판넬 확인
/ / 만 선택한 RoomManager 시간 이내 CPU의 상태 및 서버 eHouse를 확인
outputbuttonnames (deviceindex) ; / / 버튼과 레이블 이름을 초기화 – 부츠 , 버튼 및 텍스트 레이블
Form1에 . 제목 : = ‘ eHouse 제어판 : ‘ + RM [deviceindex] . devname ; RoomManager 이름의 주요 형태의 / / 설정 설명 – 헤더는 양식 RoomManager의 이름을 보여줍니다
timer1 . 간격 : = 3,000 ; (밀리 초) / / 설정 순환 작업 간격
timer1 . 사용 : = true ; / / (상태 업데이트를 자동으로 작업을 시작
K : = 1 ;
buttonindex : = 0 ; / / 현재 버튼 (표시) 인덱스 – 의 현재 수 (겉보기)
행 : = 0 ; 행에서 / / 현재 버튼 – 현재 줄의 현재 키의 수
/ / 열 : = 0 ;
alignx : = (Form1에 . clientWidth – (행) * (buttonwidth + Xspace)) 사업부 2 ; / / 센터 패널에있는 버튼 – 중심 차단 버튼
에 대한 I : = 0으로 Form1이 . ComponentCount – 1 / / 출력 버튼 자동 설정 – 자동으로 종료 버튼을 구성
Form1에 각 개체에 대한 / / 시작 – Form1의 모든 요소에 대한
(Form1이 경우 . 구성 요소 [I]) TPanel 수 있습니다 후 / / 객체가 TPanel이 경우 (우리의 버튼) – 경우 개체 유형 TPanel (버튼)
시작하다
경우 comparetext ((Form1에 . 구성 요소를 [I] TPanel 등) . 이름 , ‘ 출력 ‘ + IntToStr (K)) = 0 다음 / / (출력) 이름이 구성되어있는 경우
시작하다
행 : = buttonindex 모드 (행) ; / / 행과 열 인덱스를 계산 – 열 및 행의 좌표를 계산
열 : = buttonindex 사업부 (행) ;
길이 (OutputNames [K 경우 – 1])> ; 0 다음 / / 만 이름으로 ouput 버튼을 보여줍니다 – 이름 만있는 버튼을 보여줍니다
시작하다
(Form1에 . 구성 요소 [I] TPanel 등) . 왼쪽 : = alignx + 행 * (buttonwidth + Xspace) ; / / 계산 X 축 possition – X 축에서의 위치를​​ 계산
(Form1에 . 구성 요소 [I] TPanel 등) . 상단 : = yoffsetouts + 열 * (buttonheight + yspace) ; / / Y 축 possition 계산 – 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 등) . 글꼴 . 크기 : = 글꼴 크기 ; / / 설정 글꼴 크기 버튼 – 버튼의 글꼴 크기를 설정합니다
주식회사 (buttonindex) ; / / 다음 버튼 표시 – 다음을 참조하십시오

그밖에
시작하다
(Form1에 . 구성 요소를 [I] TPanel 등) . 표시 : = false를 ; / / 이름없는 =이 버튼을 표시하지 않는다 – 이름없이 키를 제거
끝 ;
주식회사 (K) ; / / 다음 버튼 – 다음 버튼을
끝 ;
끝 ;
끝 ;
프로그램 / / / / / / / / / / / / 동일한 버튼 – 마찬가지로 버튼에 프로그램을 실행하는 방법
buttonindex : = 0 ;
K : = 1 ;
에 대한 I : = 0으로 Form1이 . ComponentCount – 1
시작하다
(Form1이 경우 . 구성 요소 [I] TPanel)을 한 후
시작하다
경우 comparetext ((Form1에 . 구성 요소를 [I] TPanel 등) . 이름 , ‘ 프로그램 ‘ = 0 다음 + IntToStr (K))
시작하다

행 : = buttonindex 모드 (행) ;
열 : = buttonindex 사업부 (행) ;
길이 (ProgramNames [K 경우 – 1])> ; 그런 다음 공
시작하다
(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 등) . 글꼴 . 크기 : = 글꼴 크기 ;
주식회사 (buttonindex) ;

그밖에
시작하다
(Form1에 . 구성 요소를 [I] TPanel 등) . 표시 : = false를 ;
끝 ;

주식회사 (K) ;
끝 ;
끝 ;
끝 ;

K : = 1 ;
buttonindex : = 0 ;
/ / Alignx : = (Form1에 . clientWidth – (Labelrows * (labelwidth + labelresultsize + Xspace))) 사업부 2 ;
/ / / / / / / Analogicaly 레이블에 대한 – 비슷하게 , 라벨
에 대한 I : = 0으로 Form1이 . ComponentCount – 1
시작하다
(Form1이 경우 . 구성 요소 [I] TLabel는)입니다
시작하다
경우 comparetext ((Form1에 . 구성 요소를 TLabel로 [I]) . 이름 , ‘ 상표 ‘ = 0 다음 + IntToStr (K))
시작하다

행 : = buttonindex 모드 (labelrows) ;
열 : = buttonindex 사업부 (labelrows) ;
길이 (LabelNames [K 경우 – 1])> ; 0 다음 / / 경우 레이블 텍스트의 길이> ; ; 0 – 설명이있는 경우
시작하다
(Form1에 . 구성 요소 TLabel로 [I]) . 왼쪽 : = alignx + 행 * (labelwidth + labelresultsize + Xspace) ; / / 계산 X 위치
(Form1에 . 구성 요소 TLabel로 [I]) . 상단 : = yoffsetlabel + 열 * (labelheight + yspace) ; / / Y 위치를 계산
(Form1에 . 구성 요소 TLabel로 [I]) . 폭 : = labelwidth ;
(Form1에 . 구성 요소 TLabel로 [I]) . 높이 : = labelheight ;
(Form1에 . 구성 요소를 TLabel로 [I]) . 제목 : = LabelNames [K – 1] ; / / / 레이블 캡션을 지정 – 헤더 적절한 라벨
(Form1에 . 구성 요소를 TLabel로 [I]) . 글꼴 . 색상 : = clwhite ; 라벨 / / 설정 기본 색 – 라벨에 대한 기본 색을 설정합니다
경우 POS ( ‘ [ – % ] ‘ , LabelNames [K – 1])> ; 그리고 0 (Form1에 . 구성 요소를 TLabel로 [I]) . 글꼴 . 색상 : = clyellow ; 빛 측정을위한 / / 색상 설정 – 색 조명의 측정을위한
경우 POS ( ‘ [ % ] ‘ , LabelNames [K – 1])> ; 그리고 0 (Form1에 . 구성 요소를 TLabel로 [I]) . 글꼴 . 색상 : = 박수 갈채 꾼 ; %를 / / 색상 설정 측정 – 관심의 가치에 대한 색상
경우 POS ( ‘ [C] ‘ , LabelNames [K – 1])> ; 그리고 0 (Form1에 . 구성 요소를 TLabel로 [I]) . 글꼴 . 색상 : = clwhite ; 온도 관리를위한 / / 세트 색상 – 색 온도 값에 대한
(Form1에 . 구성 요소를 TLabel로 [I]) . 글꼴 . 크기 : = labelfontsize ; 라벨 / / 설정 글꼴 크기 – 텍스트 라벨의 글꼴 크기를 설정합니다
주식회사 (buttonindex) ; / / 다음에 보이는 라벨 – 라벨 옆에 나타납니다

그밖에
시작하다
(Form1에 . 구성 요소를 TLabel로 [I]) . 표시 : = false를 ; / /이없이 텍스트 라벨 숨기기 – textu없이 라벨 숨기기
끝 ;
주식회사 (K) ; / / 다음 라벨 – 다음 라벨
끝 ;
끝 ;
끝 ;
update_status ; / / 업데이트 로그에서 현재 장치 상태 패널 – 서버 eHouse에서 로그 파일의 드라이버의 업데이트 상태
끝 ;
자동 후 최종 결과 – 구성 버튼을 배치 프로그램 및 (당신이 그들을 때문에 접근의 권리 제한의 패널이나 출력 사용하지 않으려는 경우) 수많은 요소를 제거 .
 양식의 요소의 자동 배포의 최종 효과
자세한 내용을 읽어보십시오 : 홈 자동화 – 컨트롤러 eHouse
홈 자동화 eHouse 홈 자동화 제조업체