procedure TForm1.N14Click(Sender: TObject);begin
form20:=tform20.Create(nil); try
form20.ShowModal;
finally
form20.Free;
end;
end;procedure TForm1.N15Click(Sender: TObject);begin form21:=tform21.Create(nil); try
form21.ShowModal;
finally
form21.Free;
end;
我单击 N14 能单出form20 而单击 N15 却不能单出 form21 是什么原因呢?(是不是我在 form21 少写了什么东西
谢谢!
form20:=tform20.Create(nil); try
form20.ShowModal;
finally
form20.Free;
end;
end;procedure TForm1.N15Click(Sender: TObject);begin form21:=tform21.Create(nil); try
form21.ShowModal;
finally
form21.Free;
end;
我单击 N14 能单出form20 而单击 N15 却不能单出 form21 是什么原因呢?(是不是我在 form21 少写了什么东西
谢谢!
form21:=Tform.Create(nil); try
form21.ShowModal;
finally
form21.Free;
end;
begin
form3:=Tform3.Create(nil);
try
form3.Showmodal;
finally
form3.free;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
form2:=Tform2.Create(nil);
try
form2.Showmodal;
finally
form2.free;
end;
end;
可以呀!我家了三个窗体试了,你是不是少了一个end;
procedure TForm1.N15Click(Sender: TObject);
begin
showmessage('This is N15Click');
{
form21:=Tform21.Create(nil);
try
form21.ShowModal;
finally
form21.Free;
end;
}
end;
如果不是再看其它问题,你试一下在N15Click中写Form20。ShowMadol
如果没问题就是FORm21的问题
我觉得问题应该是 在form21上因为
procedure TForm1.N15Click(Sender: TObject);begin form20:=tform20.Create(nil); try
form20.ShowModal;
finally
form20.Free;
end;却可以还需请教各位大哥的是:怎么跟踪和断点调试啊?谢谢 各位大哥!
把N14Click和N15Click中的代码相交换一下
看看结果怎样
如果问题变成了N14没法实现
就是下面的窗口创建显示有问题了
from21 的代码是:(由于代码比较多,所以贴了一部分,真的非常感谢各位大哥的热心)
unit Unit21;interface uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, ImgList, ToolWin, DB, ADODB;type
TForm21 = class(TForm)
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ImageList1: TImageList;
ImageList2: TImageList;
Splitter1: TSplitter;
Splitter2: TSplitter;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TreeView1: TTreeView;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
DateTimePicker1: TDateTimePicker;
Memo1: TMemo;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
Button1: TButton;
ADOStoredProc1: TADOStoredProc;
TreeView2: TTreeView;
Label5: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
DateTimePicker2: TDateTimePicker;
DateTimePicker3: TDateTimePicker;
Bevel1: TBevel;
Edit3: TEdit;
Edit4: TEdit;
ComboBox1: TComboBox;
Edit5: TEdit;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
DateTimePicker4: TDateTimePicker;
Edit6: TEdit;
Label6: TLabel;
Memo2: TMemo;
RadioButton4: TRadioButton;
RadioButton5: TRadioButton;
RadioButton6: TRadioButton;
Button2: TButton;
Button3: TButton;
Label18: TLabel;
GroupBox1: TGroupBox;
RadioButton7: TRadioButton;
RadioButton8: TRadioButton;
ADOStoredProc2: TADOStoredProc;
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
procedure ToolButton1Click(Sender: TObject);
procedure ToolButton2Click(Sender: TObject);
procedure ToolButton3Click(Sender: TObject);
procedure ToolButton4Click(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure ComboBox1Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure TreeView2Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
procedure RadioButton5Click(Sender: TObject);
procedure RadioButton6Click(Sender: TObject);
procedure ToolButton5Click(Sender: TObject);
procedure ToolButton6Click(Sender: TObject);
procedure ToolButton7Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
// procedure TreeView1Click(Sender: TObject);
private
{ Private declarations }
public procedure fshowtreeview1(departmentid:string;ParentNode:TTreeNode); procedure fshowtreeview2(departmentid:string;ParentNode:TTreeNode); procedure fshowtreeview2_2(departmentid:string;ParentNode:TTreeNode); { Public declarations } end;
type
pdlbstoredtypemyrecord=^tpdlbstoredtypemyrecord;
tpdlbstoredtypemyrecord=record
parentid:string;
nodeid:string;
lsqgamedlbstoredid:string;
end;
//////////////////////////定义 treeview2(类型结构 )//////////////////////////定义 treeview1(类型结构 )type
pdlbtypemyrecord=^tdlbptypemyrecord;
tdlbptypemyrecord=record
parentid:string;
nodeid:string;
end;
//////////////////////////定义 treeview1(类型结构 )
var
Form21: TForm21;implementationuses
unit1;{$R *.dfm}//////////////////////////////////////////////////////初始化 treeview1
procedure tform21.fshowtreeview1(departmentid:string;ParentNode:TTreeNode);var
ppdlbtypemyrecord:pdlbtypemyrecord;
TN:TTreeNode;
ADOStoredP:TADOStoredProc;
//departmentparentname:string;
lsqgamedlbtypename:string;begin aDOStoredP:=TADOStoredProc.Create(nil);
aDOStoredP.Connection:=form1.ADOConnection1;
aDOStoredP.Close;
aDOStoredP.ProcedureName:='lsqprocselect_lsqgamedlbtypetable_all';
aDOStoredP.Parameters.Refresh;
// aDOStoredP.Parameters.ParamByName('@departmentparentname').Value:=departmentid;
aDOStoredP.Prepared:=true;
aDOStoredP.Open;
aDOStoredP.First; while not aDOStoredP.Eof do
begin
Application.ProcessMessages;
lsqgamedlbtypename:=aDOStoredP.fieldbyname('lsqgamedlbtypename').AsString; new(ppdlbtypemyrecord);
ppdlbtypemyrecord.nodeid:=adostoredp.fieldbyname('lsqgamedlbtypename').AsString;
ppdlbtypemyrecord.parentid:='金龙公司' ;
TN:=treeview1.Items.AddChild(ParentNode,adostoredp.fieldbyname('lsqgamedlbtypename').AsString);
tn.ImageIndex:=1;
tn.Data:=ppdlbtypemyrecord;
//dispose(myrecord);
// fshowtreeview1(adostoredp.fieldbyname('lsqgameyxjtypename').AsString,tn); //开始递归 aDOStoredP.Next;
end;
aDOStoredP.Free;
end;
//////////////////////////////////////////////////////初始化 treeview1procedure TForm21.Button1Click(Sender: TObject);const
ss:string='金龙公司';
MyDocDir = 'd:\zhohuiping';var
i:integer;
lsqgamedlbtypefirsttime:string;//////////////////////////////////////////////// 初始化 treeview1
bootnodetreeview1:ttreenode;
P : PString;
ppdlbtypemyrecord:pdlbtypemyrecord;
//////////////////////////////////////////////// 初始化 treeview1begin
i:=length(trim(edit1.Text)); if i<>4 then
begin
showmessage('附件编号必须为 4 位数字');
exit;
end; lsqgamedlbtypefirsttime:=formatdatetime('YYYY-MM-DD hh:mm:ss:zzz',DateTimePicker1.DateTime); if RadioButton1.Checked then if messagedlg('您确定新增此记录吗',mtconfirmation,[mbyes,mbno],0)=mryes then begin
ADOStoredProc1.Close;
ADOStoredProc1.ProcedureName:='lsqprocinsert_lsqgamedlbtypetable';
ADOStoredProc1.Parameters.Refresh; ADOStoredProc1.Parameters.ParamByName('@lsqgamedlbtypeid').Value:=trimleft(edit1.Text);
ADOStoredProc1.Parameters.ParamByName('@lsqgamedlbtypename').Value:=trimleft(edit2.Text);
ADOStoredProc1.Parameters.ParamByName('@lsqgamedlbtypefirsttime').Value:=strtodatetime(lsqgamedlbtypefirsttime);
ADOStoredProc1.Parameters.ParamByName('@lsqgamedlbtypebz').Value:=memo1.Text; try
ADOStoredProc1.ExecProc;
showmessage('新增记录成功');
except
showmessage('新增记录不成功');
end;
/////////////////////////////////////////////////////////// 初始化 treeview1
new(ppdlbtypemyrecord);
ppdlbtypemyrecord.parentid:='';
ppdlbtypemyrecord.nodeid:='金龙公司';
Treeview1.Items.Clear;
Treeview1.Items.BeginUpdate;
New(P);
P^:= MyDocDir ;
bootnodetreeview1:= Treeview1.Items.AddObject(Nil, ss, P);
bootnodetreeview1.Data:=ppdlbtypemyrecord;
treeview1.Items.EndUpdate;
//dispose(myrecord);
fshowtreeview1(ss,bootnodetreeview1); ///////////////////////////////////////////////////////////// 初始化 treeview1
end
else
exit; end;
procedure TForm21.FormCreate(Sender: TObject); const
ss:string='金龙公司';
MyDocDir = 'd:\zhohuiping'; var i:integer;////////////// 添加条目用的//////////////////////////////////////////////////////////////////////初始化 treeview 1
bootnodetreeview1:ttreenode;
P : PString;
ppdlbtypemyrecord:pdlbtypemyrecord;//////////////////////////////////////////////////////////////////////初始化 treeview 1
begin
//////////////////////////////////////////////////////////////////////初始化 treeview 1
new(ppdlbtypemyrecord);
ppdlbtypemyrecord.parentid:='';
ppdlbtypemyrecord.nodeid:='金龙公司';
Treeview1.Items.Clear;
Treeview1.Items.BeginUpdate;
New(P);
P^:= MyDocDir ;
bootnodetreeview1:= Treeview1.Items.AddObject(Nil, ss, P);
bootnodetreeview1.Data:=ppdlbtypemyrecord;
treeview1.Items.EndUpdate;
//dispose(myrecord);
fshowtreeview1(ss,bootnodetreeview1);
//////////////////////////////////////////////////////////////////////初始化 treeview
谢谢!
在use里引用From21的单元。
又有新发现,我把 form21 里的代码都清除了,只留下:
unit Unit21;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;type
TForm21 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;var
Form21: TForm21;implementation{$R *.dfm}end.
当我执行:
procedure TForm1.N15Click(Sender: TObject);begin form21:=tform21.Create(nil); try
form21.ShowModal;
finally
form21.Free;
end;出现的错误是:project projiect1.exe exception class Einvalidoperation with
message 'cannot make a visible window modal'请教,各位大哥,是不是 form21 我有哪个属性设置错误了?还是?谢谢!
我想把 from21 这个单元都不要了
我要删除那些东西呢?
假如 我的 工程保存在 c:\bcak 里面
那么我 需要删除那些东西呢?
谢谢!
在Form21的Create 事件中不要写 Form21.Show 等句子,也不要写Form21.Visible:=true;改之前可以测试一下,可将N15Click中的Form21.Showmodal改为Form21.Show,如果没有问题,则就试上面的方法
如果不是再看其它问题,你试一下在N15Click中写Form20。ShowMadol
如果没问题就是FORm21的问题 steelxu5(人间漫步) 早早就说过了
1:在 N15Click中写Form20。ShowMadol 是可以的
2:form21 的 formstyle 为 fsnormal
3:procedure TForm1.N15Click(Sender: TObject);
begin
form21.show;
end;当运行 TForm1.N15Click 时出现的错误是:
projiect project1.exe raised exception class Eaclessviolation with message
'access violation at address 0047f386 in module 'project.exe'请各位大哥再给我看看~~
谢谢!
二是运时时,Form21没有被创建如果Form21中没有问题,应是Form21
没有创建
检查一下你的Form21在那里创建的
或者在N15Click 中 加上
if assigned(Form21) then
Form21:=TForm21.create(self);
Form21.show;