3

いくつかの列を持つ TcxGrid を実装しました。このグリッドの最後の列のセルには、TcxEditButton タイプのボタンが含まれています。

グリッドのコンテンツは、ユーザーが入力するか、親フォームの作成時にテキストファイルからロードされます。

グリッドの値に基づいて、これらのボタンの一部を非表示にしたいと思います。ボタンの可視性を決定する値は、グリッドのメモリ データ セットから読み取るか、グリッドの非表示の列から直接読み取ることができます。

私の問題は、値をチェックしてボタンの可視性プロパティを設定するための正しいイベントを見つけることができなかったことです。グリッド テーブルとボタンを含む列の両方であらゆる種類のイベントを使用しようとしました。

ボタンアイテムを取得する方法と、グリッドが描画されたときにこれを設定できる方法についての提案はありますか?

解決策: 受け入れられた解決策の場合、変更されたバージョンを使用することになりました。

procedure TFrame_cx_Element_Inntasting_Kriterier.cxGrid_InntastingDBTVPropertiesGetProperties(
  Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
  var AProperties: TcxCustomEditProperties);
begin
  if ARecord.Values[cxGrid_ColumnWithValidatedValue.Index] = true then
    AProperties := cxEditRepository1ButtonItem1.Properties
  else
    AProperties := cxEditRepository1Label1.Properties;
end;
4

2 に答える 2

4

タイプが TcxEditButton の列の OnGetProperties イベントを使用します。

ARecord を使用すると、列インデックスに基づいて同じ行の別の列の値を取得できます。

プロパティを設定する最も簡単な方法は、TcxEditRepository で定義済みの 2 つの TcxEditButtons (たとえば、ButtonsVisible と ButtonsInvisible という名前) を使用することです。

イベントは次のようになります。

procedure TForm1.cxGrid1TableView1EditButtonColumnGetProperties(
  Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
  var AProperties: TcxCustomEditProperties);
var
  Value: Variant;
  Buttons: TcxEditButtons;
  ButtonEnabled : Boolean;
begin
  if VarIsNull(ARecord.Values[cxGrid1TableView1ColumnToCheck.Index]) then
    AProperties := ButtonsInvisible.Properties; 
    // or AProperties := ButtonsVisible.Properties depending on what you want/need

  Value := ARecord.Values[cxGrid1TableView1ColumnToCheck.Index];
   if (Value = ValueWhenVisible) then
     AProperties := ButtonsVisible.Properties
   else
     AProperties := ButtonsInvisible.Properties;
end;

これが正しい軌道に乗ることを願っています。

于 2012-04-28T18:18:00.873 に答える
0

TcxGridDBTableView で OnInitEdit イベントを使用します。

于 2012-04-27T14:42:31.180 に答える