请大家出个主意(200)

  • 主题发起人 主题发起人 极品铁观音
  • 开始时间 开始时间

极品铁观音

Unregistered / Unconfirmed
GUEST, unregistred user!
请高手回答问题麻烦详细点,不要只说一句不痛不痒的话,真正能解决问题可加分,问题是:我有个窗体要用到几十个项目录入数据,有部分数据是不同的,所以我用了panel作为不同数据部分控件的容器,但这个只是外观上的,代码还得在窗体里写,且几十个项目的保存按键的事件写起来较麻烦;也用了frame作为容器,这个却涉及到单元引用,还引用到自身,因此也就不能编译通过。说明:窗体不同部分的控件有edit、日期控件、combobox等总共有二十个左右。按键有三个(包括保存,关闭窗体,取消录入)。请问大家有什么好的建议,还望不吝赐教。
 
说实施,看了几遍,没看明白你要做什么。
 
咋了,这是?
 
不好意思没表达明白。想做个项目,窗体左边有个treeview,当子节点时选择对应的数据库表,表与表之间是独立的(有部分字段相同),所以想把录入数据的界面做成相同部分与不同部分,不同的部分字段如果放在panel里,几十个数据库表的代码写起来就很长,想用frame却出现保存按钮里的代码会引用到窗体自身编译不通过。请大家出个主意有什么好办法,或者是没有其他办法可实现了,那请高手说说panel和frame该怎么做才好。
 
用继承????
 
你是说循环引用 的问题吧一个单元在单元名下面引用,另一个单元在实现下面引用就行了
 
不是循环引用,如何用很多个独立模块通过treeview控制显示在同一窗体,我查过资料是frame为最理想选择,但在同一窗体中有部分控件是各个模块共用的,我不知如何处理才不会出现引用冲突(即在frame中存盘按钮中写字段1:=form1.edit1.text,这句在编译时系统会提示引用form1单元,但frame也是在from1的所以会冲突,编译不通过)。如把frmame换成panel作为容器就会出现edit1控件在panel2只能命名为edit2,这样的代码就会很长,也较难控制。换句话说,是如何在同一界面控制不同数据库表的录入。
 
属性,事件同一Panel创建多个Frame的代码如下:procedure TConfigForm.ShowPnlSubItem(nIndex: Integer);var Frame: TFrame; i: Integer;begin lbl1.Caption := TEXT_CONFIG_TOP_CAPTION[nIndex]; for i := 0 to pnlFrameParent.ControlCount-1 do begin if pnlFrameParent.Controls is TFrame then begin TFrame(pnlFrameParent.Controls).Free; Break; end; end; case nIndex of 0: Frame := CreateFrame(TNormalFrame); 1: begin Frame := CreateFrame(TSortFrame); TSortFrame(Frame).FileControl := FFileControl; TSortFrame(Frame).ReflashVCL; end; 2: begin Frame := CreateFrame(TDownLoadDefaultFrame); TDownLoadDefaultFrame(Frame).FileControl := FFileControl; TDownLoadDefaultFrame(Frame).ReflashVCL; end; 3: Frame := CreateFrame(TConnectFrame); 4: Frame := CreateFrame(TListenFrame); 5: Frame := CreateFrame(TAdvancedFrame); else exit; end; Frame.Parent := pnlFrameParent;end;function TConfigForm.CreateFrame(FrameClass: TFrameClass): TFrame;begin FrameClass.NewInstance; Result := FrameClass.Create(nil);end;使用属性的代码:TConfigForm中 private { Private declarations } FFileControl: TFileControl; public property FileControl: TFileControl read FFileControl write FFileControl;调用:var ConfigForm: TConfigForm;begin ConfigForm := TConfigForm.Create(Self); ConfigForm.FileControl := FFileControl; ConfigForm.ShowModal; ConfigForm.Free;
 
后退
顶部