如何读取一个DFM文件并且生成预览画面? 我看到一个工具,DFMEditor做到了,有谁知道是怎么做到的?非得自己创建一个个的控件吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我怎么没找到,你有吗,能不能给我一份?[email protected]急用,谢谢。 我放到这里了,自己去下吧http://mastersky.ys168.com/Delphi目录里,密码是Delphi 我怎么没发现源代码啊?只有一个非常老的版本的DFMEdit的exe文件,其他的都不知道是什么 unit Unit16;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public procedure setNameEvent(Reader: TReader; Component: TComponent; var Name: string); procedure CreateComponentEvent(Reader: TReader; ComponentClass: TComponentClass; var Component: TComponent); procedure rc(Component: TComponent); procedure FindMethodEvent(Reader: TReader; const MethodName: string; var Address: Pointer; var Error: Boolean); end;var Form1: TForm1;implementation{$R *.dfm}function ComponentToString(Component: TComponent): string;var BinStream: TMemoryStream; StrStream: TStringStream; s: string;begin BinStream := TMemoryStream.Create; try StrStream := TStringStream.Create(s); try BinStream.WriteComponent(Component); BinStream.Seek(0, soFromBeginning); ObjectBinaryToText(BinStream, StrStream); StrStream.Seek(0, soFromBeginning); Result := StrStream.DataString; finally freeandnil(StrStream); end; finally freeandnil(BinStream) end;end;function StringToComponent(Value: string): TComponent;var StrStream: TStringStream; BinStream: TMemoryStream;begin StrStream := TStringStream.Create(Value); try BinStream := TMemoryStream.Create; try ObjectTextToBinary(StrStream, BinStream); BinStream.Seek(0, soFromBeginning); Result := BinStream.ReadComponent(nil); finally freeandnil(BinStream); end; finally freeandnil(StrStream); end;end;procedure TForm1.Button1Click(Sender: TObject);var r: TReader; dfm: string; c: TComponent; ms, ms2: TMemoryStream;begin dfm := ComponentToString(Self); ShowMessage(dfm); ms := TMemoryStream.Create; ms2 := TMemoryStream.Create; ms.Write(dfm[1], length(dfm)); ms.Position := 0; ObjectTextToBinary(ms, ms2); ms.SaveToFile('c:\1.txt'); ms2.Position := 0; r := TReader.Create(ms2, 4096); r.Parent := nil; r.Owner := nil; r.OnSetName := setNameEvent; r.OnCreateComponent := CreateComponentEvent; r.OnFindMethod := FindMethodEvent; c := r.ReadRootComponent(TForm.Create(nil)); TForm(c).Show; TForm(c).Top := TForm1(c).Top + 30; TForm(c).Left := TForm1(c).Left + 30; FreeAndNil(ms); FreeAndNil(ms2);end;procedure TForm1.setNameEvent(Reader: TReader; Component: TComponent; var Name: string);begin// Memo1.Lines.Add(Name); // Name := Name + '_1';end;procedure TForm1.CreateComponentEvent(Reader: TReader; ComponentClass: TComponentClass; var Component: TComponent);begin// ShowMessage(ComponentClass.ClassName);end;procedure TForm1.rc(Component: TComponent);begin//end;procedure TForm1.FindMethodEvent(Reader: TReader; const MethodName: string; var Address: Pointer; var Error: Boolean);begin Address := nil; Error := false;end;initialization RegisterClass(TForm); RegisterClass(TButton); RegisterClass(TMemo);end. procedure TForm1.Button2Click(Sender: TObject);var r: TReader; dfm: string; c: TComponent; ms, ms2: TMemoryStream;begin ms := TMemoryStream.Create; ms.LoadFromFile(ExtractFilePath(Application.Name) + 'unit16.dfm'); ms2 := TMemoryStream.Create; ms.Write(dfm[1], length(dfm)); ms.Position := 0; ObjectTextToBinary(ms, ms2); ms2.Position := 0; r := TReader.Create(ms2, 4096); r.Parent := nil; r.Owner := nil; r.OnSetName := setNameEvent; r.OnCreateComponent := CreateComponentEvent; r.OnFindMethod := FindMethodEvent; c := r.ReadRootComponent(TForm.Create(nil)); TForm(c).Show; TForm(c).Top := TForm1(c).Top + 30; TForm(c).Left := TForm1(c).Left + 30; FreeAndNil(ms); FreeAndNil(ms2);end;initialization RegisterClass(TForm); RegisterClass(TButton); RegisterClass(TMemo);end. 我怎么没发现源代码啊?只有一个非常老的版本的DFMEdit的exe文件,其他的都不知道是什么___________________________不好意思,上传错了,现在放上去了.dfmedit_0.3.0.0_src.zip.这个是前几天从sourceforge上下载的最新版,不会是非常老的吧? 也可以去sourceforge下载.http://sourceforge.net/project/showfiles.php?group_id=158404 withcsharp不好意思,只能多给先来那位,谢谢! 有哪位高手,能写一个简单的读取和保存窗体的例子么,dfmedit_0.3.0.0_src.zip里面的太复杂了. sql字符串怎么连接? 关于报价`` adoconnection问题 用DELPHI写了一个可过滤某些站点的东东,来看,都有分!!! 请教如何对数据库加密 如何读取Window2000中的所有服务名,在线等待。 请问在Delphi中如何防止(或提示)用户输入在文本框中的不能为字母?????? dbgrid排序问题 谁知道原因,我认他做亲爹 向大家问一个函数,请大家指教!! 有关字符型转数字型 恭喜哈欠生产出哈欠V2.0
http://mastersky.ys168.com/Delphi目录里,密码是Delphi
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
procedure setNameEvent(Reader: TReader; Component: TComponent;
var Name: string);
procedure CreateComponentEvent(Reader: TReader;
ComponentClass: TComponentClass; var Component: TComponent);
procedure rc(Component: TComponent);
procedure FindMethodEvent(Reader: TReader; const MethodName: string;
var Address: Pointer; var Error: Boolean); end;var
Form1: TForm1;implementation{$R *.dfm}function ComponentToString(Component: TComponent): string;var
BinStream: TMemoryStream;
StrStream: TStringStream;
s: string;
begin
BinStream := TMemoryStream.Create;
try
StrStream := TStringStream.Create(s);
try
BinStream.WriteComponent(Component);
BinStream.Seek(0, soFromBeginning);
ObjectBinaryToText(BinStream, StrStream);
StrStream.Seek(0, soFromBeginning);
Result := StrStream.DataString;
finally
freeandnil(StrStream); end;
finally
freeandnil(BinStream)
end;
end;function StringToComponent(Value: string): TComponent;
var
StrStream: TStringStream;
BinStream: TMemoryStream;
begin
StrStream := TStringStream.Create(Value);
try
BinStream := TMemoryStream.Create;
try
ObjectTextToBinary(StrStream, BinStream);
BinStream.Seek(0, soFromBeginning);
Result := BinStream.ReadComponent(nil); finally
freeandnil(BinStream);
end;
finally
freeandnil(StrStream);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
r: TReader;
dfm: string;
c: TComponent;
ms, ms2: TMemoryStream;
begin
dfm := ComponentToString(Self);
ShowMessage(dfm);
ms := TMemoryStream.Create;
ms2 := TMemoryStream.Create;
ms.Write(dfm[1], length(dfm));
ms.Position := 0;
ObjectTextToBinary(ms, ms2);
ms.SaveToFile('c:\1.txt');
ms2.Position := 0;
r := TReader.Create(ms2, 4096);
r.Parent := nil;
r.Owner := nil; r.OnSetName := setNameEvent;
r.OnCreateComponent := CreateComponentEvent;
r.OnFindMethod := FindMethodEvent;
c := r.ReadRootComponent(TForm.Create(nil));
TForm(c).Show; TForm(c).Top := TForm1(c).Top + 30;
TForm(c).Left := TForm1(c).Left + 30; FreeAndNil(ms);
FreeAndNil(ms2);
end;procedure TForm1.setNameEvent(Reader: TReader; Component: TComponent;
var Name: string);
begin
// Memo1.Lines.Add(Name);
// Name := Name + '_1';
end;procedure TForm1.CreateComponentEvent(Reader: TReader;
ComponentClass: TComponentClass; var Component: TComponent);
begin
// ShowMessage(ComponentClass.ClassName);
end;procedure TForm1.rc(Component: TComponent);
begin
//
end;procedure TForm1.FindMethodEvent(Reader: TReader; const MethodName: string;
var Address: Pointer; var Error: Boolean);
begin
Address := nil;
Error := false;
end;initialization
RegisterClass(TForm);
RegisterClass(TButton);
RegisterClass(TMemo);end.
var
r: TReader;
dfm: string;
c: TComponent;
ms, ms2: TMemoryStream;
begin ms := TMemoryStream.Create;
ms.LoadFromFile(ExtractFilePath(Application.Name) + 'unit16.dfm');
ms2 := TMemoryStream.Create;
ms.Write(dfm[1], length(dfm));
ms.Position := 0;
ObjectTextToBinary(ms, ms2); ms2.Position := 0;
r := TReader.Create(ms2, 4096);
r.Parent := nil;
r.Owner := nil; r.OnSetName := setNameEvent;
r.OnCreateComponent := CreateComponentEvent;
r.OnFindMethod := FindMethodEvent;
c := r.ReadRootComponent(TForm.Create(nil));
TForm(c).Show; TForm(c).Top := TForm1(c).Top + 30;
TForm(c).Left := TForm1(c).Left + 30; FreeAndNil(ms);
FreeAndNil(ms2);end;initialization
RegisterClass(TForm);
RegisterClass(TButton);
RegisterClass(TMemo);end.
___________________________
不好意思,上传错了,现在放上去了.dfmedit_0.3.0.0_src.zip.这个是前几天从sourceforge上下载的最新版,不会是非常老的吧?
http://sourceforge.net/project/showfiles.php?group_id=158404
不好意思,只能多给先来那位,谢谢!