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

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

?? dsnprop.pas

?? 主要介紹超市管理系統的后臺系統,后臺程序是系統初始化和系統維護最常使用的一部分程序,主要任務是建產基本數據,進出貨盤點和打印報表.后臺程序主要負責的都是管理上的功能,當后臺建立完整的數據后,前臺才能順
?? PAS
字號:
unit DsnProp;

// Runtime Design System Version 2.x   1998/06/08-
// Copyright Kazuhiro Sasaki 1997-1998.

interface

uses
  Windows, SysUtils, Classes, Forms, Controls, Messages, Dialogs,
  TypInfo, DsnList, DsnInfo, DsnFunc, DsnMes;

type
  TCustomInspector = class;

  TMultiProps = class(TReceiveTargets)
  private
    FClassList:TStringList;
    FInspectList:TStringList;
    FCaptionList:TStringList;
    FOutList:TStringList;
    FPropList:TStringList;
    FValueList:TStringList;
    FSuperList:TStringList;
    FList:TList;
    FInspector:TCustomInspector;
  protected
    procedure ItemDeath(Index:Integer); override;
    procedure Add(Item:Pointer); override;
    procedure Clear; override;
    procedure Delete(Index:Integer); override;
  public
    constructor Create; virtual;
    destructor Destroy; override;
    procedure SetPosition; override;
    procedure GetValues;
    procedure SetInspectList(Strings:TStrings);
    procedure SetCaptionList(Strings:TStrings);
    procedure SetOutList(Strings:TStrings);
    procedure SetInspector(Inspector:TCustomInspector);
    property PropList:TStringList read FPropList;
    property ValueList:TStringList read FValueList;
    property InspectList:TStringList read FInspectList;
    property CaptionList:TStringList read FCaptionList;
    property List:TList read FList;
  end;

  TSelectedComponents = class
  private
    FList: TList;
  protected
    function GetComponents(Index:Integer):TComponent;
  public
    constructor Create;
    destructor Destroy; override;
    procedure AssignList(Targets:TList);
    function Count:Integer;
    property Items[Index:Integer]:TComponent read GetComponents;default;
    property List:TList read FList;
  end;

  TCallPropEditor = procedure
                    (Sender:TObject;Targets:TSelectedComponents;
                                 PropName:String;var Value:String)
                                                          of Object;
  TCustomInspector = class(TComponent)
  private   //The ansister will be changed to TDsnPartner.
    FSelfProps:TStrings;
    FBtnProps:TStrings;
    FOutProps:TStrings;
    FDesigning:Boolean;
    FOnBtnClick:TCallPropEditor;
    FMultiProps:TMultiProps;
  protected
    procedure SetSelfProps(Value: TStrings);
    procedure SetBtnProps(Value: TStrings);
    procedure SetOutProps(Value: TStrings);
    procedure SetDesigning(Value: Boolean);virtual;
    procedure Show;virtual;abstract;
    procedure Hide;virtual;abstract;
    procedure SetProperty(PropName,Value:String);virtual;
    procedure BtnClick(PropName:String;var Value:String);virtual;abstract;
    procedure SetPosition;virtual;abstract;
    property MultiProps:TMultiProps read FMultiProps;
    property SelfProps:TStrings read FSelfProps write SetSelfProps;
    property BtnProps:TStrings read FBtnProps write SetBtnProps;
    property OutProps:TStrings read FOutProps write SetOutProps;
    property OnBtnClick:TCallPropEditor read FOnBtnClick write FOnBtnClick;
  public
    StageHandle: THandle;
    constructor Create(AOwner: TComponent); override;
    destructor  Destroy; override;
    procedure ChangeTarget(Control: TControl);virtual;
    procedure GetPropLists(InspectList,CaptionList:TStrings);virtual;abstract;
    function GetOutProps:TStrings;
    property Designing:Boolean read FDesigning write SetDesigning;
  end;

  TContextProps = class
  private
    FInspectList:TStringList;
    FCaptionList:TStringList;
    FOutList:TStrings;
    FPropList:TStringList;
    FValueList:TStringList;
    FList:TList;
  protected
    function GetCaption(Index:Integer):String;
  public
    constructor Create;
    destructor  Destroy; override;
    procedure CreateTable(SelfProps,OutList:TStrings;List:TList);
    property PropList: TStringList read FPropList;
    property ValueList: TStringList read FValueList;
    property Caption[Index:Integer]: String read GetCaption;
  end;


implementation

constructor TMultiProps.Create;
begin
  FClassList:= TStringList.Create;
  FInspectList:= TStringList.Create;
  FCaptionList:= TStringList.Create;
  FOutList:= TStringList.Create;
  FPropList:= TStringList.Create;
  FValueList:= TStringList.Create;
  FSuperList:= TStringList.Create;
  FList:= TList.Create;
end;

destructor TMultiProps.Destroy;
begin
  FClassList.Free;
  FInspectList.Free;
  FCaptionList.Free;
  FOutList.Free;
  FSuperList.Free;
  FPropList.Free;
  FValueList.Free;
  FList.Free;
  inherited Destroy;
end;

procedure TMultiProps.ItemDeath(Index:Integer);
begin
  if Assigned(FList) then
    FList[Index]:= nil;
end;

procedure TMultiProps.Add(Item:Pointer);
var
  ObjInfo:TObjInfo;
  i,n: integer;
begin
  if FList.IndexOf(Item) > -1 then
    Exit;
  FList.Add(Item);

  ObjInfo:= TObjInfo.Create(TObject(Item));

  //First Item Entry
  if FList.Count = 1 then
  begin
    FClassList.Add(ObjInfo.Name);
    for i:= 0 to ObjInfo.PropCount -1 do
      if FInspectList.IndexOf(ObjInfo[i].Name) >= 0 then
        FPropList.Add(ObjInfo[i].Name);
    for i:= 0 to FPropList.Count -1 do
    begin
      n:= ObjInfo.IndexOfProp(FPropList[i]);
      FValueList.Add(ObjInfo[n].Value);
    end;
    FSuperList.Assign(FPropList);
  end;

  //Reference to OutList
  if FList.Count = 2 then
    for i:= FPropList.Count -1 downto 0 do
      if FOutList.IndexOf(FPropList[i]) >= 0 then
      begin
        FPropList.Delete(i);
        FValueList.Delete(i);
      end;

  //Selection of Common Property
  if FClassList.IndexOf(ObjInfo.Name) = -1 then
  begin
    FClassList.Add(ObjInfo.Name);

    for i:= FPropList.Count -1 downto 0 do
      if ObjInfo.IndexOfProp(FPropList[i]) = -1 then
      begin
        FPropList.Delete(i);
        FValueList.Delete(i);
      end;

    //Collect All Property
    for i:= 0 to ObjInfo.PropCount -1 do
      if FSuperList.IndexOf(ObjInfo[i].Name) = -1 then
        if FInspectList.IndexOf(ObjInfo[i].Name) > -1 then
          FSuperList.Add(ObjInfo[i].Name);
  end;

  //Comparison of Values
  if FList.Count > 1 then
    for i:= 0 to FValueList.Count -1 do
    begin
      n:= ObjInfo.IndexOfProp(FPropList[i]);
      case ObjInfo[n].Kind of
        tkInteger, tkChar, tkEnumeration, tkSet, tkFloat:
          if ObjInfo[n].Value <> FValueList[i] then
            FValueList[i] := '';
        tkString,tkLString:
          FValueList[i] := FValueList[i];
        tkClass, tkMethod:
          FValueList[i] := '';
        else
          FValueList[i] := '';
      end;
    end;

  ObjInfo.Free;  
  OderProps(FInspectList,FPropList,FValueList);
end;

procedure TMultiProps.Clear;
begin
  FClassList.Clear;
  FSuperList.Clear;
  FList.Clear;
  FPropList.Clear;
  FValueList.Clear;
end;

procedure TMultiProps.Delete(Index:Integer);
var
  i,j,n:integer;
  Instance:TObject;
  ObjInfo:TObjInfo;
  Temp,NewProp:TStringList;
begin
  if FList[Index] = nil then
    Exit;
    
  Instance:=TObject(FList[Index]);
  FList.Delete(Index);

  if FList.Count = 0 then
  begin
    Clear;
    Exit;
  end;
  
  Temp:=TStringList.Create;
  Temp.Assign(FSuperList);
  FSuperList.Clear;

  //Delete Property, whose Deleted Instance, that is out of Common, from Temp(FSuperList)
  ObjInfo:=TObjInfo.Create(Instance);
  for i:= 0 to ObjInfo.PropCount -1 do
    if FPropList.IndexOf(ObjInfo[i].Name) = -1 then
      if FInspectList.IndexOf(ObjInfo[i].Name) > -1 then
      begin
        n:= Temp.IndexOf(ObjInfo[i].Name);
        if FOutList.IndexOf(ObjInfo[i].Name) = -1 then
          Temp.Delete(n);
      end;
  ObjInfo.Free;

  //Delete Property in FPropList from Temp
  for i:= 0 to FPropList.Count -1 do
  begin
    n:= Temp.IndexOf(FPropList[i]);
    Temp.Delete(n);
  end;

  //Make New Common Property List
  if FList.Count > 0 then
  begin
    ObjInfo:=TObjInfo.Create(TObject(FList[0]));
    FClassList.Clear;
    FClassList.Add(ObjInfo.Name);
    NewProp:=TStringList.Create;
    for i:= 0 to Temp.Count -1 do
      if ObjInfo.IndexOfProp(Temp[i]) > -1 then
        NewProp.Add(Temp[i]);
    for i:= 0 to ObjInfo.PropCount -1 do
      if FInspectList.IndexOf(ObjInfo[i].Name) > -1 then
        FSuperList.Add(ObjInfo[i].Name);
    ObjInfo.Free;
    Temp.Free;
  end
  else
    Exit;

  if FList.Count > 1 then
  begin
    for i:= NewProp.Count -1 downto 0 do
      if FOutList.IndexOf(NewProp[i]) > -1 then
        NewProp.Delete(i);

    for i:= 1 to FList.Count -1 do
    begin
      ObjInfo:=TObjInfo.Create(TObject(FList[i]));
      if FClassList.IndexOf(ObjInfo.Name) = -1 then
      begin
        FClassList.Add(ObjInfo.Name);
        for j:= NewProp.Count -1 downto 0 do
          if ObjInfo.IndexOfProp(NewProp[j]) = -1 then
            NewProp.Delete(j);

       //Collect All Property
       for j:= 0 to ObjInfo.PropCount -1 do
         if FSuperList.IndexOf(ObjInfo[j].Name) = -1 then
           if FInspectList.IndexOf(ObjInfo[j].Name) > -1 then
             FSuperList.Add(ObjInfo[j].Name);
      end;
      ObjInfo.Free;
    end;
  end;

  //FPropList + NewProp
  FPropList.AddStrings(NewProp);
  NewProp.Free;

  //Value Listup
  FValueList.Clear;
  ObjInfo:=TObjInfo.Create(TObject(FList[0]));
  for i:= 0 to FPropList.Count -1 do
  begin
    n:= ObjInfo.IndexOfProp(FPropList[i]);
    FValueList.Add(ObjInfo[n].Value);
  end;
  ObjInfo.Free;

  if FList.Count > 1 then
    for i:= 1 to FList.Count -1 do
    begin
      ObjInfo:=TObjInfo.Create(TObject(FList[i]));
      for j:= 0 to FValueList.Count -1 do
      begin
        n:= ObjInfo.IndexOfProp(FPropList[j]);
        case ObjInfo[n].Kind of
          tkInteger, tkChar, tkEnumeration, tkSet, tkFloat:
            if ObjInfo[n].Value <> FValueList[j] then
              FValueList[j] := '';
          tkString,tkLString:
            FValueList[j] := FValueList[j];
          tkClass, tkMethod:
            FValueList[j] := '';
          else
            FValueList[j] := '';
        end;
      end;
      ObjInfo.Free;
    end;
  OderProps(FInspectList,FPropList,FValueList);
end;

procedure TMultiProps.GetValues;
var
  i,j,n:integer;
  ObjInfo:TObjInfo;
begin
  FValueList.Clear;
  if FList.Count = 0 then
    Exit;
  ObjInfo:=TObjInfo.Create(TObject(FList[0]));
  for i:= 0 to FPropList.Count -1 do
  begin
    n:= ObjInfo.IndexOfProp(FPropList[i]);
    if n > -1 then
      FValueList.Add(ObjInfo[n].Value);
  end;
  ObjInfo.Free;

  if FList.Count > 1 then
    for i:= 1 to FList.Count -1 do
    begin
      ObjInfo:=TObjInfo.Create(TObject(FList[i]));
      for j:= 0 to FValueList.Count -1 do
      begin
        n:= ObjInfo.IndexOfProp(FPropList[j]);
        if n > -1 then
          case ObjInfo[n].Kind of
            tkInteger, tkChar, tkEnumeration, tkSet, tkFloat:
              if ObjInfo[n].Value <> FValueList[j] then
                FValueList[j] := '';
            tkString,tkLString:
              FValueList[j] := FValueList[j];
            tkClass, tkMethod:
              FValueList[j] := '';
            else
              FValueList[j] := '';
          end;
      end;
      ObjInfo.Free;
    end;
end;

procedure TMultiProps.SetPosition;
begin
  GetValues;
  if Assigned(FInspector) then
    FInspector.SetPosition;
end;

procedure TMultiProps.SetInspectList(Strings:TStrings);
begin
  FInspectList.Assign(Strings);
end;

procedure TMultiProps.SetCaptionList(Strings:TStrings);
begin
  FCaptionList.Assign(Strings);
end;

procedure TMultiProps.SetOutList(Strings:TStrings);
begin
  FOutList.Assign(Strings);
end;

procedure TMultiProps.SetInspector(Inspector:TCustomInspector);
begin
  if Assigned(Inspector) then
  begin
    FInspector:= Inspector;
    FInspector.FMultiProps:= Self;
  end
  else
    FInspector:= nil;
end;


{TSelectedComponents}
constructor TSelectedComponents.Create;
begin
  FList:= TList.Create;
end;

destructor TSelectedComponents.Destroy;
begin
  FList.Free;
end;

function TSelectedComponents.GetComponents(Index:Integer):TComponent;
begin
  Result:= TComponent(FList[Index]);
end;

procedure TSelectedComponents.AssignList(Targets:TList);
var
  i:integer;
begin
  for i:= 0 to Targets.Count -1 do
    FList.Add(Targets[i]);
end;

function TSelectedComponents.Count:Integer;
begin
  Result:= FList.Count;
end;

{TDsnInspector}
constructor TCustomInspector.Create(AOwner: TComponent);
begin
  inherited;
  FSelfProps:= TStringList.Create;
  FBtnProps:= TStringList.Create;
  FOutProps:= TStringList.Create;
  FDesigning:= False;
  StageHandle:= 0;
end;

destructor  TCustomInspector.Destroy;
begin
  FSelfProps.Free;
  FBtnProps.Free;
  FOutProps.Free;
  inherited;
end;

procedure TCustomInspector.SetSelfProps(Value: TStrings);
begin
  FSelfProps.Assign(Value);
end;

procedure TCustomInspector.SetBtnProps(Value: TStrings);
begin
  FBtnProps.Assign(Value);
end;

procedure TCustomInspector.SetOutProps(Value: TStrings);
begin
  FOutProps.Assign(Value);
end;

procedure TCustomInspector.SetProperty(PropName,Value:String);
begin
  SetProp(MultiProps.List,PropName,Value);
  if StageHandle <> 0 then
    PostMessage(StageHandle,CI_SETPROPERTY,0,0);
  FMultiProps.GetValues;
end;

procedure TCustomInspector.ChangeTarget(Control: TControl);
var
  Parent: TWinControl;
begin
  if Control is TWinControl then
    Parent:= TWinControl(Control)
  else
    Parent:= Control.Parent;
  SendMessage(Parent.Handle, CI_SELECT, Integer(Control),0);
end;

procedure TCustomInspector.SetDesigning(Value: Boolean);
begin
  if FDesigning = Value then Exit;
  FDesigning:=Value;
  if FDesigning then
    Show
  else
    Hide;
end;

function TCustomInspector.GetOutProps:TStrings;
begin
  Result:= FOutProps;
end;

{TContextProps}
constructor TContextProps.Create;
begin
  FInspectList:= TStringList.Create;
  FCaptionList:= TStringList.Create;
  FPropList:= TStringList.Create;
  FValueList:= TStringList.Create;
end;

destructor TContextProps.Destroy;
begin
  FInspectList.Free;
  FCaptionList.Free;
  FPropList.Free;
  FValueList.Free;
end;

procedure TContextProps.CreateTable(SelfProps,OutList:TStrings;List:TList);
begin
  FOutList:= OutList;
  FList:= List;
  SepareteStringsByBar(SelfProps,FInspectList,FCaptionList);
  GetPropTable(FList,FInspectList,FOutList,FPropList,FValueList);
  OderProps(FInspectList,FPropList,FValueList);
end;

function TContextProps.GetCaption(Index:Integer):String;
begin
  Result:= GetPropCaption(FPropList[Index],FInspectList,FCaptionList);
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品亚洲一区二区三区妖精 | 久久九九国产精品| 精品欧美久久久| 久久精品亚洲一区二区三区浴池| 日本一区二区在线不卡| 亚洲欧美日本韩国| 美日韩一区二区| 免费xxxx性欧美18vr| 国产成人免费视频网站| 91色.com| 日韩免费看网站| 综合自拍亚洲综合图不卡区| 亚洲男人天堂av网| 久久精品国产久精国产| av一二三不卡影片| 91久久精品一区二区三| 欧美大度的电影原声| 国产精品每日更新| 日本不卡不码高清免费观看| 高清成人在线观看| 欧美综合亚洲图片综合区| 久久夜色精品国产噜噜av| 一区二区三区久久| 国产精品综合av一区二区国产馆| 欧美三级在线播放| 国产欧美日韩另类视频免费观看| 亚洲va国产天堂va久久en| 粉嫩av一区二区三区粉嫩| 欧美日韩国产bt| 亚洲精品中文在线| 国产在线精品一区二区夜色| 欧美日韩精品一区二区三区四区 | 99久久国产免费看| 欧美一级生活片| 成人aa视频在线观看| 99久久精品国产观看| 国产三级久久久| 欧美嫩在线观看| 亚洲二区在线观看| 色欧美片视频在线观看| 国产精品污污网站在线观看| 国精产品一区一区三区mba视频| 欧美一级二级在线观看| 国产精品久久久久一区二区三区共| 美女视频一区二区三区| 亚洲激情第一区| 懂色av一区二区夜夜嗨| 成人一区二区三区视频在线观看 | 青青国产91久久久久久| 亚洲成人一区二区在线观看| 国产精品一区二区在线播放| 国产精品丝袜91| 看国产成人h片视频| 91精品国产综合久久福利| 秋霞av亚洲一区二区三| 欧美电视剧在线看免费| 国产精一品亚洲二区在线视频| 国产三区在线成人av| 99久久99久久免费精品蜜臀| 亚洲亚洲人成综合网络| 久久久久久亚洲综合| eeuss影院一区二区三区| 国产视频不卡一区| 99久久国产综合精品麻豆| 亚洲影视在线观看| 日韩精品一区二区三区三区免费| 免费成人美女在线观看.| 国产精品美女久久久久av爽李琼| 欧美视频一区二区三区在线观看 | 懂色av一区二区三区免费观看 | 日韩午夜激情av| 成人伦理片在线| 舔着乳尖日韩一区| 国产蜜臀97一区二区三区| 51精品秘密在线观看| 国产精品中文欧美| 亚洲国产一区二区视频| 国产日韩欧美不卡| 精品美女一区二区三区| 欧美图片一区二区三区| 成人精品电影在线观看| 首页国产欧美久久| 亚洲精品欧美激情| 26uuu精品一区二区在线观看| 欧美日韩一区二区三区在线看| 波多野结衣在线一区| 天天射综合影视| 亚洲日本va午夜在线电影| 久久中文字幕电影| 91精品视频网| 欧美大片在线观看| 国产亚洲一区二区三区四区 | 老司机精品视频在线| 另类小说色综合网站| 久草在线在线精品观看| 精品一区二区三区在线观看| 国产又黄又大久久| 风间由美一区二区三区在线观看| 成人手机在线视频| 91热门视频在线观看| 欧美午夜视频网站| 精品久久久三级丝袜| 国产精品久久久久婷婷二区次| 亚洲欧美激情一区二区| 五月天中文字幕一区二区| 国产尤物一区二区| 97久久精品人人做人人爽 | 日韩一级视频免费观看在线| 久久久国产午夜精品| 国产精品久久久久久久久免费桃花| 亚洲卡通动漫在线| 99精品国产一区二区三区不卡| 色偷偷一区二区三区| 91麻豆精品国产91久久久使用方法| 26uuu国产日韩综合| 亚洲一区在线免费观看| 九一九一国产精品| 欧美色综合影院| 国产亚洲精品资源在线26u| 亚洲精品免费视频| 国产a久久麻豆| 欧美日韩国产美| 国产精品白丝在线| 精品国产123| 久久久久一区二区三区四区| 亚洲日本一区二区三区| 精品亚洲国产成人av制服丝袜| 91一区二区在线| 日韩免费观看2025年上映的电影 | 中文字幕在线观看一区| 久久国产人妖系列| 国产喂奶挤奶一区二区三区| 亚洲精品成人少妇| 99视频精品全部免费在线| 久久天天做天天爱综合色| 日韩精品午夜视频| 欧美在线短视频| 91精品国产欧美一区二区| 国产精品欧美一级免费| 国产精品白丝jk白祙喷水网站| 91精品欧美一区二区三区综合在| 亚洲美腿欧美偷拍| 成人精品国产福利| 中文在线资源观看网站视频免费不卡| 国内精品国产三级国产a久久| 在线91免费看| 久久国产精品区| 久久久久久99精品| 精品一区二区免费| 亚洲精品一区在线观看| 国产主播一区二区三区| 国产欧美精品一区二区三区四区| 国产黄色成人av| 日本一区二区三区久久久久久久久不 | 国产真实乱对白精彩久久| 国产午夜亚洲精品不卡| av高清久久久| 亚洲曰韩产成在线| 欧美一区二区人人喊爽| 久久精品国产**网站演员| 国产亚洲一区二区在线观看| 国产91丝袜在线播放| 欧美高清在线视频| 欧洲国内综合视频| 三级久久三级久久| 久久精品亚洲国产奇米99| 国产色一区二区| 欧美日韩免费电影| 久久精品二区亚洲w码| 国产精品伦一区二区三级视频| 色婷婷综合久久| 国产精品影视网| 亚洲美女电影在线| 欧美一激情一区二区三区| 国产aⅴ精品一区二区三区色成熟| 亚洲你懂的在线视频| 精品国产露脸精彩对白| 色综合一个色综合亚洲| 紧缚奴在线一区二区三区| 亚洲日本一区二区三区| 久久综合国产精品| 欧美三级视频在线观看| 不卡的看片网站| 国模无码大尺度一区二区三区| 亚洲h动漫在线| 亚洲手机成人高清视频| 秋霞电影网一区二区| 中文字幕一区二区不卡 | 欧美性猛交xxxx乱大交退制版| 麻豆国产一区二区| 亚洲成av人片在www色猫咪| 国产精品久久久久久久午夜片| 日韩精品一区二区三区视频在线观看| 91成人看片片| 99精品黄色片免费大全| www.色精品| 99精品久久免费看蜜臀剧情介绍| 成人免费高清在线观看| 粉嫩一区二区三区在线看| 国产精品一区二区三区网站|