?? u_public.~pas
字號:
unit u_public;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, DBGrids, DBClient, DB, Registry, winsock;
type
TCurrentParam = record
userAliasName: string;
LoginTime: string;
Host: string;
IP: string;
userBH: string;
userName: string;
userZH: string;
end;
//=====
function ShowMDIForm(aFormClass: TFormClass): TForm;
//===
procedure ShowModalForm(aFormClass: TFormClass);
//==
procedure DbGridSort(dbgrid: TDBGrid; Column: TColumn);
//===
function ConnectAppServ: boolean;
//==
function GetComputerName: string;
//==
function GetComputerIP: string;
//===輔助錄入窗口,得到職工的姓名
function GetEmployeeName: string;
//==輔助錄入窗口,得到部門名稱
function GetDeptName: string;
//==輔助錄入窗口,得到工程項目名稱
function GetProjectName: string;
var
CurrentParam: TCurrentParam;
psIndexName: string; //
plAscend: Boolean;
implementation
uses main, WzglDB, U_ljsz, U_fzlr_zgxm, U_bmda_fzlr,
U_fzlr_gcxmda;
function showMDIForm(aFormClass: TFormClass): TForm;
begin
frmMain.statusbar1.Panels[0].text := '正在打開窗口,請稍侯...';
frmMain.statusbar1.refresh;
screen.Cursor := crHourGlass;
lockwindowupdate(frmMain.handle);
result := aFormClass.Create(Application);
with result do
begin
WindowState := wsMaximized;
frmMain.statusbar1.Panels[0].text := '';
frmMain.statusbar1.refresh;
show;
lockwindowupdate(0);
screen.Cursor := crDefault;
end;
end;
procedure ShowModalForm(aFormClass: TFormClass);
begin
frmMain.statusbar1.Panels[0].text := '正在打開窗口,請稍侯...';
frmMain.statusbar1.refresh;
screen.Cursor := crHourGlass;
with aFormClass.Create(Application) do
begin
frmMain.statusbar1.Panels[0].text := '';
frmMain.statusbar1.refresh;
screen.Cursor := crDefault;
try
showModal;
finally
free;
end;
end;
end;
function ConnectAppServ: boolean; //判斷是否連接上了應用服務器
var
vs_Host, vs_Address, vs_Port: string;
reg: TRegistry;
begin
Result := True;
reg := Tregistry.create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
frmMain.SocketConnection.Connected := false;
//讀取注冊表配置的應用服務器信息
if Reg.OpenKey('\Software\物資管理', False) then
begin
vs_Host := reg.ReadString('Host');
vs_Address := reg.ReadString('Address');
vs_Port := reg.readstring('Port');
try
//測試連接
with frmMain do
begin
SocketConnection.Address := vs_Address;
SocketConnection.Host := vs_Host;
SocketConnection.Port := strtoint(vs_Port);
SocketConnection.Connected := true;
end;
reg.closekey;
except //未連接上,彈出配置窗口
reg.closekey;
if not LjszExecute(TfrmLjsz) then
Result := False;
end;
end
else
begin
if not LjszExecute(TfrmLjsz) then //如果沒有注冊信息,彈出配置窗口
Result := False;
end;
end;
procedure DbGridSort(dbgrid: TDBGrid; Column: TColumn);
var
//本模塊使用到的psIndexName, plAscend兩個變量見上定義
mode: char; //記錄是“升序”還是“降序”
ColName: string; //記錄當前字段名
iCol: Integer; //記錄當前列號
begin
with dbgrid.DataSource.DataSet as Tclientdataset do //Table0
begin
//檢測當前工作表是否已打開
if not Active
then begin
Application.MessageBox('工作表尚未打開!', '停止', MB_OK + MB_ICONSTOP);
Abort
end;
//檢測當前字段是否“能排序”。以下字段類型不能排序
case Column.Field.DataType of
ftBoolean,
ftBytes,
ftBlob, //Binary
ftMemo,
ftGraphic,
ftFmtMemo, //Formatted memo
ftParadoxOle: //OLE
begin
Abort
end;
end; //case
mode := '0';
iCol := Column.Field.FieldNo - 1;
try
ColName := Column.fieldname;
if psIndexName = Column.fieldname then
begin //與原來同列
if plAscend //升序
then begin
mode := '2';
IndexName := ColName + '2'; //應“降序”
end
else begin
mode := '1';
IndexName := ColName + '1'; //應“升序”
end;
plAscend := not plAscend;
end
else begin //新列
IndexName := ColName + '2';
plAscend := false;
psIndexName := ColName;
end;
except
on EDatabaseError do //若未有索引,則重新建立
begin
//以下新建索引
IndexName := '';
if mode = '1'
then AddIndex(ColName + '1', ColName, [], '', '', 0) //
else //包括'0'
AddIndex(ColName + '2', ColName, [ixDescending], '', '', 0);
try //try 1
if mode <> '1'
then begin
mode := '2'; //轉換
plAscend := false;
end
else plAscend := true;
IndexName := ColName + mode;
psIndexName := ColName;
except
IndexName := '';
end //try 2
end
end;
first;
end; //with
dbgrid.SelectedIndex := iCol;
end;
{獲取本地計算機主機名}
function GetComputerName: string;
var
pcComputer: PChar;
dwCSize: DWORD;
begin
dwCSize := MAX_COMPUTERNAME_LENGTH + 1;
result := '';
GetMem(pcComputer, dwCSize);
try
if Windows.GetComputerName(pcComputer, dwCSize) then
Result := pcComputer;
finally
FreeMem(pcComputer);
end;
end;
///////////////獲取本地計算機的IP地址
function GetComputerIP: string;
var
ch: array[1..32] of Char;
i: Integer;
WSData: TWSAData;
MyHost: PHostEnt;
S_IP: string;
begin
if WSAstartup(2, wsdata) <> 0 then
EXIT;
if getHostName(@ch[1], 32) <> 0 then
EXIT;
MyHost := GetHostByName(@ch[1]);
if MyHost = nil then
EXIT
else
begin
for i := 1 to 4 do
begin
S_IP := S_IP + inttostr(Ord(MyHost.h_addr^[i - 1]));
if i < 4 then
S_IP := S_IP + '.';
end;
end;
RESULT := S_IP;
end;
/////////////
//===輔助錄入窗口,得到職工的姓名
function GetEmployeeName: string;
begin
//創建TfrmZgda_fzlr窗體對象
with TfrmZgda_fzlr.Create(Application) do
begin
pub_zgxm := '';
try
//模式顯示窗口
showModal;
finally
free;
end;
result := pub_zgxm;
end;
end;
//===輔助錄入窗口,得到部門的名稱
function GetDeptName: string;
begin
with TfrmBmda_fzlr.Create(Application) do
begin
pub_Bmmc := '';
try
showModal;
finally
free;
end;
result := pub_Bmmc;
end;
end;
//==輔助錄入窗口,得到工程項目名稱
function GetProjectName: string;
begin
with TfrmGcxmdy_fzlr.Create(Application) do
begin
pub_Gcxmmc := '';
try
showModal;
finally
free;
end;
result := pub_Gcxmmc;
end;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -