📄 webmain.pas
字号:
{
To make this sample work:
1. Be sure to compile and register the Join2 server
2. Compile and copy the EXE/DLL to a script-capable directory (e.g. c:\inetpub\scripts)
3. Place the join.htm file in a directory on your web server
4. Access the join.htm file in your browser
}
unit WebMain;
interface
uses
Windows, Messages, SysUtils, Classes, HTTPApp, DBWeb, Db, DBClient,
MConnect, DSProd;
type
TWebModule1 = class(TWebModule)
dcJoin: TDCOMConnection;
cdsJoin: TClientDataSet;
dstpJoin: TDataSetTableProducer;
dsppJoin: TDataSetPageProducer;
ppSuccess: TPageProducer;
ppError: TPageProducer;
procedure WebModuleBeforeDispatch(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
procedure WebModule1waListAction(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
procedure dstpJoinFormatCell(Sender: TObject; CellRow,
CellColumn: Integer; var BgColor: THTMLBgColor;
var Align: THTMLAlign; var VAlign: THTMLVAlign; var CustomAttrs,
CellData: String);
procedure WebModule1waEditAction(Sender: TObject; Request: TWebRequest;
Response: TWebResponse; var Handled: Boolean);
procedure dsppJoinHTMLTag(Sender: TObject; Tag: TTag;
const TagString: String; TagParams: TStrings;
var ReplaceText: String);
procedure WebModule1waUpdateAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
private
{ Private declarations }
DataFields : TStrings;
public
{ Public declarations }
end;
var
WebModule1: TWebModule1;
implementation
{$R *.DFM}
procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
with Request do
case MethodType of
mtPost: DataFields:=ContentFields;
mtGet: DataFields:=QueryFields;
end;
end;
function LocalServerPath(sFile : string = '') : string;
var
FN: array[0..MAX_PATH- 1] of char;
sPath : shortstring;
begin
SetString(sPath, FN, GetModuleFileName(hInstance, FN, SizeOf(FN)));
Result := ExtractFilePath( sPath ) + ExtractFileName( sFile );
end;
procedure TWebModule1.WebModule1waListAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
cdsJoin.Open;
Response.Content := dstpJoin.Content;
end;
procedure TWebModule1.dstpJoinFormatCell(Sender: TObject; CellRow,
CellColumn: Integer; var BgColor: THTMLBgColor; var Align: THTMLAlign;
var VAlign: THTMLVAlign; var CustomAttrs, CellData: String);
begin
if (CellRow > 0) and (CellColumn = 0) then
CellData := Format('<a href="%s/getrecord?empno=%s">%s</a>',
[Request.ScriptName, CellData, CellData]);
end;
procedure TWebModule1.WebModule1waEditAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
dsppJoin.HTMLFile := LocalServerPath('join.htm');
cdsJoin.Filter := 'EmpNo = ' + DataFields.Values['empno'];
cdsJoin.Filtered := true;
Response.Content := dsppJoin.Content;
end;
procedure TWebModule1.dsppJoinHTMLTag(Sender: TObject; Tag: TTag;
const TagString: String; TagParams: TStrings; var ReplaceText: String);
begin
if CompareText(TagString, 'SCRIPTNAME')=0 then
ReplaceText:=Request.ScriptName;
end;
procedure TWebModule1.WebModule1waUpdateAction(Sender: TObject;
Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
EmpNo, LastName, FirstName, HireDate, Salary, Vacation: string;
begin
EmpNo:=DataFields.Values['EmpNo'];
LastName:=DataFields.Values['LastName'];
FirstName:=DataFields.Values['FirstName'];
HireDate:=DataFields.Values['HireDate'];
Salary:=DataFields.Values['Salary'];
Vacation:=DataFields.Values['Vacation'];
cdsJoin.Open;
if cdsJoin.Locate('EMPNO', EmpNo, []) then
begin
cdsJoin.Edit;
cdsJoin.FieldByName('LastName').AsString:=LastName;
cdsJoin.FieldByName('FirstName').AsString:=FirstName;
cdsJoin.FieldByName('HireDate').AsString:=HireDate;
cdsJoin.FieldByName('Salary').AsString:=Salary;
cdsJoin.FieldByName('Vacation').AsString:=Vacation;
if cdsJoin.ApplyUpdates(0)=0 then
Response.Content:=ppSuccess.Content else
Response.Content:=pPError.Content;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -