[일자 & 시간] 컨트롤...
위와 같이
일자 및 시간을 보여주는 컨트롤을 만들었다.
설비에서 데이타 입력하는 터치에서 화상키보드 열어서 년 월일을 입력하고 있는 걸 보고...
와우... 이런 컨트롤이 있으면 그냥 넣을 수 있을 듯 해서... 잠깐 만들어봤다.
UP, DN 버튼은 눌러도 되고, 화면을 밀어서 올리고 내리고...
설정할 수 있는 속성은 위와 같다.
표시 갯수설정.
값이 계속 이어서 돌려서 보여줄지 말지
몇개씩 건너뛸지...
현재 선택된 값...
값 표시 포맷...
박스세로 간격...
'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글
달력/시각 컨트롤... (0) | 2025.03.16 |
---|---|
Popup? (0) | 2025.03.16 |
뭐 좀 만들어볼까하다가.... (0) | 2024.08.03 |
Flow Condition] 조건 오브젝트 뷰 만들기? (0) | 2018.04.29 |
바코드 폰트 사용하기... (0) | 2018.04.27 |
뭐 좀 만들어볼까하다가....
컨트롤을 만들면서 직접 그려야 하는 부분이 있는데
영역내에 그려야 하는 박스 갯수에 따라 중심에서 그려져야 할때의 계산...
top 0
중심 250 box H=100
높이 500
//중심점을 기준으로 display되는 갯수로 높이값을 빼주면 시작지점이 된다.
//중심이 절반이니까 = display / 2
1개면 250 - ( 100 * 1/2 ) = 250 - 50 box 1개 : 200-300
2개면 250 - ( 100 * 2/2 ) = 250 - 100 box 2개 : 150-250, 250-350
3개면 250 - ( 100 * 3/2 ) = 250 - 150 box 3개 : 100-200, 200-300, 300-400
...
간격값을 주면? 10씩 넣으면
offset = 10 // 중간에 display -1 개씩 끼워넣어지므로...
1개면 250 - ( 100 * 1/2 ) - (10 * (1-1/2)) = 250 - 50 - 0 box 1개 : 200-300
2개면 250 - ( 100 * 2/2 ) - (10 * (2-1/2)) = 250 - 100 - 5 box 2개 : 145-245,+10, 255-355
3개면 250 - ( 100 * 3/2 ) - (10 * (3-1/2)) = 250 - 150 - 10 box 3개 : 90-190, +10, 200-300, +10, 310-410
구현..
int offset = 15;
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
// 시작 지점 = 박스 높이 * 디스플레이 카운트 / 2 - (간격 * (디스플레이 카운트 - 1) /2 );
int top = this.Height/2 - (BoxHeight * DisplayCount / 2 ) - (offset * (DisplayCount-1) / 2);
e.Graphics.DrawLine(Pens.Black, 0, this.Height / 2f, this.Width, this.Height / 2f);
for (int loop = 0; loop < DisplayCount; loop++)
{
e.Graphics.DrawRectangle(Pens.Red, 10, top, BoxWidth, BoxHeight);
top += BoxHeight + offset;
}
}
'# 2) .Net ( Vs 2005 ) > WinForm' 카테고리의 다른 글
Popup? (0) | 2025.03.16 |
---|---|
[일자 & 시간] 컨트롤... (0) | 2024.08.04 |
Flow Condition] 조건 오브젝트 뷰 만들기? (0) | 2018.04.29 |
바코드 폰트 사용하기... (0) | 2018.04.27 |
배틀 그라운드 자기장 구현해보기 (0) | 2018.03.21 |
프로그램 재시작?] 후~
설비가 90여대가 가까운데 프로그램 업데이트가 자동이 아니다.
할때마다 배포서버에 배포 후 프로그램을 각 설비마다 가서 껐다 켜줘야 한다.
이때 구형pc는 켜지는게 느리다. 그래서 프로그램이 꺼지면 설비가 일정시간 동안 신호를 받지 못하면 멈춘다.
그래서... 지금까지는 시간에 쫒기다보니... 재시작 프로그램을 만들 시간을 낼 수가 없어서 몸으로 때웠다.
이제 재시작을 만들었다.
추후엔 업데이트할 내역이 있으면 자동 재시작도 가능할거라 생각한다.
샘플프로그램이다. ( 설비에서 제대로 동작하는 것을 확인 하였다. )
1. 버튼을 누르면... 해당 프로그램은 죽으면서 cmd로 Restart 프로그램을 띄운다.
2. 파라미터로 원래 프로그램의 프로세스명과 재시작해줄 프로그램 실행경로를 넘겨준다.
3. 재시작 프로그램이 떠서 원 프로그램이 죽는지 체크하고... 죽고 나면 다시 실행시켜준다.
-- 이때 설비에 시그널을 던져주기 위해... 별도의 쓰레드를 잠깐 돌려준다.
+++++++++++++++++++++++++++++++++
추가.
재시작 프로그램을 도입했는데... 시행착오? 같은게 있었다.
재시작 할 프로그램도 업데이트 항목에 넣으면... 재시작되는 도중에 업데이트가 안된다.
업데이트 파일은 ReStart00.exe로 00을 붙여서 배포하고
재시작 하는 이벤트에서 ReStart00.exe를 복사해서 ReStart.exe로 덮어쓰기.
그 후 ReStart.exe를 실행하도록 바꾸었다.
+++++++++++++++++++++++++++++++++
하나더...
설비별로 별도의 테스트가 필요한 경우가 있어서...
재시작 프로그램이 실행중에 'TestFile' 이라는 폴더에 테스트용 실행파일이 있다면
파일이 존재하면 옮겨서 붙여넣기 해준다.
+++++++++++++++++++++++++++++++++
또 하나...
이래 저래 시행착오를 거치다가...
ReStart 바로가기 만드는 콘솔프로그램을 만들었다.
이유는 재시작 프로그램배포와 함께 맞물려서 깔끔하게 안돌아간다... 88대를 배포하다보니...
전체 배포를 했음에도... 신뢰가 안되네... 멈출까봐... 불안한 느낌?
처음 배포 후 재시작눌렀을때 일부 pc에서 재시작 안하고 콘솔이 종료되는 현상이 있었더랬다...
수정 후... 잘 되긴 하는데... 구형PC는 좀 불안하긴 함...
배포할때 ReStart.exe를 붙여넣고 바로가기 생성프로그램을 돌려서
이걸 실행해놓은 상태에서 프로그램을 끈다.
그러면 정해진 프로세스대로 동작하면서 업데이트 된다.
전체 배포가 잘 진행된다 싶을때까지... 구형PC들은 이걸로 사용할 예정이다.
****************************************************
마지막으로..
오늘 모두 배포 완료했다. 시작하자마자 콘솔이 꺼지는 현상도 잡혔고...
업데이트 중 설비가 멈추지는 않을 듯 하다.
구형설비의 프로그램이 죽고 되살아 나는데 시간이 참 오래 걸리네...
'# 9) My Program(.NET) > PRJMNG' 카테고리의 다른 글
추석이 지나면 할 것들... (0) | 2024.09.16 |
---|---|
JSFW.VS.Extensibility.FindingMethodList 프로그램 수정. (0) | 2024.08.26 |
이번 플젝에서 사용할 모니터링 구조... (0) | 2024.07.06 |
SSMS 확장프로그램 2018 -> 2020 변경. (0) | 2024.06.08 |
VS 확장 프로그램 2019 -> 2022 적용. (0) | 2024.06.08 |