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

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

?? dsnunit.pas

?? 主要介紹超市管理系統(tǒng)的后臺(tái)系統(tǒng),后臺(tái)程序是系統(tǒng)初始化和系統(tǒng)維護(hù)最常使用的一部分程序,主要任務(wù)是建產(chǎn)基本數(shù)據(jù),進(jìn)出貨盤點(diǎn)和打印報(bào)表.后臺(tái)程序主要負(fù)責(zé)的都是管理上的功能,當(dāng)后臺(tái)建立完整的數(shù)據(jù)后,前臺(tái)才能順
?? PAS
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
  i: integer;
begin
  Result:= TTargetList.Create;

  if Assigned(FHandler) then
    FHandler.Free;
  if Assigned(FProps) then
    FProps.Free;

  if Assigned(FDsnStage) then
  begin
    CreateHandler;
    FHandler.Color:= Color;
    FHandler.PenWidth:= PenWidth;
    FHandler.CutSizeX:= CutSizeX;
    FHandler.CutSizeY:= CutSizeY;
    Result.SelectNotification(FHandler);
  end;

  if Assigned(FDsnInspector) then
  begin
    FProps:= CreateProps;
    Result.SelectNotification(FProps);
    FProps.SetInspector(FDsnInspector);
    InspectList:= TStringList.Create;
    CaptionList:= TStringList.Create;
    FDsnInspector.GetPropLists(InspectList,CaptionList);
    FProps.SetInspectList(InspectList);
    FProps.SetCaptionList(CaptionList);
    FProps.SetOutList(FDsnInspector.GetOutProps);
    InspectList.Free;
    CaptionList.Free;
  end;

  if DsnNotifies <> nil then
  begin
    for i := 0 to DsnNotifies.Count -1 do
    begin
      Result.SelectNotification(TReceiveTargets(DsnNotifies[i]));
    end;
  end;
end;

procedure TDsnRegister.ComponentsProc(Component:TComponent);
begin
  FDsnControl:=Component;
end;

procedure TDsnRegister.CopyPaste(Ctrl:TControl;aParent:TWinControl);
var
  MemoryStream:TMemoryStream;
  Writer:TWriter;
  Reader:TReader;
  S:String;
begin
  S:= Ctrl.Name;
  Ctrl.Name:='';
  //Copy
  MemoryStream:=TMemoryStream.Create;
  try
    Writer:=TWriter.Create(MemoryStream,4096);
    try
      Writer.RootAncestor := nil;
      Writer.Ancestor := nil;
      Writer.Root := Ctrl.Owner;
      Writer.WriteSignature;
      Writer.WriteComponent(Ctrl);
      Writer.WriteListEnd;
    finally
      Writer.Free;
    end;
  //Paste
    MemoryStream.Position:=0;
    Reader:=TReader.Create(MemoryStream,4096);
    try
      Reader.OnSetName:=CheckName;
      Reader.ReadComponents(aParent.Owner,aParent,ComponentsProc);
    finally
      Reader.Free;
    end;
  finally
    MemoryStream.Free;
    Ctrl.Name:=S;
  end;
end;

procedure TDsnRegister.CheckName(Reader:TReader; Component:TComponent; var Name:String);
begin
  DsnCheckName(Owner,Reader,Component,Name);

  PostMessage(FDsnStage.Handle, DR_CREATED, Integer(Component),0)

end;

procedure TDsnRegister.Cut;
begin
  if not Assigned(FTargetList) then
    Exit;
  if FTargetList.Count = 0 then
    Exit;
  if not SameParent then
    Exit;

  Copy;
  Delete;
end;

function TDsnRegister.CanCopy:Boolean;
begin
  Result:= False;
  if not Assigned(FTargetList) then
    Exit;
  if FTargetList.Count = 0 then
    Exit;
  if not SameParent then
    Exit;
  Result:= True;
end;

procedure TDsnRegister.Copy;
var
  CF_SPECIAL:Cardinal;
  MS: TMemoryStream;
  WR:TWriter;
  HMem: THandle;
  PMem: Pointer;
  PL: PLongInt;
  i:integer;
begin
  if not CanCopy then
    Exit;


  MS := TMemoryStream.Create;

  WR:=TWriter.Create(MS,4096);
  try
    WR.RootAncestor := nil;
    WR.Ancestor := nil;
    WR.Root := Owner;
    for i:= 0 to FTargetList.Count -1 do
    begin
      WR.WriteSignature;
      WR.WriteComponent(TComponent(FTargetList[i]));
    end;
    WR.WriteListEnd;
  finally
    WR.Free;
  end;
  HMem := GlobalAlloc(GHND, MS.Size + SizeOf (LongInt));
  PMem := GlobalLock(HMem);

  PL := PLongInt(PMem);
  PL^ := MS.Size;
  Inc(PL);
  PMem := Pointer(PL);

  MS.Seek(0,0);
  MS.ReadBuffer(PMem^, MS.Size);

  CF_SPECIAL := RegisterClipboardFormat (Dsn_ClipboardFormat);

  GlobalUnlock(HMem);
  Clipboard.Open;
  Clipboard.SetAsHandle(CF_SPECIAL, HMem);

  Clipboard.Close;

  MS.Free;
end;

function TDsnRegister.CanPaste:Boolean;
var
  Control:TWinControl;
  CF_SPECIAL:Cardinal;
begin
  Result:= False;
  if not Assigned(FTargetList) then
    Exit;
  if FTargetList.Count > 1 then
    Exit;
  if FTargetList.Count = 1 then
  begin
    Control:= TWinControl(FTargetList[0]);
    if not (csAcceptsControls in Control.ControlStyle) then
      Exit;
  end;
  CF_SPECIAL := RegisterClipboardFormat(Dsn_ClipboardFormat);
  if not Clipboard.HasFormat(CF_SPECIAL) then
    Exit; 
  Result:= True;
end;

function TDsnRegister.PasteZero:TWinControl;
begin
  Result:= FDsnStage;
end;

procedure TDsnRegister.Paste;
var
  MS: TMemoryStream;
  HMem: THandle;
  PMem: Pointer;
  Size: LongInt;
  RD:TReader;
  Control:TWinControl;
  CF_SPECIAL:Cardinal;
begin
  if not CanPaste then
    Exit;
  Control:= nil;
  if FTargetList.Count = 1 then
    Control:= TWinControl(FTargetList[0]);
  if FTargetList.Count = 0 then
    Control:= PasteZero;
  if Control = nil then
    Exit;

  FTargetList.Clear;
  CF_SPECIAL := RegisterClipboardFormat(Dsn_ClipboardFormat);


  MS := TMemoryStream.Create;

  try
    Clipboard.Open;
    try
      HMem := GetClipboardData(CF_SPECIAL);
      if HMem = 0 then
      begin
        Clipboard.Close;
        MS.Free;
        Exit;
      end;
      PMem := GlobalLock(HMem);
      Size := PLongInt(PMem)^;
      PMem := Pointer(LongInt(PMem)+SizeOf(LongInt));
      try
        MS.WriteBuffer(PMem^, Size);
      finally
        GlobalUnlock(HMem);
      end;
    finally
      Clipboard.Close;
    end;

    MS.Seek(0,0);

    RD:=TReader.Create(MS,4096);
    try
      RD.OnSetName:=CheckName;
      //RD.OnError:=ReadError;
      //RD.OnFindMethod:=FindMethod;
      RD.Position:=0;
      RD.ReadComponents(Owner,Control,ComponentsProcClipbrd);
    finally
      RD.Free;
    end;
  finally
    MS.Free;
  end;
  FTargetList.SetPosition;
end;

procedure TDsnRegister.ComponentsProcClipbrd(Component:TComponent);
var
  Control: TControl;
begin
  if Component is TWinControl then
    SetSubClass(TWinControl(Component));

  if Component is TControl then
  begin
    Control:= TControl(Component);
    if Control.Left > Control.Parent.Width then
      Control.Left:= Control.Parent.Width - Control.Width;
    if Control.Left < 0 then
      Control.Left:= 0;
    if Control.Top > Control.Parent.Height then
      Control.Top:= Control.Parent.Height - Control.Height;
    if Control.Top < 0 then
      Control.Top:= 0;
  end;
  FTargetList.Add(Component);
end;

procedure TDsnRegister.Cutting(var X, Y: Integer);
begin
  if CutSizeX > 0 then
    X:= (X div CutSizeX) * CutSizeX;
  if CutSizeY > 0 then
    Y:= (Y div CutSizeY) * CutSizeY; 
end;

function TDsnRegister.SameParent:Boolean;
var
  i:integer;
  AParent:TWinControl;
begin
  result:= True;
  if Assigned(FTargetList) then
  begin
    if FTargetList.Count > 0 then
    begin
      AParent:= TControl(FTargetList[0]).Parent;
      for i:= 1 to FTargetList.Count -1 do
        if TControl(FTargetList[i]).Parent <> AParent then
        begin
          result:= False;
          Break;
        end;
    end;
  end;
end;

function CompareParent(Item1, Item2: Pointer): Integer;
var
  AParent: TWinControl;
begin
  Result:= 0;
  if UDsnStage = nil then Exit;
  AParent:= TControl(Item1).Parent;
  while AParent <> UDsnStage do
  begin
    AParent:= AParent.Parent;
    Inc(Result);
  end;
  AParent:= TControl(Item2).Parent;
  while AParent <> UDsnStage do
  begin
    AParent:= AParent.Parent;
    Dec(Result);
  end;
end;

procedure TDsnRegister.SortForDelete(List: TList);
begin
  UDsnStage:= FDsnStage;
  List.Sort(CompareParent);
  UDsnStage:= nil;
end;

procedure TDsnRegister.Delete;
var
  i:integer;
  LList:TList;
  CanDelete: Boolean;
begin
  if Assigned(FTargetList) then
  begin
    LList:= TList.Create;
    for i:= 0 to FTargetList.Count -1 do
      LList.Add(FTargetList[i]);
    FTargetList.Clear;
    //Dlete Query
    if FDsnStage <> nil then
      if Assigned(FDsnStage.OnDeleteQuery) then
        for i:= LList.Count -1 downto 0 do
        begin
          CanDelete:= True;
          FDsnStage.OnDeleteQuery(FDsnStage,TComponent(LList[i]),CanDelete);
          if not CanDelete then
            LList.Delete(i);
        end;
    //Sort from Grandchild to DsnStage
    SortForDelete(LList);
    //Delete
    for i:= LList.Count -1 downto 0 do
      TControl(LList[i]).Free;
    LList.Free;
    FTargetList.SetPosition;
  end;
end;

procedure TDsnRegister.AddNotifies(List: TReceiveTargets);
begin
  if DsnNotifies = nil then
    DsnNotifies:= TList.Create;
  DsnNotifies.Add(List);
end;

{procedure TDsnRegister.AddReceiveTargets(List: TReceiveTargets);
begin
  FTargetList.SelectNotification(List);
end;}

procedure TDsnRegister.AddPartners(Partner: TDsnPartner);
begin
  if DsnPartners = nil then
    DsnPartners:= TList.Create;
  DsnPartners.Add(Partner);
end;

procedure TDsnRegister.RemovePartners(Partner: TDsnPartner);
var
  n: integer;
begin
  if DsnPartners <> nil then
  begin
    n:= DsnPartners.IndexOf(Partner);
    if n > -1 then
      DsnPartners.Delete(n);
  end;
end;

function TDsnRegister.CheckCanSelect(Control: TControl): Boolean;
var
  Flag: Boolean;
  Parent: TWinControl;
  CanCover: TCoverAccept;
  CanSelect: TSelectAccept;
begin
  Result:= False;
  if FDsnStage = nil then
    Exit;
  Parent:= Control.Parent;
  Flag:= False;
  while not (Parent is TForm) do
  begin
    if Parent = FDsnStage then
    begin
      Flag:= True;
      Break;
    end;
    Parent:= Parent.Parent;
    if Parent = nil then
      Break;
  end;
  if Flag then
  begin
    CanCover:= caAllAccept;
    if Control is TWinControl then
    begin
      if Assigned(FDsnStage.OnCoverQuery) then
      begin
        FDsnStage.OnCoverQuery(Self,Control,CanCover);
      end;
    end
    else
    begin
      Parent:= Control.Parent;
      if Assigned(FDsnStage.OnCoverQuery) then
      begin
        FDsnStage.OnCoverQuery(Self,Parent,CanCover);
      end;
    end;
    if CanCover = caAllAccept then
      Result:= True;
    if Result then
    begin
      CanSelect:= [saCreate, saMove];

      if Assigned(FDsnStage.OnSelectQuery) then
        FDsnStage.OnSelectQuery(Self, Control, CanSelect);

      if not (saMove in CanSelect) then
        Result:= False;
    end;
  end;
end;

{ TDsnStage }
constructor TDsnStage.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FRubberband:=TRubberband.Create;
  FRubberband.Color:=clGray;
  FRubberband.PenWidth:=2;
  FRubberband.MoveWidth:=8;
  FRubberband.MoveHeight:=8;
  FSelfProps:=TStringList.Create;
  FOutProps:=TStringList.Create;
  FDesigning:= False;
end;

destructor TDsnStage.Destroy;
begin
  FRubberband.Free;
  FSelfProps.Free;
  FOutProps.Free;
  inherited;
end;

procedure TDsnStage.SetDesignig(Value:Boolean);
begin
end;

procedure TDsnStage.ClientDeth(var Message:TMessage);
var
  DsnCtrl:TDsnCtrl;
begin
  DsnCtrl:= TDsnCtrl(Message.WParam);
  if DsnCtrl.ClientDeath then
    DsnCtrl.Free
  else
    DsnCtrl.ChangeHandele(DsnCtrl.Client.Handle);
end;

procedure TDsnStage.PropertyChanged(var Message:TMessage);
begin
  UpdateControl;
end;

function TDsnStage.GetControls(Index:Integer):TControl;
begin
  Result:= FDsnRegister.FTargetList[Index];
end;

function TDsnStage.TargetsCount:Integer;
begin
  Result:= -1;
  if Assigned(FDsnRegister) then
    if Assigned(FDsnRegister.FTargetList) then
      Result:= FDsnRegister.FTargetList.Count;
end;

procedure TDsnStage.UpdateControl;
begin
  if Assigned(FDsnRegister) then
    if Assigned(FDsnRegister.FTargetList) then
      FDsnRegister.FTargetList.SetPosition;
end;

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

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

procedure TDsnStage.WMKeyUp(var Message: TWmKeyUp);
begin
  if (Message.CharCode in [VK_DELETE]) then
  begin
    Delete;
    Message.Result:=1;
  end;

  inherited;
end;

procedure TDsnStage.KeyPress;
begin
  if Key in [^C] then
  begin
    Key := #0;
    Copy;
  end;

  if Key in [^X] then
  begin
    Key := #0;
    Cut;
  end;

  if Key in [^V] then
  begin
    Key := #0;
    Paste;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久99| 美女视频黄a大片欧美| 久久精品综合网| 久久综合色综合88| 久久众筹精品私拍模特| 久久老女人爱爱| 中文字幕成人av| 成人欧美一区二区三区白人 | 一区二区三区四区视频精品免费| 日本一区二区三区dvd视频在线| 国产亚洲综合在线| 国产欧美精品国产国产专区| 国产精品的网站| 亚洲精品老司机| 午夜精品久久久久影视| 麻豆精品视频在线观看视频| 国产在线精品免费| www.99精品| 欧美伊人久久久久久久久影院| 久久久久9999亚洲精品| 中文字幕日韩一区| 亚洲国产精品天堂| 奇米一区二区三区| 国产盗摄一区二区三区| 99re8在线精品视频免费播放| 色婷婷综合久久久中文一区二区 | 精品欧美黑人一区二区三区| 久久尤物电影视频在线观看| 国产精品婷婷午夜在线观看| 亚洲日韩欧美一区二区在线| 性做久久久久久| 国内一区二区在线| 99精品久久99久久久久| 欧美日韩亚洲综合一区二区三区| 欧美电影免费观看高清完整版在线 | 色婷婷av一区二区三区gif| 欧美精品123区| 国产片一区二区三区| 亚洲免费在线看| 日本在线不卡视频| 国产精品香蕉一区二区三区| 色婷婷精品久久二区二区蜜臀av| 日韩一区二区三区三四区视频在线观看 | 欧美美女喷水视频| 久久免费视频色| 一区二区高清在线| 精品在线你懂的| 色婷婷国产精品| 久久嫩草精品久久久久| 亚洲国产成人porn| 国产精品99久久久久久久女警 | 亚洲午夜久久久久中文字幕久| 老色鬼精品视频在线观看播放| 成人在线综合网| 欧美精品国产精品| 国产精品超碰97尤物18| 久久精品国产亚洲a| 在线精品视频小说1| 久久精品网站免费观看| 婷婷国产v国产偷v亚洲高清| 成人小视频免费在线观看| 欧美一区二区三区精品| 亚洲日本在线看| 国产精品一线二线三线| 91精品国产乱| 亚洲乱码国产乱码精品精小说| 韩国在线一区二区| 欧美女孩性生活视频| 国产精品乱码妇女bbbb| 激情综合网激情| 欧美日韩国产另类一区| 亚洲人精品一区| 成人免费视频免费观看| 精品国产乱码久久久久久1区2区| 亚洲午夜日本在线观看| 99国产精品久久久久久久久久| 久久一区二区三区四区| 日本欧美一区二区| 欧美最猛黑人xxxxx猛交| 综合电影一区二区三区| 国产白丝精品91爽爽久久| 欧美成人乱码一区二区三区| 日韩综合小视频| 欧美性大战久久久久久久蜜臀| 国产精品理伦片| 国产成+人+日韩+欧美+亚洲| 精品国产sm最大网站免费看| 秋霞午夜av一区二区三区| 欧美日韩久久一区二区| 亚洲视频香蕉人妖| 99re这里只有精品6| 中文字幕欧美一| 国产成人免费高清| 久久精品亚洲国产奇米99| 国产一区二区三区免费在线观看 | 亚洲图片欧美综合| 91高清视频免费看| 依依成人综合视频| 91麻豆自制传媒国产之光| 中文字幕一区二区三区色视频| 处破女av一区二区| 国产精品久久久久国产精品日日| 国产99久久久久| 一区二区中文字幕在线| 91在线一区二区三区| 亚洲人成网站色在线观看| 99久久国产综合精品色伊| 亚洲欧美日韩在线播放| 精品对白一区国产伦| 精品无人码麻豆乱码1区2区| 亚洲精品在线网站| 国产精品一区三区| 国产欧美一区二区精品久导航| 国产成人自拍网| 中文字幕精品三区| 91视频在线看| 亚洲成人午夜影院| 在线综合视频播放| 精品写真视频在线观看| 国产精品午夜电影| 在线观看国产91| 日本在线不卡视频| 国产视频911| 色综合久久88色综合天天| 五月天亚洲婷婷| 精品福利二区三区| 91影视在线播放| 日韩精品国产欧美| 精品国产一区二区精华| 高清不卡一二三区| 玉米视频成人免费看| 日韩一级完整毛片| 高清日韩电视剧大全免费| 亚洲激情中文1区| 日韩手机在线导航| 国产mv日韩mv欧美| 亚洲国产精品一区二区久久恐怖片 | 成人动漫一区二区三区| 夜夜精品视频一区二区| 91精品中文字幕一区二区三区| 国产一区二区三区黄视频 | 精品国产91乱码一区二区三区| 成人小视频在线| 污片在线观看一区二区| 国产亚洲欧美中文| 欧美视频一区二| 国产一区二区三区四区在线观看| 自拍偷拍亚洲欧美日韩| 日韩一区国产二区欧美三区| 国产不卡高清在线观看视频| 亚洲成人免费在线观看| 久久精品一区八戒影视| 欧洲激情一区二区| 国产成人在线网站| 亚洲va国产天堂va久久en| 久久久久久久网| 欧美午夜一区二区三区免费大片| 国产精品77777| 天天做天天摸天天爽国产一区| 国产欧美日韩在线| 欧美裸体bbwbbwbbw| 菠萝蜜视频在线观看一区| 日韩电影在线免费| 亚洲麻豆国产自偷在线| 精品久久久久久久久久久院品网| 99亚偷拍自图区亚洲| 国内偷窥港台综合视频在线播放| 一区二区三区在线视频免费观看| 精品国产第一区二区三区观看体验| 色婷婷国产精品综合在线观看| 国产精品888| 捆绑调教美女网站视频一区| 亚洲国产精品久久久久婷婷884| 久久老女人爱爱| 日韩欧美的一区二区| 色狠狠综合天天综合综合| 国产成人免费视频网站高清观看视频| 亚洲超碰精品一区二区| 亚洲人成伊人成综合网小说| 久久久久久电影| 欧美一区二区三区四区五区| 欧洲中文字幕精品| 99久久国产综合精品女不卡| 国产精品亚洲а∨天堂免在线| 麻豆一区二区三区| 五月婷婷久久丁香| 洋洋成人永久网站入口| 亚洲视频资源在线| 中文字幕一区不卡| 国产精品视频在线看| 国产日韩高清在线| 久久久久久亚洲综合影院红桃| 日韩一卡二卡三卡| 日韩三级免费观看| 在线不卡一区二区| 欧美日韩国产高清一区二区三区| 色婷婷av一区| 欧美在线观看18| 欧美视频一区二区在线观看| 欧美私人免费视频|