DBGridの内容変更

解決


Delphiおもしろい  2010-02-11 18:51:22  No: 37530

DBGridについての質問です。データベース上のテーブル項目名を変更してDBGridに表示しようとしています。デーブルの項目名がNAMEのとき、DBGridで漢字の「名前」と表示のしかたをご指示してもらえませんか?また、DBGrid上で、項目に入っている数字に文字を付け加えるやり方もご指示いただけないでしょうか(テーブル項目に3という数字が入っていた場合に、DDBGridで3時と表示する方法です)?

現在、デルファイ4でプログラミングをしています。


HOta  2010-02-11 19:15:12  No: 37531

TDatasetに計算項目を追加して表示するのが簡単でしょう。
TDatasetで右クリックから項目の設定を選択->項目設定ダイアログを表示->
右クリックから項目の新規作成で計算項目を作成します。
TDatasetのOnCulcFieldsイベントで計算項目Fieldを設定します。

元のテーブル項目名がTimeIntegerだとします。
計算項目の項目名をDispTimeString,型をStringサイズを8バイトを作成
計算項目をTDBGridへ設定します。

procedure TDM_NandemoIB.IBQuery_MstCalcFields(DataSet: TDataSet);
var
  i : Integer;
begin
  with Dataset do
  bedin
    if FieldByName('TimeInteger').isNull then
      FieldByName('DispTimeString').AsString := '未設定'
    else begin
      i := FieldByName('TimeInteger').AsInteger mod 24;
      if I > 12 then
      begin
        FieldByName('DispTimeString').AsString := '午後' + inttostr(I - 12) + '時';
      end else
      begin
        FieldByName('DispTimeString').AsString := '午後' + inttostr(I) + '時';
      end;
    end;
  end;
end;


S&H  2010-02-13 22:36:56  No: 37532

テーブルの項目名とDBGridの列タイトルを異なるものにするには
(1) DataSet側(Table, Query)のFieldのプロパティのDisplayLabelを設定する
(2) DBGridのColumnプロパティのTitleのCaptionを設定する
のどちらかで設定すれば可能です。

HOtaさんのように12時間表示ではありませんが
数値データに文字を付加して表示するには("AA"が対象の数値フィールドであるとして)
  DataSet1.Open;
  DataSet1.(FieldByName('AA') as TIntegerField).DisplayFormat := '0時';   //--a
  DataSet1.(FieldByName('AA') as TIntegerField).DisplayFormat := '00時';  //--b
  DataSet1.(FieldByName('AA') as TIntegerField).DisplayFormat := '#時';   //--c
    :
    :
のようにすることも可能ですよ。(D4でもOKでは?)
 a.は1-9時の時、先頭に0がつかない
 b.は1-9時の時、01..09時と先頭に0を付け2桁で表示
 c.は一見OKに見えるが0時の時数値が表示されないのでダメ
 DisplayFormatをHelpで調べてみてください。
 DisplayFormatは数値のカンマ付表示、日付・時刻の表示などでよく使用します。
設計時にTable or QueryのFieldsプロパティにFieldを追加していれば
オブジェクトインスペクタ上で設定することも出来ます。


Delphiおもしろい  2010-02-15 03:37:31  No: 37533

御二方の方法で、うまくいきました。どうもありがとうございました。


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

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






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