PDA

View Full Version : Label با تغییر رنگ حروف یا حالت آنها



Saeid59_m
سه شنبه 12 تیر 1386, 12:29 عصر
چطوری میشه یه lable داشت که مثلا حرف 4 و 8 که توی اون قرارمی گیره به رنگ خاصی باشه یا Bold باشه .

می دونم با RichEdit‌می شه و لی می خواهم با Lable‌معمولی این کار رو بکنم .

ممنون

اَرژنگ
سه شنبه 12 تیر 1386, 13:02 عصر
چطوری میشه یه lable داشت که مثلا حرف 4 و 8 که توی اون قرارمی گیره به رنگ خاصی باشه یا Bold باشه .

می دونم با RichEdit‌می شه و لی می خواهم با Lable‌معمولی این کار رو بکنم .

ممنون
با لیبل معمولی نمیشه این کار را کرد.

Saeid59_m
چهارشنبه 13 تیر 1386, 08:09 صبح
پس چطوری باید این کار رو انجام داد ببینید می خوام یه چیزی درست کنم که مثلا اگه عبارت

ALi~Reza~Sadeghi

رو بهش دادم عبارت Reza‌ رو Bold‌ کنه
اگه کامپوننتی هست معرفی کنید
ممنون

Arman_1367
چهارشنبه 13 تیر 1386, 08:11 صبح
از چه قاعده ای پیروی می کنه.یعنی اینکه مثلاً اگر عبارتی بهش دادیم فقط بین دو علامت ~ را Bold کنه.

Saeid59_m
چهارشنبه 13 تیر 1386, 09:37 صبح
از چه قاعده ای پیروی می کنه.یعنی اینکه مثلاً اگر عبارتی بهش دادیم فقط بین دو علامت ~ را Bold کنه.
درسته دقیقاً منظورم همینه

Arman_1367
چهارشنبه 13 تیر 1386, 11:51 صبح
این یک کلاس خیلی ساده هست اما می توانی از روش اون استفاده کنی.

TArmanLabel = Class(TGraphicControl)
Private
FText:String;
Procedure SetText(Value:String);
Protected
Procedure Paint;override;
Published
Property Text:String Read FText Write SetText;
End;

.
.
.
.
.
.
procedure TArmanLabel.Paint;
Var S,S2:String;
r:Trect;
begin
S:=Text;
Canvas.Brush.Style:=BsClear;
S2:=Copy(S,1,pos('~',S));
Delete(S,1,Length(S2));
Canvas.Font.Assign(Font);
r:=Rect(0,0,Canvas.TextWidth(s2),Height);
DrawText(Canvas.Handle,PChar(S2),-1,R,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
S2:=Copy(S,1,pos('~',S)-1);
Delete(S,1,Length(S2));
Canvas.Font.Style:=Canvas.Font.Style+[fsBold];
r:=Rect(r.Right,0,r.Right+Canvas.TextWidth(s2),Hei ght);
DrawText(Canvas.Handle,PChar(S2),-1,R,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
Canvas.Font.Style:=Canvas.Font.Style-[fsBold];
r:=Rect(r.Right,0,r.Right+Canvas.TextWidth(s),Heig ht);
DrawText(Canvas.Handle,PChar(S),-1,R,DT_CENTER or DT_SINGLELINE or DT_VCENTER);
end;

procedure TArmanLabel.SetText(Value: String);
begin
FText:=Value;
Repaint;
end;