델파이

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