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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? myldbedit.pas

?? 一個(gè)本地database引擎,支持中文T_Sql查詢,兼容DELPHI標(biāo)準(zhǔn)數(shù)據(jù)庫控件
?? PAS
字號(hào):
unit MYLDBEdit;

interface

uses
 Classes, Db, Dialogs, Forms, SysUtils,
 MYLDBFldLinks, MYLDBMain, MYLDBConst,
 {$IFDEF DEBUG_LOG}
 MYLDBDebug,
 {$ENDIF}
  DesignIntf, DesignEditors, Variants
 ;

 type

////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBFieldLinkProperty
//
////////////////////////////////////////////////////////////////////////////////


  TMYLDBFieldLinkProperty = class(TMYLDBBaseFieldLinkProperty)
  private
    FTable: TMYLDBTable;
  protected
    procedure GetFieldNamesForIndex(List: TStrings); override;
    function GetIndexBased: Boolean; override;
    function GetIndexDefs: TIndexDefs; override;
    function GetIndexFieldNames: string; override;
    function GetIndexName: string; override;
    function GetMasterFields: string; override;
    procedure SetIndexFieldNames(const Value: string); override;
    procedure SetIndexName(const Value: string); override;
    procedure SetMasterFields(const Value: string); override;
  public
    procedure Edit; override;

    property IndexBased: Boolean read GetIndexBased;
    property IndexDefs: TIndexDefs read GetIndexDefs;
    property IndexFieldNames: string read GetIndexFieldNames write SetIndexFieldNames;
    property IndexName: string read GetIndexName write SetIndexName;
    property MasterFields: string read GetMasterFields write SetMasterFields;

  end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBDBStringProperty
//
////////////////////////////////////////////////////////////////////////////////


  TMYLDBDBStringProperty = class(TStringProperty)
  public
    function GetAttributes: TPropertyAttributes; override;
    procedure GetValueList(List: TStrings); virtual;
    procedure GetValues(Proc: TGetStrProc); override;
  end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBIndexFieldNamesProperty
//
////////////////////////////////////////////////////////////////////////////////


  // editor for indexFieldNames property
  TMYLDBIndexFieldNamesProperty = class(TMYLDBDBStringProperty)
  public
    procedure GetValueList(List: TStrings); override;
  end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBIndexNameProperty
//
////////////////////////////////////////////////////////////////////////////////


  // editor for indexName property
  TMYLDBIndexNameProperty = class(TMYLDBDBStringProperty)
  public
    procedure GetValueList(List: TStrings); override;
  end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBTableNameProperty
//
////////////////////////////////////////////////////////////////////////////////


  // editor for TableName property
  TMYLDBTableNameProperty = class(TMYLDBDBStringProperty)
  public
    procedure GetValueList(List: TStrings); override;
  end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBDatabaseNameProperty
//
////////////////////////////////////////////////////////////////////////////////


  // editor for DatabaseName property
  TMYLDBDatabaseNameProperty = class(TMYLDBDBStringProperty)
  public
    procedure GetValueList(List: TStrings); override;
  end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBDatabaseFileNameProperty
//
////////////////////////////////////////////////////////////////////////////////


 // file open dialog - for selecting database file name
 TMYLDBDatabaseFileNameProperty = class (TStringProperty)
   public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
   end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBSessionNameProperty
//
////////////////////////////////////////////////////////////////////////////////


 // TMYLDBSessionNameProperty
 TMYLDBSessionNameProperty = class(TMYLDBDBStringProperty)
   public
      procedure GetValueList(List: TStrings); override;
   end;


function GetPropertyValue(Instance: TPersistent; const PropName: string): TPersistent;


implementation

uses TypInfo;

////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBFieldLinkProperty
//
////////////////////////////////////////////////////////////////////////////////


procedure TMYLDBFieldLinkProperty.GetFieldNamesForIndex(List: TStrings);
var
  i: Integer;
begin
  for i := 0 to FTable.IndexFieldCount - 1 do
    List.Add(FTable.IndexFields[i].FieldName);
end;

function TMYLDBFieldLinkProperty.GetIndexBased: Boolean;
begin
  Result := True;
end;

function TMYLDBFieldLinkProperty.GetIndexDefs: TIndexDefs;
begin
  Result := FTable.IndexDefs;
end;

function TMYLDBFieldLinkProperty.GetIndexFieldNames: string;
begin
  Result := FTable.IndexFieldNames;
end;

function TMYLDBFieldLinkProperty.GetIndexName: string;
begin
  Result := FTable.IndexName;
end;

function TMYLDBFieldLinkProperty.GetMasterFields: string;
begin
  Result := FTable.MasterFields;
end;

procedure TMYLDBFieldLinkProperty.SetIndexFieldNames(const Value: string);
begin
  FTable.IndexFieldNames := Value;
end;

procedure TMYLDBFieldLinkProperty.SetIndexName(const Value: string);
begin
  FTable.IndexName := Value;
end;

procedure TMYLDBFieldLinkProperty.SetMasterFields(const Value: string);
begin
  FTable.MasterFields := Value;
end;

procedure TMYLDBFieldLinkProperty.Edit;
var
  Table:  TMYLDBTable;
  s :     String;
begin
  Table := DataSet as TMYLDBTable;
  FTable := TMYLDBTable.Create(nil);
  try
    FTable.DatabaseName := Table.DatabaseName;
    FTable.SessionName := Table.SessionName;
    FTable.InMemory := Table.InMemory;
    FTable.Temporary := Table.Temporary;
    FTable.TableName := Table.TableName;
    FTable.ReadOnly := Table.ReadOnly;
    FTable.FieldDefs.Assign(Table.FieldDefs);
    FTable.IndexDefs.Assign(Table.IndexDefs);
    FTable.AdvFieldDefs.Assign(Table.AdvFieldDefs);
    FTable.AdvIndexDefs.Assign(Table.AdvIndexDefs);

{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBFieldLinkProperty.Edit 0');
{$ENDIF}
    FTable.Open;
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBFieldLinkProperty.Edit 1');
{$ENDIF}
    if (Table.IndexFieldNames <> '') then
     FTable.IndexFieldNames := Table.IndexFieldNames
    else
     FTable.IndexName := Table.IndexName;
    FTable.MasterFields := Table.MasterFields;
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBFieldLinkProperty.Edit 2');
{$ENDIF}
    inherited Edit;
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBFieldLinkProperty.Edit 3');
{$ENDIF}
   if Changed then
    begin
      Table.MasterFields := FTable.MasterFields;
      if FTable.IndexFieldNames <> '' then
       begin
        // index field names
        Table.IndexFieldNames := FTable.IndexFieldNames;
        s := FTable.IndexFieldNames;
       end
      else
       begin
        // index name
        Table.IndexName := FTable.IndexName;
        s := FTable.IndexName;
       end;
    end;
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBFieldLinkProperty.Edit 4');
{$ENDIF}
  finally
    FTable.Free;
  end;
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBFieldLinkProperty.Edit finish');
{$ENDIF}
end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBDBStringProperty
//
////////////////////////////////////////////////////////////////////////////////


function TMYLDBDBStringProperty.GetAttributes: TPropertyAttributes;
begin
  Result := [paValueList, paSortList, paMultiSelect];
end;

procedure TMYLDBDBStringProperty.GetValueList(List: TStrings);
begin
end;

procedure TMYLDBDBStringProperty.GetValues(Proc: TGetStrProc);
var
  I:      Integer;
  Values: TStringList;
begin
  Values := TStringList.Create;
  try
    GetValueList(Values);
    for I := 0 to Values.Count - 1 do
      Proc(Values[I]);
  finally
    Values.Free;
  end;
end;


function GetIndexDefs(Component: TPersistent): TIndexDefs;
var
  DataSet: TMYLDBTable;
  a : Boolean;
begin
  Result := nil;
  DataSet := Component as TMYLDBTable;
  if (Dataset.Exists) then
    begin
      a := DataSet.Active;
      if (not a) then
       DataSet.Open;
      Result := GetPropertyValue(DataSet, 'IndexDefs') as TIndexDefs;
      if Assigned(Result) then
      begin
        Result.Updated := False;
        Result.Update;
      end;
      if (not a) then
       DataSet.Close;
    end;
end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBIndexFieldNamesProperty
//
////////////////////////////////////////////////////////////////////////////////


procedure TMYLDBIndexFieldNamesProperty.GetValueList(List: TStrings);
var
  I: Integer;
  IndexDefs: TIndexDefs;
begin
  try
    IndexDefs := GetIndexDefs(GetComponent(0));
    if (IndexDefs <> nil) then
      for I := 0 to IndexDefs.Count - 1 do
        with IndexDefs[I] do
          if (Options * [ixExpression, ixDescending] = []) and (Fields <> '') then
            List.Add(Fields);
  except
  end;
end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBIndexNameProperty
//
////////////////////////////////////////////////////////////////////////////////


procedure TMYLDBIndexNameProperty.GetValueList(List: TStrings);
var
  IndexDefs: TIndexDefs;
begin
  try
    IndexDefs := GetIndexDefs(GetComponent(0));
    if (IndexDefs <> nil) then
      IndexDefs.GetItemNames(List);
  except
  end;
end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBTableNameProperty
//
////////////////////////////////////////////////////////////////////////////////


procedure TMYLDBTableNameProperty.GetValueList(List: TStrings);
var
  Table: TMYLDBTable;
begin
  Table := TMYLDBTable(GetComponent(0));
  try
    Table.DBSession.GetTableNames(Table.DatabaseName, List);
  except
  end;
end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBDatabaseNameProperty
//
////////////////////////////////////////////////////////////////////////////////


procedure TMYLDBDatabaseNameProperty.GetValueList(List: TStrings);
begin
 TMYLDBDataset(GetComponent(0)).GetDatabaseNameList(List);
end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBDatabaseFileNameProperty
//
////////////////////////////////////////////////////////////////////////////////


//------------------------------------------------------------------------------
// file name editor (extension is subtracted from name)
//------------------------------------------------------------------------------
procedure TMYLDBDatabaseFileNameProperty.Edit;
var
  td : TOpenDialog;
begin
 td := TOpenDialog.Create(Application);
 td.Options := [ofFileMustExist];
 td.Filter := 'MYLDBolute Database (*'+MYLDBDatabaseFileExtension+')|*'+MYLDBDatabaseFileExtension;
 if (td.Execute) then
   SetStrValue(td.FileName);
 td.Free;
end; // Edit


//------------------------------------------------------------------------------
// file name editor's attributes (paDialog - for ... button in design mode)
//------------------------------------------------------------------------------
function TMYLDBDatabaseFileNameProperty.GetAttributes: TPropertyAttributes;
begin
  Result := [paDialog, paRevertable];
end; // GetAttributes




////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBSessionNameProperty
//
////////////////////////////////////////////////////////////////////////////////


//------------------------------------------------------------------------------
//  TMYLDBSession names
//------------------------------------------------------------------------------
procedure TMYLDBSessionNameProperty.GetValueList(List: TStrings);
begin
  Sessions.GetSessionNames(List);
end;

{ Utility Functions }

function GetPropertyValue(Instance: TPersistent; const PropName: string): TPersistent;
var
  PropInfo: PPropInfo;
begin
  Result := nil;
  PropInfo := TypInfo.GetPropInfo(Instance.ClassInfo, PropName);
  if (PropInfo <> nil) and (PropInfo^.PropType^.Kind = tkClass) then
    Result := TObject(GetOrdProp(Instance, PropInfo)) as TPersistent;
end;


end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99久久婷婷国产综合精品电影| 成人国产亚洲欧美成人综合网| 国产精品女同互慰在线看| 捆绑调教美女网站视频一区| 欧美日韩的一区二区| 国产在线看一区| 国产精品久久久久久久久久久免费看| 日本韩国视频一区二区| 青娱乐精品视频在线| 欧美一激情一区二区三区| 色一情一乱一乱一91av| 国产成人综合网| 日韩不卡手机在线v区| 一区二区日韩电影| 中文字幕不卡一区| 精品动漫一区二区三区在线观看| 欧美日韩色综合| 972aa.com艺术欧美| 国产成人精品一区二区三区网站观看| 日本不卡的三区四区五区| 亚洲综合在线五月| 18成人在线视频| 国产免费观看久久| 久久综合国产精品| 日韩欧美成人一区| 欧美一区二区啪啪| 欧美日本在线播放| 欧美日韩一级二级三级| 在线亚洲高清视频| 色婷婷一区二区| 久草中文综合在线| 美女在线一区二区| 亚洲综合av网| 久久夜色精品一区| 欧美精品一区二区三区蜜臀| 4438成人网| 欧美日韩成人高清| 欧美日韩国产精品成人| 欧美日韩国产经典色站一区二区三区| 欧美色综合天天久久综合精品| 91精品国产aⅴ一区二区| 欧美日精品一区视频| 欧美丝袜自拍制服另类| 欧美日韩中文国产| 欧美精品久久一区二区三区| 欧美视频一二三区| 在线不卡一区二区| 欧美精品乱人伦久久久久久| 日韩欧美在线1卡| 精品久久人人做人人爽| 2023国产精品自拍| 国产亚洲人成网站| 国产精品久久久久久久久免费丝袜 | 粉嫩aⅴ一区二区三区四区五区| 国产一区二区三区四| 国产成人在线看| 成人美女视频在线观看18| 99久久99久久精品免费观看| 色婷婷久久99综合精品jk白丝 | 日韩亚洲欧美成人一区| 欧美一级高清大全免费观看| 精品国产乱码久久久久久牛牛 | 久久国产夜色精品鲁鲁99| 国产最新精品免费| 99麻豆久久久国产精品免费 | 日韩免费一区二区三区在线播放| 精品国产麻豆免费人成网站| 亚洲五码中文字幕| 日韩电影在线观看一区| 久久不见久久见中文字幕免费| 国产精品一区免费在线观看| 成人激情校园春色| 欧美日韩一二区| 欧美精品一区二区精品网| 国产精品久久毛片av大全日韩| 91精品国产aⅴ一区二区| 国产精品污网站| 国产欧美日韩另类一区| 九九九精品视频| 欧美精选午夜久久久乱码6080| 亚洲美女视频在线| 成人黄色综合网站| 久久久久久久久伊人| 日本欧美一区二区三区| 在线观看一区二区视频| 亚洲女人的天堂| 99热国产精品| 国产精品伦理在线| 国产成人av一区| 久久精品一区二区三区av| 久久疯狂做爰流白浆xx| 91精品国产综合久久福利软件| 亚洲国产综合在线| 欧美性生活影院| 一区二区不卡在线视频 午夜欧美不卡在| 成人一区二区三区在线观看| 久久欧美一区二区| 国内精品视频666| 久久综合色之久久综合| 久久99久久久欧美国产| 欧美本精品男人aⅴ天堂| 久久99热99| 欧美精品一区二区三区蜜桃视频| 久久99久久99精品免视看婷婷| 欧美一卡二卡在线观看| 美国一区二区三区在线播放| 欧美一区二区视频网站| 美女视频黄a大片欧美| 日韩视频一区二区三区| 精品制服美女丁香| 337p粉嫩大胆色噜噜噜噜亚洲 | 麻豆91在线播放| 精品国产免费一区二区三区香蕉| 久久99国产精品久久99果冻传媒| 精品国产91亚洲一区二区三区婷婷| 毛片基地黄久久久久久天堂| 精品国产免费久久| 成人免费看片app下载| 亚洲三级视频在线观看| 欧美午夜精品电影| 日av在线不卡| 久久精品夜色噜噜亚洲aⅴ| 成人夜色视频网站在线观看| 亚洲天堂免费看| 欧美综合天天夜夜久久| 日韩av午夜在线观看| 欧美精品一区二区三区高清aⅴ| 国产成人精品综合在线观看| 亚洲人一二三区| 91精品国产乱| 国产成人亚洲综合a∨猫咪| 亚洲天堂中文字幕| 91精品国产综合久久香蕉的特点| 韩国v欧美v亚洲v日本v| 成人免费一区二区三区在线观看 | 成人av资源下载| 国产综合久久久久影院| 欧美性视频一区二区三区| 欧美性猛交xxxx黑人交| 日韩精品一区二区三区四区| 亚洲欧美日韩中文播放| 97se亚洲国产综合自在线| 亚洲www啪成人一区二区麻豆| 欧美α欧美αv大片| 成人av高清在线| 五月天精品一区二区三区| 久久久www免费人成精品| 99精品视频在线播放观看| 青青草精品视频| 337p亚洲精品色噜噜狠狠| 国产精品嫩草影院com| 亚洲欧美另类小说视频| 日韩国产欧美三级| 欧美肥妇bbw| 精品国产亚洲一区二区三区在线观看| 91在线免费视频观看| 在线不卡的av| 一区二区日韩av| 欧美在线你懂的| 日本一区中文字幕| 在线观看91精品国产入口| 一级日本不卡的影视| 欧美中文字幕久久| 国产精品麻豆视频| 欧美精选一区二区| 亚洲成人先锋电影| 日韩限制级电影在线观看| 一区二区三区资源| 91视频在线观看免费| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲人精品一区| 日韩亚洲电影在线| 欧美伊人精品成人久久综合97| 狂野欧美性猛交blacked| 玉足女爽爽91| 国产校园另类小说区| 欧美一区二区三区四区视频| 91美女在线观看| 国产精品亚洲专一区二区三区| 日韩精品91亚洲二区在线观看| 亚洲视频一区二区免费在线观看| 久久综合色播五月| 日韩欧美色综合| 9191精品国产综合久久久久久| 97久久超碰精品国产| 成人黄色小视频| 国产一区二区三区综合| 青青草成人在线观看| 亚洲国产人成综合网站| 国产精品久久久久久久久动漫| 欧美一区三区二区| 欧美三级中文字幕在线观看| 91色综合久久久久婷婷| 成人一道本在线| 国产成人午夜视频| 捆绑紧缚一区二区三区视频| 欧美日韩aaa| 亚洲国产精品久久人人爱蜜臀| 成人免费在线观看入口| 国产精品卡一卡二|