TPanel.Caption
Delphi (私の場合は Delphi 6) でテキストをラップする方法はありますか?
質問する
5203 次
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 に答える