델파이
TDateTimePicker 에 날짜 안보이게 빈값 표시 팁, TButtonedEdit , TDateTimePicker 중첩 활용
미스터몽키
2018. 6. 26. 19:11
TDateTimePicker 는 날짜형 TDateTime 의 값을 갖는다.
널 값이나 빈값을 직접 입력할 수 없다.
입사일자 같은 필수 값은 TDateTimePicker 사용해도 되지만
퇴직일자가 같은 선택적인 값을 TDateTimePicker 를 사용하기 까다롭다. (재직자는 퇴직일자가 없으므로)
이때 다음 그림과 같이 TCheckBox를 TDateTimePicker 앞에 두고 코드를 작성하면 편하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | procedure TfrmSGridmain.CheckBox2Click(Sender: TObject); begin if CheckBox2.Checked = True then begin DateTimePicker2.Format := 'yyyy-MM-dd'; DateTimePicker2.Enabled := True; end else begin DateTimePicker2.Format := ' '; //빈칸 한칸 DateTimePicker2.Enabled := False; end; end; | cs |
결국 값을 직접 입력하는 것이 아니라 Format 으로 값이 안보이게 하는 것이다.
---더 좋은 팁 ------------------------------------------------------------
TButtonedEdit 뒤에 TDateTimePicker 중첩 시켜서 그림처럼 활용한다.
이때 TButtonedEdit 오른쪽에 이미지를 ImagList1을 통해 "x" 이미지를 넣는다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | //오른쪽 버튼 클릭시 procedure TForm1.ButtonedEdit1RightButtonClick(Sender: TObject); begin ButtonedEdit1.Clear; end; //TDateTimePicker 에 포커스 가질 때 TButtonedEdit의 날짜로 설정 procedure TForm1.DateTimePicker1Enter(Sender: TObject); begin DateTimePicker1.Date := StrToDateDef(ButtonedEdit1.Text, Now); end; //TDateTimePicker 에서 날짜 선택시 procedure TForm1.DateTimePicker1CloseUp(Sender: TObject); begin ButtonedEdit1.Text := FormatDateTime('yyyy-mm-dd', DateTimePicker1); end; | cs |