8

TPanel.CaptionDelphi (私の場合は Delphi 6) でテキストをラップする方法はありますか?

4

2 に答える 2

11

デフォルトではありません。TPanel のソースコードからわかるように、テキストは DrawText( )-windows API によって描画されます。

procedure TCustomPanel.Paint;
{snip}
begin
  {snip}
  Flags := DT_EXPANDTABS or DT_SINGLELINE or
    VerticalAlignments[FVerticalAlignment] or Alignments[FAlignment];
  Flags := DrawTextBiDiModeFlags(Flags);
  DrawText(Handle, PChar(Caption), -1, Rect, Flags);
end;

Paint メソッドを派生させてオーバーライドするか、代わりにラベルを使用することができます。

于 2009-08-13T21:11:07.483 に答える
0

実際に動作するコードは次のとおりです。

const
  Alignments: array[TAlignment] of Longint = (DT_LEFT, DT_RIGHT, DT_CENTER);
  VerticalAlignments: array[TVerticalAlignment] of Longint = (DT_TOP, DT_BOTTOM, DT_VCENTER);
var
  Rect: TRect;

   ... 
    
   if ShowCaption AND (Caption <> '') then
    begin
     Rect := GetClientRect;
     Canvas.Brush.Style := bsClear;
     Canvas.Font := Self.Font;
     Flags := DT_NOPREFIX OR
              DT_WORDBREAK OR
              VerticalAlignments[VerticalAlignment] OR
              Alignments[Alignment];
     Flags := DrawTextBiDiModeFlags(Flags);
     DrawText(Canvas.Handle, PChar(Caption), Length(Caption), Rect, Flags);
    end;
于 2021-05-06T17:15:58.703 に答える