Label的使用技巧(由ilikenba收集、整理、调试通过)
1.Label控件显示多行文本可以直接给Label的Caption属性赋给带有换行符或回车符的字符串!下面三个例子产生同样的效果:
Label1->Caption="第一行\n第二行\n第三行";
Label1->Caption="第一行\r第二行\r第三行";
Label1->Caption="第一行\r\n第二行\r\n第三行";
但注意这样赋多行的值只在运行的时候有效,在对Label的静态设计中,直接在Caption属性中输入
"\r","\n"是没有用的,设计系统并没有对这些特殊字符作处理!
2.Label控件显示超长文本时自动换行
只要对Label的两个属性进行修改。
第一个是AutoSize,将它设为False,然后将Label的高度和宽度进行调整,适应要显示的区域!
第二个是WordWrap,将它设为True。
注意对于英文的显示是以单词为单位的,即不能把一个单词分两行显示,即使已经到了边界了,
这时的显示应以空格区分多个单词!
3.使Label控件上的文字纵向显示
最直接的方法是改变字体的旋转度和方向!
下面这些代码实现了旋转的功能:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TFont *font;
LOGFONT logfont;
font=new TFont;
font->Assign(Label1->Font);
GetObject(font->Handle,sizeof(LOGFONT),&logfont);
logfont.lfEscapement=-900;
logfont.lfOrientation=-900;
font->Handle=CreateFontIndirect(&logfont);
Label1->Font=font;
delete font;
Label1->Caption="矩阵论坛<a href="http://www.matrixstudio.org" target="_blank" >www.matrixstudio.org</A>";
}
这里要将Label的AutoSize设为False,然后将Label的高度和宽度进行调整,适应要显示的区域!
将Alignment设为taCenter。
还有一种纵向显示的方式,字体不用旋转,利用Label可以显示多行文本的方法,将标签要显示的
Caption字符串进行分拆,变成多行文本。在进行分拆时,注意汉字是双字节的,分拆时要将汉字
识别出来,整体分拆,否则会出现乱码!
下面的代码实现了这个功能:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Label1->Caption=VString(Label1->Caption);
}
//---------------------------------------------------------------------------
AnsiString __fastcall TForm1::VString(AnsiString ss)
{
AnsiString ass;
int ii,ll;
unsigned char cc;
ass="";
ll=ss.Length();
for(ii=0;ii<ll;ii++)
{
cc=ss.c_str();
if(cc>0xa0)
{
ass=ass+ss.SubString(ii+1,2)+"\n";
ii++;
}
else
{
ass=ass+ss.SubString(ii+1,1)+"\n";
}
}
return ass;
}
这里要将Label的AutoSize设为False,然后将Label的高度和宽度进行调整,适应要显示的区域!
4.鼠标指向Label控件时改变说明文字的颜色
通过Label的MouseMove事件,媒举所有控件,将名称和鼠标经过的控件相同的Label的字体颜色变成
红色,其他的字体颜色变成黑色!
下面的代码实现了这个功能:
void __fastcall TForm1::Test(TObject *Sender)
{
int i;
TLabel *lb;
AnsiString ss1,ss2;
ss1=Sender->ClassName();//获取参数的类型
if(ss1!="TLabel")return;//如果不是标签不处理
lb=(TLabel*)Sender;
ss1=lb->Name;
for(i=0;i<ControlCount;i++)
{
lb=(TLabel *)Controls;
ss2=lb->Name;
if(ss1==ss2)
lb->Font->Color=clRed;
else
lb->Font->Color=clBlack;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Label1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
Test(Sender);
}
页:
[1]