如何使 DBNavigator1 控件具有透明背景的功能(Transparent)?(50分)

  • 主题发起人 主题发起人 王少东
  • 开始时间 开始时间

王少东

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在一具有背景图片的录入界面上放置了一个 DBNavigator 控件,但是 DBNavigator 的灰色
底色却无法去除(因该控件无 Transparent 属性),造成界面的不美观,不知那位朋友有解决的
办法?
 

TMyNavigator=class(TDBNavigator)
end;
var
Form1: TForm1;

implementation

{$R *.dfm}
uses typinfo;
var
MyNavigator:TMyNavigator;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
MyNavigator:=TMyNavigator.Create(self);
MyNavigator.Parent :=form1;
MyNavigator.Color :=form1.Color;
MyNavigator.Buttons[nbFirst].Flat :=true;
MyNavigator.Buttons[nbFirst].Transparent :=true;
end;
 
to savenight:
首先,谢谢你回了帖, 但是,你给的方法无法满足我要达到的目的,可能是我没把问题
说明白, 我现在举个例子来说明一下:在窗体 Form 上放一 TImage 控件(属性 Align = alClient),
指定一幅图片到 TImage 的 Picture 属性,再在窗体上放一 TDBNavigator 控件,如何使得
TDBNavigator 控件的灰色部分被透明掉而能显示出下面的 TImage 的图片来。
该问题被延伸一下,就是如何使控件(如:TPanel、TGroupBox)具有象 TImage 一放入窗体
Form 上时所具有的特性:边框范围内是透明的。
 
TDBNavigator 就是有一个panel和几个speedbutton组成的,只要让panel和speedbutton都透明就行了,
MyNavigator.Buttons[nbFirst].Flat :=true;
MyNavigator.Buttons[nbFirst].Transparent :=true;
上面两句可以让speedbutton透明,接下来应该让panel透明,可以搜索一下 panel transparent,会有
很多这方面的带源码控件。照着该一下TDBNavigator的源码就行了。
 
to savenight:
不知能否提供两个带源码控件来研究研究,或提供几个可下载带源码控件的网站地址?
( EMail: xsgswsd@zpeb.sinopec.com.cn)
 
speedbutton透明后,再一起排在原来位置,把panel设为visible:=false;
TMyNavigator(dn).Buttons[nbFirst].Parent:=self;
TMyNavigator(dn).Buttons[nbFirst].top:=dn.Top;
TMyNavigator(dn).Buttons[nbFirst].left:=TMyNavigator(dn).Buttons[nbFirst].left+dn.left;
TMyNavigator(dn).Buttons[nbnext].Parent:=self;
TMyNavigator(dn).Buttons[nbnext].top:=dn.Top;
TMyNavigator(dn).Buttons[nbnext].left:=TMyNavigator(dn).Buttons[nbnext].left+dn.left;
dn.Visible:=false;
 
测试通过的代码:
procedure TForm1.FormCreate(Sender: TObject);
var
i:integer;
sb:TSpeedButton;
x,y:integer;
begin
nav.Flat:=true;
for i:= nav.ControlCount-1 downto 0 do
if nav.Controls is TSpeedButton then
begin
sb:=TSpeedButton(nav.Controls);
x:=sb.Left ;
y:=sb.Top;
sb.Parent:=self;
sb.Left:=nav.Left+x;
sb.Top:=nav.Top+y;
sb.Transparent:=true;
end;
nav.Visible:=false;
end;
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
774
import
I
I
回复
0
查看
553
import
I
后退
顶部