日報のようなものを書くためには?

解決


tny  2011-09-18 11:27:58  No: 40950

はじめまして。Delphiを使いはじめたての初心者です。
日報のようなものを作ろうと思っています。

日報に必要なのが予定・雑記・読んだ人のチェック欄・記載者と思ったので、以下のようなコンテンツを考えています。

【Memo1】【Memo2】
>予定・内容
【Combobox】
>書いた人が名前を選択
【Check Box】
>読んだ人がチェック
【Button】
>[昨日][明日]で前後の日に飛ぶ
【Edit】(Lavelかコンボボックスにするかもしれないです)
>日付が記載

これらを(もしくはdelphiを使った違う方法で)日報のようにうまくチェックボックス・記載内容・日付を記録する方法はないでしょうか?

自分は
1保存ボタンを作る
2Memo内容をtextに保存する
3[昨日]や[明日]で違うフォームを出す。
4読み込むボタンでLoadする。
で、試してみました。

しかし、その場合無限にフォームページを作らないといけないことに気付き、日報としての機能を果たせないと思いました。

Q1.前日・明日に移動してもフォームの基本内容は同じ且つ[Memo・チェックボックス・Edit]に書いた内容は無限に保存される方法はないでしょうか
[ex  9/17・18・19の日報を書く。18の状態から(明日)をクリックすると19の記事、(昨日)をクリックすると17の記事が見れるようにしたいです]

Q2.チェックボックスのチェック状態を記録して呼び出すことはできないでしょうか?

1つだけでも大変助かりますし、考え方のヒントだけでもいただけたら助かります。

わかりにくい文章ですみませんが、よろしくお願いします。


  2011-09-18 16:00:41  No: 40951

特定のフォルダの下に、日付名を持ったファイルでも作ったらいいんじゃない?
1行目に内容、2行目に担当者名、とか分かるように保存しておいて。
で、日付に応じてそれを読ませると。
もしデータベースをいじれるなら、そっちに入れれば一番早いだろうけど。


  2011-09-18 16:09:03  No: 40952

多少、コード例を示します。
// 次へボタンを押したときの処理。
// FileName は、呼び出したい日付に対応するファイル名。例えばc:\20110917.txtなど。
procedure TForm1.SetValues(FileName: String);
var
  SL: TStringList;
begin
  SL := TStringList.Create;
  SL.LoadFromFile(FileName);
  // ファイル名の1行目には内容が、2行目には担当者名が、3行目にはチェックボックスの状態が「1」又は「2」で格納されているとする。
  Memo1.Text := SL[0];
  ComboBox1.Text := SL[1];
  CheckBox1.Checked := (SL[2] = '1');
  SL.Free;
end;


HOta  2011-09-18 16:54:19  No: 40953

データーベースを使うことをお勧めします。人数分の既読の対応が簡単になります。


はぅ  2011-09-18 18:40:34  No: 40954

なるべく簡単に作る方法でしたら、

■日報データの保存
  なんらかのデータベースを使う。
  DataControls タブにあるものを使えば、読み書きに関するプログラム
記述も少なく(簡単なものなら実質0も可)できます。
  Interbase や dbExpress タブには、簡単にデータベースに接続できる
方法があります。

■3日分の日報を表示する
  DBCtrlGrid を使えば DBMemo の表示もでき、3日分でも7日分でも表示できます。
  日報に改行を認めないのであれば、DBGrid で一覧表示モードを作ってもよいと思います。

■日報記載者名の登録
  DBCheckBox を使わず、DBComboBox や DBListBoxを使えば、将来日報を
書く人が増員されても、名前を簡単に追加できます。

  日報はまとめて書くものではなく、基本は毎日書くものです。
  日報記載者の集計とかする予定がなければ、Edit や DBEdit に、氏名を
毎日毎日入力してもらう方法もあります。

■既読の対応
  既読人数の上限が最初から決まっているのでしたら、
  既読1、既読2、既読3・・・
と用意しておき、読んだ順に名前を入力してもらう、といった方法が
プログラムをするほうからみれば簡単ですが、閲覧者からみれば、一度に
何日分も読むときに、いちいち名前を入力するのは大変と思います。

  既読に関して重要度が低いのでしたら、DBCheckBoxの1番は誰々さん、
2番は誰々さんとして、クリックしてもらう方法もあります。 

  少しプログラムをするのでしたら、既読者情報データだけ別に作って、
日付でリンク(1日に複数の日報は無い、という前提)、すれば、
[読んだボタン]をクリックするだけで、誰々さんが既読したとする方法も
できます。

  紙の日報を単純にパソコンに移行する程度なのか、それとも、今後何か
集計する予定があるのか(既読率を出すとか)で、異なると思います。


tny  2011-09-19 11:12:32  No: 40955

あさん、HOtaさん、はぅさん素早く、丁寧なご回答ありがとうございます。
助かりました。

あさん>
わざわざ丁寧にソースコードまでありがとうございます。
メモ帳の行によって保存内容をわける案は全然浮かびませんでした。
たすかります。

HOtaさん>
delphiの[データベース]という存在も知りませんでした。
インターネットで調べたところdelphiのプログラムに最初から入っている[出来ているページ案]みたいな感じのもの・・ですかね。
とても便利そうですし、試してみたいと思います。

はぅさん>ご丁寧な回答ありがとうございます。別案から応用まで非常に参考になりました。
基本はやっぱりデータベースによる構築が一番シンプルなようですね。
ちなみに単純に、紙の日報を移行しようと考えています。

今からあさんから頂いた案とソースコード、後はデータベースについて調べて頑張って作ってみようと思います。
本当にありがとうございました。


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

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






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