超级简单问题!!!送分啊!(50分)

  • 主题发起人 主题发起人 kkitty
  • 开始时间 开始时间
K

kkitty

Unregistered / Unconfirmed
GUEST, unregistred user!
问题一:
我想只改变groupbox的线框颜色,但是color属性却把里面也变了色,如何设置呢?
问题二:
动态创建的Spanedit,想把初始值置为空,但是当我再点击后,就出错,
因为他只能识数字,但是我只想默认空,点选还可以变,如何实现?
谢谢!
 
你可以在GROUNPBOX外面套一个panel控件,然后设置panel的颜色和样式就可以了阿!
不懂你问题二什么意思!没理解错误的话!spanedit至少好像需要一个0。
 
对于问题二,你可以不用spinEdit,用Updown和Edit,然后在updown的Onclick事件
里写代码就行了。比如: Edit1.text := IntToStr(Updown.value);(还是position,我忘了)
 
要解决这两个问题,必须修改这两个控件的类:
可以从这两个类继承出新的类,重载他们Paint,你想做成什么样就由你了。
 
1.没办法,要么用其他代替如:panel
2:=nil
 
可以继承一个,然后Override Paint事件:
看它的原码:
procedure TCustomGroupBox.Paint;
var
H: Integer;
R: TRect;
Flags: Longint;
begin
with Canvas do
begin
Font := Self.Font;
H := TextHeight('0');
R := Rect(0, H div 2 - 1, Width, Height);
if Ctl3D then
begin
Inc(R.Left);
Inc(R.Top);
Brush.Color := clBtnHighlight;<--
FrameRect(R);
OffsetRect(R, -1, -1);
Brush.Color := clBtnShadow;<--
end else
Brush.Color := clWindowFrame;<--
FrameRect(R);
if Text <> '' then
begin
if not UseRightToLeftAlignment then
R := Rect(8, 0, 0, H)
else

R := Rect(R.Right - Canvas.TextWidth(Text) - 8, 0, 0, H);
Flags := DrawTextBiDiModeFlags(DT_SINGLELINE);
DrawText(Handle, PChar(Text), Length(Text), R, Flags or DT_CALCRECT);
Brush.Color := Color;
DrawText(Handle, PChar(Text), Length(Text), R, Flags);
end;
end;
end;
使用SpinButton(samples页)加Edit
 

Similar threads

D
回复
0
查看
867
DelphiTeacher的专栏
D
后退
顶部