长了一点,请各位高手耐心看一下!!!
下面有两段代码,第一段为主窗口单元文件(部分),第二段为自定义单元文件中一函数;
(((第一段)))
unit MainForm;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, MapXLib_TLB, ComCtrls, ExtCtrls, ToolWin,
Menus, ScktComp,uwinsock;type
TfrmMain = class(TForm)
MainMenu1: TMainMenu;
mmFile: TMenuItem;
miExit: TMenuItem;
mmAbout: TMenuItem;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
btnArrow: TToolButton;
btnZoomIn: TToolButton;
btnZoomOut: TToolButton;
btnCall: TToolButton;
btnStopCall: TToolButton;
Panel1: TPanel;
Map1: TMap;
btnSelectAll: TButton;
btnCancel: TButton;
btnPan: TToolButton;
tcpClient: TClientSocket;
Panel2: TPanel;
lvCar: TListView;
btnSet: TToolButton;
Memo1: TMemo;
procedure btnArrowClick(Sender: TObject);
procedure btnZoomInClick(Sender: TObject);
procedure btnZoomOutClick(Sender: TObject);
procedure btnPanClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure tcpClientConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure tcpClientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure btnCallClick(Sender: TObject);
procedure btnSetClick(Sender: TObject);
procedure btnStopCallClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmMain: TfrmMain;implementationuses CallForm, LoginForm,uType,uFunction, GisSetForm,uDataBase;
{$R *.dfm}
procedure position;
var
P420:CA420;
i:Integer;
sMid:string;
lTemp:integer;
strTemp:String;
ListItem:TListItem;
frmMain:TfrmMain;
begin
PullInt(strpPackage, lTemp);
P420.RecNum := lTemp;
PullInt(strpPackage, lTemp);
P420.GpsId := lTemp;
PullInt(strpPackage, lTemp);
P420.GpsType := lTemp;
PullStr(strpPackage, strTemp);
P420.time := strTemp;
PullInt(strpPackage, lTemp);
P420.Longitude := lTemp;
PullInt(strpPackage, lTemp);
P420.Latitude := lTemp;
PullInt(strpPackage, lTemp);
P420.Speed := lTemp;
PullInt(strpPackage, lTemp);
P420.Direction := lTemp;
PullInt(strpPackage, lTemp);
P420.Condition1 := lTemp;
PullInt(strpPackage, lTemp);
P420.CallInterval := lTemp;
PullStr(strpPackage, strTemp);
P420.SmDate := strTemp;
PullStr(strpPackage, strTemp);
P420.SmTime := strTemp;
PullStr(strpPackage, strTemp);
P420.SatInfo := strTemp;
PullStr(strpPackage, strTemp);
P420.SimNo := strTemp;
sMid:=GetMid(P420.GpsId);
ListItem :=frmMain.lvCar.Items.Add;
ListItem.Caption := sMId;
ListItem.SubItems.Add(IntToStr(P420.GpsId));
ListItem.SubItems.Add(P420.SimNo);
ListItem.SubItems.Add(FloatToStr(P420.Longitude/100000));
ListItem.SubItems.Add(FloatToStr(P420.Latitude/100000));
ListItem.SubItems.Add(FloatToStr(P420.Speed/10000));
ListItem.SubItems.Add(Direction(P420.Direction));
ListItem.SubItems.Add(P420.Time);
ListItem.SubItems.Add(P420.SatInfo);
end;
Procedure ReceiveMessage();
var
lCmd:integer;
begin
strpPackage:=Trim(strpPackage);
PullInt(strpPackage, lCmd);
Case lCmd of
101:Login;
401:Position;
end;
end;
Procedure TCPConnection(strHostName:string;lHostPort:integer);
begin
If strHostName <> '' Then
frmMain.tcpClient.Host:=strHostName;
If lHostPort <> 0 Then
frmMain.tcpClient.Port:=lHostPort;
frmMain.tcpClient.Open;
end;procedure TfrmMain.tcpClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
var
Login:C101;
begin
with Login do
begin
Username:=gbl_strUserName;
Password:=gbl_strPassWord;
TerminaterType:=2;
end;
memo1.Lines.Add('连接中心成功'+#13);
strPackage:='';
strPackage:='101'+' '+'0'+' '+Login.Username+' '+Login.Password+' '+IntToStr(Login.TerminaterType)+#10;
tcpClient.Socket.SendText(strPackage);
end;procedure TfrmMain.tcpClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
strpPackage:=tcpClient.socket.ReceiveText;
While gpsGetPackage(strpPackage) do
begin
showmessage(strpPackage);
ReceiveMessage;
end;
end;procedure TfrmMain.FormCreate(Sender: TObject);
begin
TCPConnection('192.168.51.3', 5000);
end;end.((((第二段)))))
Procedure login();
var
P101:A101;
func:array[1..5] of integer;
i:Integer;
lTemp:integer;
strTemp:String;
begin
PullInt(strpPackage, lTemp);
P101.RecNum := lTemp;
If P101.RecNum = 0 Then
begin
PullInt(strpPackage, lTemp);
P101.UserId := lTemp;
PullInt(strpPackage, lTemp);
P101.CallIntervalBase := lTemp;
PullInt(strpPackage, lTemp);
P101.AlarmInterval := lTemp;
PullInt(strpPackage, lTemp);
P101.DataRedisRecordUpLim := lTemp;
P101.UserFunction := '';
For i := 1 To 5 do
begin
PullInt(strpPackage, func[i]);
P101.UserFunction := P101.UserFunction + IntToStr(func[i]);
end;
PullInt(strpPackage, lTemp);
P101.lFlag := lTemp;
PullStr(strpPackage, strTemp);
P101.Version := strTemp;
frmMain.memo1.Lines.Add('用户注册成功'+#13);
gbl_iUserId := P101.UserId;
end
End;第一段代码顺利运行,但:
ListItem :=frmMain.lvCar.Items.Add;
ListItem.Caption := sMId;
ListItem.SubItems.Add(IntToStr(P420.GpsId));
ListItem.SubItems.Add(P420.SimNo);
ListItem.SubItems.Add(FloatToStr(P420.Longitude/100000));
ListItem.SubItems.Add(FloatToStr(P420.Latitude/100000));
ListItem.SubItems.Add(FloatToStr(P420.Speed/10000));
ListItem.SubItems.Add(Direction(P420.Direction));
ListItem.SubItems.Add(P420.Time);
ListItem.SubItems.Add(P420.SatInfo);
在同一窗体单元中为什么"ListItem :=frmMain.lvCar.Items.Add;"中要加"frmMain."对象名?
这一段代码好像没有运行到,listview控件(lvcar)没有任何显示,但是在窗体的按钮事件或显示事件中去除"ListItem :=frmMain.lvCar.Items.Add;"中的frmMain.却能在listview中显示数据,为什么?第二段代码也是相同的问题,"frmMain.memo1.Lines.Add('用户注册成功'+#13);"没达到程序执行结果,而第一段代码中的"memo1.Lines.Add('连接中心成功'+#13);"却能达到程序执行结果,WHY?
下面有两段代码,第一段为主窗口单元文件(部分),第二段为自定义单元文件中一函数;
(((第一段)))
unit MainForm;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, MapXLib_TLB, ComCtrls, ExtCtrls, ToolWin,
Menus, ScktComp,uwinsock;type
TfrmMain = class(TForm)
MainMenu1: TMainMenu;
mmFile: TMenuItem;
miExit: TMenuItem;
mmAbout: TMenuItem;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
btnArrow: TToolButton;
btnZoomIn: TToolButton;
btnZoomOut: TToolButton;
btnCall: TToolButton;
btnStopCall: TToolButton;
Panel1: TPanel;
Map1: TMap;
btnSelectAll: TButton;
btnCancel: TButton;
btnPan: TToolButton;
tcpClient: TClientSocket;
Panel2: TPanel;
lvCar: TListView;
btnSet: TToolButton;
Memo1: TMemo;
procedure btnArrowClick(Sender: TObject);
procedure btnZoomInClick(Sender: TObject);
procedure btnZoomOutClick(Sender: TObject);
procedure btnPanClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure tcpClientConnect(Sender: TObject; Socket: TCustomWinSocket);
procedure tcpClientRead(Sender: TObject; Socket: TCustomWinSocket);
procedure btnCallClick(Sender: TObject);
procedure btnSetClick(Sender: TObject);
procedure btnStopCallClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
frmMain: TfrmMain;implementationuses CallForm, LoginForm,uType,uFunction, GisSetForm,uDataBase;
{$R *.dfm}
procedure position;
var
P420:CA420;
i:Integer;
sMid:string;
lTemp:integer;
strTemp:String;
ListItem:TListItem;
frmMain:TfrmMain;
begin
PullInt(strpPackage, lTemp);
P420.RecNum := lTemp;
PullInt(strpPackage, lTemp);
P420.GpsId := lTemp;
PullInt(strpPackage, lTemp);
P420.GpsType := lTemp;
PullStr(strpPackage, strTemp);
P420.time := strTemp;
PullInt(strpPackage, lTemp);
P420.Longitude := lTemp;
PullInt(strpPackage, lTemp);
P420.Latitude := lTemp;
PullInt(strpPackage, lTemp);
P420.Speed := lTemp;
PullInt(strpPackage, lTemp);
P420.Direction := lTemp;
PullInt(strpPackage, lTemp);
P420.Condition1 := lTemp;
PullInt(strpPackage, lTemp);
P420.CallInterval := lTemp;
PullStr(strpPackage, strTemp);
P420.SmDate := strTemp;
PullStr(strpPackage, strTemp);
P420.SmTime := strTemp;
PullStr(strpPackage, strTemp);
P420.SatInfo := strTemp;
PullStr(strpPackage, strTemp);
P420.SimNo := strTemp;
sMid:=GetMid(P420.GpsId);
ListItem :=frmMain.lvCar.Items.Add;
ListItem.Caption := sMId;
ListItem.SubItems.Add(IntToStr(P420.GpsId));
ListItem.SubItems.Add(P420.SimNo);
ListItem.SubItems.Add(FloatToStr(P420.Longitude/100000));
ListItem.SubItems.Add(FloatToStr(P420.Latitude/100000));
ListItem.SubItems.Add(FloatToStr(P420.Speed/10000));
ListItem.SubItems.Add(Direction(P420.Direction));
ListItem.SubItems.Add(P420.Time);
ListItem.SubItems.Add(P420.SatInfo);
end;
Procedure ReceiveMessage();
var
lCmd:integer;
begin
strpPackage:=Trim(strpPackage);
PullInt(strpPackage, lCmd);
Case lCmd of
101:Login;
401:Position;
end;
end;
Procedure TCPConnection(strHostName:string;lHostPort:integer);
begin
If strHostName <> '' Then
frmMain.tcpClient.Host:=strHostName;
If lHostPort <> 0 Then
frmMain.tcpClient.Port:=lHostPort;
frmMain.tcpClient.Open;
end;procedure TfrmMain.tcpClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
var
Login:C101;
begin
with Login do
begin
Username:=gbl_strUserName;
Password:=gbl_strPassWord;
TerminaterType:=2;
end;
memo1.Lines.Add('连接中心成功'+#13);
strPackage:='';
strPackage:='101'+' '+'0'+' '+Login.Username+' '+Login.Password+' '+IntToStr(Login.TerminaterType)+#10;
tcpClient.Socket.SendText(strPackage);
end;procedure TfrmMain.tcpClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
strpPackage:=tcpClient.socket.ReceiveText;
While gpsGetPackage(strpPackage) do
begin
showmessage(strpPackage);
ReceiveMessage;
end;
end;procedure TfrmMain.FormCreate(Sender: TObject);
begin
TCPConnection('192.168.51.3', 5000);
end;end.((((第二段)))))
Procedure login();
var
P101:A101;
func:array[1..5] of integer;
i:Integer;
lTemp:integer;
strTemp:String;
begin
PullInt(strpPackage, lTemp);
P101.RecNum := lTemp;
If P101.RecNum = 0 Then
begin
PullInt(strpPackage, lTemp);
P101.UserId := lTemp;
PullInt(strpPackage, lTemp);
P101.CallIntervalBase := lTemp;
PullInt(strpPackage, lTemp);
P101.AlarmInterval := lTemp;
PullInt(strpPackage, lTemp);
P101.DataRedisRecordUpLim := lTemp;
P101.UserFunction := '';
For i := 1 To 5 do
begin
PullInt(strpPackage, func[i]);
P101.UserFunction := P101.UserFunction + IntToStr(func[i]);
end;
PullInt(strpPackage, lTemp);
P101.lFlag := lTemp;
PullStr(strpPackage, strTemp);
P101.Version := strTemp;
frmMain.memo1.Lines.Add('用户注册成功'+#13);
gbl_iUserId := P101.UserId;
end
End;第一段代码顺利运行,但:
ListItem :=frmMain.lvCar.Items.Add;
ListItem.Caption := sMId;
ListItem.SubItems.Add(IntToStr(P420.GpsId));
ListItem.SubItems.Add(P420.SimNo);
ListItem.SubItems.Add(FloatToStr(P420.Longitude/100000));
ListItem.SubItems.Add(FloatToStr(P420.Latitude/100000));
ListItem.SubItems.Add(FloatToStr(P420.Speed/10000));
ListItem.SubItems.Add(Direction(P420.Direction));
ListItem.SubItems.Add(P420.Time);
ListItem.SubItems.Add(P420.SatInfo);
在同一窗体单元中为什么"ListItem :=frmMain.lvCar.Items.Add;"中要加"frmMain."对象名?
这一段代码好像没有运行到,listview控件(lvcar)没有任何显示,但是在窗体的按钮事件或显示事件中去除"ListItem :=frmMain.lvCar.Items.Add;"中的frmMain.却能在listview中显示数据,为什么?第二段代码也是相同的问题,"frmMain.memo1.Lines.Add('用户注册成功'+#13);"没达到程序执行结果,而第一段代码中的"memo1.Lines.Add('连接中心成功'+#13);"却能达到程序执行结果,WHY?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货