0

使用: Delphi XE、Devexpress VCL。

セル クリック イベントで、Devexpress の QuantumGrid VCL コントロールのハイパーリンク列のセルの値を変更しようとしています。列はカスタム列であり、データセットにバインドされていません。

ハイパーリンク列のプロパティは次のように設定されます。

編集:= False;
読み取り専用:= 真;
シングルクリック := 真;

次のコード (grdReprint はグリッドの DBTableView、grdReprintColumn2 はハイパーリンク列) は無効です。

procedure TfReceiptList.grdReprintCellClick(Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: boolean);
var
  v: integer;
  c: integer;
begin

  if ACellViewInfo.Item = grdReprintColumn1 then
  begin
    v := datamod.uspRECEIPT_LSTRECEIPTID.AsInteger;

    fMain.PrintReceipt(v);

  end
  else if ACellViewInfo.Item = grdReprintColumn2 then
  begin

    (* This code is ineffective because the cell contents do not change *)

    if ACellViewInfo.Text = 'Void' then
      grdReprint.DataController.SetEditValue(grdReprintColumn2.Index, 'Unvoid', evsValue)
    else
      grdReprint.DataController.SetEditValue(grdReprintColumn2.Index, 'Void', evsValue);

  end;
end;

上記がセル内のテキストを変更する適切な方法でない場合は、他のアイデアを歓迎します。

ティア。

4

1 に答える 1

0

ハイパーリンク コントロールの SingleClick プロパティが TRUE に設定されている場合、GridViews CellClick イベントは呼び出されません。

(単なるテキストのように見えるものにハイパーリンク コントロールを使用する理由を理解できれば、さらにお役に立てるかもしれません。質問の下にある私のコメントを参照してください。)

編集: OP が示すように gridViews Editing プロパティが False の場合、この回答は正しくありません。Editing が True FWIW の場合の動作について説明します。

于 2011-09-26T01:24:13.560 に答える