TLabelでBorderStyleを使用するには?

解決


ふろんてぃあ  2010-11-08 22:31:22  No: 39503

いつもお世話になっております。
TEditにはBorderStyleプロパティが存在しているので、入力領域に枠をを表示させる事が出来ますが
TLabelにはBorderStyleプロパティが存在しないので、表示領域に枠を表示する事が出来ません。
今回、入力不可+フォーカスを受け取らない状態でデータを表示したい(枠あり)という事態が起きまして、TLabelで表示するのがベストかと思っていたのですがBorderStyleプロパティが存在しなくて困っております。

何か良い方法を知っていらっしゃる方がいましたら、ご教授頂きたいのですが。。。

宜しくお願い致します。


Delphi大好き  2010-11-09 00:17:55  No: 39504

以下でどうでしょうか?

  label1.Canvas.Pen.Color := clBlack;

  label1.Canvas.MoveTo(0,0);
  label1.Canvas.LineTo(label1.width,0);
  label1.Canvas.MoveTo(0,0);
  label1.Canvas.LineTo(0,label1.height);

  label1.Canvas.Pen.Color := clWhite;

  label1.Canvas.MoveTo(0,label1.height -1);
  label1.Canvas.LineTo(label1.width,label1.height -1);
  label1.Canvas.MoveTo(label1.width -1,0);
  label1.Canvas.LineTo(label1.width,label1.height + 8);


tor  2010-11-09 00:26:34  No: 39505

お手軽な代替手段として
・StaticTextやPanelで代用する
・周りにShapseやBevelで枠を付ける
というのがあります。いずれもEditの枠とは少し異なった外観になりますけれど。

編集できなければいいだけであればReadOnly=trueにするのが一番簡単ですが、
フォーカスも移動させたくない(文字が淡色になるのもイヤ)というのなら
Enabled=falseにしたPanelの中にEditを入れるという方法があります。


ふろんてぃあ  2010-11-09 00:47:22  No: 39506

Delphi大好き様、tor様

返信ありがとうございます。
やはり、そのままって感じではいけないんですね。。。

Canvasで線を引いたり、BevelやPanelで枠を作成する方法も良いとは思ったのですが、
枠を表示するだけでソース量を増やしたり、コントロールの上にコントロールを貼る様な労力を割くのもちょっと躊躇してしまうので、
tor様がご提案して下さったStaticTextで対応しようと思います。

StaticTextはまったく知らなかったコントロールだったので勉強になりました。
また、Canvasで線を引くという発想もDelphi大好き様が書き込まれるまでなかったので色々な考え方があると勉強させて頂きました。

ありがとうございました。


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

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






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