0

私たちの Delphi アプリケーションは、データベースにバインドされた TcxGridDBColumns を使用して、ユーザーが ISO 8601 形式の日付 (YYYY-MM-DD) を文字列として操作できるようにします。エンド ユーザーにカレンダー ベースの日付ピッカーを提供したいと考えています。

TcxDateEditProperties基になるデータベースが文字列フィールドを使用するため、(直接) 使用できません。したがって、私の理解では、次のオプションが残されています

  1. すべてのテーブルに追加の日付列 (TDateTime DB フィールド) を作成し、TDataSet の BeforePost イベントで日付を ISO 8601 文字列列に変換します。

  2. カスタム Tcx***Properties クラスを作成します。これには、 からの継承が含まれる可能性がありTcxPopupEditPropertiesます。

影響を受けるテーブルが多数あるため、#2 を使用することをお勧めします。その際に役立つドキュメントを教えてください。それとも#3はありますか?

4

2 に答える 2

0

#3: 追加の列は必要ありません。DateEdit は、現在のシステム形式 (ユーザーの変更が書き戻される形式) と ISO 形式の両方の文字列を認識します。BeforePost では、システム形式をデータベースで必要な ISO に変換します。さらに贅沢なことに、次のイベントは既存の ISO 日付をユーザーのデフォルトの日付形式に変更します。

procedure T_RVVorbereitung.cxGridAnalysisDateGetDataText(
  Sender: TcxCustomGridTableItem; ARecordIndex: Integer; var AText: string);
var
  ADate                                 : TDateTime;
begin
  try
    try
      ADate := TIso8601.DateTimeFromIso8601(AText);         // YYYY-MM-DD
    except
      ADate := StrToDate(AText);
    end;
    AText := DateToStr(ADate);
  except
    // neither system nor ISO date: show as it is
  end;
end;
于 2012-05-30T08:32:15.670 に答える