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

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

?? dsnagent.pas

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

// Runtime Design System Version 2.x   June/08/1998
// Copyright(c) 1998 Kazuhiro Sasaki.

interface

uses
  Windows, Messages, SysUtils,Classes, Forms, Controls,
  Dialogs, DsnMes, DsnLgMes;

type

  TDeleteQuery = procedure
                    (Sender:TObject;Component:TComponent;
                               var CanDelete:Boolean) of object;

  TAgent = class
  private
    FClientHandle: THandle;
    FDefClientProc: TFarProc;
    FClientInstance: TFarProc;
    FOnFreeInstance: TThreadMethod;
  protected
    FTarget:TControl;
    FSubClassing: Boolean;
    procedure ClientCaptureChanged(var Message: TMessage);virtual;
    procedure ClientWndProc(var Message: TMessage);virtual;abstract;
    procedure EndSubClassing;virtual;
  public
    constructor Create(Handle: THandle);virtual;
    destructor Destroy; override;
    procedure ChangeHandele(Handle: THandle);virtual;
    property DefClientProc: TFarProc read FDefClientProc;
    property OnFreeInstance: TThreadMethod read FOnFreeInstance write FOnFreeInstance;
    property ClientHandle: THandle read FClientHandle write FClientHandle;
  end;

  TAgentList = class;

  TClientAgent = class(TAgent)
  private
    FClient: TWinControl;
    FAgentList:TAgentList;
  protected
    procedure TakeInstance;virtual;abstract;
    procedure ReleaseInstance;virtual;abstract;
  public
    constructor CreateInstance(AClient: TWinControl);virtual;
    destructor Destroy; override;
    procedure ChangeHandele(Handle: THandle);override;
    property Client: TWinControl read FClient;
    property AgentList: TAgentList read FAgentList write  FAgentList;
  end;

  TAgentList = class
  private
    FList: TList;
    procedure Clear;
    procedure ReScanChild(Instance: TWinControl; Handle: THandle);
  public
    constructor Create;
    destructor Destroy; override;
    procedure Add(Handle: THandle);
  end;

  TChildHandle = record
    Instance:TWinControl;
    Handle: THandle;
  end;

  TChildList = class
  private
    FHandleList: TList;
    FControlList: TList;
    FHandle: THandle;
    FParent: TWinControl;
    function GetItems(Index:Integer):TChildHandle;
    procedure MakeList;
  public
    constructor Create(Instance: TWinControl; Handle: THandle);
    destructor Destroy; override;
    function Count:Integer;
    property Items[Index:Integer]: TChildHandle read GetItems; default;
  end;

  TFormAgent = class(TClientAgent)
  protected
    procedure ClientWndProc(var Message: TMessage); override;
    procedure KillComponent(Component: TComponent);
    procedure TakeInstance; override;
    procedure ReleaseInstance; override;
  end;

implementation

type

  TChildAgent = class(TAgent)
  protected
    procedure ClientWndProc(var Message: TMessage);override;
  end;

constructor TAgent.Create(Handle: THandle);
begin
  FClientHandle := Handle;
  FOnFreeInstance:= nil;
  if Handle <> 0 then
  begin
    FClientInstance := MakeObjectInstance(ClientWndProc);
    FDefClientProc := Pointer(GetWindowLong(FClientHandle,
                              GWL_WNDPROC));
    if SetWindowLong(FClientHandle, GWL_WNDPROC,
                       Longint(FClientInstance)) = 0 then
    begin
      raise Exception.Create(AGT_ECREAT);
    end;
  end;
  FSubClassing:= True;
end;

destructor TAgent.Destroy;
begin
  {SetWindowLong(FClientHandle, GWL_WNDPROC,
                            Longint(FDefClientProc));
  FreeObjectInstance(FClientInstance); }
  if FSubClassing then
    EndSubClassing;
  if Assigned(FOnFreeInstance) then
    FOnFreeInstance;

  inherited Destroy;
end;

procedure TAgent.EndSubClassing;
begin
  SetWindowLong(FClientHandle, GWL_WNDPROC,
                            Longint(FDefClientProc));
  FreeObjectInstance(FClientInstance);

  FSubClassing:= False;

  {if Assigned(FOnFreeInstance) then
    FOnFreeInstance;}
end;

procedure TAgent.ClientCaptureChanged(var Message: TMessage);
begin
  FTarget := nil;
end;

procedure TAgent.ChangeHandele(Handle: THandle);
begin
  FClientHandle:= Handle;
  if Handle <> 0 then
  begin
    FClientInstance := MakeObjectInstance(ClientWndProc);
    FDefClientProc := Pointer(GetWindowLong(FClientHandle,
                              GWL_WNDPROC));
    if SetWindowLong(FClientHandle, GWL_WNDPROC,
                       Longint(FClientInstance)) = 0 then
    begin
      raise Exception.Create(AGT_ECREAT);
    end;
  end;
  FSubClassing:= True;
end;

constructor TClientAgent.CreateInstance(AClient: TWinControl);
begin
  FClient := AClient;
  FAgentList:= TAgentList.Create;
  TakeInstance;
  if Assigned(FClient) then
  begin
    inherited Create(FClient.Handle);
  end;
end;

destructor TClientAgent.Destroy;
begin
  if Assigned(FAgentList) then
    FAgentList.Free;
  OnFreeInstance:= ReleaseInstance;
  inherited Destroy;
end;

procedure TClientAgent.ChangeHandele(Handle: THandle);
begin
  inherited;
  if Assigned(FAgentList) then
  begin
    FAgentList.Clear;
    FAgentList.ReScanChild(Client,Handle);
  end;
end;

procedure TChildAgent.ClientWndProc(var Message: TMessage);
begin
  case(Message.Msg)of
    WM_NCHITTEST:Message.Result:= HTTRANSPARENT;
    else
      with Message do
        Result := CallWindowProc(FDefClientProc, FClientHandle,
                                 Msg, WParam, LParam);
  end;
end;

constructor TAgentList.Create;
begin
  FList:= TList.Create
end;

destructor TAgentList.Destroy;
var
  i:integer;
begin
  for i:= 0 to FList.Count -1 do
    TChildAgent(FList[i]).Free;
  FList.Free;
  inherited Destroy;
end;

procedure TAgentList.Add(Handle: THandle);
var
  Child:TChildAgent;
begin
  Child:= TChildAgent.Create(Handle);
  FList.Add(Child);
end;

procedure TAgentList.Clear;
var
  i:integer;
begin
  for i:= 0 to FList.Count -1 do
    TChildAgent(FList[i]).Free;
  FList.Clear;
end;

procedure TAgentList.ReScanChild(Instance: TWinControl; Handle: THandle);
var
  List:TChildList;
  i:integer;
  procedure Proc(AHandle: THandle);
  var
    AList:TChildList;
    j:integer;
  begin
    Add(AHandle);
    AList:= TChildList.Create(nil,AHandle);
    for j:= 0 to AList.Count -1 do
      Proc(AList[j].Handle);
    AList.Free;
  end;
begin
  List:= TChildList.Create(Instance,Handle);
  for i:= 0 to List.Count -1 do
  begin
    if List[i].Instance <> nil then
      if List[i].Instance.Owner <> Instance.Owner then
        Proc(List[i].Handle);
    if List[i].Instance = nil then
      Proc(List[i].Handle);
  end;
  List.Free;
end;

constructor TChildList.Create(Instance: TWinControl; Handle: THandle);
begin
  FHandleList:= TList.Create;
  FControlList:= TList.Create;
  FHandle:= Handle;
  FParent:= Instance;
  MakeList;
end;

destructor TChildList.Destroy;
begin
  FHandleList.Free;
  FControlList.Free;
  inherited Destroy;
end;

procedure TChildList.MakeList;
var
  i,h,n:integer;
  HList,IList:TList;
begin
  HList:= TList.Create;
  IList:= TList.Create;
  if Assigned(FParent) then
    for i:= 0 to FParent.ControlCount -1 do
      if FParent.Controls[i] is TWinControl then
      begin
        HList.Add(Pointer((FParent.Controls[i] as TWinControl).Handle));
        IList.Add(FParent.Controls[i]);
      end;
  h:= GetWindow(FHandle, GW_CHILD);
  while h <> 0 do
  begin
    FHandleList.Add(Pointer(h));
    h:= GetWindow(h, GW_HWNDNEXT);
  end;
  for i:= 0 to FHandleList.Count -1 do
  begin
    n:= HList.IndexOf(FHandleList[i]);
    if n >= 0 then
      FControlList.Add(IList[n])
    else
      FControlList.Add(nil);
  end;
  HList.Free;
  IList.Free;
end;

function TChildList.GetItems(Index:Integer):TChildHandle;
begin
  Result.Handle:= Integer(FHandleList[Index]);
  Result.Instance:= FControlList[Index];
end;

function TChildList.Count:Integer;
begin
  Result:= FControlList.Count;
end;

//***TFormAgent***//
procedure TFormAgent.ClientWndProc(var Message: TMessage);
begin
  case(Message.Msg)of
    FA_KILLCOMPONENT:KillComponent(TComponent(Message.wParam));
    else
      with Message do
        Result := CallWindowProc(DefClientProc, Client.Handle,
                                 Msg, WParam, LParam);
  end;
end;

// Suicide Aid
procedure TFormAgent.KillComponent(Component: TComponent);
begin
  Component.Free;
end;

procedure TFormAgent.TakeInstance;
begin
end;

procedure TFormAgent.ReleaseInstance;
begin
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美乱妇15p| 中文字幕制服丝袜一区二区三区| 亚洲乱码一区二区三区在线观看| 懂色av一区二区夜夜嗨| 国产亚洲精品资源在线26u| 裸体在线国模精品偷拍| 精品欧美黑人一区二区三区| 国产综合成人久久大片91| 国产日韩欧美一区二区三区综合| 成人午夜在线免费| 亚洲综合激情网| 一区二区三区加勒比av| 亚洲午夜羞羞片| 日韩免费视频线观看| 国产精品嫩草99a| 99re在线视频这里只有精品| **欧美大码日韩| 成人av电影在线观看| 一区二区三区成人在线视频| 欧美日韩免费视频| 奇米精品一区二区三区在线观看| 久久久青草青青国产亚洲免观| 国产成人高清在线| 国产精品区一区二区三区| 99免费精品在线| 亚洲18女电影在线观看| 欧美成人艳星乳罩| 色综合色综合色综合色综合色综合 | 韩国精品在线观看| 国产精品免费丝袜| 欧美日韩五月天| 国产69精品久久久久777| 亚洲一区二区美女| 久久久不卡影院| 在线免费观看不卡av| 捆绑调教美女网站视频一区| 亚洲欧美另类综合偷拍| 欧美一区二区视频在线观看2022| 成人少妇影院yyyy| 奇米一区二区三区| 亚洲你懂的在线视频| 亚洲精品一区二区三区影院| 91麻豆国产精品久久| 国产在线精品一区二区三区不卡 | 久久国产精品99久久久久久老狼| 中文字幕av一区二区三区高| 欧美伦理影视网| 91网上在线视频| 国产成人免费9x9x人网站视频| 午夜精品久久久久久久99樱桃| 国产欧美日韩视频一区二区| 欧美一级搡bbbb搡bbbb| 欧美在线视频日韩| 99久久免费精品高清特色大片| 韩日精品视频一区| 亚洲成av人影院| 亚洲人成在线播放网站岛国 | 国产精品久久久久久久久免费樱桃| 欧美日韩免费高清一区色橹橹| 99精品视频一区| 老司机午夜精品99久久| 亚洲成人自拍偷拍| 夜夜嗨av一区二区三区网页 | 日韩av不卡一区二区| 一区二区在线电影| 中文字幕制服丝袜成人av| 精品99999| 91精品国产入口| 欧美日韩国产另类一区| 成人精品小蝌蚪| 成人永久看片免费视频天堂| 国产一区91精品张津瑜| 国产一区久久久| 亚洲精品五月天| 亚洲欧美日韩中文播放| 亚洲美女在线一区| 亚洲欧美国产三级| 亚洲欧美日本在线| 日本不卡视频在线| 天天综合色天天综合色h| 亚洲一二三区在线观看| 夜夜亚洲天天久久| 亚洲福利视频三区| 亚洲一区二区三区视频在线| 亚洲综合一二区| 亚洲国产aⅴ成人精品无吗| 亚洲午夜一二三区视频| 无吗不卡中文字幕| 蜜桃久久精品一区二区| 国产自产视频一区二区三区| 国产精品亚洲人在线观看| 粉嫩久久99精品久久久久久夜| 国产美女在线精品| 成人高清视频免费观看| 91视频在线观看免费| 91精彩视频在线| 91麻豆精品91久久久久同性| 欧美不卡激情三级在线观看| 久久亚洲一级片| 国产精品久久久久久久裸模| 亚洲欧美国产高清| 日韩av电影天堂| 成人性生交大片| 91高清视频在线| 日韩欧美一级片| 中日韩av电影| 亚洲第一成人在线| 国产米奇在线777精品观看| 99国产精品一区| 欧美精品日韩一区| 日韩欧美在线1卡| 国产精品美女久久久久aⅴ国产馆| 亚洲激情一二三区| 狠狠色丁香九九婷婷综合五月| 成人污污视频在线观看| 欧美综合视频在线观看| 精品国产一区久久| 亚洲精品成人悠悠色影视| 久久爱另类一区二区小说| www.色综合.com| 6080日韩午夜伦伦午夜伦| 国产精品嫩草99a| 蜜桃久久av一区| 在线日韩一区二区| 综合中文字幕亚洲| 久久国产乱子精品免费女| 91毛片在线观看| 26uuu久久天堂性欧美| 亚洲黄一区二区三区| 国产一区二区精品在线观看| 欧美视频第二页| 国产精品网曝门| 久久99精品国产麻豆不卡| 色婷婷av一区二区三区之一色屋| 精品免费视频.| 亚洲超碰精品一区二区| thepron国产精品| 欧美大黄免费观看| 洋洋av久久久久久久一区| 国产激情一区二区三区| 日韩午夜av电影| 一区二区三区四区乱视频| 国产九色精品成人porny| 7777精品久久久大香线蕉| 国产精品久久影院| 国产伦精一区二区三区| 91精品国产色综合久久不卡蜜臀| 亚洲欧美日韩成人高清在线一区| 粉嫩av亚洲一区二区图片| 日韩精品一区二区三区中文精品| 亚洲码国产岛国毛片在线| 波多野结衣视频一区| 国产丝袜欧美中文另类| 韩国三级在线一区| 日韩一级免费观看| 男人操女人的视频在线观看欧美| 欧美高清性hdvideosex| 一卡二卡欧美日韩| 在线观看视频一区| 国产精品理论在线观看| 国产激情视频一区二区在线观看 | 欧美日韩精品三区| 亚洲欧美日韩国产成人精品影院 | av中文字幕不卡| 国产日韩视频一区二区三区| 精彩视频一区二区| 精品成人在线观看| 精品在线一区二区| 欧美一级久久久| 麻豆精品在线看| 日韩女同互慰一区二区| 精品亚洲国产成人av制服丝袜| 日韩一级高清毛片| 国内不卡的二区三区中文字幕| 精品日本一线二线三线不卡| 久久国产精品99精品国产| 日韩欧美国产精品| 国产在线看一区| 国产亚洲美州欧州综合国| 成人精品免费看| 亚洲视频一区二区在线观看| 99热在这里有精品免费| 一区在线观看免费| 91搞黄在线观看| 首页综合国产亚洲丝袜| 精品免费日韩av| 国产一区二区在线看| 国产欧美一区二区精品性色 | 91精品国产入口| 精品亚洲国产成人av制服丝袜| 国产日韩欧美综合在线| 99国产精品久久| 天天操天天色综合| 久久亚洲影视婷婷| 日本大香伊一区二区三区| 肉色丝袜一区二区| 久久婷婷综合激情| 在线免费观看视频一区| 蜜桃久久久久久| 国产精品久久久久影视|