下面代码是frmOpen表单对应代码,单元文件名为OpenF.pas unit OpenF;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DBCtrls, DB, Grids, DBGrids, ADODB, CheckLst, ComCtrls;type TfrmOpen = class(TForm) Button1: TButton; Button2: TButton; Label1: TLabel; ListView1: TListView; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var frmOpen: TfrmOpen;implementation{$R *.dfm} uses mainDM,NewF;{mainDM为数据模块}procedure TfrmOpen.FormClose(Sender: TObject; var Action: TCloseAction); begin //action:=cafree; end;procedure TfrmOpen.Button2Click(Sender: TObject); begin close; end;procedure TfrmOpen.FormCreate(Sender: TObject); var ListItem: TListItem; begin ListView1.Items.Clear; DM.ADOQuery.SQL.clear; DM.ADOQuery.SQL.Add('select * from project'); DM.ADOQuery.Open; while not DM.ADOQuery.Eof do begin with ListView1 do begin ListItem := Items.Add; ListItem.Caption:=DM.ADOQuery.FieldByName('id').AsString; ListItem.SubItems.Add(DM.ADOQuery.FieldByName('project_name').AsString); ListItem.SubItems.Add(DM.ADOQuery.FieldByName('project_addtime').AsString); end; DM.ADOQuery.Next; end; DM.ADOQuery.Close; DM.ADOQuery.SQL.Clear; end;procedure TfrmOpen.Button1Click(Sender: TObject); var i:integer; begin if ListView1.Selected <> nil then begin frmNew:=TfrmNew.Create(Application); for i:=0 to ListView1.Items.Count-1 do begin if ListView1.Items[i].Selected then frmNew.Caption:='工程-'+ListView1.Items[i].SubItems.Strings[0]; end; frmNew.ProID:=strtoint(ListView1.Selected.Caption); //这句就是传不过去值 //frmNew.ProID:=500; frmNew.Edit1.Text:=ListView1.Selected.Caption; //这句是可以实现的 frmNew.Show; close; end; end;end.
procedure TfrmOpen.Button1Click(Sender: TObject); var i:integer; begin if ListView1.Selected <> nil then begin frmNew:=TfrmNew.Create(Application); for i:=0 to ListView1.Items.Count-1 do begin if ListView1.Items[i].Selected then frmNew.Caption:='工程-'+ListView1.Items[i].SubItems.Strings[0]; end; frmNew.ProID:=strtoint(ListView1.Selected.Caption); //这句就是传不过去值 //frmNew.ProID:=500; frmNew.Edit1.Text:=ListView1.Selected.Caption; //这句是可以实现的 frmNew.Show; //close;这句注释掉。 end; end;
frmNew.ProID:=strtoint(ListView1.Selected.Caption); //这句也不行
按道理不应该,那就把frmNew.ProID:=strtoint(ListView1.Selected.Caption);放到下面试试
试了还是不行frmNew.Edit1.Text:=ListView1.Selected.Caption; //这句能正常实现
上面能正常,哪是因为将值付给frmNew中的Edit1中的原因主要是附给frmNew中全局变量ProID时就不行了。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;type
TfrmNew = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
GroupBox1: TGroupBox;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Label6: TLabel;
ComboBox1: TComboBox;
Label7: TLabel;
Edit5: TEdit;
Label8: TLabel;
Edit6: TEdit;
Label9: TLabel;
Edit7: TEdit;
Label10: TLabel;
Edit8: TEdit;
Label11: TLabel;
DateTimePicker1: TDateTimePicker;
GroupBox2: TGroupBox;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
ProID:Integer; {项目ID编号}
end;var
frmNew: TfrmNew;implementation{$R *.dfm}procedure TfrmNew.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
end;procedure TfrmNew.FormShow(Sender: TObject);
begin
//Edit1.Text:=inttostr(ProID); //这句不行
ShowMessage(inttostr(ProID)); //这句也不行
end;procedure TfrmNew.FormCreate(Sender: TObject);
begin
Edit2.Text:=inttostr(ProID); //这句也不行
end;end.
unit OpenF;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, DB, Grids, DBGrids, ADODB, CheckLst, ComCtrls;type
TfrmOpen = class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
ListView1: TListView;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmOpen: TfrmOpen;implementation{$R *.dfm}
uses
mainDM,NewF;{mainDM为数据模块}procedure TfrmOpen.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//action:=cafree;
end;procedure TfrmOpen.Button2Click(Sender: TObject);
begin
close;
end;procedure TfrmOpen.FormCreate(Sender: TObject);
var
ListItem: TListItem;
begin
ListView1.Items.Clear;
DM.ADOQuery.SQL.clear;
DM.ADOQuery.SQL.Add('select * from project');
DM.ADOQuery.Open;
while not DM.ADOQuery.Eof do
begin
with ListView1 do
begin
ListItem := Items.Add;
ListItem.Caption:=DM.ADOQuery.FieldByName('id').AsString;
ListItem.SubItems.Add(DM.ADOQuery.FieldByName('project_name').AsString);
ListItem.SubItems.Add(DM.ADOQuery.FieldByName('project_addtime').AsString);
end;
DM.ADOQuery.Next;
end;
DM.ADOQuery.Close;
DM.ADOQuery.SQL.Clear;
end;procedure TfrmOpen.Button1Click(Sender: TObject);
var
i:integer;
begin
if ListView1.Selected <> nil then
begin
frmNew:=TfrmNew.Create(Application);
for i:=0 to ListView1.Items.Count-1 do begin
if ListView1.Items[i].Selected then
frmNew.Caption:='工程-'+ListView1.Items[i].SubItems.Strings[0];
end;
frmNew.ProID:=strtoint(ListView1.Selected.Caption); //这句就是传不过去值
//frmNew.ProID:=500;
frmNew.Edit1.Text:=ListView1.Selected.Caption; //这句是可以实现的
frmNew.Show;
close;
end;
end;end.
var
i:integer;
begin
if ListView1.Selected <> nil then
begin
frmNew:=TfrmNew.Create(Application);
for i:=0 to ListView1.Items.Count-1 do begin
if ListView1.Items[i].Selected then
frmNew.Caption:='工程-'+ListView1.Items[i].SubItems.Strings[0];
end;
frmNew.ProID:=strtoint(ListView1.Selected.Caption); //这句就是传不过去值
//frmNew.ProID:=500;
frmNew.Edit1.Text:=ListView1.Selected.Caption; //这句是可以实现的
frmNew.Show;
//close;这句注释掉。
end;
end;