- 在线时间
- 1957 小时
- 最后登录
- 2024-6-29
- 注册时间
- 2004-4-26
- 听众数
- 49
- 收听数
- 0
- 能力
- 60 分
- 体力
- 40960 点
- 威望
- 6 点
- 阅读权限
- 255
- 积分
- 23863
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 20501
- 主题
- 18182
- 精华
- 5
- 分享
- 0
- 好友
- 140
TA的每日心情 | 奋斗 2024-6-23 05:14 |
|---|
签到天数: 1043 天 [LV.10]以坛为家III
 群组: 万里江山 群组: sas讨论小组 群组: 长盛证券理财有限公司 群组: C 语言讨论组 群组: Matlab讨论组 |
1.Label控件显示多行文本$ s/ {" T2 K' q2 ^# z: G2 G& }! l
可以直接给Label的Caption属性赋给带有换行符或回车符的字符串!下面三个例子产生同样的效果:
6 R l& K( L1 U5 T6 A+ f/ I- H Label1->Caption="第一行\n第二行\n第三行";
6 J, Z# v H- X- n5 ^! o9 m2 f. p Label1->Caption="第一行\r第二行\r第三行";! n0 }3 Z7 J8 O5 U. r" Z, |
Label1->Caption="第一行\r\n第二行\r\n第三行";5 n, X. o( R( P3 h# H6 O" z
但注意这样赋多行的值只在运行的时候有效,在对Label的静态设计中,直接在Caption属性中输入. b; }" n {/ c& q3 O6 L' ]5 r
"\r","\n"是没有用的,设计系统并没有对这些特殊字符作处理!
. Q6 E, P: ?/ e4 j* U9 I7 u2.Label控件显示超长文本时自动换行$ S$ m* \" {( ? E, T
只要对Label的两个属性进行修改。
0 M, f7 x& n) ? 第一个是AutoSize,将它设为False,然后将Label的高度和宽度进行调整,适应要显示的区域!" ]# {8 P; v4 }7 s
第二个是WordWrap,将它设为True。
) z9 e [: K- _2 h; c4 F) B 注意对于英文的显示是以单词为单位的,即不能把一个单词分两行显示,即使已经到了边界了,
5 X9 [: b* x3 Y* }& | 这时的显示应以空格区分多个单词!
4 I. i p. g( E8 Z3.使Label控件上的文字纵向显示. a: B- Y9 |8 [! m" p) o5 k
最直接的方法是改变字体的旋转度和方向!: p3 C7 V/ O% @( m
下面这些代码实现了旋转的功能:. ~" ~( b; l0 T5 \6 N
void __fastcall TForm1::Button1Click(TObject *Sender)- n0 X% q) f0 A* |4 @; @& `
{5 v- x4 U& F- C1 N1 J: R' h3 q ?
TFont *font;2 K) X4 k+ c5 B1 r1 T3 Y
LOGFONT logfont;
- I! e# T9 r2 W8 K font=new TFont;
- [( A$ z" c7 q font->Assign(Label1->Font);
+ ]% w9 T C% _' r GetObject(font->Handle,sizeof(LOGFONT),&logfont); s; _/ c! d6 w7 P; Z/ p& ^+ h
logfont.lfEscapement=-900;
- t3 ?9 C: ^. L, e' [5 A0 ]! A logfont.lfOrientation=-900;
$ \; D6 V5 n) }; s8 D( _ font->Handle=CreateFontIndirect(&logfont);
' D. v& ], s( t0 o+ G& k Label1->Font=font;
! W/ K- K+ }" t delete font;
) B' `3 i7 w3 ?* p Label1->Caption="矩阵论坛<a href="http://www.matrixstudio.org" target="_blank" >www.matrixstudio.org</A>";
, B1 G' q3 @/ z/ N* m1 g1 i }+ [; Z3 Y9 l+ T" X, k9 N6 l) P q+ r
这里要将Label的AutoSize设为False,然后将Label的高度和宽度进行调整,适应要显示的区域!
3 T, b6 A: C ^, C# F% O1 c: h 将Alignment设为taCenter。
) _" I& [2 Y. @+ Y0 a
2 [# p+ n9 @2 y; v! m! X" m; n 还有一种纵向显示的方式,字体不用旋转,利用Label可以显示多行文本的方法,将标签要显示的
2 Y w+ K. m& Y) { Caption字符串进行分拆,变成多行文本。在进行分拆时,注意汉字是双字节的,分拆时要将汉字
9 X6 Q- ~5 }. i 识别出来,整体分拆,否则会出现乱码!& N0 d" _6 w- |: f: A K9 X- `/ s
下面的代码实现了这个功能:. G% y. E- R7 H$ l) n
void __fastcall TForm1::Button1Click(TObject *Sender)
; }% L D7 |% R {% f9 {$ h- s( @; L6 q3 x* q
Label1->Caption=VString(Label1->Caption);, y# E2 L" G- {& f, \. u
}
% K% o P/ A, q //---------------------------------------------------------------------------: C1 `! p! v3 j4 |0 C& w! r
AnsiString __fastcall TForm1::VString(AnsiString ss)
5 U9 A3 @- V3 l% c: q {
0 k2 ]& s5 \) c& D5 L" d AnsiString ass;3 w& `1 L$ b- e
int ii,ll;4 F% I$ u% y1 @5 A- F
unsigned char cc;
0 Z% r: x+ {' b2 e2 _3 w5 \- B2 v ass="";
2 X) x4 f! X s ll=ss.Length();
5 X n* F( U1 w5 I* i$ p0 `0 x% i for(ii=0;ii<ll;ii++)
' C& v0 x. G7 f0 j; K4 [! s {
: m& j" ~2 S5 z1 f- N3 C/ ] cc=ss.c_str()[ii];
+ f, p( t% t1 e; C4 X" N% g if(cc>0xa0)
& ^% @3 r: U" g5 ?2 E {' t( J% c3 C `4 u4 s* Q& r
ass=ass+ss.SubString(ii+1,2)+"\n";
& J4 ~5 m% |: a6 p ii++;5 i. M3 l& r4 ~& F& Q
}
1 p/ {+ V9 i' g; r- H2 Y% A1 K else
0 { h3 z& R$ W2 g7 b+ L {
5 O7 F6 v1 D$ p ass=ass+ss.SubString(ii+1,1)+"\n";
8 y) ~& `2 N. Q& k$ n" Y6 W; X }
1 E4 {0 o g. Z4 y }
3 i2 U! t+ _ O: s return ass;2 i0 L: C: s8 m% Y* D% q
}: a0 {/ L |1 @. z1 S
这里要将Label的AutoSize设为False,然后将Label的高度和宽度进行调整,适应要显示的区域!
* B: e: T) O7 M; u4.鼠标指向Label控件时改变说明文字的颜色1 D( S" q8 ~) B. I: _% q; p2 D! q
通过Label的MouseMove事件,媒举所有控件,将名称和鼠标经过的控件相同的Label的字体颜色变成
) ^$ F* q7 O- H' M% i% g7 F. _ 红色,其他的字体颜色变成黑色!/ F0 ?3 L3 N3 i+ I/ V# y
下面的代码实现了这个功能:
! \3 Y7 n5 C Y) {& q/ i void __fastcall TForm1::Test(TObject *Sender)- F; |+ c. [+ ]
{
+ i2 h& b& \2 x h int i; T% |1 G2 l( |8 u9 p
TLabel *lb;6 U1 J! }3 Z' S/ [* v }7 i! i
AnsiString ss1,ss2;
' X( r, O5 T, v" y2 d. C ss1=Sender->ClassName();//获取参数的类型- y8 U! ~, [4 G. ]
if(ss1!="TLabel")return;//如果不是标签不处理% z! @2 U4 o& U) w3 u) k
lb=(TLabel*)Sender;
9 F( m7 a* B9 |2 N! y# Z ss1=lb->Name;* c, Q' | N4 w- \5 h2 i4 c" C( l
for(i=0;i<ControlCount;i++)
1 k" ~8 [; B# n; n' L& z {
/ ?& c2 \3 T; Y( e! b$ P- o- h lb=(TLabel *)Controls;
5 N) e: z& l8 E' o ss2=lb->Name;
' r& d( ^' [8 {: p. R1 e if(ss1==ss2)
& a, n2 R7 r1 Z+ {, S; ]4 ~7 c lb->Font->Color=clRed;
) L5 N9 u- b- b/ K" X# C else
7 ?: i- y1 X: E lb->Font->Color=clBlack;
7 K( P8 v$ P$ C, f: ~5 L n }
5 ~: \7 M2 D& S: K. C }
; a2 Y/ G$ [$ ~2 I; [4 i/ R' S //---------------------------------------------------------------------------. x% f/ h" S3 x' ]- T J5 ~. L" S1 F
void __fastcall TForm1: abel1MouseMove(TObject *Sender, TShiftState Shift,
9 ]5 f/ y5 e6 K% m% | int X, int Y)
: n6 I9 a" [1 t |( x/ c( [& F+ Y {
5 ?) ?) u' j4 E2 a Test(Sender);
; n, y8 x4 ^9 s$ E } |
zan
|