请问一下在delphi中怎么把一个程序分模块来做?
我前久用delphi做了一个播放器,播放器共分为:主窗口,列表窗口,添加窗口,关于窗口。可我想把后3个窗口封装在dll文件中,可怎么做也不行。听别人说在dll的窗口都是用代码绘制出来的。我在网上找了好久也没找的怎么分模块设计程序的文章。请个位高手给我这个才上大一的学生解答一下这个难题吧?
有没有那为高手愿意收徒弟啊?我好想找个师傅啊,那为高手能收我为徒啊?如果有那为高手愿收小弟为徒就联系 E-mail:[email protected] 或 QQ:116431476
我前久用delphi做了一个播放器,播放器共分为:主窗口,列表窗口,添加窗口,关于窗口。可我想把后3个窗口封装在dll文件中,可怎么做也不行。听别人说在dll的窗口都是用代码绘制出来的。我在网上找了好久也没找的怎么分模块设计程序的文章。请个位高手给我这个才上大一的学生解答一下这个难题吧?
有没有那为高手愿意收徒弟啊?我好想找个师傅啊,那为高手能收我为徒啊?如果有那为高手愿收小弟为徒就联系 E-mail:[email protected] 或 QQ:116431476
解决方案 »
- 中国振华电子集团(珠海)智能科技有限责任公司超垃圾公司千万不要去啊。小心
- could not convert variant of type(null)into type(string)问题
- WebBrowser问题,为什么我用Delphi开发的浏览器,网页里文字不可以Copy?急!!!!!
- 在线求助
- 关于Access的问题,我问过摩托,可我还是没有解决,请高手们帮忙,我天天在线,得到答案就给分
- 重分求助(关于存储过程的小问题)!
- ::500分::
- 请问下面这段英文里的exception object什么意思? 哪位大侠可以翻译一下吗?
- 如何处理网络连接失败的响应?
- 用query查询的小问题。
- 找人做一小项目..
- ******请问高手FTP SOCKET出错******
form1 := tform1.create(nil)
try
form1.showmodal;
finally
form1.free;
end;
2.Project ViewSource ,修改成下面代码:library DLLFormTest;uses
Unit1 in 'Unit1.pas' {Form1};{$R *.res}procedure test;
var aForm:TForm1;
begin
aForm:=TForm1.Create(nil);
aForm.ShowModal;
aForm.Free;
end;
exports
test;
beginend.3.保存DLLFormTest,编译成DLL4.在其它程序中调用:procedure test;external 'DLLFormTest.dll';
procedure TForm1.Button1Click(Sender: TObject);
begin
test;
end;
unit frmSbman;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Grids, DBGrids, DBCtrls,
ExtDlgs,activex, Mask;type
TfrmSbManager = class(TForm)
Panel1: TPanel;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
DBGrid1: TDBGrid;
grbxBaseInfo: TGroupBox;
Label2: TLabel;
edSbname: TEdit;
dtpkGmrq: TDateTimePicker;
edDj: TEdit;
EdSl: TEdit;
edDb: TEdit;
edTel: TEdit;
edCj: TEdit;
Label1: TLabel;
edSbid: TEdit;
OpenPictureDialog1: TOpenPictureDialog;
Memo1: TMemo;
Image1: TImage;
Splitter1: TSplitter;
StatusBar1: TStatusBar;
GroupBox3: TGroupBox;
btnInsert: TSpeedButton;
btnDel: TSpeedButton;
GroupBox4: TGroupBox;
btnPost: TSpeedButton;
StaticText1: TStaticText;
procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
procedure FormCreate(Sender: TObject);
procedure btnInsertClick(Sender: TObject);
procedure btnPostClick(Sender: TObject);
procedure Image1DblClick(Sender: TObject);
procedure edDjKeyPress(Sender: TObject; var Key: Char);
procedure btnDelClick(Sender: TObject);
procedure EdSlKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
CzDm : integer;//操作代码
PicterFilename : string;
function isClearText(AControl:TWinControl) : boolean;
procedure ClearEditText(AControl:TWinControl);
function InsertSbTb : Boolean;
function HaveSbId(id : String) : boolean;
function DeleSb(id : string) : boolean;
end;implementationuses dtmdl, DB, ADODB;{$R *.dfm}var
frmSbManager: TfrmSbManager;procedure ShowSbManager;stdcall;//导出函数
begin
CoInitialize(nil);
dtmd := Tdtmd.Create(nil);
frmSbManager := TfrmSbManager.Create(nil);
try
try
frmSbManager.ShowModal;
except
ShowMessage('w');
end;
finally
dtmd.ADOConnection1.Connected := false;
frmSbManager.Free;
dtmd.Free;
CoUninitialize;
end;
//
end;exports
ShowSbManager; //导出工程文件这么写
library DSbManager;{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }uses
sharemem,
SysUtils,
Classes,
frmSbman in 'frmSbman.pas' {frmSbManager},
dtmdl in '..\dtmdl.pas' {dtmd: TDataModule};{$R *.res}beginend.调用DLL的主程序这么写interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, Menus, StdCtrls;type
TfrmMain = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
Image1: TImage;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
Label1: TLabel;
procedure N4Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public end;var
frmMain: TfrmMain;implementationuses about;
procedure ShowSbManager;stdcall;external 'dll\DSbManager.dll';//声明你的DLL在那里
{$R *.dfm}