问题: 倾家荡产 192分 求一个简单完整的DLL源程序! ( 积分: 100 )
分类: 系统相关
来自: Dinky, 时间: 2002-12-13 17:59:00, ID: 1508929
Requires:
1、主窗体:有一主窗体调用DLL里的子窗体,在主窗体上,可以得到子窗体的个数(MDIChildCount)。
2、DLL子窗体:显示数据库里的数据(随便什么数据)
3、调用不出错。
谢谢!如果你愿意帮我请将程序发到我的邮箱
<a href='mailto
inkySoft@163.com'>DinkySoft@163.com</a>
收到后,满意后给分,不满意分要少一点!还有要留下你的一句话在这里,到时不能给分的
还有92分没有加上去,不知道怎么加
来自: jsxjd, 时间: 2002-12-13 18:28:00, ID: 1509011
up
来自: 王公子, 时间: 2002-12-13 18:29:00, ID: 1509013
我这有一个,或许对你有用,拿箱子过来
来自: Dinky, 时间: 2002-12-13 18:30:00, ID: 1509016
to jsxjd,谢谢你来Up
我收到,发一个给你
来自: Dinky, 时间: 2002-12-13 18:30:00, ID: 1509020
to王公子,
你发给我吧!dinkysoft163.com
来自: youou, 时间: 2002-12-13 18:46:00, ID: 1509054
我有一个。。找不要。。。
要不什么写一个。。
来自: Dinky, 时间: 2002-12-13 19:10:00, ID: 1509083
to youou也可以啊!
来自: ty_unix, 时间: 2002-12-16 9:17:00, ID: 1512868
我也要一个。谢谢
ty_unix@163.com
来自: xuxincheng, 时间: 2002-12-20 9:14:00, ID: 1523509
可以给我一个吗?
xuxincheng@sina.com
来自: LiChaoHui, 时间: 2002-12-20 9:17:00, ID: 1523522
up
来自: brianyu, 时间: 2002-12-20 13:11:00, ID: 1524440
贴出来吧,大家共享一下:)
来自: LiChaoHui, 时间: 2002-12-20 14:14:00, ID: 1524689
我已经找到了一个方法,是用Delphi中的包技术
同时使主程序变得很小,
还可以动态加载包,运行也不出错
如果需要,给我50分,将实现方法发送
来自: LiChaoHui, 时间: 2002-12-20 14:23:00, ID: 1524719
实现的思路是将基础的包,重新封装成一个独立的大包,
然后你的程序,和另一个动态链接库(最好做成包),
都使用这个大包,你的程序和动态库会很小,
但是这个大包,就很大了,
不过对于做大型程序,这样反而更能节省内存
和减小EXE的体积
来自: 你若有情, 时间: 2002-12-20 15:04:00, ID: 1524864
to LiChaoHui
发过来,一定有分的
来自: LiChaoHui, 时间: 2002-12-20 15:50:00, ID: 1525034
先开帖子吧,要留下信箱,我好发送全部源代码(共10k)
来自: brianyu, 时间: 2002-12-20 16:51:00, ID: 1525309
LiChaoHui, 来这里拿分
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1525301
我的邮箱 sunny_sh@163.net
来自: jsxjd, 时间: 2002-12-20 17:11:00, ID: 1525384
///////////////// DLL /////////////////////
library FormDll;
uses
SysUtils,
windows,
Classes,
forms,
MyForm in 'MyForm.pas' {ChildForm};
{$R *.RES}
var
DLLApp: TApplication;
OldSc:TScreen;
procedure DLLUnloadProc(Reason : Integer);
begin
if Reason = DLL_PROCESS_DETACH then begin
Application := DLLApp;
Screen:=OldSc;
end;
end;
function ShowForm(App:TApplication;sc:TScreen): integer;
var
i:integer;
begin
application:=App;
Screen:=sc;
for i:=0 to N do
if ch
=nil then
begin
ch:=TChildForm.Create(nil);
// ch.parent:=application.mainform;
ch.tag:=i;
break;
end;
Result:=0;
end;
exports ShowForm;
var
i:integer;
begin
for i:=0 to N do ch:=nil;
DLLApp := Application;
OldSc:=Screen;
DLLProc := @DLLUnloadProc;
end.
/////////// mdiform unit //////////////////
unit MyForm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TChildForm = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const N=100;
var
ch:array[0..N] of TChildForm;
implementation
{$R *.DFM}
procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
ch[tag]:=nil;
end;
procedure TChildForm.FormCreate(Sender: TObject);
begin
inherited;
FormStyle := fsMDIChild;
end;
end.
////////////// 调用程序 //////////////////////////
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
// 创建动态按钮,第一排一个,第十排十个
var
b:array of array of TButton;
procedure TForm1.FormCreate(Sender: TObject);
var
i,j:integer;
begin
SetLength(b,10);
for i:=low(b) to high(b) do
SetLength(b,i+1);
for i:=low(b) to high(b) do
for j:=low(b) to high(b) do
begin
b[i,j]:=TButton.Create(self);
with b[i,j] do
begin
parent:=self;
left:=j*30;
top:=i*30;
width:=20;
height:=20;
visible:=true;
end;
end;
end;
function ShowForm(App:TApplication;sc:TScreen): integer;external 'formdll.dll'
procedure TForm1.Button1Click(Sender: TObject);
begin
showform(application,screen);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage(inttostr(MDIChildCount));
end;
end.
来自: LiChaoHui, 时间: 2002-12-20 17:12:00, ID: 1525390
to: brianyu
程序已发送,附上一些其它的技巧:
还有一些其它的问题,就是控制Delphi程序的运行时信息
譬如,我知道某个类的类名和属性的名称,
我也可以创建这个类并修改它的属性,
我的演示程序里有根据类名称创建类实例的方法,
下面写出访问知道名字的属性的方法
需引用 TypInfo 单元
假设 MyObj 是通过上面的方法创建的对象
他的两个字符串类型的属性分别为 MyProperty1 和 MyProperty2
下面读取MyProperty1 并设置 MyProperty2
SetStrProp(MyObj, 'MyProperty1', 'test1');
vStr := GetStrProp(MyObj, 'MyProperty2');
要修改的属性只能是Published的属性
只有Published的属性才有类似的运行时信息
对于不同的数据类型
TypInfo单元提供了不同的方法
来自: catfox, 时间: 2002-12-20 17:15:00, ID: 1525403
to LiChaoHui:
你的源代码是什么程序, 若合适我也另开贴
来自: LiChaoHui, 时间: 2002-12-20 17:19:00, ID: 1525417
to: 楼主,
我的方法完全不同于楼上的方法,
使用包来实现,透明性好,代码很少,没有副作用
(据我以前的研究,楼上的方法有很大的缺陷,虽然能够显示窗口,
退出的时候,也可以不出错,但是如果在MDI子窗口上加一个弹出菜单,
你再看看,就惨了)
如果需要,说一声,我好发给你
我只要50分,如果硬要多给,我只好领受
来自: 新的自我, 时间: 2002-12-20 17:20:00, ID: 1525425
Study
来自: LiChaoHui, 时间: 2002-12-20 17:22:00, ID: 1525432
我的程序是关于动态加载包(*.bpl)
并调用其中的对象,
自己写的包可以含有MDI子窗口,
代码很少,运行效果也很好
粒子很简单,如果不懂,还可以再讨论
注意,其它收到我的程序的朋友先不要在其他地方公开
让我的辛苦多换一些分数,谢谢合作
来自: brianyu, 时间: 2002-12-20 17:30:00, ID: 1525467
to:LiChaoHui, 没有看到你只要50分,嘿嘿:)
不过还是谢谢了:)
来自: LiChaoHui, 时间: 2002-12-20 17:31:00, ID: 1525475
呵呵
来自: Dinky, 时间: 2002-12-20 17:35:00, ID: 1525495
to LiChaoHui
DinkySoft@163.com
来自: Dinky, 时间: 2002-12-20 17:39:00, ID: 1525511
to LiChaoHui其实这个问题我已经解决了,用DLL用很多不好的地方,我想用包来实现,分一定给的
什么时候发给我啊
DinkySoft@163.com
来自: LiChaoHui, 时间: 2002-12-20 17:40:00, ID: 1525517
绝对不后悔...
开帖给分先(50),呵呵...
来自: Dinky, 时间: 2002-12-20 17:42:00, ID: 1525523
给你100分,交个朋友吧!QQ:185511468
来自: catfox, 时间: 2002-12-20 17:52:00, ID: 1525533
来分了
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1525529
catfox@joinmars.com
交个朋友吧 QQ:786552
来自: Dinky, 时间: 2002-12-20 17:47:00, ID: 1525544
to LiChaoHui:
分我已经发出去了!100分不是很少吧!呵呵,什么时候发给我啊!例子
来自: LiChaoHui, 时间: 2002-12-20 21:36:00, ID: 1525963
to Dinky:
源代码已经发送,请查收!
来自: LiChaoHui, 时间: 2002-12-20 21:42:00, ID: 1525979
to catfox,
已发送,谢谢
来自: doll_paul, 时间: 2002-12-22 0:55:00, ID: 1527781
to LiChaoHui,我用DLL现实以上要求,总或多或少出现问题,请老兄也发个源码吧~
EM:doll-paul@263.net,万分感谢,给个吉利数:80分~~
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1527780
来自: LiChaoHui, 时间: 2002-12-22 14:20:00, ID: 1528263
你是怎么找到这个帖子的,我都找不到了?
来自: doll_paul, 时间: 2002-12-22 14:31:00, ID: 1528276
嗨,为了解决问题,我要挖地三尺~
另:程序收到,马上给分~~
来自: LiChaoHui, 时间: 2002-12-22 22:12:00, ID: 1528891
多谢
来自: SEVN, 时间: 2002-12-23 19:16:00, ID: 1531352
唉~~
来自: whsoft, 时间: 2003-02-18 11:29:00, ID: 1628847
LICHAOHVI
请重发一下,另外给分也行
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1526673
我的mail:bdj@whdahua.com
得分大富翁: LiChaoHui-100,