> おかげ様で勉強させて頂いております.あまり勉強したくないけど.ホホホッ.
画面をみると DFMコンバータ というのが...
で,ものはついでにと Delphi 5 でもやってみました.
TplDateEdit のソースコードの修正が必要です.
バージョン判定で,一番下のバージョンのコードだけ残して後は削除.
それでもエラーが発生したので適時修正.
TplDateEditPicker は,Delphi 6 の時と同じ修正,変更.
カレンダの表示位置の制御では,TScreen.MonitorFromPoint が使えないですね.
このカレンダの表示位置のコードは,画面左端と下端の時だけなので,
この部分を削除して,以下のようにしてみました.
カレンダの文字の色は変えた方がいいような気もします.
しかし,Delphi ってスゴイですね.
謎全さんの Delphi 2 用のコンポーネントだって,修正すれば,Delphi XE で
使えるますからね.
//-----------------------------------------------------------------------------
// TplDateEditの右側に配置したOnMouseDownイベント処理
// ここでカレンダーを載せたフォームの表示,非表示を切り替える
//-----------------------------------------------------------------------------
procedure TplDateEditPicker.OnMouseDownEventBtnCalendar(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
CalendarFormPos : TPoint;
ParentForm : TCustomForm;
begin
if Assigned(FCalendarForm) then begin
if FCalendarForm.Visible then begin
FCalendarForm.Close;
CloseUpCalendar(1);
exit;
end;
end;
CalendarFormPos := TWinControl(Parent).ClientToScreen(Point(Self.Left, Self.Top));
if not Assigned(FCalendarForm) then begin
//カレンダーを表示するフォームとコントロール類を生成
CreateFormAndControls(CalendarFormPos);
end;
//必要であればTMonitorやMultiMonユニットの関数類を使用して表示位置を設定する
FCalendarForm.Top := CalendarFormPos.Y + Self.Height;
FCalendarForm.Left := CalendarFormPos.X;
FCalendarForm.Show;
FCalendar.StartOfWeek := FStartOfWeek;
FCalendar.SetFocus;
//TCalendarのOnChangeイベントを発生させる
FCalendar.CalendarDate := Self.Date;
ParentForm := GetParentForm(Self);
PostMessage(ParentForm.Handle, WM_NCACTIVATE, 1, 0);
end;
|