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

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

?? dlcontrol.~pas

?? 此代碼是關(guān)于mapgis的在
?? ~PAS
?? 第 1 頁 / 共 2 頁
字號:
var
  Stream:TMemoryStream;
begin
  Stream:=TMemoryStream.Create;
  try
    SaveToStream(Stream);
    Stream.SaveToFile(FileName);
  finally
    Stream.Free;
  end;
end;

procedure TLineList.LoadFromStream(Stream:TStream);
var
  AObj:TLine;
begin
  Clear;
  Stream.Position:=0;
  while Stream.Position<Stream.Size do
  begin
    AObj:=Add;
    AObj.LoadFromStream(Stream);
  end;
end;

procedure TLineList.SaveToStream(Stream:TStream);
var
  i:Integer;
  AObj:TLine;
begin
  Stream.Size:=0;
  Stream.Position:=0;
  for i:=0 to FList.Count-1 do
  begin
    AObj:=Items[i];
    AObj.SaveToStream(Stream);
  end;
end;


{ TLine }

procedure TLine.Assign(aLine: TLine);
begin
  FLineId:=aLine.LineId;
  FCurState:=aLine.CurState;
  FLinkedDots.Assign(aLine.LinkedDots);
end;

constructor TLine.Create;
begin
  inherited Create;
  FLinkedDots:=TDotList.Create(False);
end;

destructor TLine.Destroy;
begin
  FLinkedDots.Free;
  inherited Destroy;
end;

procedure TLine.GetDLFromDots(List: TDotList);
begin

end;

procedure TLine.LoadFromStream(Stream: TStream);
begin
  //請在此處寫代碼
end;

procedure TLine.SaveState;
begin
  FOldState:=FCurState;
end;

procedure TLine.SaveToStream(Stream: TStream);
begin
  //請在此處寫代碼
end;


function TLine.StateChanged: Boolean;
begin
  Result:=FOldState<>FCurState;
end;

{ TDLControl }

procedure TDLControl.SetDotState(aDot:TDot; aState:TDotState;
  const bApply:Boolean);
begin
  aDot.DotState:=aState;
  if bApply then AnalyzeState;
end;

constructor TDLControl.Create;
begin
  inherited Create;
  FDots:=TDotList.Create(True);
  FLines:=TLineList.Create(True);
end;

destructor TDLControl.Destroy;
begin
  FDots.Free;
  FLines.Free;
  inherited Destroy;
end;

procedure TDLControl.LoadFromDataBase(aQuery:TADOQuery);

  procedure AddLine(aDot:TDot);
  var
    Index:Integer;
    aLine:TLine;
  begin
    with aQuery do
    begin
      Index:=FLines.IndexOf(Fields[3].AsInteger);
      if Index=-1 then
      begin
        aLine:=TLine.Create;
        FLines.Add(aLine);
        aLine.LineId:=Fields[3].AsInteger;
      end
      else
        aLine:=FLines.Items[Index];
      aLine.LinkedDots.Add(aDot);
      aDot.LinkedLines.Add(aLine);
    end;
  end;
  
var
  aDot:TDot;
  LastId:Integer;
begin
  FDots.Clear;
  FLines.Clear;
  LastId:=-1;
  aDot:=nil;
  with aQuery do
  begin
    Close;
    SQL.Clear;
    SQL.Add('select a.DotID, a.Type, a.kgState, b.LineID');
    SQL.Add('from t_CtrlDotsLayer a, t_DotLines b');
    SQL.Add('where a.UnitID=:UnitID and a.DotID=b.DotID');
    SQL.Add('order by a.DotID, b.LineID');
    SetParamValue(aQuery, 'UnitID', UnitID);
    Open;
    while not Eof do
    begin
      if LastId<>Fields[0].AsInteger then
      begin
        aDot:=TDot.Create;
        FDots.Add(aDot);
        aDot.DotId:=Fields[0].AsInteger;
        aDot.BDSDot:=Fields[1].AsInteger=0;
        if Fields[2].AsBoolean then
          aDot.DotState:=dsLink
        else
          aDot.DotState:=dsBreak;
        LastId:=Fields[0].AsInteger;
      end;
      AddLine(aDot);
      Next;
    end;
    Close;
  end;
end;

function TDotList.IndexOf(const DotId: Integer): Integer;
var
  i:Integer;
begin
  Result:=-1;
  for i:=0 to FList.Count-1 do
    if TDot(FList.Items[i]).DotId=DotId then
    begin
      Result:=i;
      Exit;
    end;
end;

function TDotList.FindDot(const DotId: Integer): TDot;
var
  Index:Integer;
begin
  Index:=IndexOf(DotId);
  Result:=TDot(FList.Items[Index]);
end;

procedure TDLControl.AnalyzeState;
var
  i:Integer;
  aDot:TDot;
  aDotList:TDotList;
begin
  for i:=0 to FDots.ItemCount-1 do
    FDots.Items[i].Checked:=False;
  {設(shè)置所有線路狀態(tài)為lsUnknown}
  for i:=0 to FLines.ItemCount-1 do
  begin
    FLines.Items[i].SaveState;
    FLines.Items[i].CurState:=lsUnknown;
  end;
  {分析每一個變電所的有電的線路}
  aDotList:=TDotList.Create(False);
  try
    GetBDSDots(aDotList);
    for i:=0 to aDotList.ItemCount-1 do
    begin
      aDot:=aDotList.Items[i];
      if not BDSNetWorkIsAnalyzed(aDot) then
        AnalyzeDot(aDot, True);   
    end;
  finally
    aDotList.Free;
  end;
  {設(shè)置所有l(wèi)sUnknown線路為無電}
  for i:=0 to FLines.ItemCount-1 do
  begin
    if FLines.Items[i].CurState=lsUnknown then
      FLines.Items[i].CurState:=lsOff;
  end;
end;

procedure TDLControl.GetBDSDots(List: TDotList);
var
  i:Integer;
  aDot:TDot;
begin
  if List.OwnerRec then
    raise Exception.Create('無法向列表中增加記錄對象,因為該列表只允許自己創(chuàng)建記錄對象!');
  List.Clear;
  for i:=0 to FDots.ItemCount-1 do
  begin
    aDot:=FDots.Items[i];
    if aDot.BDSDot then List.Add(FDots.Items[i]);
  end;  
end;

function TDLControl.BDSNetWorkIsAnalyzed(aBDSDot:TDot): Boolean;
  {如果變電所被分析過,則該變電所連通時,下面所有電路應(yīng)該有電。}
  function CheckLineList:Boolean;
  var
    i:Integer;
  begin
    Result:=True;
    if aBDSDot.DotState=dsLink then 
      for i:=0 to aBDSDot.LinkedLines.ItemCount-1 do
        if aBDSDot.LinkedLines.Items[i].CurState=lsUnknown then
        begin
          Result:=False;
          Exit;
        end;
  end;

begin
  if not aBDSDot.BDSDot then
    raise Exception.Create('該節(jié)點(diǎn)不是變電所對象!');
  if aBDSDot.LinkedLines.ItemCount=0 then
    Result:=True
  else
    Result:=CheckLineList;
end;

procedure TLineList.Assign(Source: TLineList);
var
  i:Integer;
  aItem:TLine;
begin
  Clear;
  for i:=0 to Source.ItemCount-1 do
  begin
    if OwnerRec then
    begin
      aItem:=Add;        
      aItem.Assign(Source.Items[i]);
    end
    else
      Add(Source.Items[i]);
  end;
end;

procedure TDotList.Assign(Source: TDotList);
var
  i:Integer;
  aItem:TDot;
begin
  Clear;
  for i:=0 to Source.ItemCount-1 do
  begin
    if OwnerRec then
    begin
      aItem:=Add;      
      aItem.Assign(Source.Items[i]);
    end
    else
      Add(Source.Items[i]);
  end;
end;

procedure TDotList.Remove(aDot: TDot);
var
  Index:Integer;
begin
  Index:=IndexOf(aDot.DotId);
  Delete(Index);
end;

procedure TDLControl.AnalyzeDot(aDot: TDot; const bInput:Boolean);
var
  i, j:Integer;
  aLine:TLine;
  aDotList:TDotList;
begin
  {整個分析過程如下:
       1、如果該節(jié)點(diǎn)連通,如果上層有輸入電流,則該節(jié)點(diǎn)下所有線路都有電,
       進(jìn)一步分析每一個線路的所有節(jié)點(diǎn)(遞歸調(diào)用該過程),如果上層無輸入
       電流,則該節(jié)點(diǎn)下所有電路狀態(tài)保持未知,分析流程返回。
       2,如果該節(jié)點(diǎn)斷開,則該節(jié)點(diǎn)下所有電路狀態(tài)保持未知,分析流程返回。}
  if aDot.Checked then Exit;
  aDot.Checked:=True;
  if (bInput) and (aDot.DotState=dsLink) then
  begin
    for i:=0 to aDot.LinkedLines.ItemCount-1 do
    begin
      aLine:=aDot.LinkedLines.Items[i];
      aLine.CurState:=lsOn;
      aDotList:=TDotList.Create(False);
      try
        aDotList.Assign(aDot.LinkedLines.Items[i].LinkedDots);
        aDotList.Remove(aDot);
        for j:=0 to aDotList.ItemCount-1 do
          AnalyzeDot(aDotList.Items[j], True);
      finally
        aDotList.Free;
      end;
    end;
  end;
end;

function TLineList.FindLine(const LineId: Integer): TLine;
var
  Index:Integer;
begin
  Index:=IndexOf(LineId);
  Result:=TLine(FList.Items[Index]);
end;

function TLineList.IndexOf(const LineId: Integer): Integer;
var
  i:Integer;
begin
  Result:=-1;
  for i:=0 to FList.Count-1 do
    if TLine(FList.Items[i]).LineId=LineId then
    begin
      Result:=i;
      Exit;
    end;
end;

procedure TDLControl.SaveState(aDot: TDot; aQuery: TADOQuery);
begin
  with aQuery do
  begin
    Close;
    SQL.Clear;
    SQL.Add('update t_CtrlDotsLayer');
    SQL.Add('set kgState=0');
    SQL.Add('where');
    SQL.Add('UnitID='+IntToStr(UnitID)+' and DotID='+IntToStr(aDot.DotId));
    ExecSQL;
  end;
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲图片有声小说| 337p亚洲精品色噜噜狠狠| 精品一区二区三区免费毛片爱| 亚洲毛片av在线| 亚洲丝袜另类动漫二区| 亚洲精品大片www| 艳妇臀荡乳欲伦亚洲一区| 亚洲精品欧美激情| 亚洲一区自拍偷拍| 亚洲成人第一页| 久久精品久久综合| 国内精品视频一区二区三区八戒| 黄一区二区三区| 国产福利不卡视频| 97精品国产97久久久久久久久久久久| 国产成人小视频| 91无套直看片红桃| 欧美精品少妇一区二区三区| 欧美一卡二卡三卡四卡| 久久亚洲欧美国产精品乐播| 国产日本欧美一区二区| 国产精品久久久久久久岛一牛影视 | 国产精品2024| 国产麻豆视频精品| 91免费精品国自产拍在线不卡| 色94色欧美sute亚洲13| 欧美老年两性高潮| 日本一区二区三级电影在线观看| 中文字幕亚洲电影| 日韩1区2区3区| 国产91精品一区二区麻豆亚洲| 色婷婷av久久久久久久| 欧美xxx久久| 亚洲精品高清视频在线观看| 麻豆精品国产传媒mv男同| 国产伦精品一区二区三区在线观看| www.久久久久久久久| 日韩欧美国产精品| 亚洲欧美另类久久久精品| 九一九一国产精品| 欧美视频完全免费看| 国产视频视频一区| 美女久久久精品| 91麻豆文化传媒在线观看| 精品国产一区二区三区久久久蜜月| 亚洲精品国产a久久久久久| 国产制服丝袜一区| 欧美一个色资源| 亚洲综合区在线| 99久久综合99久久综合网站| 制服丝袜亚洲播放| 亚洲在线中文字幕| av在线播放一区二区三区| 欧美成人乱码一区二区三区| 亚洲狠狠爱一区二区三区| 白白色亚洲国产精品| 久久久久久免费毛片精品| 日本一道高清亚洲日美韩| 欧美在线观看视频一区二区三区| 国产欧美日韩在线看| 精品一区二区三区的国产在线播放| 精品视频999| 一区二区日韩av| 97se亚洲国产综合自在线观| 久久久久一区二区三区四区| 经典三级视频一区| 日韩精品在线一区| 狠狠色综合播放一区二区| 日韩精品一区二区在线| 久热成人在线视频| 久久久一区二区三区捆绑**| 麻豆精品在线播放| 日韩一区二区三区在线观看| 亚洲.国产.中文慕字在线| 欧美性色欧美a在线播放| 亚洲美腿欧美偷拍| 欧美日韩亚洲不卡| 天堂久久一区二区三区| 欧美二区在线观看| 人人超碰91尤物精品国产| 日韩欧美中文字幕公布| 久久福利资源站| 久久久久久99精品| 高清不卡一二三区| 专区另类欧美日韩| 欧洲激情一区二区| 午夜激情综合网| 欧美成人欧美edvon| 国产在线播放一区二区三区| 久久久久久久性| 91理论电影在线观看| 亚洲国产精品久久久久秋霞影院 | 日韩欧美色电影| 国产黄色成人av| 一区二区三区视频在线观看 | 久久精品国产亚洲aⅴ| 日韩精品一区二区在线观看| 国产一区二区影院| 亚洲激情自拍视频| 欧美sm极限捆绑bd| 91一区二区三区在线播放| 一区二区三区四区激情| 日韩精品中文字幕一区二区三区| 国产成人综合网| 亚洲一区二区欧美激情| 精品国产髙清在线看国产毛片| 国产成人综合在线播放| 亚洲一区二区三区在线| 精品久久久久久久久久久院品网| 成年人国产精品| 日韩精品一卡二卡三卡四卡无卡| 国产亚洲欧美日韩俺去了| 色噜噜狠狠成人网p站| 韩国一区二区视频| 亚洲主播在线播放| 中文字幕成人av| 欧美一区二区成人6969| 色婷婷av久久久久久久| 国产精品一区在线| 日本一区中文字幕| 亚洲综合清纯丝袜自拍| 国产婷婷精品av在线| 欧美日韩国产精品成人| 成人黄色av电影| 精品一区二区三区在线观看| 亚洲国产一区二区在线播放| 国产亚洲欧美色| 精品国精品自拍自在线| 欧美日韩精品电影| 色噜噜狠狠色综合欧洲selulu| 国产精品一级在线| 美日韩一区二区三区| 亚洲成人资源在线| 一区二区在线免费观看| 中文字幕一区二区不卡| 国产午夜精品一区二区三区嫩草| 91精品在线免费| 欧美日韩大陆在线| 欧美日韩一区三区四区| 色香蕉成人二区免费| 成人app下载| 成人av在线资源网站| 国产成人亚洲综合a∨婷婷图片| 免费高清不卡av| 日本不卡视频一二三区| 亚洲18女电影在线观看| 亚洲午夜精品网| 亚洲电影在线播放| 五月激情综合网| 日韩在线卡一卡二| 美女精品自拍一二三四| 美日韩一级片在线观看| 麻豆一区二区99久久久久| 久88久久88久久久| 国产精品一区二区男女羞羞无遮挡| 国产在线国偷精品产拍免费yy| 精品一区二区三区蜜桃| 国产精品正在播放| 夫妻av一区二区| av中文字幕不卡| 91免费观看在线| 91老师片黄在线观看| 欧美日韩国产成人在线91| 91精品国产综合久久精品app| 欧美高清一级片在线| 日韩一区二区麻豆国产| 欧美老女人在线| 欧美一区二区三区公司| 欧美变态tickling挠脚心| 久久久夜色精品亚洲| 日本一区二区不卡视频| 亚洲乱码国产乱码精品精小说| 亚洲va在线va天堂| 狠狠色伊人亚洲综合成人| 国产不卡视频一区| 欧美午夜理伦三级在线观看| 日韩片之四级片| 国产精品视频一区二区三区不卡| 成人免费视频在线观看| 天天色天天操综合| 国产精品一区二区久激情瑜伽| 99在线精品观看| 欧美日本一道本| 日本一区二区高清| 亚洲国产你懂的| 国产91精品一区二区麻豆网站| 色婷婷激情一区二区三区| 欧美一级二级在线观看| 国产欧美一区二区三区鸳鸯浴 | 欧美日韩国产成人在线免费| 26uuu国产一区二区三区| 中文字幕乱码一区二区免费| 亚洲一区在线观看免费观看电影高清 | 亚洲综合图片区| 国产老妇另类xxxxx| 欧美日韩一区二区在线观看 | 亚洲成人黄色小说| 成人app网站| 日韩精品自拍偷拍| 亚洲最大成人网4388xx|