月単位(月次)の収支の分析を行う仕組みを作って見る
流れとしては
銀行口座(GMOあおぞらネット銀行)の情報をCSVでダウンロードし、それを、Mysqlにアップロードし
内容別に、仕分けを行い、月単位(月次)の決算を行えるようにしたい
CSVのデータをMysqlへのアップロードする処理は、前回 PHPにて作成したため、Lazarusによる、仕分け設定の画面を作る
仕分けは、最終的な決算報告書に使えるように、費目勘定費目にして、さらに、分析できるように2階層にしたいが、当面は、1階層とする
勘定費目の内容も、DBにて管理したいが、当面は、Lazarus内の属性設定のデータとする
はじめに、属性を設定できる部品を作成する
コンボボックスにて、作成できるが、Lazarusの場合、HTMLの場合
1 2 3 4 5 |
<select name="color"> <option value="red">赤</option> <option value="blue">青</option> <option value="yellow">黄色</option> </select> |
のように、値と表示内容を持つことができるが
Lazarusの場合、値だけなので、StringGridとセットで扱うことにする
Lazarusで、新しいプログラムを作る時は、はじめにからのフォルダを作って
例:sortinng (仕分け)
Lazarusを起動し>
まず、部品として、ボタン、コンボ、Editbox1,Editbox2,StringGridを配置
StringGridに、属性の名前と値を設置する
Comboboxの機能確認
ボタン1をクリックして、名称をコンボボックスにセットする
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
procedure TForm1.Button1Click(Sender: TObject); begin begin ComboBox1.Items.Clear; ComboBox1.Items.Add('abc'); ComboBox1.Items.Add('efg'); ComboBox1.itemIndex:=0; end; end; procedure TForm1.Button2Click(Sender: TObject); begin ComboBox1.Items.Clear; ComboBox1.Items.Add('opq'); ComboBox1.Items.Add('rst'); ComboBox1.itemIndex:=0; end; |
ボタン1を押すと、abc,efgがセットされ
ボタン2を押すと、opq,rstがセットされる
次は、ボタン3で、StringGridの内容を、
ComboBoxにセットしてみる
まずは、ハードコーディングにて
1 2 3 4 5 6 7 8 9 |
procedure TForm1.Button3Click(Sender: TObject); begin ComboBox1.Items.Clear; ComboBox1.Items.Add(StringGrid1.Cells[2,1]); ComboBox1.Items.Add(StringGrid1.Cells[2,2]); ComboBox1.Items.Add(StringGrid1.Cells[2,3]); ComboBox1.Items.Add(StringGrid1.Cells[2,4]); ComboBox1.itemIndex:=0; end; |
うまくいったので、動的に行ってみる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
procedure TForm1.Button3Click(Sender: TObject); var i : Integer; begin ComboBox1.Items.Clear; //ComboBox1.Items.Add(StringGrid1.Cells[2,1]); //ComboBox1.Items.Add(StringGrid1.Cells[2,2]); //ComboBox1.Items.Add(StringGrid1.Cells[2,3]); //ComboBox1.Items.Add(StringGrid1.Cells[2,4]); for i:=1 to StringGrid1.rowcount-1 do begin ComboBox1.Items.Add(StringGrid1.Cells[2,i]); end; ComboBox1.itemIndex:=0; end; |
次は、comboBoxで選択された内容の属性を取得してみる
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
procedure TForm1.ComboBox1Change(Sender: TObject); begin ComboBox1Click(Sender); end; procedure TForm1.ComboBox1Click(Sender: TObject); begin Edit2.caption:=ComboBox1.Items[ComboBox1.ItemIndex]; Edit1.caption:=StringGrid1.Cells[1,ComboBox1.ItemIndex+1]; end; procedure TForm1.ComboBox1CloseUp(Sender: TObject); begin ComboBox1Click(Sender); end; |
これで、Comboxの内容をEdit2に、それに対応する値をEdit1にできた
StringGridを追加して、データーベースから読み込む