いつもお世話になっております。
TEditにはBorderStyleプロパティが存在しているので、入力領域に枠をを表示させる事が出来ますが
TLabelにはBorderStyleプロパティが存在しないので、表示領域に枠を表示する事が出来ません。
今回、入力不可+フォーカスを受け取らない状態でデータを表示したい(枠あり)という事態が起きまして、TLabelで表示するのがベストかと思っていたのですがBorderStyleプロパティが存在しなくて困っております。
何か良い方法を知っていらっしゃる方がいましたら、ご教授頂きたいのですが。。。
宜しくお願い致します。
以下でどうでしょうか?
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);
お手軽な代替手段として
・StaticTextやPanelで代用する
・周りにShapseやBevelで枠を付ける
というのがあります。いずれもEditの枠とは少し異なった外観になりますけれど。
編集できなければいいだけであればReadOnly=trueにするのが一番簡単ですが、
フォーカスも移動させたくない(文字が淡色になるのもイヤ)というのなら
Enabled=falseにしたPanelの中にEditを入れるという方法があります。
Delphi大好き様、tor様
返信ありがとうございます。
やはり、そのままって感じではいけないんですね。。。
Canvasで線を引いたり、BevelやPanelで枠を作成する方法も良いとは思ったのですが、
枠を表示するだけでソース量を増やしたり、コントロールの上にコントロールを貼る様な労力を割くのもちょっと躊躇してしまうので、
tor様がご提案して下さったStaticTextで対応しようと思います。
StaticTextはまったく知らなかったコントロールだったので勉強になりました。
また、Canvasで線を引くという発想もDelphi大好き様が書き込まれるまでなかったので色々な考え方があると勉強させて頂きました。
ありがとうございました。
ツイート | ![]() |