📄 publicunit.~pas
字号:
WriteString('RDescription', 'ReportTitleDeclare', ReportTitleDeclare);
WriteString('RDescription', 'ReportEndDeclare', ReportEndDeclare);
WriteString('RDescription', 'ReportBuilder', ReportBuilder);
WriteString('RDescription', 'ReportOthers', ReportOthers);
WriteString('RHeadFoot', 'ReportPageHead', ReportPageHead);
WriteString('RHeadFoot', 'ReportPageFoot', ReportPageFoot);
WriteBool('RFrameLine', 'AddHGrid', AddHGrid);
WriteBool('RFrameLine', 'AddSGrid', AddSGrid);
WriteBool('RNo', 'AddNo', AddNo);
WriteBool('RFrameLine', 'TopFrameLine', TopFrameLine);
WriteBool('RFrameLine', 'BottomFrameLine', BottomFrameLine);
WriteBool('RFrameLine', 'LeftFrameLine', LeftFrameLine);
WriteBool('RFrameLine', 'RightFrameLine', RightFrameLine);
WriteBool('RPageNoDate', 'ReportPageNumber', ReportPageNumber);
WriteBool('RPageNoDate', 'ReportPrintDate', ReportPrintDate);
WriteInteger('RHeight', 'ReportBodyHeadRowHeight', ReportBodyHeadRowHeight);
WriteInteger('RHeight', 'ReportBodyRowHeight', ReportBodyRowHeight);
WriteInteger('RHeight', 'ReportPageFootHeight', ReportPageFootHeight);
WriteInteger('ROrientation', 'ReportOrientation', Ord(ReportOrientation));
WriteInteger('RPageLineNumber', 'PageLinesNumber', PageLinesNumber);
for i := 0 to ReportBodyColsWidth.Count - 1 do
WriteString('RColWidth', 'Col' + IntToStr(i), ReportBodyColsWidth[i]);
for i := 0 to ReportBodyColsWidth.Count - 1 do
WriteInteger('RColAlignment', 'ColAlignment' + IntToStr(i),
Ord(ReportBodyAlignment[i]));
WriteInteger('RMargin', 'Top', ReportPageTopMargin);
WriteInteger('RMargin', 'Bottom', ReportPageBottomMargin);
WriteInteger('RMargin', 'Left', ReportPageLeftMargin);
WriteInteger('RMargin', 'Right', ReportPageRightMargin);
WriteString('RFont', 'ReportNameFontName', ReportNameFont.Name);
WriteInteger('RFont', 'ReportNameFontSize', ReportNameFont.Size);
WriteString('RFont', 'ReportTitleDeclareFontName',
ReportTitleDeclareFont.Name);
WriteInteger('RFont', 'ReportTitleDeclareFontSize',
ReportTitleDeclareFont.Size);
WriteString('RFont', 'ReportHeadFontName', ReportHeadFont.Name);
WriteInteger('RFont', 'ReportHeadFontSize', ReportHeadFont.Size);
WriteString('RFont', 'ReportBodyFontName', ReportBodyFont.Name);
WriteInteger('RFont', 'ReportBodyFontSize', ReportBodyFont.Size);
WriteString('RFont', 'ReportEndDeclareFontName', ReportEndDeclareFont.Name);
WriteInteger('RFont', 'ReportEndDeclareFontSize',
ReportEndDeclareFont.Size);
WriteString('RFont', 'ReportPageHeadFontName', ReportPageHeadFont.Name);
WriteInteger('RFont', 'ReportPageHeadFontSize', ReportPageHeadFont.Size);
WriteString('RFont', 'ReportPageFootFontName', ReportPageFootFont.Name);
WriteInteger('RFont', 'ReportPageFootFontSize', ReportPageFootFont.Size);
end;
end;
procedure CreateReportInstance(MyPageDesign: TPageDesign; TemplateName: string);
var
i: integer;
TempIni: TIniFile;
OrientationOrd: integer;
AlignmentOrd: integer;
begin
// if CPrintPreviewADOQuery=nil then Exit ;
TempIni := TIniFile.Create(WholePathOfReportFile(TemplateName));
with TempIni, MyPageDesign do
begin
ReportName := ReadString('RDescription', 'ReportName', ReportName);
ReportTitleDeclare := ReadString('RDescription', 'ReportTitleDeclare',
ReportTitleDeclare);
ReportEndDeclare := ReadString('RDescription', 'ReportEndDeclare',
ReportEndDeclare);
ReportBuilder := ReadString('RDescription', 'ReportBuilder', ReportBuilder);
ReportOthers := ReadString('RDescription', 'ReportOthers', ReportOthers);
ReportPageHead := ReadString('RHeadFoot', 'ReportPageHead', ReportPageHead);
ReportPageFoot := ReadString('RHeadFoot', 'ReportPageFoot', ReportPageFoot);
AddHGrid := ReadBool('RFrameLine', 'AddHGrid', AddHGrid);
AddSGrid := ReadBool('RFrameLine', 'AddSGrid', AddSGrid);
AddNo := ReadBool('RNo', 'AddNo', AddNo);
TopFrameLine := ReadBool('RFrameLine', 'TopFrameLine', TopFrameLine);
BottomFrameLine := ReadBool('RFrameLine', 'BottomFrameLine',
BottomFrameLine);
LeftFrameLine := ReadBool('RFrameLine', 'LeftFrameLine', LeftFrameLine);
RightFrameLine := ReadBool('RFrameLine', 'RightFrameLine', RightFrameLine);
ReportPageNumber := ReadBool('RPageNoDate', 'ReportPageNumber',
ReportPageNumber);
ReportPrintDate := ReadBool('RPageNoDate', 'ReportPrintDate',
ReportPrintDate);
ReportBodyHeadRowHeight := ReadInteger('RHeight', 'ReportBodyHeadRowHeight',
ReportBodyHeadRowHeight);
ReportBodyRowHeight := ReadInteger('RHeight', 'ReportBodyRowHeight',
ReportBodyRowHeight);
ReportPageFootHeight := ReadInteger('RHeight', 'ReportPageFootHeight',
ReportPageFootHeight);
OrientationOrd := ReadInteger('ROrientation', 'ReportOrientation',
OrientationOrd);
ReportOrientation := TPagePrintOrientation(OrientationOrd);
PageLinesNumber := ReadInteger('RPageLineNumber', 'PageLinesNumber',
PageLinesNumber);
for i := 0 to ReportBodyColsWidth.Count - 1 do
ReportBodyColsWidth[i] := ReadString('RColWidth', 'Col' + IntToStr(i),
ReportBodyColsWidth[i]);
for i := 0 to ReportBodyColsWidth.Count - 1 do
begin
AlignmentOrd := ReadInteger('RColAlignment', 'ColAlignment' + IntToStr(i),
AlignmentOrd);
ReportBodyAlignment[i] := TAlignment(AlignmentOrd);
end;
ReportPageTopMargin := ReadInteger('RMargin', 'Top', ReportPageTopMargin);
ReportPageBottomMargin := ReadInteger('RMargin', 'Bottom',
ReportPageBottomMargin);
ReportPageLeftMargin := ReadInteger('RMargin', 'Left',
ReportPageLeftMargin);
ReportPageRightMargin := ReadInteger('RMargin', 'Right',
ReportPageRightMargin);
ReportNameFont.Name := ReadString('RFont', 'ReportNameFontName',
ReportNameFont.Name);
ReportNameFont.Size := ReadInteger('RFont', 'ReportNameFontSize',
ReportNameFont.Size);
ReportTitleDeclareFont.Name := ReadString('RFont',
'ReportTitleDeclareFontName', ReportTitleDeclareFont.Name);
ReportTitleDeclareFont.Size := ReadInteger('RFont',
'ReportTitleDeclareFontSize', ReportTitleDeclareFont.Size);
ReportHeadFont.Name := ReadString('RFont', 'ReportHeadFontName',
ReportHeadFont.Name);
ReportHeadFont.Size := ReadInteger('RFont', 'ReportHeadFontSize',
ReportHeadFont.Size);
ReportBodyFont.Name := ReadString('RFont', 'ReportBodyFontName',
ReportBodyFont.Name);
ReportBodyFont.Size := ReadInteger('RFont', 'ReportBodyFontSize',
ReportBodyFont.Size);
ReportEndDeclareFont.Name := ReadString('RFont', 'ReportEndDeclareFontName',
ReportEndDeclareFont.Name);
ReportEndDeclareFont.Size := ReadInteger('RFont',
'ReportEndDeclareFontSize', ReportEndDeclareFont.Size);
ReportPageHeadFont.Name := ReadString('RFont', 'ReportPageHeadFontName',
ReportPageHeadFont.Name);
ReportPageHeadFont.Size := ReadInteger('RFont', 'ReportPageHeadFontSize',
ReportPageHeadFont.Size);
ReportPageFootFont.Name := ReadString('RFont', 'ReportPageFootFontName',
ReportPageFootFont.Name);
ReportPageFootFont.Size := ReadInteger('RFont', 'ReportPageFootFontSize',
ReportPageFootFont.Size);
end;
end;
function ExistDTable(ConStr: WideString; TTable: string): boolean;
var
ADOQuery: TADOQuery;
DTable: string;
begin
DTable := 'D' + Copy(TTable, 2, Length(TTable) - 1);
ADOQuery := TADOQuery.Create(Application);
with ADOQuery do
begin
ConnectionString := ConStr;
SQL.Clear;
SQL.Add('select name from sysobjects where name=' + QuotedStr(DTable));
Open;
if ADOQuery.RecordCount = 0 then
Result := False
else
Result := True;
Close;
Free;
end;
end;
procedure GetFieldsName(var FieldsID: TStrings; var FNames: TStrings; DBGrid:
TDBGrid);
var
i: Integer;
begin
FNames.Clear;
FieldsID.Clear;
if DBGrid.Columns.Count = 0 then
Exit;
for i := 0 to DBGrid.Columns.Count - 1 do
begin
FNames.Add(DBGrid.Columns[i].FieldName);
FieldsID.Add(IntToStr(DBGrid.Columns[i].ID));
end;
end;
function GetSelectClause(ADOQuery: TADOQuery): string;
begin
Result := Copy(ADOQuery.SQL.Text, 1, Pos('From', ADOQuery.SQL.Text) - 1);
end;
function GetOtherClauseWithoutSelect(ADOQuery: TADOQuery): string;
begin
Result := EmptyStr + Copy(ADOQuery.SQL.Text, Pos('From', ADOQuery.SQL.Text),
Length(ADOQuery.SQL.Text) - Pos('From', ADOQuery.SQL.Text) + 1);
end;
procedure ResetADOQueryClause(ADOQuery: TADOQuery; FieldsID, FieldsName:
TStrings; DBGrid: TDBGrid);
var
SelectClause: string;
OtherClause: string;
i: integer;
ColumnID: string;
begin
OtherClause := GetOtherClauseWithoutSelect(ADOQuery);
for i := 0 to DBGrid.Columns.Count - 2 do
begin
ColumnID := IntToStr(DBGrid.Columns[i].ID);
SelectClause := SelectClause + FieldsName[FieldsID.IndexOf(ColumnID)] + ',';
end;
ColumnID := IntToStr(DBGrid.Columns[i].ID);
SelectClause := 'select ' + SelectClause +
FieldsName[FieldsID.IndexOf(ColumnID)];
with ADOQuery do
begin
Close;
SQL.Clear;
SQL.Add(SelectClause);
SQL.Add(OtherClause);
Open;
end;
end;
{-------------------------------------------------------------------------------------}
function GetTableEName(CName: string): string;
var
ti: TInifile;
EName: string;
begin
ti := TInifile.Create(ExtractFilePath(Application.ExeName) + '\System.ini');
EName := ti.ReadString('TableEName', CName, '');
ti.Free;
if EName = '' then
with GQ_FDataModule do
begin
ADOConnection1.Close;
ADOConnection1.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=True;Password=' +
FrmMain.DBPass
+ ';User ID=' + FrmMain.DBUser + ';Initial Catalog=' + FrmMain.DbName +
';Data Source=' + FrmMain.ServerName;
ADOConnection1.Open;
with ADOQuery3 do
begin
Close;
Sql.Clear;
Sql.Add('Select *');
Sql.Add('From ForSaveTable');
Sql.Add('Where SaveCView=''' + CName + '''');
try
Open;
except
ShowMessage('视图索引表受到破坏!');
Exit;
end;
if RecordCount <> 0 then
EName := FieldByName('SaveView').Asstring;
Close;
end;
ADOConnection1.Close;
end;
if EName = '' then
EName := CName;
Result := EName;
end;
function GetTableCName(EName: string): string;
var
ti: TInifile;
CName: string;
begin
EName := TrimRight(EName);
ti := TInifile.Create(ExtractFilePath(Application.ExeName) + '\System.ini');
CName := ti.ReadString('TableCName', EName, '');
ti.Free;
if CName = '' then
with GQ_FDataModule do
begin
ADOConnection1.Close;
ADOConnection1.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=True;Password=' +
FrmMain.DBPass
+ ';User ID=' + FrmMain.DBUser + ';Initial Catalog=' + FrmMain.DbName +
';Data Source=' + FrmMain.ServerName;
ADOConnection1.Open;
with ADOQuery3 do
begin
Close;
Sql.Clear;
Sql.Add('Select *');
Sql.Add('From ForSaveTable');
Sql.Add('Where Lower(SaveView)=''' + LowerCase(EName) + '''');
try
Open;
except
ShowMessage('视图索引表受到破坏!');
Exit;
end;
if RecordCount <> 0 then
CName := FieldByName('SaveCView').Asstring;
Close;
end;
ADOConnection1.Close;
end;
if CName = '' then
CName := EName;
Result := CName;
end;
function ReadFieldCName(CServerName, CDataBaseName, CTableName: string;
var FieldNameE, FieldNameC: TStrings): Boolean;
var
DCTableName, ss: string;
ADOQuery: TADOQuery;
begin
Result := False;
Screen.Cursor := crHourGlass;
if CTableName = '' then
Exit;
DCTableName := 'D' + Copy(CTableName, 2, 1000);
ADOQuery := TADOQuery.Create(Application);
with ADOQuery do
begin
ss := 'Provider=SQLOLEDB.1;Persist Security Info=False;Password=' +
PublicUnit.DBPass + ';User ID=' + PublicUnit.DBUser + ';Initial Catalog=';
ss := ss + PublicUnit.DbName + ';Data Source=' + PublicUnit.ServerName;
ConnectionString := ss;
Sql.Add('Select *');
Sql.Add('From "' + DCTableName + '"');
try
Open;
except
Screen.Cursor := crDefault;
Free;
Exit;
end;
FieldNameE.Clear;
FieldNameC.Clear;
while not Eof do
begin
FieldNameE.Add(TrimRight(FieldByName('FieldNameE').AsString));
FieldNameC.Add(TrimRight(FieldByName('FieldNameC').AsString));
Next;
end;
Close;
Free;
end;
Result := True;
Screen.Cursor := crDefault;
end;
function CheckDBServer(DbServerName: string): Boolean;
var
ADOConnection: TADOConnection;
begin
Result := False;
ADOConnection := TADOConnection.Create(Application);
ADOConnection.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=' +
Publicunit.DBUser
+ ';Password=' + PublicUnit.DBPass + ';Initial Catalog=' + Publicunit.DbName
+
';Data Source=' + DbServerName;
ADOConnection.LoginPrompt := False;
try
ADOConnection.Open;
Result := True;
except
ShowMessage('您所选择的服务器无法连接,系统无法正常工作!');
end;
ADOConnection.Close;
ADOConnection.Free;
end;
function SetDisplayMode(X, Y: word): Boolean;
var
lpDevMode: TDeviceMode;
begin
Result := EnumDisplaySettings(nil, 0, lpDevMode);
if Result then
begin
lpDevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT;
lpDevMode.dmPelsWidth := X;
lpDevMode.dmPelsHeight := Y;
Result := ChangeDisplaySettings(lpDevMode, 0) = DISP_CHANGE_SUCCESSFUL;
end;
end;
function GetScreenWidth(): longint;
begin
Result := GetDeviceCaps(hinstance, HORZRES);
end;
function GetScreenHeight(): longint;
begin
Result := GetDeviceCaps(hinstance, VERTSIZE);
end;
{-----------------------------------------加密函数---------------}
function EncryFunc(ss: string): string;
var
i: integer;
s: string;
begin
s := '';
for i := 1 to Length(ss) do
s := s + Chr(Ord(ss[i]) + 3);
Result := s;
end;
{------------------------------------解密函数----------------------------------}
function UnEncryFunc(ss: string): string;
var
i: Integer;
s: string;
begin
s := '';
for i := 1 to Length(ss) do
s := s + Chr(Ord(ss[i]) - 3);
Result := s;
end;
{----------------------------注册数据库用户名与口令----------------------}
function ReadFromRegist(var username: string; var password: string): Boolean;
var
Reg: TRegistry;
begin
Result := False;
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
Reg.OpenKey('\Software\yahui', False);
username := Reg.ReadString('user');
password := Reg.ReadString('pass');
if UnEncryFunc(Trim(username)) = '' then
Exit;
if UnEncryFunc(Trim(password)) = '' then
Exit;
username := UnEncryFunc(Trim(username));
password := UnEncryFunc(Trim(password));
finally
Reg.CloseKey;
Reg.Free;
end;
Result := True;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -