菜鸟想实现图片上的这个功能?用什么办法比较好呢???(200)

  • 主题发起人 主题发起人 wanglong5
  • 开始时间 开始时间
W

wanglong5

Unregistered / Unconfirmed
GUEST, unregistred user!
菜鸟想实现图片上的这个功能?用什么办法比较好呢??http://www.361soft.com.cn/1.jpg高手们啊,请您看清楚,这些按钮都是要从数据库表里读取菜品名称自动生成的??不能说有1000个菜,我要放1000个按钮吧?? 也就是数据库里的每个菜都生成一个按钮,按钮上的字(比如单价)也是从表里读出来的。 还需要有点击事件。
 
圆角按钮?触摸屏?有些控件可以的
 
cnpack可以做到:下载地址:http://www.cnpack.org/showdetail.php?id=672&lang=zh-cn里面有demo。
 
进来接分了。
 
很多皮肤控件都可以实现,如vclskin。
 
高手们啊,请您看清楚,这些按钮都是要从数据库表里读取菜品名称自动生成的??不能说有1000个菜,我要放1000个按钮吧??
 
也就是数据库里的每个菜都生成一个按钮,按钮上的字(比如单价)也是从表里读出来的。
 
var buttonbuf:array of tskinbutton;beginsetlength(buttonbuf,...);buttonbuf[length(buttonbuf)-1]:=tskinbutton.create;buttonbuf[length(buttonbuf)-1].Parent:=buttonbuf[length(buttonbuf)-1].name:=//数据库内容buttonbuf[length(buttonbuf)-1].onclick:=myonclick;...left....top.....//只想到这个方法,等待更好的方法end;
 
呵呵,倒真是菜鸟,不过很谦虚
 
你的问题实际上就是动态生成控件及控件单击事件的赋值问题,这貌似没什么难的吧?给你一段示例代码参考一下:...uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;type TfrmTest = class(TForm) ... private procedure eCodeChange(Sender: TObject); // Edit 的 OnChange 事件定义 function InputBox(LabelCaption: string; Flag: Integer): string; public { Public declarations } end;var frmTest: TfrmTest; eCode: TEdit;implementation {$R *.dfm}procedure TfrmTest.eCodeChange(Sender: TObject);begin if Trim(eCode.Text) <> '' then mmoName.Text := Trim(eCode.Text) else mmoName.Clear;end;function TfrmTest.InputBox;var Form: TForm; btnOK: TButton;begin Form := TForm.Create(frmTest); with Form do begin Canvas.Font := Font; BorderStyle := bsDialog; FormStyle := fsStayOnTop; with Font do begin Height := -14; Name := '宋体'; Size := 9; Pitch := fpDefault; Style := []; end; ClientWidth := 180; Position := poDesktopCenter; Caption := '请选择'; eCode := TEdit.Create(Form); with eCode do begin Parent := Form; Left := 8; Top := 8; Width := 60; OnChange := eCodeChange; // OnChange 事件赋值 end; btnOK := TButton.Create(Form); with btnOK do begin Parent := Form; Caption := '确定(&O)'; Default := True; ModalResult := mrOk; ...; // 指定按钮的 Left, Top等信息 Form.ClientHeight := Top + Height + 7; end; // 相关控件的释放 FreeAndNil(...); Free; // 窗体释放 end;end;end.你要解决的问题还有:1、根据从数据库表里读取菜品名称的记录数(比如1000条)循环生成按钮并赋Caption为单价,其实最重要的是生成它们的Name,建议你就用btn1、btn2...的方式(后面的数字就是循环变量);2、在循环中控制按钮的位置(主要是Left、Top属性);3、按钮OnClick事件的赋值,这个你要设计一下,弄不好要写N多代码就不好了,给你个思路:如果单价没有小数,就把单价赋给按钮的Tag属性,那么在单击事件中就可以根据Tag进行处理,这样就实现了N多按钮的单击事件可以赋给一个过程,大大简化了代码工作量。其它的你自己想想吧,祝你好运。
 
多人接受答案了。
 
后退
顶部