パネルコンポで2行表示するには?


ひろみ  2006-05-20 07:53:28  No: 21667

こんばんは。
お尋ねします!

1つのパネルコンポで2行表示はどのようにするとよろしいのでしょうか?
対象文字列が、20バイト以上の時は2行にするみたいな感じです。
var
str:String;

str:=:='12345678901234567890';

Pnl.Caption:=Str;

実行時
1234567890
1234567890

よろしくお願いします。


Label  2006-05-20 08:27:44  No: 21668

Panel の上から Label を貼り付けるのが簡単でいいと思います。この場合、改行させたいところで、#10#13 で。


ひろみ  2006-05-20 08:37:44  No: 21669

ありがとうございます。

Labelでは、#10#13 が使用できるのですね!

Panelでは、#10#13 は使用できないのでしょうか?
Panelでやってみたけど、改行できなっかたので不思議でした。


Panelではとても面倒です  2006-05-20 09:04:41  No: 21670

https://www.petitmonte.com/bbs/answers?question_id=3899


使用不可仕様  2006-05-20 09:06:04  No: 21671

>Panelでは、#10#13 は使用できないのでしょうか?
>Panelでやってみたけど、改行できなっかたので不思議でした。

それがPanel.Captionの仕様で、改行は想定外ということでしょうか…


Mr.XRAY  URL  2006-05-20 10:28:10  No: 21672

TPanelには、Private部にCanvasプロパティがあります。
Canvasが使用できれば、複数行も画像も表示可能です。以下例です。
この例は、この掲示板にも何回か提示していますので、説明は省略します。

implementation

{$R *.DFM}

//  PanelのPrivate部のCanvasプロパティにアクセスするためのクラス定義
type
   TMyPanel=class(TCustomPanel);

//=============================================================================
//  CanvasのTextOutやWin32APIのDrawTextを使用してPanelのCanvasに描画する
//  この方法なら任意の位置にテキストや画像を表示可能。位置の調整はPanelのサイ
//  ズなどの値から計算する。
//  指定したバイト数で2行以上にする場合は、先頭からのバイト数を数えるればい
//  いので説明の必要はないでしょう。
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
     TMyPanel(Panel1).Canvas.TextOut(20,10,'123');
     TMyPanel(Panel1).Canvas.TextOut(20,25,'ABC');
end;


Mr.XRAY  URL  2006-05-20 10:36:34  No: 21673

>この例は、この掲示板にも何回か提示していますので、説明は省略します。
と言っても探すのが大変ですね。う〜む。
説明が必要でしたらまた訊いて下さい。


Mr.XRAY  URL  2006-05-20 10:44:58  No: 21674

> TMyPanel=class(TCustomPanel);
もちろん
 TMyPanel=class(TPanel);
でも構いません。TMyPanleは任意ですが、クラスなので頭にTをつけた方が
いいでしょう。


消える  2006-05-20 11:41:21  No: 21675

単に
>TMyPanel(Panel1).Canvas.TextOut(20,10,'123');
だと、上からフォームなどがかぶさった場合、そのフォームがなくなると消えてしまいます。なのでコード的にもラベルが最適かと.....。
スタティク・テキストでもできるかとやってみたところ、下のほうの文字が半分切れてしまいました。


Mr.XRAY  URL  2006-05-20 20:53:50  No: 21676

>そのフォームがなくなると消えてしまいます。
ありっ、これは失礼。OnPaintでの描画が必要なようですね。
TLabelでしのぐのがよさそうですね。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加