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

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

?? unit1.pas

?? 使用canvas組件寫的可拖拽東西使用canvas組件寫的可拖拽東西使用canvas組件寫的可拖拽東西使用canvas組件寫的可拖拽東西
?? PAS
字號:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, Menus, StdCtrls, jpeg,Unit3;
const
  MACHINE_TYPE_ZJ='s1';
  MACHINE_TYPE_EH='s2';
  MACHINE_TYPE_EF='s3';
  MACHINE_TYPE_TX='s5';
  MACHINE_TYPE_GF='s4';
  MACHINE_PORT_XY='p0';
  MACHINE_PORT_EH='p1';
  MACHINE_PORT_ZT='p2';
  MACHINE_PORT_P1='p1';
  MACHINE_PORT_P2='p2';
type
  TForm1 = class(TForm)
    StatusBar1: TStatusBar;
    pbMachines: TPaintBox;
    pmMachines: TPopupMenu;
    machineOp: TMenuItem;
    machineAdd: TMenuItem;
    machineDel: TMenuItem;
    machinePro: TMenuItem;
    machineMain: TMenuItem;
    machineOh: TMenuItem;
    machineEg: TMenuItem;
    machineTx: TMenuItem;
    imgS2: TImage;
    imgS1: TImage;
    imgS3: TImage;
    imgS4: TImage;
    imgS5: TImage;
    machineGf: TMenuItem;
    procedure machineOhClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure machineEgClick(Sender: TObject);
    procedure machineTxClick(Sender: TObject);
    procedure machineGfClick(Sender: TObject);
    procedure N20bt1Click(Sender: TObject);
    procedure pbMachinesContextPopup(Sender: TObject; MousePos: TPoint;
      var Handled: Boolean);
    procedure pbMachinesPaint(Sender: TObject);
    procedure pbMachinesMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure pbMachinesMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure pbMachinesMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure machineDelClick(Sender: TObject);
    procedure machineMainClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  //設備類
  TMachine = class
    mtype:string;     //設備類型
    wiretype:double;  //線類型也是每米衰減
    wirelen:integer;  //線長度
    img:TImage;       //圖片
    x:integer;
    mx:integer;       //鼠標在當前控件中的位置
    y:integer;
    my:integer;       //鼠標在當前控件中的位置
    width:integer;
    height:integer;
    p0:TMachine;      //信源口
    p1:TMachine;      //耦合口
    p2:TMachine;      //直通口
    pl:integer;       //頻率
    sj:double;
    function inMyRang(mx:integer;my:integer):boolean;
    procedure setMousePos(mpx:integer;mpy:integer);
    procedure move(mpx:integer;mpy:integer);
    function toString:string;
  end;
  //設備管理類
  TMachineManage = class
    machine:TMachine;
    current:TMachine;
    function getMachinePort(mtype:string):TStrings;
    function getPortType(pname:string):string;
    function getMachineName(mtype:string):string;
    procedure addMainMachine(pl:integer;x:integer;y:integer);
    procedure addMachine(mtype:string;mport:string;wtype:double;wlen:integer;xh:integer;sj:double);
    procedure drawImage(canvas:TCanvas;mch:TMachine);
    procedure findMachine(x:integer;y:integer;mch:TMachine);
    function getImageByType(mtype:string):TImage;
    procedure drawLine(m1:TMachine;m2:TMachine);
  end;
var
  Form1: TForm1;
  machineManage:TMachineManage;
  cpMousePoint:TPoint;
  draged:boolean=false;
  dragMouse:TPoint;
implementation

{$R *.dfm}

procedure TForm1.machineOhClick(Sender: TObject);
begin
  mtype:=MACHINE_TYPE_EH;
  form3.ShowModal;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  machineManage:=TMachineManage.Create;
end;
procedure TForm1.machineEgClick(Sender: TObject);
begin
  mtype:=MACHINE_TYPE_EF;
  form3.ShowModal;
end;

procedure TForm1.machineTxClick(Sender: TObject);
begin
  mtype:=MACHINE_TYPE_TX;
  form3.ShowModal;
end;

procedure TForm1.machineGfClick(Sender: TObject);
begin
  mtype:=MACHINE_TYPE_GF;
  form3.ShowModal;
end;
procedure TForm1.machineMainClick(Sender: TObject);
begin
  mtype:=MACHINE_TYPE_ZJ;
  form3.ShowModal;
end;
procedure TForm1.N20bt1Click(Sender: TObject);
begin
  machineManage.addMainMachine(5,cpMousePoint.X,cpMousePoint.Y);
  pbMachines.Repaint;
  //showmessage(inttostr(machineManage.machine.x));
end;

procedure TForm1.pbMachinesContextPopup(Sender: TObject; MousePos: TPoint;
  var Handled: Boolean);
begin
  cpMousePoint:=MousePos;
  if(machineManage.machine=nil) then
    handled:=false
  else begin
    machineManage.findMachine(MousePos.X,MousePos.Y,machineManage.machine);
    if not(machineManage.current.inMyRang(MousePos.X,MousePos.Y)) then
      handled:=true
    else
      handled:=false;
  end;
  //可用菜單處理
  machineMain.Enabled:=false;
  machineOh.Enabled:=false;
  machineEg.Enabled:=false;
  machineTx.Enabled:=false;
  machineGf.Enabled:=false;
  if( not handled) then
  begin
    //如果沒有主機,可以添加主機
    if(machineManage.machine=nil) then
      begin
        machineMain.Enabled:=true;
    //如果主機的輸出口沒有設備可以加入設備
    end else if(machineManage.machine.p1=nil) or
               (machineManage.current.mtype=MACHINE_TYPE_EH) or
               (machineManage.current.mtype=MACHINE_TYPE_EF) or
               (machineManage.current.mtype=MACHINE_TYPE_GF) then
      begin
        machineOh.Enabled:=true;
        machineEg.Enabled:=true;
        machineTx.Enabled:=true;
        machineGf.Enabled:=true;
    //如果輸出口有設備,判斷當前設備
    end;
  end;
end;
procedure TForm1.pbMachinesPaint(Sender: TObject);
begin
  machineManage.drawImage(pbMachines.Canvas,machineManage.machine);
end;
procedure TForm1.pbMachinesMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if(button=mbLeft) then
  begin
    machineManage.findMachine(x,y,machineManage.machine);
    if(machineManage.current.inMyRang(x,y)) then
    begin
      draged:=true;
      machineManage.current.setMousePos(x,y);
    end;
  end;
end;

procedure TForm1.pbMachinesMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if(button=mbLeft) then
  begin
    if(machineManage.current.inMyRang(x,y)) then
      statusBar1.Panels[0].Text:=machineManage.current.toString;
    draged:=false;
  end;
end;
procedure TForm1.pbMachinesMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  if(draged)then
    begin
      machineManage.current.move(x,y);
    end;
end;
procedure TForm1.machineDelClick(Sender: TObject);
var
  m:TMachine;
  p:TMachine;
begin
  p:=machineManage.current.p0;
  if(p=nil) then
  begin
    machineManage.machine:=nil;
    machineManage.current:=nil;
  end else
  begin
    if(p.p1=machineManage.current)then
      begin
        p.p1:=nil;
    end else
      begin
        p.p2:=nil;
      end;
    machineManage.current:=p;
  end;
  pbMachines.Repaint;
end;



//以下為自定義類TMachineManage的實現
function TMachine.toString:string;
var
  str:TStringList;
begin
  str:=TStringList.Create;
  str.Add(machineManage.getMachineName(mtype));
  str.Add(' 頻率'+inttostr(pl));
  str.Add(' 衰減'+floattostr(sj));
  Result:=str.Text;
end;
//移動
procedure TMachine.move(mpx:integer;mpy:integer);
var
  mouseX:integer;
  mouseY:integer;
begin
  mouseX:=mpx-x;
  mouseY:=mpy-y;
  x:=x+mouseX-mx;
  y:=y+mouseY-my;
  //mx:=mouseX;
  //my:=mouseY;
  //form1.Edit1.Text:=inttostr(x)+' '+inttostr(y)+' '+inttostr(mx)+' '+inttostr(my);
  form1.pbMachines.Repaint;
end;
//設置鼠標在當前的設備中的位置
procedure TMachine.setMousePos(mpx:integer;mpy:integer);
begin
  mx:=mpx-x;
  my:=mpy-y;
end;
//畫線
procedure TMachineManage.drawLine(m1:TMachine;m2:TMachine);
begin
  form1.pbMachines.Canvas.MoveTo(m1.x+m1.width div 2,m1.y+m1.height div 2);
  form1.pbMachines.Canvas.LineTo(m2.x+m2.width div 2,m2.y+m2.height div 2);
end;
//通過類型獲得圖片
function TMachineManage.getImageByType(mtype:string):TImage;
begin
  if(mtype=MACHINE_TYPE_ZJ) then
    Result:=form1.imgS1
  else if(mtype=MACHINE_TYPE_EH) then
    Result:=form1.imgS2
  else if(mtype=MACHINE_TYPE_EF) then
    Result:=form1.imgS3
  else if(mtype=MACHINE_TYPE_TX) then
    Result:=form1.imgS5
  else
    Result:=form1.imgS4;
end;
//添加設備
procedure TMachineManage.addMachine(mtype:string;mport:string;wtype:double;wlen:integer;xh:integer;sj:double);
var
  m:TMachine;
begin
  m:=TMachine.Create;
  m.mtype:=mtype;
  m.wiretype:=wtype;
  //m.wirelen:=wlen;
  m.pl:=xh;
  m.sj:=sj;
  m.img:=machineManage.getImageByType(mtype);
  m.x:=cpMousePoint.X;
  m.y:=cpMousePoint.Y;
  m.width:=m.img.Width;
  m.height:=m.img.Height;
  //if(mport='p0') then
    //machineManage.current.p0:=m
  if(mport='p1') then
    if(machineManage.current.p1<>nil) then
      showMessage('此端口上已有設備')
    else
      machineManage.current.p1:=m
  else if(mport='p2') then
    if(machineManage.current.p2<>nil) then
      showMessage('此端口上已有設備')
    else
      machineManage.current.p2:=m;
  m.p0:=machineManage.current;
  machineManage.current.wirelen:=wlen;
  form1.pbMachines.Repaint;
end;
//指定的鼠標位置是否在我這個設備區域中
function TMachine.inMyRang(mx:integer;my:integer):boolean;
begin
  if(mx>=x) and (mx<=x+width) and (my>=y) and (my<=y+height) then
    Result:=true
  else
    Result:=false;
end;

//設置當前設備
procedure TMachineManage.findMachine(x:integer;y:integer;mch:TMachine);
begin
  if(mch<>nil) then
    if(mch.inMyRang(x,y)) then
      begin
        current:=mch;
    end else
      begin
        //if(mch.p0<>nil) then
          //findMachine(x,y,mch.p0);
        if(mch.p1<>nil) then
          findMachine(x,y,mch.p1);
        if(mch.p2<>nil) then
          findMachine(x,y,mch.p2);
      end;
end;
//畫圖
procedure TMachineManage.drawImage(canvas:TCanvas;mch:TMachine);
begin
  if(mch<>nil) then
    begin
//      if(mch.p0<>nil) then
//        begin
//          drawLine(mch,mch.p0);
//          drawImage(canvas,mch.p0);
//        end;
      if(mch.p1<>nil) then
        begin
          drawLine(mch,mch.p1);
          drawImage(canvas,mch.p1);
        end;
      if(mch.p2<>nil) then
        begin
          drawLine(mch,mch.p2);
          drawImage(canvas,mch.p2);
        end;
      canvas.Draw(mch.x,mch.y,mch.img.Picture.Graphic);
    end;
end;
procedure TMachineManage.addMainMachine(pl:integer;x:integer;y:integer);
var
  m:TMachine;
begin
  m:=TMachine.Create;
  m.img:=form1.imgS1;
  m.x:=x;
  m.y:=y;
  m.pl:=pl;
  m.width:=form1.imgS1.Width;
  m.height:=form1.imgS1.Height;
  m.mtype:=MACHINE_TYPE_ZJ;
  machine:=m;
  current:=m;
  form1.pbMachines.Repaint;
end;
//獲得設備名
function TMachineManage.getMachineName(mtype:string):string;
begin
  if(mtype=MACHINE_TYPE_ZJ) then
    Result:='主設備'
  else if(mtype=MACHINE_TYPE_EH) then
    Result:='耦合器'
  else if(mtype=MACHINE_TYPE_EF) then
    Result:='二功分'
  else if(mtype=MACHINE_TYPE_TX) then
    Result:='天線'
  else
    Result:='干放';
end;
//根據字符口串獲得端口類型
function TMachineManage.getPortType(pname:string):string;
begin
  if(pname='輸出口') then
    Result:=MACHINE_PORT_P1
  else if(pname='耦合口') then
    Result:=MACHINE_PORT_EH
  else if(pname='直通口') then
    Result:=MACHINE_PORT_ZT
  else if(pname='端口1') then
    Result:=MACHINE_PORT_P1
  else
    Result:=MACHINE_PORT_p2;
end;
//獲得可用設備的端口集合
function TMachineManage.getMachinePort(mtype:string):TStrings;
var
  strs:TStrings;
begin
  strs:=TStringList.Create;
  if(mtype=MACHINE_TYPE_ZJ) then
    begin
      strs.Add('輸出口');
  end else if(mtype=MACHINE_TYPE_EH) then
    begin
      strs.Add('耦合口');
      strs.Add('直通口');
  end else if(mtype=MACHINE_TYPE_EF) then
    begin
      strs.Add('端口1');
      strs.Add('端口2');
  end else
    begin
      strs.Add('端口1');
      strs.Add('端口2');
    end;
  Result:=strs;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品亚洲专区| 欧美中文字幕一二三区视频| 久久精品国产精品亚洲精品| 五月天久久比比资源色| 亚洲一级在线观看| 亚洲国产视频在线| 亚洲高清在线视频| 五月婷婷欧美视频| 日韩va亚洲va欧美va久久| 欧美aaaaaa午夜精品| 日本不卡不码高清免费观看| 麻豆一区二区99久久久久| 美女网站一区二区| 韩国av一区二区三区在线观看| 激情综合网最新| 成人午夜碰碰视频| 色婷婷综合久久久久中文一区二区 | 午夜精品123| 日本亚洲三级在线| 国产精品77777| 97精品国产露脸对白| 欧美亚洲禁片免费| 欧美一区二区三区免费视频| 日韩视频免费观看高清完整版| 精品电影一区二区三区| 亚洲国产精品二十页| 一区二区三区中文字幕精品精品| 亚洲国产日韩一区二区| 蜜臀av性久久久久蜜臀aⅴ| 国产一区二三区| av毛片久久久久**hd| 欧美色视频在线| 日韩久久精品一区| 中文字幕亚洲在| 亚洲香肠在线观看| 九九精品一区二区| 成a人片国产精品| 欧美精品一级二级三级| 精品久久久久久综合日本欧美 | 免费成人在线影院| 成人av影视在线观看| 欧美精品久久一区二区三区| 亚洲精品一区二区三区99| 中文字幕五月欧美| 蜜臀久久久99精品久久久久久| 国产白丝网站精品污在线入口| 在线观看免费一区| 亚洲精品一区在线观看| 亚洲欧洲日本在线| 蜜桃精品视频在线| 97aⅴ精品视频一二三区| 欧美喷潮久久久xxxxx| 国产欧美视频在线观看| 亚洲福利一二三区| 国产成人精品免费网站| 8v天堂国产在线一区二区| 亚洲国产高清不卡| 首页国产欧美久久| 91香蕉视频黄| 亚洲精品一线二线三线无人区| 亚洲最大成人综合| 高清日韩电视剧大全免费| 欧美日韩久久一区| 自拍偷拍亚洲综合| 国产精品资源在线| 欧美日韩亚洲高清一区二区| 国产日韩亚洲欧美综合| 免费看欧美女人艹b| 色94色欧美sute亚洲13| 中文字幕精品一区 | 日韩欧美在线综合网| 亚洲美女区一区| 成人午夜视频福利| 久久只精品国产| 蜜臀精品一区二区三区在线观看 | 亚洲男人的天堂网| 国产成人精品亚洲777人妖 | 亚洲伦理在线精品| 粉嫩av一区二区三区| 日韩你懂的在线播放| 午夜精品视频一区| 欧洲日韩一区二区三区| 国产精品理论在线观看| 国产精品一区二区三区网站| 欧美一区二区不卡视频| 亚洲国产精品久久不卡毛片| 综合精品久久久| 美女高潮久久久| 中文字幕一区二区三区在线播放| 亚洲成人免费观看| 91免费在线看| 国产精品高清亚洲| 国产福利电影一区二区三区| 日韩精品中文字幕一区二区三区 | 99riav久久精品riav| 国产色一区二区| 国产成人在线影院| 国产丝袜美腿一区二区三区| 激情另类小说区图片区视频区| 欧美丰满少妇xxxxx高潮对白| 亚洲在线免费播放| 欧美性受xxxx黑人xyx性爽| 亚洲人成7777| 色综合激情五月| 亚洲综合色区另类av| 日本高清视频一区二区| 亚洲欧美乱综合| 色婷婷国产精品综合在线观看| 亚洲欧美日韩国产成人精品影院 | 成人免费看黄yyy456| 日韩欧美一级精品久久| 欧美性色黄大片手机版| 久久天堂av综合合色蜜桃网| 亚洲国产日日夜夜| 欧美日韩一区二区欧美激情| 亚洲国产成人tv| 91精品免费在线| 久久se精品一区精品二区| 欧美大度的电影原声| 极品尤物av久久免费看| 亚洲国产精品ⅴa在线观看| 国产凹凸在线观看一区二区| 国产精品久久福利| 欧洲精品在线观看| 日韩电影免费在线| 国产亚洲精品7777| av电影在线观看不卡| 一区二区三区精品在线| 日韩欧美国产三级电影视频| 国产成人亚洲综合色影视| 国产精品激情偷乱一区二区∴| 在线观看一区二区视频| 日本伊人精品一区二区三区观看方式| 日韩无一区二区| 国产成人精品一区二区三区网站观看| 亚洲色图在线播放| 欧美精品第1页| 国产高清亚洲一区| 亚洲一区成人在线| 欧美成人午夜电影| 91一区二区三区在线观看| 午夜电影一区二区三区| 国产日韩精品一区二区三区| 99国内精品久久| 麻豆精品一区二区综合av| |精品福利一区二区三区| 欧美日韩成人高清| 国产成人av影院| 亚洲午夜私人影院| 久久美女高清视频| 欧美日韩国产中文| 国产精品一区二区黑丝| 亚洲电影一区二区| 久久久久99精品一区| 欧美丝袜丝交足nylons图片| 国产美女在线精品| 一区二区三区在线播| www日韩大片| 欧美视频完全免费看| 国产传媒欧美日韩成人| 亚洲h在线观看| 中文字幕一区二区三中文字幕| 日韩视频免费观看高清完整版| 成人一区二区三区视频在线观看 | 成人av午夜影院| 在线观看亚洲精品| 亚洲bt欧美bt精品| 国产欧美一区二区精品性| 欧美性大战久久久久久久| 国产精品夜夜嗨| 天天影视色香欲综合网老头| 国产亚洲一区二区在线观看| 欧美久久高跟鞋激| 99精品久久99久久久久| 国产精品一区二区在线看| 五月天亚洲婷婷| 亚洲精品视频免费观看| 国产欧美日韩麻豆91| 日韩精品一区二区三区视频在线观看| 色综合久久中文综合久久97| 国产剧情一区二区| 老司机午夜精品99久久| 亚洲综合丁香婷婷六月香| 中文字幕欧美激情| 久久久久久久久久久黄色| 6080午夜不卡| 欧美美女一区二区| 欧美最新大片在线看| www.日韩在线| 成人福利视频网站| 国内精品在线播放| 久久疯狂做爰流白浆xx| 五月激情六月综合| 亚洲午夜久久久久久久久电影院 | 亚洲激情校园春色| 亚洲欧美影音先锋| 久久免费视频色| 国产美女在线观看一区| 亚洲欧美日韩人成在线播放| 国产欧美日韩亚州综合 |