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

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

?? myldbfldlinks.pas

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標準數據庫控件
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit MYLDBFldLinks;

interface

{$I MYLDBVER.Inc}

uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms,
  StdCtrls, ExtCtrls, DB, Buttons,

  // MYLDBoluteDatabase Unit

  MYLDBExcept,
  MYLDBConst,
  {$IFDEF DEBUG_LOG}
  MYLDBDebug,
  {$ENDIF}

 {$IFDEF D6H}
  DesignIntf, DesignEditors;
 {$ELSE}
  DSGNINTF;
 {$ENDIF}

type


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBBaseFieldLinkProperty
//
////////////////////////////////////////////////////////////////////////////////


  TMYLDBBaseFieldLinkProperty = class(TStringProperty)
  private
    FChanged: Boolean;
    FDataSet: TDataSet;
  protected
    function GetDataSet: TDataSet;
    procedure GetFieldNamesForIndex(List: TStrings); virtual;
    function GetIndexBased: Boolean; virtual;
    function GetIndexDefs: TIndexDefs; virtual;
    function GetIndexFieldNames: string; virtual;
    function GetIndexName: string; virtual;
    function GetMasterFields: string; virtual; Abstract;
    procedure SetIndexFieldNames(const Value: string); virtual;
    procedure SetIndexName(const Value: string); virtual;
    procedure SetMasterFields(const Value: string); virtual; Abstract;
  public
    constructor CreateWith(ADataSet: TDataSet); virtual;
    procedure GetIndexNames(List: TStrings);
    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;
    property Changed: Boolean read FChanged;
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
    property DataSet: TDataSet read GetDataSet;
  end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBLinkFields
//
////////////////////////////////////////////////////////////////////////////////


  TMYLDBLinkFields = class(TForm)
    DetailList: TListBox;
    MasterList: TListBox;
    BindList: TListBox;
    Label30: TLabel;
    Label31: TLabel;
    IndexList: TComboBox;
    IndexLabel: TLabel;
    Label2: TLabel;
    Bevel1: TBevel;
    Bevel2: TBevel;
    AddButton: TButton;
    DeleteButton: TButton;
    ClearButton: TButton;
    Button1: TButton;
    Button2: TButton;
    Help: TButton;
    procedure FormCreate(Sender: TObject);
    procedure BindingListClick(Sender: TObject);
    procedure AddButtonClick(Sender: TObject);
    procedure DeleteButtonClick(Sender: TObject);
    procedure BindListClick(Sender: TObject);
    procedure ClearButtonClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure HelpClick(Sender: TObject);
    procedure IndexListChange(Sender: TObject);
  private
    FDataSet: TDataSet;
    FMasterDataSet: TDataSet;
    FDataSetProxy: TMYLDBBaseFieldLinkProperty;
    FFullIndexName: string;
    MasterFieldList: string;
    IndexFieldList: string;
    OrderedDetailList: TStringList;
    OrderedMasterList: TStringList;
    procedure OrderFieldList(OrderedList, List: TStrings);
    procedure AddToBindList(const Str1, Str2: string);
    procedure Initialize;
    property FullIndexName: string read FFullIndexName;
    procedure SetDataSet(Value: TDataSet);
  public
    property DataSet: TDataSet read FDataSet write SetDataSet;
    property DataSetProxy: TMYLDBBaseFieldLinkProperty read FDataSetProxy write FDataSetProxy;
    function Edit: Boolean;
  end;

function EditMasterFields(ADataSet: TDataSet; ADataSetProxy: TMYLDBBaseFieldLinkProperty): Boolean;

implementation

{$R *.DFM}

uses Dialogs, DBConsts, LibHelp, TypInfo;

{ Utility Functions }

function StripFieldName(const Fields: string; var Pos: Integer): string;
var
  i: Integer;
begin
  i := Pos;
  while ((i <= Length(Fields)) and (Fields[I] <> ';')) do
    Inc(i);
  Result := Copy(Fields, Pos, i - Pos);
  if (i <= Length(Fields)) and (Fields[i] = ';') then
    Inc(i);
  Pos := i;
end;

function StripDetail(const Value: string): string;
var
  S: String;
  i: Integer;
begin
  S := Value;
  i := 0;
  while Pos('->', S) > 0 do
   begin
    i := Pos('->', S);
    S[i] := ' ';
   end;
  Result := Copy(Value, 0, i - 2);
end;

function StripMaster(const Value: string): string;
var
  S: String;
  i: Integer;
begin
  S := Value;
  i := 0;
  while Pos('->', S) > 0 do
   begin
    i := Pos('->', S);
    S[i] := ' ';
   end;
  Result := Copy(Value, i + 3, Length(Value));
end;

function EditMasterFields(ADataSet: TDataSet; ADataSetProxy: TMYLDBBaseFieldLinkProperty): Boolean;
begin
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('EditMasterFields start');
{$ENDIF}
  with TMYLDBLinkFields.Create(nil) do
   try
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('EditMasterFields 1');
{$ENDIF}
    DataSetProxy := ADataSetProxy;
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('EditMasterFields 2');
{$ENDIF}
    DataSet := ADataSet;
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('EditMasterFields 3');
{$ENDIF}
    Result := Edit;
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('EditMasterFields 4');
{$ENDIF}
   finally
    Free;
   end;
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('EditMasterFields finish');
{$ENDIF}
end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBBaseFieldLinkProperty
//
////////////////////////////////////////////////////////////////////////////////


function TMYLDBBaseFieldLinkProperty.GetIndexBased: Boolean;
begin
  Result := False;
end;

function TMYLDBBaseFieldLinkProperty.GetIndexDefs: TIndexDefs;
begin
  Result := nil;
end;

function TMYLDBBaseFieldLinkProperty.GetIndexFieldNames: string;
begin
  Result := '';
end;

function TMYLDBBaseFieldLinkProperty.GetIndexName: string;
begin
  Result := '';
end;

procedure TMYLDBBaseFieldLinkProperty.GetIndexNames(List: TStrings);
var
  i: Integer;
begin
  if (IndexDefs <> nil) then
    for i := 0 to IndexDefs.Count - 1 do
      List.Add(IndexDefs.Items[i].Name);
end;

procedure TMYLDBBaseFieldLinkProperty.GetFieldNamesForIndex(List: TStrings);
begin
end;

procedure TMYLDBBaseFieldLinkProperty.SetIndexFieldNames(const Value: string);
begin
end;

procedure TMYLDBBaseFieldLinkProperty.SetIndexName(const Value: string);
begin
end;

function TMYLDBBaseFieldLinkProperty.GetAttributes: TPropertyAttributes;
begin
  Result := [paDialog];
end;

procedure TMYLDBBaseFieldLinkProperty.Edit;
begin
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBBaseFieldLinkProperty.Edit start');
{$ENDIF}
  FChanged := EditMasterFields(DataSet, Self);
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBBaseFieldLinkProperty.Edit 1');
{$ENDIF}
  if (FChanged) then
   begin
    Modified;
   end;
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBBaseFieldLinkProperty.Edit finish');
{$ENDIF}
end;

constructor TMYLDBBaseFieldLinkProperty.CreateWith(ADataSet: TDataSet);
begin
  FDataSet := ADataSet;
end;

function TMYLDBBaseFieldLinkProperty.GetDataSet: TDataSet;
begin
  if (FDataSet) = nil then
    FDataSet := TDataSet(GetComponent(0));
  Result := FDataSet;
end;


////////////////////////////////////////////////////////////////////////////////
//
// TMYLDBLinkFields
//
////////////////////////////////////////////////////////////////////////////////


procedure TMYLDBLinkFields.FormCreate(Sender: TObject);
begin
  OrderedDetailList := TStringList.Create;
  OrderedMasterList := TStringList.Create;
  HelpContext := hcDFieldLinksDesign;
end;

procedure TMYLDBLinkFields.FormDestroy(Sender: TObject);
begin
  OrderedDetailList.Free;
  OrderedMasterList.Free;
end;

function TMYLDBLinkFields.Edit;
begin
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBLinkFields.Edit start');
{$ENDIF}
  Initialize;
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBLinkFields.Edit 0');
{$ENDIF}
  if (ShowModal = mrOK) then
   begin
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBLinkFields.Edit 1');
{$ENDIF}
    if (FullIndexName <> '') then
      DataSetProxy.IndexName := FullIndexName
    else
      DataSetProxy.IndexFieldNames := IndexFieldList;
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBLinkFields.Edit 2');
{$ENDIF}
    DataSetProxy.MasterFields := MasterFieldList;
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBLinkFields.Edit 3');
{$ENDIF}
    Result := True;
   end
  else
   Result := False;
{$IFDEF DEBUG_TRACE_DATASET}
aaWriteToLog('TMYLDBLinkFields.Edit finish');
{$ENDIF}
end;

procedure TMYLDBLinkFields.SetDataSet(Value: TDataSet);
var
  IndexDefs: TIndexDefs;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区在线观看| 日韩激情中文字幕| 日本一区二区三区高清不卡| 精品国产乱码久久久久久浪潮| 欧美一区二区三区四区在线观看| 欧美日韩精品电影| 在线播放91灌醉迷j高跟美女| 欧美老肥妇做.爰bbww| 欧美日韩国产天堂| 欧美日韩精品一二三区| 337p亚洲精品色噜噜| 欧美日本一区二区在线观看| 欧美日韩电影在线| 日韩一区二区三区在线| 欧美成人r级一区二区三区| 精品久久久久香蕉网| 久久久久久久精| 国产精品国产三级国产| 亚洲天堂av一区| 亚洲一区二区在线免费看| 亚洲第一电影网| 舔着乳尖日韩一区| 激情欧美一区二区三区在线观看| 国内成人免费视频| 成人国产精品免费观看动漫| 91在线视频18| 欧美精品一二三| 欧美变态tickling挠脚心| 国产欧美综合在线观看第十页| 国产精品精品国产色婷婷| 亚洲一区二区美女| 免费成人小视频| 国产成人精品免费视频网站| 91麻豆国产福利在线观看| 欧洲亚洲精品在线| 日韩欧美一区二区久久婷婷| 久久精子c满五个校花| 国产精品久久久99| 午夜国产精品影院在线观看| 韩国成人精品a∨在线观看| 成人黄页毛片网站| 欧美日韩高清一区二区不卡| 久久久一区二区三区| 一卡二卡欧美日韩| 久久99精品一区二区三区三区| 北岛玲一区二区三区四区| 欧美剧情片在线观看| 久久综合国产精品| 一区二区三区资源| 国模娜娜一区二区三区| 91麻豆国产自产在线观看| 欧美电影免费观看高清完整版在| 亚洲欧美一区二区在线观看| 免费欧美高清视频| 91在线视频观看| 精品国免费一区二区三区| 亚洲欧美另类久久久精品| 另类小说色综合网站| 91首页免费视频| 久久久久一区二区三区四区| 一区二区三区久久久| 国产麻豆精品95视频| 欧美日韩国产成人在线免费| 中文字幕av一区二区三区免费看| 日韩电影免费一区| 在线这里只有精品| 国产欧美一区二区精品仙草咪| 日韩激情视频在线观看| 色偷偷久久一区二区三区| 2022国产精品视频| 亚洲成人黄色小说| 99精品偷自拍| 久久久精品影视| 亚洲不卡av一区二区三区| www.综合网.com| 精品国产a毛片| 三级亚洲高清视频| 日本福利一区二区| 国产精品无圣光一区二区| 久久精品99国产精品| 欧美一区二区三区视频在线| 亚洲影视资源网| 91在线视频18| 亚洲欧洲日产国码二区| 国产成人一级电影| 久久这里只有精品首页| 久久精品理论片| 91麻豆精品国产91久久久久 | 午夜精品影院在线观看| 色综合天天视频在线观看| 欧美韩日一区二区三区四区| 久久成人免费网站| 91精品国产综合久久婷婷香蕉| 亚洲综合视频在线| 一本久道中文字幕精品亚洲嫩| 国产精品免费网站在线观看| 高清成人免费视频| 久久蜜桃av一区精品变态类天堂| 久久66热re国产| 日韩精品一区二区三区视频| 看电影不卡的网站| 欧美电影免费观看完整版| 捆绑调教一区二区三区| 日韩免费看的电影| 久热成人在线视频| 精品国产电影一区二区| 久久国产综合精品| 欧美精品一区二区蜜臀亚洲| 精品中文av资源站在线观看| 精品日韩99亚洲| 极品瑜伽女神91| 国产亚洲欧美日韩日本| 国内成+人亚洲+欧美+综合在线| 久久免费偷拍视频| 国产成人啪免费观看软件| 中文字幕av一区 二区| 91免费看`日韩一区二区| 亚洲精品中文在线| 欧美日韩小视频| 奇米精品一区二区三区在线观看| 日韩午夜中文字幕| 国产一区在线观看麻豆| 日本一区二区三区四区在线视频| 不卡一区在线观看| 一区二区三区中文免费| 在线播放亚洲一区| 国产一区二区视频在线播放| 国产精品亲子伦对白| 色天天综合久久久久综合片| 五月综合激情婷婷六月色窝| 日韩一区二区高清| 国产福利一区二区三区视频在线 | 久久久久久久精| 99麻豆久久久国产精品免费| 一区二区高清免费观看影视大全 | 婷婷综合在线观看| 欧美mv日韩mv亚洲| 成人动漫一区二区| 亚洲.国产.中文慕字在线| 日韩亚洲欧美中文三级| 国产成人在线看| 亚洲一区二区三区在线看| 日韩美女在线视频| 99re热视频这里只精品| 日本欧美一区二区在线观看| 中文字幕乱码一区二区免费| 欧美在线播放高清精品| 精品一二三四区| 亚洲欧美福利一区二区| 日韩视频在线一区二区| 不卡高清视频专区| 免费在线观看不卡| 中文字幕亚洲欧美在线不卡| 欧美高清你懂得| 成人国产一区二区三区精品| 日韩和欧美一区二区三区| 日韩一区在线看| 欧美mv日韩mv国产网站| 91国偷自产一区二区三区观看| 精品在线播放免费| 一区二区三区四区亚洲| 欧美精品一区二区蜜臀亚洲| 欧美日韩一区二区三区视频 | 欧美精品一区二区三区久久久| 欧美综合欧美视频| 国产精品一区二区在线看| 亚洲第一二三四区| 国产精品久久久久久久久动漫| 日韩一级大片在线观看| 99国产精品国产精品毛片| 国产精品国产三级国产三级人妇| 欧美色视频一区| 亚洲第一精品在线| 一色屋精品亚洲香蕉网站| 精品日韩在线一区| 欧美色精品天天在线观看视频| 成人一区在线看| 久久精工是国产品牌吗| 日韩经典一区二区| 亚洲一区在线观看视频| 国产精品久久久久国产精品日日| 欧美精品一区二区三区一线天视频 | 99久久伊人精品| 久久99精品国产.久久久久| 亚洲最大成人网4388xx| 中文字幕五月欧美| 久久久久久久av麻豆果冻| 日韩一级二级三级| 欧美卡1卡2卡| 欧美日韩卡一卡二| 欧美丝袜第三区| 色婷婷久久一区二区三区麻豆| 免费一区二区视频| 日韩一区精品字幕| 亚洲成在人线免费| 亚洲成av人片在线观看无码| 亚洲精品va在线观看| 一区二区三区鲁丝不卡| 一区二区三区自拍| 亚洲一区在线播放|