TStatusBar控件怎么给某个状态面板内的字体设置颜色啊〈〉 TStatusBar 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 最可恨的是没有Font属性(PS.我用的是Lazarus,但和Delphi基本上是一样的)! 看看你的TStatusBar事件面板中有啥与Draw、Paint相关的事件,自己画 我没有装Lazarus也不熟悉Lazarus,只能给你思路。至于什么汉子英文,对于系统来说都是画(draw)的 大神我的TStatusBar事件中没有相关的Draw事件,除此之外,还有其它的方法吗? 还有汉字我怎么画啊?不好意思,刚才没注意看,原来有OnDrawPanel事件,我来试一下,看行不行啊!! 大神这是它的OnDrawPanel事件,完全不知道怎么搞啊,还请明示!!procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);beginend; 假设你给StatusBar1添加了2个panel,并给每个panel的text设置了内容,然后给你需要自绘的panle的属性面板中把style属性设置为psOwnerDraw,然后就可以在StatusBar的OnDrawPanel事件中以你喜欢的方式绘制文字procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);begin with StatusBar.Canvas do begin case Panel.ID of 0: // 第1个panel begin // 设置字体颜色 Font.Color := clMaroon; end; 1: // 第2个panel begin // 设置字体颜色 Font.Color := clMaroon; end; //N:.... 第N个panel end; // 绘制文字 TextOut(Rect.Left + 1, Rect.Top + 2, Panel.Text); end;end; 谢谢大神,我也搞好了!之前我在纠结const Rect : TRect这个形参我要怎么给实参,还以为TStatusBar中有这个属性,结果还是自己定义了一个TRect类型的变量,再传过去的,不知道是不是这样做的? procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);begin with StatusBar.Canvas do begin case Panel.ID of 0: begin Brush.Color := clYellow; // 黄色画刷 FillRect(Rect); // 画背景 Font.Color := clMaroon; // 设置颜色 Font.Style := [fsBold]; // 粗体style // 绘制文字 TextOut(Rect.Left + 1, Rect.Top + 2, Panel.Text); end; 1: begin // 设置字体颜色 Brush.Color := clBlack; // 黑色画刷 FillRect(Rect); // 画背景 Font.Color := clWhite; // 设置颜色 Font.Style := [fsBold, fsItalic]; // 粗体+斜体style // 绘制文字, 这里可以修改原来的文字 TextOut(Rect.Left + 1, Rect.Top + 2, Panel.Text + '(我是动态追加的文字)'); end; // 自后一个panel不处理,保持原样 end; end;end; StatusBar1DrawPanel 事件的参数中已经给你提供了Rect 求蓝本S100D考勤机用的LanBen10.dll的详细使用文档 请问ehlib的dbgrideh中如何实现数据显示的自动换行呢 请教TreeView的定位! 模拟按键 postmessage如何模拟按下Shift+Down键呀? FR中如何把一MEMO的数字经过转换成大写后写到另一个MEMO中 delphi 执行SQL的Update出错 delphi中的null 请问inttostr能够到widestring吗? NMHTTP使用中的问题 Delphi如何判断Windows系统是否安装了屏保,并获取屏保名称 请教interface引用问题
至于什么汉子英文,对于系统来说都是画(draw)的
还有汉字我怎么画啊?
不好意思,刚才没注意看,原来有OnDrawPanel事件,我来试一下,看行不行啊!!
大神这是它的OnDrawPanel事件,完全不知道怎么搞啊,还请明示!!
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
Panel: TStatusPanel; const Rect: TRect);
beginend;
然后给你需要自绘的panle的属性面板中把style属性设置为psOwnerDraw,然后就可以在StatusBar的OnDrawPanel事件中以你喜欢的方式绘制文字procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
const Rect: TRect);
begin
with StatusBar.Canvas do
begin
case Panel.ID of
0: // 第1个panel
begin
// 设置字体颜色
Font.Color := clMaroon;
end;
1: // 第2个panel
begin
// 设置字体颜色
Font.Color := clMaroon;
end;
//N:.... 第N个panel
end;
// 绘制文字
TextOut(Rect.Left + 1, Rect.Top + 2, Panel.Text);
end;
end;
谢谢大神,我也搞好了!之前我在纠结const Rect : TRect这个形参我要怎么给实参,还以为TStatusBar中有这个属性,结果还是自己定义了一个TRect类型的变量,再传过去的,不知道是不是这样做的?
procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel;
const Rect: TRect);
begin
with StatusBar.Canvas do
begin
case Panel.ID of
0:
begin
Brush.Color := clYellow; // 黄色画刷
FillRect(Rect); // 画背景 Font.Color := clMaroon; // 设置颜色
Font.Style := [fsBold]; // 粗体style
// 绘制文字
TextOut(Rect.Left + 1, Rect.Top + 2, Panel.Text);
end;
1:
begin
// 设置字体颜色
Brush.Color := clBlack; // 黑色画刷
FillRect(Rect); // 画背景 Font.Color := clWhite; // 设置颜色
Font.Style := [fsBold, fsItalic]; // 粗体+斜体style
// 绘制文字, 这里可以修改原来的文字
TextOut(Rect.Left + 1, Rect.Top + 2, Panel.Text + '(我是动态追加的文字)');
end;
// 自后一个panel不处理,保持原样
end;
end;
end;