亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fr_bdedb.pas

?? 工廠進銷存系統(tǒng),包括權限管理
?? PAS
字號:

{******************************************}
{                                          }
{     FastReport v2.4 - BDE components     }
{            Database component            }
{                                          }
{ Copyright (c) 1998-2001 by Tzyganenko A. }
{                                          }
{******************************************}

unit FR_BDEDB;

interface

{$I FR.inc}

uses
  Windows, Messages, SysUtils, Classes, Graphics, FR_Class, StdCtrls,
  Controls, Forms, Menus, Dialogs, DB, DBTables;

type
  TfrBDEComponents = class(TComponent) // fake component
  end;

  TfrBDEDatabase = class(TfrNonVisualControl)
  private
    FDatabase: TDatabase;
    procedure LinesEditor(Sender: TObject);
  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: TDatabase read FDatabase;
  end;


implementation

uses FR_Utils, FR_Const, FR_LEdit, FR_DBLookupCtl, FR_BDETable, FR_BDEQuery
{$IFDEF Delphi6}
, Variants
{$ENDIF};

{$R FR_BDE.RES}


{ TfrBDEDatabase }

constructor TfrBDEDatabase.Create;
begin
  inherited Create;
  FDatabase := TDataBase.Create(frDialogForm);
  Component := FDatabase;
  BaseName := 'Database';
  Bmp.LoadFromResourceName(hInstance, 'FR_BDEDB');
  Flags := Flags or flDontUndo;
end;

destructor TfrBDEDatabase.Destroy;
begin
  FDatabase.Free;
  inherited Destroy;
end;

procedure TfrBDEDatabase.DefineProperties;

  function GetAliasNames: String;
  var
    i: Integer;
    sl: TStringList;
  begin
    Result := '';
    sl := TStringList.Create;
    Session.GetAliasNames(sl);
    sl.Sort;
    for i := 0 to sl.Count - 1 do
      Result := Result + sl[i] + ';';
    sl.Free;
  end;

  function GetDriverNames: String;
  var
    i, j: Integer;
    sl: TStringList;
    s: String;
  begin
    Result := '';
    sl := TStringList.Create;
    Session.GetDriverNames(sl);
    sl.Sort;
    for i := 0 to sl.Count - 1 do
    begin
      s := sl[i];
      for j := 1 to Length(s) do
        if s[j] = ';' then
          s[j] := ',';
      Result := Result + s + ';';
    end;
    sl.Free;
  end;

begin
  inherited DefineProperties;
  AddEnumProperty('AliasName', GetAliasNames, [Null]);
  AddProperty('Connected', [frdtBoolean], nil);
  AddProperty('DatabaseName', [frdtString], nil);
  AddEnumProperty('DriverName', GetDriverNames, [Null]);
  AddProperty('LoginPrompt', [frdtBoolean], nil);
  AddProperty('Params', [frdtHasEditor, frdtOneObject], LinesEditor);
  AddProperty('Params.Count', [], nil);
end;

procedure TfrBDEDatabase.SetPropValue(Index: String; Value: Variant);
begin
  inherited SetPropValue(Index, Value);
  Index := AnsiUpperCase(Index);
  if Index = 'DATABASENAME' then
    FDatabase.DatabaseName := Value
  else if Index = 'DRIVERNAME' then
    FDatabase.DriverName := Value
  else if Index = 'LOGINPROMPT' then
    FDatabase.LoginPrompt := Value
  else if Index = 'CONNECTED' then
    FDatabase.Connected := Value
  else if Index = 'ALIASNAME' then
    FDatabase.AliasName := Value
  else if Index = 'PARAMS' then
    FDatabase.Params.Text := Value
end;

function TfrBDEDatabase.GetPropValue(Index: String): Variant;
begin
  Index := AnsiUpperCase(Index);
  Result := inherited GetPropValue(Index);
  if Result <> Null then Exit;
  if Index = 'DATABASENAME' then
    Result := FDatabase.DatabaseName
  else if Index = 'DRIVERNAME' then
    Result := FDatabase.DriverName
  else if Index = 'LOGINPROMPT' then
    Result := FDatabase.LoginPrompt
  else if Index = 'CONNECTED' then
    Result := FDatabase.Connected
  else if Index = 'ALIASNAME' then
    Result := FDatabase.AliasName
  else if Index = 'PARAMS.COUNT' then
    Result := FDatabase.Params.Count
  else if Index = 'PARAMS' then
    Result := FDatabase.Params.Text
end;

function TfrBDEDataBase.DoMethod(MethodName: String; Par1, Par2, Par3: Variant): Variant;
begin
  Result := inherited DoMethod(MethodName, Par1, Par2, Par3);
  if Result = Null then
    Result := LinesMethod(FDataBase.Params, MethodName, 'PARAMS', Par1, Par2, Par3);
end;

procedure TfrBDEDatabase.LoadFromStream(Stream: TStream);
var
  s: String;
begin
  inherited LoadFromStream(Stream);
  FDatabase.DatabaseName := frReadString(Stream);
  s := frReadString(Stream);
  if s <> '' then
    FDatabase.AliasName := s;
  s := frReadString(Stream);
  if s <> '' then
    FDatabase.DriverName := s;
  FDatabase.LoginPrompt := frReadBoolean(Stream);
  frReadMemo(Stream, FDatabase.Params);
  FDatabase.Connected := frReadBoolean(Stream);
end;

procedure TfrBDEDatabase.SaveToStream(Stream: TStream);
begin
  inherited SaveToStream(Stream);
  frWriteString(Stream, FDatabase.DatabaseName);
  frWriteString(Stream, FDatabase.AliasName);
  frWriteString(Stream, FDatabase.DriverName);
  frWriteBoolean(Stream, FDatabase.LoginPrompt);
  frWriteMemo(Stream, FDatabase.Params);
  frWriteBoolean(Stream, FDatabase.Connected);
end;

procedure TfrBDEDatabase.LinesEditor(Sender: TObject);
var
  sl: TStringList;
  SaveConnected: Boolean;
begin
  sl := TStringList.Create;
  try
    Session.GetAliasParams(FDatabase.AliasName, sl);
  except;
  end;
  with TfrLinesEditorForm.Create(nil) do
  begin
    if FDatabase.Params.Text = '' then
      M1.Text := sl.Text else
      M1.Text := FDatabase.Params.Text;
    if (ShowModal = mrOk) and ((Restrictions and frrfDontModify) = 0) and
      M1.Modified then
    begin
      SaveConnected := FDatabase.Connected;
      FDatabase.Connected := False;
      FDatabase.Params.Text := M1.Text;
      FDatabase.Connected := SaveConnected;
      frDesigner.Modified := True;
    end;
    Free;
  end;
  sl.Free;
end;


var
  Bmp: TBitmap;

initialization
  Bmp := TBitmap.Create;
  Bmp.LoadFromResourceName(hInstance, 'FR_BDEDBCONTROL');
  frRegisterControl(TfrBDEDatabase, Bmp, IntToStr(SInsertDB));

finalization
  frUnRegisterObject(TfrBDEDatabase);
  Bmp.Free;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品乱码妇女bbbb| 国内精品久久久久影院色| 精品一区二区三区影院在线午夜 | 欧美午夜精品一区二区蜜桃 | 91免费看视频| 日韩你懂的电影在线观看| 亚洲美女偷拍久久| 国产乱码精品一区二区三区av| 精品视频123区在线观看| 国产精品大尺度| 国产精品99久久久久久似苏梦涵 | 国产成人超碰人人澡人人澡| 777亚洲妇女| 亚洲国产美女搞黄色| 99综合影院在线| 日本一区二区三级电影在线观看| 蜜桃久久久久久久| 制服丝袜亚洲网站| 亚洲国产一二三| 色婷婷一区二区三区四区| 日本一二三不卡| 国产永久精品大片wwwapp| 日韩免费在线观看| 琪琪久久久久日韩精品| 欧美日韩国产小视频在线观看| 欧美一区二区三区四区视频| 色偷偷久久一区二区三区| 久久影院午夜片一区| 日日夜夜精品视频免费| 欧美色视频在线| 亚洲国产中文字幕| 91久久精品一区二区二区| 亚洲欧美电影一区二区| 91免费视频网| 亚洲日本一区二区三区| 97精品久久久久中文字幕| 亚洲视频一区二区在线观看| jlzzjlzz亚洲女人18| 国产精品久久久久久久久果冻传媒| 高清不卡在线观看| 国产精品国产三级国产aⅴ原创| 成人免费看黄yyy456| 国产精品网站导航| 成人免费的视频| 国产精品乱子久久久久| 成人动漫av在线| 日韩理论片网站| 日本大香伊一区二区三区| 一区二区三区在线观看动漫| 欧美日韩国产一级| 美女在线视频一区| 久久久午夜精品| 丁香婷婷综合五月| 综合分类小说区另类春色亚洲小说欧美 | 丰满岳乱妇一区二区三区| 精品国产伦一区二区三区观看体验| 国产精品亚洲成人| 天堂va蜜桃一区二区三区| 18欧美亚洲精品| 欧美一区二区三区四区在线观看| 欧美专区日韩专区| 亚洲成人激情av| 91精品国产一区二区三区| 裸体健美xxxx欧美裸体表演| 欧美精品一区视频| 成人精品一区二区三区四区| 亚洲欧洲成人精品av97| 欧美视频完全免费看| 美女一区二区三区在线观看| 国产香蕉久久精品综合网| 91在线一区二区三区| 亚洲国产精品一区二区www在线| 欧美一区二区女人| 国产成人精品影院| 亚洲精品中文在线观看| 3d动漫精品啪啪一区二区竹菊| 激情久久五月天| 1024成人网| 这里只有精品视频在线观看| 国产一区二区三区国产| 午夜欧美一区二区三区在线播放| 欧美三级视频在线观看| 午夜精品福利一区二区三区蜜桃| 日韩一区二区三区四区 | 日韩午夜电影在线观看| 国产成人久久精品77777最新版本| 亚洲裸体xxx| 欧美一二三四区在线| 高清视频一区二区| 午夜天堂影视香蕉久久| 久久久久久久久久电影| 色婷婷国产精品| 六月婷婷色综合| 亚洲欧美色图小说| 精品美女一区二区三区| 91黄色小视频| 国产剧情一区二区| 五月激情六月综合| 亚洲国产成人在线| 日韩一二三四区| 91黄色免费看| 国产乱码精品一区二区三| 亚洲自拍偷拍欧美| 久久精品免费在线观看| 精品视频在线免费看| 成人在线视频一区| 男男视频亚洲欧美| 亚洲黄色小视频| 国产人久久人人人人爽| 欧美精品久久99久久在免费线 | 51久久夜色精品国产麻豆| 国产美女视频91| 亚洲高清中文字幕| 国产精品久久久久久久裸模| 欧美成人欧美edvon| 欧洲一区在线观看| 国产999精品久久久久久绿帽| 日韩精品福利网| 亚洲免费高清视频在线| 久久精品视频免费| 日韩欧美一二三四区| 欧美日韩一区二区电影| 色综合欧美在线视频区| 国产福利一区二区三区在线视频| 日本中文字幕一区| 亚洲主播在线播放| 中文字幕一区二区三区不卡在线| wwwwww.欧美系列| 欧美一级高清大全免费观看| 欧美综合天天夜夜久久| 成人免费看视频| 国产精品18久久久| 国产一区二区三区黄视频| 麻豆成人免费电影| 日本午夜精品一区二区三区电影| 亚洲最新在线观看| 亚洲视频小说图片| 国产精品日韩成人| 国产欧美日韩亚州综合| 久久久www成人免费毛片麻豆| 日韩一区二区免费电影| 在线成人午夜影院| 宅男在线国产精品| 欧美日韩国产一二三| 国产ts人妖一区二区| 日本女优在线视频一区二区| 亚洲在线成人精品| 一区二区三区中文字幕| 亚洲免费观看高清完整版在线观看| 中文字幕一区二区三区四区| 中文字幕在线观看不卡| 国产精品免费视频网站| 国产精品久久久久久久久图文区 | 91精品麻豆日日躁夜夜躁| 欧美日韩一区二区电影| 欧美老肥妇做.爰bbww视频| 欧美人伦禁忌dvd放荡欲情| 欧美丝袜第三区| 欧美日韩日日骚| 337p亚洲精品色噜噜狠狠| 欧美一区二区在线看| 日韩一区二区电影| 精品国产乱码久久久久久牛牛| 精品国产免费人成电影在线观看四季| 精品噜噜噜噜久久久久久久久试看| 精品免费视频一区二区| www国产成人| 国产精品久久久久久亚洲毛片| 国产精品久久久久久久久晋中| 亚洲伦在线观看| 香蕉乱码成人久久天堂爱免费| 日韩和欧美一区二区三区| 免费观看30秒视频久久| 黄页视频在线91| 国产98色在线|日韩| 一道本成人在线| 欧美日韩精品一区二区三区四区| 91精品国产综合久久久久| 精品日韩99亚洲| 国产欧美日韩在线看| 亚洲另类一区二区| 亚洲一区二区三区四区在线| 日韩福利视频导航| 麻豆精品新av中文字幕| 福利电影一区二区三区| 99久久综合精品| 欧美亚洲免费在线一区| 日韩一区二区免费在线电影| 欧美激情在线免费观看| 亚洲精品中文字幕乱码三区| 日韩av网站在线观看| 国产在线视频一区二区三区| a级精品国产片在线观看| 欧美探花视频资源| 久久午夜老司机| 亚洲最新视频在线观看| 精品一区二区国语对白| 97久久精品人人做人人爽| 在线播放一区二区三区| 久久久精品天堂|