菜鸟想实现图片上的这个功能?用什么办法比较好呢??
http://www.361soft.com.cn/1.jpg
http://www.361soft.com.cn/1.jpg
解决方案 »
- BandedTableView能不能一行放置多个记录
- Delphi中保存自动生成的Excel
- 请教高手,如何使用Borland的包BPL技术?急!
- Panasonic KX-P1121如何直接打印中文??
- ★★请帮忙看一下这段程序为何不能运行?(关于用递归的方法画N次希尔伯特曲线的程序)(Hilbert)
- 怎么判断,键盘按下了↑↓←→这四个按键!
- 在网页中生成的报表,有2页的内容,如何打印时加入页眉页脚呢?(每页下都有日期)
- 怎样改变TpopupMenu或RxTpopupMenu的背景色?
- 如何安装控件?
- ** 不一样,就是不一样 —— 这是为什么?
- 将参数改为数组
- delphi中如何创建无向无权图,并求最短路径算法?
Standard -> TToolBar
Win32 -> TPageControl
Additional -> TButtonGroup
比如skinbuissform
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure MyPanelClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
MyPanel : Array of TSpeedButton;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
Var
i,j,k: Integer;
begin
SetLength(MyPanel,12);
for i := 0 to 11 do //可从数据库中读取数据总数替换11,即循环数据集
begin
MyPanel[i] := TSpeedButton.Create(Self);
MyPanel[i].Width := 130;
MyPanel[i].Height:= 80;
MyPanel[i].Parent:=self;
MyPanel[i].Tag:= i ; //用tag标识
MyPanel[i].OnClick :=MyPanelClick; //赋予事件
MyPanel[i].Caption:=IntToStr(i)+'...'+#13+'剩余'+'...'+#13+'单价:...'; //可从数据库中读取数据字段
j:=Trunc(i/4); //取整 行
K:=i mod 4 ; //取余 列
if i<4 then
begin
MyPanel[i].Top:=30;
MyPanel[i].Left:=30+i*130;
end else
begin
MyPanel[i].Top:=30+80*j;
MyPanel[i].Left:=30+k*130;
end;
end;
end;procedure TForm1.MyPanelClick(Sender: TObject); //自己定义的事件
Var
i : Integer;
begin
i := TPanel(Sender).Tag;
MyPanel[i].Caption:=IntToStr(i);
ShowMessage(IntToStr(i));
end;
通过addbitbutton方法,使用图片作为北京,然后用drawtext,来计算位置填充文字
处理OnMouseDown事件,如果是在某个按钮图片上,就调用相关程序。
使用TButton也不是不可以,不过刷新效率要低很多。你也可以考虑使用TDBCtrlGrid来实现,最简单了。
還是TDrawGrid實現比較好。