StringGridに日付を表示するには?

解決


デル  2005-12-16 02:50:47  No: 19260

StringGridにMonthCalendarを使って月曜日だったら月曜日だけの週の月日を表示させたいんですけどどうしたらいいかまったくわかりません。


Syeke  2005-12-16 06:05:10  No: 19261

質問の内容が良くわからんというか、なんと言うか。
取得できるけど、表示方法がわからん。
表示方法はわかるけど、取得方法がわからん。
どっちもわからん。
そもそも、どう考えればよいかわからん。
どうなんじゃろ?  まあ、いいか。

その月内からその曜日に該当する日付を取得すると言うことなら
たとえば・・・
まず、MonthCalendarなるものから選んだ日付が何曜日かを取得。
次にその月内の日数を取得して、1日目から順に一日づつ増やして同じく
曜日を取得して、判断する。
その日付の曜日が先程取得した曜日と同じならその結果をStringGridへ・・・。
ってことでしょうか。
DateUtils(日付時刻ルーチン)をヘルプで参照すると必要となる関数は
揃ってます。
質問と違ってたら<m(__)m>


デル  2005-12-19 23:16:24  No: 19262

質問を変えていいですか?たとえばEdit1に4月1日,Edit2に月曜日と入れると4月1日以降の月曜日を取得したいんですけどどうしたらいいんですか?4月3日、4月10日、4月17日・・・みたいな感じで。


りおりお  2005-12-20 00:04:23  No: 19263

> たとえばEdit1に4月1日,Edit2に月曜日と入れると4月1日以降の月曜日を取得したい

こんな感じでできました。

procedure TForm1.Button1Click(Sender: TObject);
const
  week: array[1..7] of string = ('日曜日','月曜日','火曜日','水曜日','木曜日',
                                                            '金曜日','土曜日');
var
  d, today: TDateTime;
  iw: integer;
begin
  d := VarToDateTime('2005年'+Edit1.Text);

  iw := 0;
  repeat
    inc(iw);
  until week[iw] = Edit2.Text;

  while DayOfWeek(d) <> iw do d := d+1;

  today := Now;
  while d<today do
  begin
    Memo1.Lines.Add(DateTimeToStr(d));
    d := d+7;
  end;
end;


デル  2005-12-20 02:47:42  No: 19264

このプログラムをコピーしてEdit1,Edit2,button1,Memo1をフォームに貼り付けて、Edit1に4月1日と入力して実行したんですけど、読込み違反が起こりましたとエラーになるんですけどどうしたらいいんですか?


デル  2005-12-20 02:49:44  No: 19265

すいません。edit2に曜日を入れるのを忘れてました。ちゃんと動きました。ありがとうございます。


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

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






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