喫茶XRAYトップページ

[スレッド全体
]

[10491] Re:TCalendarを使用した日付ピッカー返信 削除
2016/11/13 (日) 08:49:50 Mr.XRAY
それと,Delphi 6 には CS_DROPSHADOW の定義がありません.
以下のように追加してください.ネットで調べてもすぐ見つかります.
後で記事にも追加しておきます.多分...

const
  CS_DROPSHADOW = $20000;


[10492] Re2:TCalendarを使用した日付ピッカー返信 削除
2016/11/13 (日) 12:55:54 Mr.XRAY
> const
>   CS_DROPSHADOW = $20000;


それと,以下は削除します.Delphi 6 には ParentBackground はありません.

      ParentBackground := False;

それと,TDate もありません.TDateTime にしてください.
それと,スクロールバーが表示されてしまうのも修正しました.

まっ,あれですね.
いえ,その,何でもありません (^^;
Delphi 6 は中々なくならないですね.
いえ,独り言でございます.ハイ.
おかげ様で勉強させて頂いております.あまり勉強したくないけど.ホホホッ.


[10493] Re3:TCalendarを使用した日付ピッカー返信 削除
2016/11/13 (日) 14:30:23 Mr.XRAY
> おかげ様で勉強させて頂いております.あまり勉強したくないけど.ホホホッ.

画面をみると 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;



[10494] Re4:TCalendarを使用した日付ピッカー返信 削除
2016/11/13 (日) 14:47:00 Mr.XRAY
> 画面をみると DFMコンバータ というのが...
> で,ものはついでにと Delphi 5 でもやってみました.


上の図は実行時生成ではなく,Delphi5 に TplDateEditPicker を
登録,インストールして,フォームに配置しています.
動作確認は以下です.

Windows 7 U64(SP1) + Delphi 5(UP1) Pro


[10521] TCalendarView返信 削除
2016/11/18 (金) 00:18:58 igy
ツイッターのほうにも書きましたが、Berlin10.1 Update2で追加された TCalendarViewは、
OnDrawDayItemイベントで文字の色が設定できるので、
http://docwiki.embarcadero.com/RADStudio/Berlin/en/Using_the_Calendar_View
なかなか、良さそうです。


[10522] Re:TCalendarView返信 削除
2016/11/18 (金) 06:19:41 Mr.XRAY
▼ igyさん
> ツイッターのほうにも書きましたが、Berlin10.1 Update2で追加された TCalendarViewは、
> OnDrawDayItemイベントで文字の色が設定できるので、
> http://docwiki.embarcadero.com/RADStudio/Berlin/en/Using_the_Calendar_View
> なかなか、良さそうです。


地道に進化しているようですね. (^^


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82