Delphi XE6을 사용하여 TdateTimePicker와 비슷한 컨트롤을 만들었지 만 몇 가지 이유 때문에 TMonthCalendar가 "임베디드"되어있는 TButtonedEdit을 사용하고 있습니다. 이들은 따라서 정의됩니다Delphi에서 TMonthCalendar의 상태/형식 변경하기
TMyMonthCalendar = class(TMonthCalendar)
procedure DoKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
procedure DoCloseUp(Sender: TObject);
private
FDroppedDown: boolean;
procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
protected
end;
TMyDateEdit = class(TButtonedEdit)
private
FMonthCalendar: TMyMonthCalendar;
procedure DoRightButtonClick(Sender: TObject);
protected
procedure CreateWnd; override;
public
constructor Create(AOwner:TComponent); override;
destructor Destroy; override;
end;
내가 가지고있는이 달의 달력 오른쪽 버튼을 클릭 할 때 표시하고 선택할 때 나는 그것을 숨기기되면서 원하는대로 가고있어 꽤 많은 사용자가, 이스케이프 등 멀리 탐색
나를 혼란에 빠뜨리는 것은 다음과 같습니다. 캘린더가 "드롭 다운"되면 사용자가 제목을 클릭하거나 더블 클릭하면 캘린더가 그에 따라 월 또는 연도 그리드로 변경됩니다. 예를 들어 사용자가 그 시점에서 ESCapes를하면 다음에 달력을 내릴 때 해당 월/연도 상태로 돌아가는 반면 TDateTimePicker처럼 Date 속성의 현재 달을 표시하는 것으로 되돌리고 싶습니다.
월 캘린더 표시 전에 한 달 상태로 되돌릴 수있는 방법은 무엇입니까?
편집 : 답변을 찾았습니다. MonthCalendar를 숨긴 다음에는 간단히 RecreateWnd를 호출하고 다음에 호출 할 때 기본 화면 개체가 처음부터 삭제되고 다시 만들어집니다. 그리고 그것이 원하는 한 달 형식으로 나오므로 더 이상 할 필요가 없습니다.
정상적인 동작입니다. 양식에 주식 월 캘린더를 놓고 제목을 클릭하면 (제목에 달이 있으면 클릭 할 때 어떤 것이 나올 것이라는 힌트가 바뀝니다) 월을 표시합니다. –
예,하지만 if 그것을 닫으면 (ESCaping 또는 다른 컨트롤로 이동하여) TdateTimePicker를 다시 내리면 이전 "월/년 그리드"상태로 떨어지지 않고 "기본"단일 월 상태로 돌아갑니다. 나는 그것을 "기본"상태로 되돌려 놓는 법을 알고 싶다. – TomB
보기를 설정하는 절차를 작성하십시오. 예 : 'SetCalendarView (Calendar : TMonthCalendar; ViewType : TViewType);'호출하고 적절하게 호출하십시오. 예 : 'SetCalendarView (MyMonthCalendar1, vtMonth);'. –