📄 fr_odacdb.pas
字号:
//////////////////////////////////////////////////
// FastReport v2.4 - ODAC components
// Copyright (c) 2006 Core Lab. All right reserved.
// Database component
// Created:
// Last modified:
//////////////////////////////////////////////////
unit FR_ODACDB;
interface
{$I FR.inc}
uses
Windows, Messages, SysUtils, Classes, Graphics, FR_Class, StdCtrls,
Controls, Forms, Menus, Dialogs, DB, Ora, OdacVcl;
type
TfrODACComponents = class(TComponent) // fake component
end;
TfrODACDatabase = class(TfrNonVisualControl)
private
FDatabase: TOraSession;
protected
procedure SetPropValue(Index: String; Value: Variant); override;
function GetPropValue(Index: String): Variant; override;
function DoMethod(MethodName: String; Par1, Par2, Par3: Variant): Variant; override;
public
constructor Create; override;
destructor Destroy; override;
procedure LoadFromStream(Stream: TStream); override;
procedure SaveToStream(Stream: TStream); override;
procedure DefineProperties; override;
property Database: TOraSession read FDatabase;
end;
implementation
uses FR_Utils, FR_Const, FR_DBLookupCtl, OraCall, FR_ODACQuery, FR_ODACTable
{$IFDEF Delphi6}
, Variants
{$ENDIF};
{$R FR_ODAC.RES}
{ TfrODACDatabase }
constructor TfrODACDatabase.Create;
begin
inherited Create;
FDatabase := TOraSession.Create(frDialogForm);
Component := FDatabase;
BaseName := 'Session';
Bmp.LoadFromResourceName(hInstance, 'FR_ODACDB');
Flags := Flags or flDontUndo;
end;
destructor TfrODACDatabase.Destroy;
begin
FDatabase.Free;
inherited Destroy;
end;
procedure TfrODACDatabase.DefineProperties;
function GetServerNames: String;
var List: TStringList;
i: integer;
begin
List:=TStringList.Create;
try
if not OCIInited then
InitOCI;
GetOraServerList(List, OracleHomePath, True, True, False);
for i := 0 to List.Count - 1 do
Result := Result + List[i] + ';';
finally
List.Free;
end;
end;
begin
inherited DefineProperties;
AddProperty('Connected', [frdtBoolean], nil);
AddProperty('ConnectPrompt', [frdtBoolean], nil);
AddEnumProperty('Server', GetServerNames, [Null]);
AddProperty('Password', [frdtString], nil);
AddProperty('Username', [frdtString], nil);
end;
procedure TfrODACDatabase.SetPropValue(Index: String; Value: Variant);
begin
inherited SetPropValue(Index, Value);
Index := AnsiUpperCase(Index);
if Index = 'SERVER' then
FDatabase.Server := Value
else if Index = 'CONNECTED' then
FDatabase.Connected := Value
else if Index = 'CONNECTPROMPT' then
FDatabase.ConnectPrompt := Value
else if Index = 'PASSWORD' then
FDatabase.Password := Value
else if Index = 'USERNAME' then
FDatabase.Username := Value
end;
function TfrODACDatabase.GetPropValue(Index: String): Variant;
begin
Index := AnsiUpperCase(Index);
Result := inherited GetPropValue(Index);
if Result <> Null then Exit;
if Index = 'SERVER' then
Result := FDatabase.Server
else if Index = 'CONNECTED' then
Result := FDatabase.Connected
else if Index = 'CONNECTPROMPT' then
Result := FDatabase.ConnectPrompt
else if Index = 'PASSWORD' then
Result := FDatabase.Password
else if Index = 'USERNAME' then
Result := FDatabase.Username
end;
function TfrODACDatabase.DoMethod(MethodName: String; Par1, Par2, Par3: Variant): Variant;
begin
end;
procedure TfrODACDatabase.LoadFromStream(Stream: TStream);
var
s: String;
begin
inherited LoadFromStream(Stream);
s := frReadString(Stream);
if s <> '' then
FDatabase.Server := s;
FDatabase.Username:= frReadString(Stream);
s := frReadString(Stream);
if s <> '' then
FDatabase.Password := s;
FDatabase.ConnectPrompt := frReadBoolean(Stream);
FDatabase.Connected := frReadBoolean(Stream);
end;
procedure TfrODACDatabase.SaveToStream(Stream: TStream);
begin
inherited SaveToStream(Stream);
frWriteString(Stream, FDatabase.Server);
frWriteString(Stream, FDatabase.Username);
frWriteString(Stream, FDatabase.Password);
frWriteBoolean(Stream, FDatabase.ConnectPrompt);
frWriteBoolean(Stream, FDatabase.Connected);
end;
var
BmpDB, BmpQuery, BmpTable: TBitmap;
initialization
BmpDB := TBitmap.Create;
BmpDB.LoadFromResourceName(hInstance, 'FR_ODACDBCONTROL');
frRegisterControl(TfrODACDatabase, BmpDB, IntToStr(SInsertDB));
BmpQuery := TBitmap.Create;
BmpQuery.LoadFromResourceName(hInstance, 'FR_ODACQUERYCONTROL');
frRegisterControl(TfrODACQuery, BmpQuery, IntToStr(SInsertQuery));
BmpTable := TBitmap.Create;
BmpTable.LoadFromResourceName(hInstance, 'FR_ODACTABLECONTROL');
frRegisterControl(TfrODACTable, BmpTable, IntToStr(SInsertTable));
finalization
frUnRegisterObject(TfrODACDatabase);
BmpDB.Free;
frUnRegisterObject(TfrODACQuery);
BmpQuery.Free;
frUnRegisterObject(TfrODACTable);
BmpTable.Free;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -