wwDBGrid遇到顯示(MEMO)的處理方式

這件事情的起因是因為前人開立的欄位格式是 nvarchar(max)

於是呢!在DBGrid裡面就變成了

1480584108022

要解決(Memo)顯示正常的內容,就得要在DBGrid的DrawDataCell動手腳了

procedure TForm1.wwDBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
  Field: TField; State: TGridDrawState);
var
  ACanvas : TCanvas;
begin
  if (Field.DataType <> ftWidememo)  then exit;
  ACanvas := twwDBGrid(Sender).Canvas;
  ACanvas.textrect(Rect,Rect.Left,Rect.Top,Field.AsString);
end;

加上後,就會顯示為

1480585258071

為DBGrid加上OnClick事件

很奇怪的在DBGrid竟然沒有OnClick事件~不過還是可以用方式讓Click事件重見天日

[pascal]
private
{ Private declarations }
procedure dbgrid1Click(Sender:Tobject);
[/pascal]

[pascal]
procedure TForm1.FormCreate(Sender: TObject);
begin
dbgrid1.ControlStyle := dbgrid1.ControlStyle + [csClickevents];
TForm(dbgrid1).OnClick := dbgrid1click;
end;
[/pascal]

[pascal]
procedure TForm1.dbgrid1Click(Sender: Tobject);
begin
// Click事件
end;
[/pascal]

[Delphi] DBGrid顯示不同字型、顏色

dbgrid選擇顏色字型的方式
1.在DBGrid的Columns Editor中,將要出現按鈕的欄位的ButtonStyle設為cbsEllipsis
2.接著到OnEditButtonClick中增加程式判斷
if dbgrid1.SelectedField = xxxx(欄位名稱) then begin
end;
3.顯示的方式則是在OnDrawColumnCell中增加程式
IF COLUMN.FieldName = ‘xxxx(欄位名稱)’ THEN BEGIN
DBGrid1.canvas.brush.Color := STRINGTOCOLOR(‘clGreen’);
END;
// 記得要加上
DbGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, []);