monthカレンダーにスケジュールを書き込む


なつあ  2010-02-22 07:43:29  No: 37696

こんばんわ。デルファイの5を使い始めて間もないのですが、今なかなか使い方が分からず困っている部分があります。コンポーネントのサンプルにあるmonthカレンダーについて、TButtonをクリックすると次の日へ移動する方法とある1つの日付をクリックしたら、その日のスケジュールが抽出できる方法を教えていただけないでしょうか?

スケジュールを抽出する方法というのは、そのスケジュールがデータベースと繋がっていて、そのデータベース上にあるテーブルの情報を、フォームに反映させるようなことです。データベースは、オラクルの9iを使っています。お手数がかかるようでしたら、きっかけとなるような情報をいただけると幸いです。


具体的に  2010-02-22 07:56:22  No: 37697

具体的に何がわからないのでしょうか。

データベースの扱い方からわからないのでしょうか?
サンプルはHELPを併用して読んでみたのですか?


なつあ  2010-02-22 08:10:12  No: 37698

データベースの扱い方は、ある程度分かるので大丈夫だと思います。コンポーネントのコマンドがわからないところです。コンポーネント上で次の日付/前の日へ移る方法や選んだ日付をクリックしたら、処理が行われる方法です。


条件は  2010-02-22 08:26:45  No: 37699

データベースの使用は必須条件?
データベースを使わない方法でのスケジュール保存/参照はダメなの?


なつあ  2010-02-22 08:40:54  No: 37700

データベースを使用する方法は、私にとってわかりやすいので、できればそちらのほうがいいです。ただ、データベース以外でのスケジュール保存方法の情報もいただけたら、ぜひ試してみたいと思っています。


もうちょっと  2010-02-22 08:44:52  No: 37701

スケジュールとはどんな内容のもの?
例えばMemoなどに箇条書きしたようなものとか?


なつあ  2010-02-22 08:49:50  No: 37702

TEDitとmemoに表示したいと思っています。Teditには、そのスケジュールのタイトルや詳しい時間など、memoにはその内容を表示できればと思っています。ただ、1日にいくつものスケジュールがあることが前提なので、そうなるとmemoに箇条書きに表示する方法がやりやすいのではと感じています。


KHE00221  2010-02-22 10:05:09  No: 37704

TChangeDate = procedure(Year,Month,Day: Word) of Object;

  TMonthCalendar = class(ComCtrls.TMonthCalendar)
  private
    FChangeDate: TChangeDate;
  public
    procedure CNNotify(var Message: TWMNotify); message CN_NOTIFY;
  published
    property OnChangeDate: TChangeDate read FChangeDate write FChangeDate;
  end;

procedure TMonthCalendar.CNNotify(var Message: TWMNotify);
var
    Year,Month,Day: Word;
begin
    inherited;
    with Message, NMHdr^ do
    begin
      case code of
        MCN_SELCHANGE:
        begin
          if Assigned(OnChangeDate) = True then
          begin
            DeCodeDate(Date,Year,Month,Day);
            OnChangeDate(Year,Month,Day);
          end;
        end;
      end;
    end;
end;

procedure TForm4.ChangeDate(Year,Month,Day: Word);
begin
    //ここで適当に処理
    Exit;
end;

procedure TForm4.FormCreate(Sender: TObject);
var
    Year,Month,Day: Word;
begin
    MonthCalendar1.OnChangeDate := ChangeDate;
end;

procedure TForm4.Button1Click(Sender: TObject);
var
    Year,Month,Day: Word;
begin
    MonthCalendar1.Date := MonthCalendar1.Date + 1;
    DeCodeDate(MonthCalendar1.Date,Year,Month,Day);
    ChangeDate(Year,Month,Day);
end;

procedure TForm4.Button2Click(Sender: TObject);
var
    Year,Month,Day: Word;
begin
    MonthCalendar1.Date := MonthCalendar1.Date - 1;
    DeCodeDate(MonthCalendar1.Date,Year,Month,Day);
    ChangeDate(Year,Month,Day);
end;


なつあ  2010-02-22 14:44:53  No: 37705

ここのさん、

はい。このようなものができればいいと思います。これは、どのように作成しているのでしょうか?


TS  2010-02-22 17:40:00  No: 37706

ここの?さん現在過去のダウンロードアドレスではダウンロード
できない様ですが、現在のダウンロードアドレスは公開されていますか。


ルルル…  2010-02-23 02:30:20  No: 37708

真琴:「はい、民宿ダイアモンドヘッドです、あ、ユウコ、ナニ?」
裕子:「ユウスケが使ってみたら〜、Memoに書いた文が日付移動しても保存されないって」
真琴:「あ…ユウコ、ジツは、説明し忘れたことが…」
裕子:「ナンなの?」
真琴:「MemoのOnkeyDownイベントで…Memoが書き換えられたことをカレンダーに教えてあげないとMemoに書き込んだDATAが保存されないの」

procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  MonthCalendarEx1.TextModified := True;
end;

裕子:「もう、カンジンなコトじゃない、それ言ってくれないと…」
真琴:「ユウコが急いで帰っちゃったから言う暇もなくて…^^;」


TS  2010-02-23 06:43:18  No: 37709

カイトさんじゃなくて真琴さん?

新しいMonthCalendarEx公開していただいてありがとうございます。

Gridの線が描画されるのいいですね。

ShowGridとshowWeekNumbersがTrueの時拡大すると最初の縦線の位置が
ずれるのと金土の間の縦線が表示されません。
 
Scheduleの文字が実行時に表示されませんが、何かプロパティが
ありましたか。

使用Delphi2010です。


TS  2010-02-26 06:32:53  No: 37711

MonthCalendarEx  益々いいですね。
Delphi2010ではエラーが出ますと誰か突っ込みを入れられると
思いましたが無いですね。

私はようやく全て(たぶん)正常に動作する様になりました。

>Scheduleの文字が実行時に表示されませんが、何かプロパティが
>ありましたか。

MEMOにも使う別物の入れ物があったんですね、理解しました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加