2013-10-01

LazarusでStringGridへデータを読み込んでみる

やってる事はDelphiとほとんど同じ

ただしDelphiだとある一定以上のエディションでなければ接続できないPostgreSQLへLazarusだと難なく接続可能

●コンポーネント配置

  1. PQConnectionを配置、プロパティを適切に設定
  2. SQLQueryを配置、プロパティのSQLを記述
  3. Transactionを配置
  4. ロードアクション用のボタンを配置
  5. StringGridを配置




●ボタンのクリックイベントへ下記のコードを記述


procedure TForm1.Button1Click(Sender: TObject);
var
    row:integer;
begin

    // グリッド幅調整
    self.StringGrid1.ColWidths[2]:=200;
    self.StringGrid1.ColWidths[3]:=200;


    // SQLを実行して結果を読み込みグリッドへ追加
    try

        self.SQLQuery1.Open;

        // 件数を取得してグリッドを広げる
        self.SQLQuery1.Last;
        self.StringGrid1.RowCount:= self.SQLQuery1.RecordCount+1;

        // 先頭に戻して読み込み開始
        self.SQLQuery1.First;
        row:=1;


        while self.SQLQuery1.EOF=FALSE do
        begin

            self.StringGrid1.Cells[1,row]:=self.SQLQuery1.FieldByName('商品コード').AsString;
            self.StringGrid1.Cells[2,row]:=self.SQLQuery1.FieldByName('商品名1').AsString;
            self.StringGrid1.Cells[3,row]:=self.SQLQuery1.FieldByName('商品名2_1').AsString;
            self.SQLQuery1.Next;

            inc(row);

        end;

    finally

        self.SQLQuery1.Close;

    end;

end; 




DBGridを利用すればこういった記述すら不要になる
とは言いつつ実際にはコードが必要になる場合も多々あるので一応テストがてら書いてみた