我想問一下是否有另一種方法可以在不使用的情況下更改單元格文本TextOut()?使用TextOut()需要我不想混入的坐標。此外,我只想更改文本并保留其他所有內容,如顏色、字體、對齊方式等。
我的目的是改變不同場景中文本的顯示。例如:
- 我可能想在不同的列中以不同的格式顯示日期欄位,例如一列
MM/yyyy顯示在MM/dd/yyyy. - 如果數字高于或低于某個閾值,我可能想顯示一些具有整數/浮點數資料型別的行,并帶有顯示“太高”或“太低”的文本。
- 我可能想用我認為合適的一些文本或數字交換布林值 true/false。
- 或者,也許只是在某些條件下空白一些單元格。
我知道如果TDBGrid是“可編輯的”,這將是進行編輯的一項艱巨挑戰。所以我打算在不可編輯的網格中使用任何解決方案。而且,我不想轉移到TStringGrid因為我發現TDBGrid使用資料集很容易。
順便說一句,我正在使用 Delphi 7。
對于僅在特定條件下將特定單元格留空,是否可以發出“退出”以跳過將單元格值顯示到單元格本身?
喜歡:
procedure Tform1.dbgrdDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if (Column.fieldname = 'total') and (column.field.value=0) then
exit
else
dbgrdsku.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
uj5u.com熱心網友回復:
如果您正在使用 aTDBGrid和資料源,在Grid直接選擇更改之前,請檢查在資料源中進行更改是否有用(在 上TFields)。
使用Datasource不花費那么多資源繪畫。到達該點(繪制)后,資料可能已經更改。
您可以創建后代(TQuery、TADOQuery、TFDQuery 等)并使用該TFields事件更改要繪制的文本。更簡單更好。TDatasetOnGetText
如果你是這樣的兩個欄位:

使用OnGetText兩個欄位的像這樣的簡單代碼:
procedure TForm3.ADOQuery1DatosGrupoGetText(Sender: TField; var Text: string; DisplayText: Boolean);
begin
// too hight for number greater than 5
if (not Sender.IsNull) then
if (Sender.AsInteger > 5) then
Text := 'too hight!'
else
Text := Sender.AsString;
end;
procedure TForm3.ADOQuery1fechaGetText(Sender: TField; var Text: string; DisplayText: Boolean);
begin
// Change the date format
if (not Sender.IsNull) then
Text := formatDateTime('MM/yyyy', Sender.AsDateTime)
end;
你得到了這個結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/534519.html
標籤:德尔福德尔福7表格
