100分,左轻侯大侠的大富翁离线源码解释
菜鸟一个,看左轻侯大侠的大富翁离线源码,不懂,求助各位大侠,解释越详细越好
源码下载地:http://www.wushuang.net/soft/re31.zipvar
frmMain: TfrmMain;
DsList:TDataSourceList; //这个TDataSourceList是什么类型的?implementationuses ComObj,mshtml, Search, dm, htmlGen, update, option;{$R *.DFM}
procedure TfrmMain.FormCreate(Sender: TObject);
var
strConn:string;
strlst:TStringList;
begin DsList := TDataSourceList.Create;
DsList.LoadfromFile;
InitpmnuDBlist; //这句是什么意思? DM1.sgQList := sgMain; // DM1是什么没有声明,只有一个DM数据单元 sgMain.OnDrawCell := DM1.OnDrawSGCell; //这句是什么意思? sltTreeViewKey := TStringList.Create; if DsList.Count <> 0 then DM1.InitDB(DsList.Items[0].connstr)
else DM1.InitDB('');
Init; //这句是什么意思? btnAboutClick(self); //这句是什么意思?end;procedure TfrmMain.TV1Change(Sender: TObject; Node: TTreeNode);
var
ssql:string;
oldcur:tcursor; //这句是什么意思?
Time:TDatetime;
RoomID:integer;
begin
if tv1.Selected =nil then exit;
if TV1.Selected.Level = 1 then
begin
DM1.SelectNoRoom;
exit;
end; if Node = TV1.TopItem then
roomid := -1
else
roomid := strtoint(sltTreeViewKey.Values[inttostr(Node.AbsoluteIndex)]);
tv1.Refresh;
sb1.Panels[1].Text:='';
oldcur:=Screen.Cursor;
screen.cursor :=crHourGlass; //这句是什么意思?
Time := now;
sb1.Panels[0].Text := '正在查询数据……'; DM1.GetRoomRecord(RoomID); sb1.Panels[1].Text:= '记录数:' + inttostr(DM1.QuesCount) ; sb1.Refresh; sb1.Panels[3].Text:='查找耗时:' + formatdatetime('hh:nn:ss:zz',now-time);
sb1.Panels[2].Text:='类别:' + TV1.Selected.Text;
sb1.Panels[0].Text:='完成';
screen.cursor :=oldcur;
end;procedure TfrmMain.btnSearchClick(Sender: TObject);
var
ssql,ssqlRe,TargetStr:string;
oldcur:tcursor;
Time:Tdatetime;
begin
ssqlRe := '';
with TfrmSearch.Create(self) do
begin
ShowModal;
if Return = true then
begin
ssqlRe := SearchStr;
TargetStr := Target;
end;
free;
end; if ssqlRe = '' then exit;// 去掉这个注释将显示查询的sql字符串
// ShowMessage(ssqlRe); time:=now;
sb1.Panels[0].Text:='正在查询数据……';
sb1.Panels[1].Text:='';
sb1.Panels[2].Text:= TargetStr;
sb1.Panels[3].Text:='';
sb1.Refresh; try
oldcur:=Screen.Cursor;
screen.cursor :=crHourGlass; ssql := ssqlRe ; DM1.Search(ssql); finally
sb1.Panels[1].Text:='共'+ inttostr(DM1.QuesCount) + '条记录';
sb1.Refresh;
screen.Cursor:=oldcur;
sb1.Panels[0].Text:='完成';
sb1.Panels[3].Text:='查找耗时:' + formatdatetime('hh:nn:ss:zz',now-time);
end;
end;
procedure TfrmMain.ShowRecord(ID:Integer);
var
i:integer;
QuesInfo:TQuesInfo; //是什么类型?
begin
try
DM1.GetQuesContent(ID,QuesInfo); sb1.Panels[0].Text:='正在更新视图……'; ShowHtml(IE,QuesInfo.Content); with QuesInfo do
begin
lblTitle.Caption:= '来自' + from + ':' + subject; LVInfo.Items.Clear;
LVInfoAdd('标题',subject);
LVInfoAdd('编号',ID);
LVInfoAdd('提问者',from);
LVInfoAdd('提问时间',RegdateTime);
LVInfoAdd('最后回复时间',datetime);
LVInfoAdd('分数',Points);
LVInfoAdd('状态',Status);
LVInfoAdd('所属类别',RoomName); LVInfoAdd('阅读次数',GetTimes);
LVInfoAdd('回复次数',ReplyTimes); end; PCContent.ActivePageIndex := 0;
frmMain.FocusControl(IE);
finally
sb1.Panels[0].Text:='完成';
end;
end;
菜鸟一个,看左轻侯大侠的大富翁离线源码,不懂,求助各位大侠,解释越详细越好
源码下载地:http://www.wushuang.net/soft/re31.zipvar
frmMain: TfrmMain;
DsList:TDataSourceList; //这个TDataSourceList是什么类型的?implementationuses ComObj,mshtml, Search, dm, htmlGen, update, option;{$R *.DFM}
procedure TfrmMain.FormCreate(Sender: TObject);
var
strConn:string;
strlst:TStringList;
begin DsList := TDataSourceList.Create;
DsList.LoadfromFile;
InitpmnuDBlist; //这句是什么意思? DM1.sgQList := sgMain; // DM1是什么没有声明,只有一个DM数据单元 sgMain.OnDrawCell := DM1.OnDrawSGCell; //这句是什么意思? sltTreeViewKey := TStringList.Create; if DsList.Count <> 0 then DM1.InitDB(DsList.Items[0].connstr)
else DM1.InitDB('');
Init; //这句是什么意思? btnAboutClick(self); //这句是什么意思?end;procedure TfrmMain.TV1Change(Sender: TObject; Node: TTreeNode);
var
ssql:string;
oldcur:tcursor; //这句是什么意思?
Time:TDatetime;
RoomID:integer;
begin
if tv1.Selected =nil then exit;
if TV1.Selected.Level = 1 then
begin
DM1.SelectNoRoom;
exit;
end; if Node = TV1.TopItem then
roomid := -1
else
roomid := strtoint(sltTreeViewKey.Values[inttostr(Node.AbsoluteIndex)]);
tv1.Refresh;
sb1.Panels[1].Text:='';
oldcur:=Screen.Cursor;
screen.cursor :=crHourGlass; //这句是什么意思?
Time := now;
sb1.Panels[0].Text := '正在查询数据……'; DM1.GetRoomRecord(RoomID); sb1.Panels[1].Text:= '记录数:' + inttostr(DM1.QuesCount) ; sb1.Refresh; sb1.Panels[3].Text:='查找耗时:' + formatdatetime('hh:nn:ss:zz',now-time);
sb1.Panels[2].Text:='类别:' + TV1.Selected.Text;
sb1.Panels[0].Text:='完成';
screen.cursor :=oldcur;
end;procedure TfrmMain.btnSearchClick(Sender: TObject);
var
ssql,ssqlRe,TargetStr:string;
oldcur:tcursor;
Time:Tdatetime;
begin
ssqlRe := '';
with TfrmSearch.Create(self) do
begin
ShowModal;
if Return = true then
begin
ssqlRe := SearchStr;
TargetStr := Target;
end;
free;
end; if ssqlRe = '' then exit;// 去掉这个注释将显示查询的sql字符串
// ShowMessage(ssqlRe); time:=now;
sb1.Panels[0].Text:='正在查询数据……';
sb1.Panels[1].Text:='';
sb1.Panels[2].Text:= TargetStr;
sb1.Panels[3].Text:='';
sb1.Refresh; try
oldcur:=Screen.Cursor;
screen.cursor :=crHourGlass; ssql := ssqlRe ; DM1.Search(ssql); finally
sb1.Panels[1].Text:='共'+ inttostr(DM1.QuesCount) + '条记录';
sb1.Refresh;
screen.Cursor:=oldcur;
sb1.Panels[0].Text:='完成';
sb1.Panels[3].Text:='查找耗时:' + formatdatetime('hh:nn:ss:zz',now-time);
end;
end;
procedure TfrmMain.ShowRecord(ID:Integer);
var
i:integer;
QuesInfo:TQuesInfo; //是什么类型?
begin
try
DM1.GetQuesContent(ID,QuesInfo); sb1.Panels[0].Text:='正在更新视图……'; ShowHtml(IE,QuesInfo.Content); with QuesInfo do
begin
lblTitle.Caption:= '来自' + from + ':' + subject; LVInfo.Items.Clear;
LVInfoAdd('标题',subject);
LVInfoAdd('编号',ID);
LVInfoAdd('提问者',from);
LVInfoAdd('提问时间',RegdateTime);
LVInfoAdd('最后回复时间',datetime);
LVInfoAdd('分数',Points);
LVInfoAdd('状态',Status);
LVInfoAdd('所属类别',RoomName); LVInfoAdd('阅读次数',GetTimes);
LVInfoAdd('回复次数',ReplyTimes); end; PCContent.ActivePageIndex := 0;
frmMain.FocusControl(IE);
finally
sb1.Panels[0].Text:='完成';
end;
end;
解决方案 »
- 使用fastReport遇到的非常奇怪的问题
- 谁用过SQLDMO备份SQL Server数据库?急!!!
- 关于setAbortProc(HDC hdc,ABORTPROC lpAbortProc)函数的使用??
- 在线程里调用了主线程的一个函数,是不是实质上还是一个线程?
- Windows 2000 203MB 源代码 BT下载
- 如何用MDAC的最新版本
- 为什么找不到orbpas.dcu文件?
- 制作安装文件,再现等待?
- 运行程序连接sql server时,有输入用户名和密码的对话框,在程序中如何写代码包含用户名和密码,以方便登陆?
- idtcpclient怎么检测idtcpserver是否可以连接
- 如何在程序中检测对方摘机。
- ****100****我的dcom客户端程式分发后,为什么会出现interface not surportted错误*****
procedure TfrmMain.btnSetDBClick(Sender: TObject);
var
sltConn:TStringlist;
begin
if DM1.SetConnnection then
begin
// DM1.InitDB(''); //这句是什么意思?
Init;
end;
end;procedure TfrmMain.Init;
var
TN1,TN2,TN3:TTreeNode;
i,j:integer;
Rooms:TStringlist;
begin
// try
// DM1.InitDB;
{ except
ShowMessage('初始化数据库时出错! ');
TV1.Items.Clear;
exit;
end;} TV1.Items.Clear;
tn1:=tv1.Items.Add(nil,'全部类别');
tn1.ImageIndex:=1;
Rooms := TStringList.Create; sltTreeViewKey.Clear; with dm1 do
begin
for i := 0 to SltGroups.count - 1 do
begin
tn2:=tv1.Items.AddChild(tn1,trim(SltGroups[i]));
tn2.ImageIndex:=1; GetRoomsByGroup(Rooms, TN2.Text);
for j := 0 to Rooms.Count - 1 do
begin
TN3 := TV1.Items.AddChild(TN2,Rooms.Names[j]);
TN3.ImageIndex := 1;
//保存TreeNode和RoomID之间的对应关系
sltTreeViewKey.Add(inttostr(TN3.AbsoluteIndex) + '=' + Rooms.Values[Rooms.Names[j]]);
end;
end;
end; Rooms.free; tv1.TopItem.Expand(false);
if TV1.TopItem.Count <> 0 then
begin
TV1.TopItem.getFirstChild.Expand(false);
TV1.Selected := TV1.TopItem.getFirstChild;
end;end;
procedure TfrmMain.LVInfoAdd(itemname, value: string);
var
ListItem:TListItem; //这句是什么意思?什么类型
begin
with LVInfo do
begin
ListItem := Items.Add;
ListItem.ImageIndex := 2;
ListItem.Caption := itemname;
ListItem.SubItems.Add(value);
end;end;
procedure TfrmMain.btnSaveClick(Sender: TObject);
begin
try
IE.ExecWB(OLECMDID_SAVEAS, OLECMDEXECOPT_DODEFAULT, EmptyParam, EmptyParam); //这句的作用?
Except
end;end;procedure TfrmMain.ShowHtml(Browser:TWebBrowser;content: string);
var
vv: Variant;
HTMLDocument: IHTMLDocument2;
begin
vv := VarArrayCreate([0,0],varVariant);
vv[0] := content;
HTMLDocument := browser.Document as IHTMLDocument2;
HTMLDocument.write(PSafeArray(TVarData(vv).VArray));
HTMLDocument.charset := 'gb2312';
HTMLDocument.close;end;procedure TfrmMain.sgMainSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean); //功能?
var
ID:string;
begin
if ACol = 1 then
begin
ID := sgMain.Cells[0,aRow];
if ID <> '' then ShowRecord(strtoint(ID));
end;
end;procedure TfrmMain.mnuCacluAllRoomRecordsClick(Sender: TObject);
var
oldcur:tcursor;
begin
try
oldcur := Screen.Cursor;
Screen.Cursor := crHourGlass;
sb1.Panels[0].Text:='正在计算……';
sb1.Refresh;
DM1.CalcuAllRoomsRecords;
finally
Screen.Cursor := oldcur;
sb1.Panels[0].Text:='完成。';
end;end;procedure TfrmMain.mnuOptionClick(Sender: TObject);
begin
with TfrmOption.Create(self) do
begin
ShowModal;
free;
end;
InitpmnuDBlist; //这句是什么意思?
end;procedure TfrmMain.InitpmnuDBlist; //什么功能?
var
i:integer;
MenuItem:TMenuItem;
begin
with pmnuDBlist do
begin
Items.Clear;
for i := 0 to DsList.Count - 1 do
begin
MenuItem := TMenuItem.Create(Self);
MenuItem.Caption := DsList.Items[i].Name;
MenuItem.OnClick := OnpmnuDBClick;
Items.Add(MenuItem);
end; end;end;
procedure TfrmMain.OnpmnuDBClick(Sender: TObject); //什么功能?
var
i:integer;
InitStr:string;
begin
i := TMenuItem(Sender).MenuIndex;
InitStr := DsList.Items[i].connstr;
DM1.InitDB(InitStr);
Init;
DsList.SetFirst(i);
InitpmnuDBlist;
// ShowMessage(inttostr(i));
end;
initialization
OleInitialize(nil); //????finalization
OleUninitialize; //???????end.