10

下の図で強調表示した小さな白い四角形を (黒で) 塗りつぶす必要があります。

余分な列を追加しようとしました。PaintInfo.PaintRectangle を拡張してみました。考えられる金額列のすべての設定を試しました。私はアイデアがありません。

誰でもそれを行う方法について何か考えがありますか?

カスタムヘッダー描画を行うコードは次のとおりです。with(私の元のコードではなく、ステートメントを許してください....)

procedure TWinPOSReceiptPluginForm.ReceiptDisplayTreeAdvancedHeaderDraw(Sender: TVTHeader; var PaintInfo: THeaderPaintInfo;
  const Elements: THeaderPaintElements);
var
    TempText: string;
begin
    with PaintInfo do
    begin
      // First check the column member. If it is NoColumn then it's about the header background.

        if (hpeBackground in Elements) and (Column <> nil) then begin
          TempText := Column.Text;
          TargetCanvas.Brush.Color := $444444;
          TargetCanvas.FillRect(PaintRectangle);
          TargetCanvas.Font.Color := clWhite;
          TargetCanvas.Font.Style := [];
          TargetCanvas.TextOut (PaintRectangle.Left + 3, PaintRectangle.Top + 3, TempText);
          end;
    end;
end;

ここに画像の説明を入力

4

1 に答える 1

12

あなたのif条件が間違っています。hpeBackground がその領域の Elements にある場合、Column が nil であるため、true になることはありません。

Column nil チェックは Column.Text を取得するためにのみ必要なため、そのコードを変更する必要があります。

if hpeBackground in Elements then
begin
  if Column <> nil then
    TempText := Column.Text;
  TargetCanvas.Brush.Color := $444444;
于 2015-10-06T18:20:21.433 に答える