Delphi DBGrid如何更改显示时的值

y0u0uwnf  于 2022-09-21  发布在  其他
关注(0)|答案(1)|浏览(303)

我只需要更改单元格的内容以供显示。我在DrawColumnCell中执行此操作:

if Column.FieldName = 'UUID' then
  begin
     with (Sender as TDBGrid).Canvas do
     begin
         FillRect(Rect);
         strTemp := (Sender as TDBGrid).DataSource.DataSet.FieldByName('UUID').AsString;
         strTemp := RightStr(strTemp, Length(strTemp) - LastDelimiter('-', strTemp));

         TextOut(Rect.Right - 2 - (Sender as TDBGrid).Canvas.TextWidth(strTemp), Rect.Top + 2, strTemp);

     end;
  end;

Uuid-外观为‘SHRYU-5TRP0-RT-898-763523561294’。О只需要显示‘763523561294’即可。

上面的代码解决了这个问题,但如果选择这个单元格,原来的值和我的值相互重叠就会被替换。如何避免这种情况?

rvpgvaaj

rvpgvaaj1#

数据集基础字段的OnGetText()事件是执行此操作的更合适位置。在运行时使用持久化字段或挂钩事件。

procedure TForm1.FDMemTable1AGUIDGetText(Sender: TField; var Text: string;
    DisplayText: Boolean);
Var
  strTemp : string;
begin
  if DisplayText then
  begin
     strTemp := Sender.AsString;
     strTemp := RightStr(strTemp, Length(strTemp) - LastDelimiter('-', strTemp));
     Text := strTemp;
  end;
end;

相关问题