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

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

?? lcdscreen.pas.svn-base

?? LCDScreen is a couple of Delphi component which simulate a dot-LCD multilines screen. It is fully c
?? SVN-BASE
?? 第 1 頁 / 共 5 頁
字號:

procedure TLCDScreen.SetLines(Value: TStringList);
begin
  FLines.Assign(Value);
end;


////////////////////////////////////////////////////////////////////////////////
//
// Update Display with new FLines right values.
//
////////////////////////////////////////////////////////////////////////////////

procedure TLCDScreen.LinesOnChange(Sender: TObject);       
var i, j, offset: ShortInt;
    tempstr: WideString;


  function ExtractSpEff(str: String; k: ShortInt; startspecial_char, stopspecial_char: WideChar;
                        nb: ShortInt): ShortInt;
  var flag: ShortInt;
  begin
    flag := 1;
    repeat
      if tempstr[k] = stopspecial_char then k:= 1
      else if tempstr[k] = startspecial_char then begin flag:= nb; k := 1; end;
      dec(k)
      until k <= 0;
    ExtractSpEff := flag;
    end;


begin
  Fillchar(Display, sizeof(Display),0);

  for i := 0 to FLines.Count - 1
  do begin
       tempstr := FLines[i];
       offset := 0;

       for j := 1 to Length(tempstr)
       do begin
            if CountSpecialCharString(tempstr[j]) = 0 then
            begin
                        Display[i,j-offset-1].TheChar := tempstr[j];
                        Display[i,j-offset-1].SpEff := ExtractSpEff(tempstr[j], j-1, startinverse_char,   stopinverse_char,   2) *
                                                     ExtractSpEff(tempstr[j], j-1, startblinking_char,  stopblinking_char,  3) *
                                                     ExtractSpEff(tempstr[j], j-1, startunderline_char, stopunderline_char, 5) *
                                                     ExtractSpEff(tempstr[j], j-1, startstrike_char,    stopstrike_char,    7);
                        if Display[i,j-offset-1].SpEff = 1 then Dec(Display[i,j-offset-1].SpEff);

            end
            else
              inc(offset);
        end;
  end;
  Paint;
end;



////////////////////////////////////////////////////////////////////////////////
//
// Set LCDAnimator.
//
////////////////////////////////////////////////////////////////////////////////

procedure TLCDScreen.SetLCDAnimator(Value: TLCDAnimator);
var tmr: TModalResult;
begin
  if Value <> FLCDAnimator
  then begin
         if Value <> nil
         then begin
                tmr := mrIgnore;

                if Value.CodeErrorFound and (csDesigning in ComponentState)
                then tmr := MessageDlg('Code synthax error(s) detected in this TLCDAnimator.' +
                                       #13 +#10 + #13 + #10 + 'Continue anyway?',
                                       mtWarning, [mbAbort, mbIgnore], 0);
                if tmr = mrIgnore
                then FTimer.OnTimer := TimerOnTimer;
                end;
         FLCDAnimator := Value;
         end;
end;


////////////////////////////////////////////////////////////////////////////////
//
// Notification routine when a TLCDAnimator is removed and was linked to a TLCDScreen.
//
////////////////////////////////////////////////////////////////////////////////

procedure TLCDScreen.Notification(AComponent: TComponent; Operation: TOperation);
begin
  inherited Notification(AComponent, Operation);
  if (Operation = opRemove) and Assigned(FLCDAnimator) and (AComponent = FLCDAnimator)
  then FLCDAnimator := nil;
end;


////////////////////////////////////////////////////////////////////////////////
//
// Set Animation Speed.
//
////////////////////////////////////////////////////////////////////////////////

procedure TLCDScreen.SetAnimationDelay(Value: Cardinal);
begin
  if Value <> FAnimationDelay
  then begin
         FAnimationDelay := Value;
         FTimer.Interval := Value;
         end;
end;


////////////////////////////////////////////////////////////////////////////////
//
// Set Animation Active.
//
////////////////////////////////////////////////////////////////////////////////

procedure TLCDScreen.SetAnimationEnabled(Value: Boolean);
begin
  if Value <> FAnimationEnabled
  then begin
         FAnimationEnabled := Value;
         FTimer.Enabled := Value;
         end;
end;


////////////////////////////////////////////////////////////////////////////////
//
// Set Cycling Animation.
//
////////////////////////////////////////////////////////////////////////////////

procedure TLCDScreen.SetAnimationRepeating(Value: Boolean);
begin
  if Value <> FAnimationRepeating
  then FAnimationRepeating := Value;
end;


////////////////////////////////////////////////////////////////////////////////
//
// Reset Method.
//
////////////////////////////////////////////////////////////////////////////////

procedure TLCDScreen.Reset(Value: TResetMode);
begin
  case Value of
    rmDisplay: begin
                 PixVRef  := 0;
                 PixHRef  := 0;
                 CharVRef := 0;
                 CharHRef := 0;
                 LinesOnChange(Self);
                 end;

    rmCode   : FLCDAnimator.CurrentLine := 0;
    
    else begin {rmDisplayAndCode}
           PixVRef  := 0;
           PixHRef  := 0;
           CharVRef := 0;
           CharHRef := 0;
           LinesOnChange(Self);
           FLCDAnimator.CurrentLine := 0;
           end;
    end;
end;


////////////////////////////////////////////////////////////////////////////////
//
// General Animation routine.
// Recalc FtempLines strings. Decode CurrentLine and execute it.
//
////////////////////////////////////////////////////////////////////////////////

procedure TLCDScreen.TimerOnTimer(Sender: TObject);
var tempcode: string;
    i: Integer;
begin
  if FLCDAnimator <> nil
  then begin
         FBlinkingStatus := not FBlinkingStatus;
         if FLCDAnimator.Code.Count <> 0 then tempcode  :=  FLCDAnimator.Code[FLCDAnimator.CurrentLine];
         P := AllocMem(NbOfThings(tempcode, ';') * SizeOf(TCodeInstruction)); //Removing dynamic Arrays...
         ExtractCode(tempcode, P^, NbOfThings(tempcode, ';'));

         for i := 1 to NbOfThings(tempcode, ';')
         do begin
              if P^[i].Word = 'horzscroll' then HorzScroll(P^[i].Param);
              if P^[i].Word = 'vertscroll' then VertScroll(P^[i].Param);
              if P^[i].Word = 'setintensity' then SetIntensity(P^[i].Param);
              if P^[i].Word = 'animationdelay' then SetAnimationDelay(P^[i].Param);
              if P^[i].Word = 'gotoline' then FLCDAnimator.CurrentLine := Min(P^[i].Param, FLCDAnimator.Code.Count);
              if P^[i].Word = 'resetdisplay' then Reset(rmDisplay);
              end;
         if Assigned(FLCDAnimator.FOnLineExecuted) then FLCDAnimator.FOnLineExecuted(FLCDAnimator, FLCDAnimator.CurrentLine);

         if FLCDAnimator.CurrentLine = FLCDAnimator.Code.Count - 1
         then begin
                FLCDAnimator.CurrentLine := 0;
                if not FAnimationRepeating then SetAnimationEnabled(False);
                if Assigned(FLCDAnimator.FOnEndCode) then FLCDAnimator.FOnEndCode(FLCDAnimator);
                end
         else FLCDAnimator.CurrentLine := FLCDAnimator.CurrentLine + 1;
         FreeMem(P); //Removing dynamic Arrays...

         Paint;
         end;
  end;


////////////////////////////////////////////////////////////////////////////////
//
// HorzScroll Routine.
//
////////////////////////////////////////////////////////////////////////////////

procedure TLCDScreen.HorzScroll(Value: ShortInt);
var
  i: ShortInt;
begin
  if FAnimationUnits = auChar
  then CharHRef := (CharHref - Value) mod TrueDisplayWidth
  else begin
         i := PixHRef + Value;
         PixHRef := i mod (FontWidth);
         i := i div (FontWidth);

         if i <> 0
         then CharHRef := (CharHref - i) mod TrueDisplayWidth;
         end;
end;


////////////////////////////////////////////////////////////////////////////////
//
// VertScroll Routine.
//
////////////////////////////////////////////////////////////////////////////////

procedure TLCDScreen.VertScroll(Value: ShortInt);
var
  i: ShortInt;
begin
  if FAnimationUnits = auChar
  then CharVRef := (CharVref - Value) mod TrueDisplayHeight
  else begin
         i := PixVRef + Value;
         PixVRef := i mod (FontHeight);
         i := i div (FontHeight);

         if i <> 0
         then CharVRef := (CharVref - i) mod TrueDisplayHeight;
         end;
end;


////////////////////////////////////////////////////////////////////////////////
//
// TLCDScreen About routines.
//
////////////////////////////////////////////////////////////////////////////////

function TLCDScreen.GetAbout: string;
begin
  GetAbout := 'About LCDAnimator';
end;


procedure TLCDScreen.SetAbout(Value: string);
begin
  // just for syntax
end;


////////////////////////////////////////////////////////////////////////////////
//
// Create and initialize component TLCDAnimator.
//
////////////////////////////////////////////////////////////////////////////////

constructor TLCDAnimator.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  FCode := TStringList.Create;
  FCodeErrorFound := False;
  FCurrentLine := 0;
end;


///////////////////////////////////////////////////////////////////////////////
//
// Remove component TLCDAnimator.
//
////////////////////////////////////////////////////////////////////////////////

destructor TLCDAnimator.Destroy;
begin
  FCode.Destroy;
  inherited Destroy;
end;


////////////////////////////////////////////////////////////////////////////////
//
// Set FCode strings.
//
////////////////////////////////////////////////////////////////////////////////

procedure TLCDAnimator.SetCode(Value: TStrings);
begin
  FCode.Assign(Value);
end;


////////////////////////////////////////////////////////////////////////////////
//
// Set FCurrentLine.
//
////////////////////////////////////////////////////////////////////////////////

procedure TLCDAnimator.SetCurrentLine(Value: SmallInt);
begin
  if Value <> FCurrentLine
  then begin
         if Value > Code.Count
         then Value := Max(0, Code.Count - 1);
         FCurrentLine := Value;
         end;
end;


////////////////////////////////////////////////////////////////////////////////
//
// TLCDAnimator About routines.
//
////////////////////////////////////////////////////////////////////////////////

function TLCDAnimator.GetAbout: string;
begin
  GetAbout := 'About LCDAnimator';
end;


procedure TLCDAnimator.SetAbout(Value: string);
begin
  // just for syntax
end;


////////////////////////////////////////////////////////////////////////////////
//
// TLCDScreen and TLCDAnimator registration.
//
////////////////////////////////////////////////////////////////////////////////

procedure Register;
begin
  RegisterComponents('LCDScreen', [TLCDScreen, TLCDAnimator]);
end;


end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧洲国产伦久久久久久久| 激情综合色丁香一区二区| 99久久99久久久精品齐齐| 国产日韩欧美不卡在线| 成人一级视频在线观看| 狠狠狠色丁香婷婷综合久久五月| 国产精品一线二线三线精华| 国产精品一区在线观看你懂的| 日韩欧美一二三区| 国产在线国偷精品免费看| 久久色成人在线| 在线播放中文一区| 精品亚洲国内自在自线福利| 久久精品一区二区三区不卡| 成人综合在线观看| 精品在线免费观看| 欧美精品一区二区不卡| 亚洲一区二区精品视频| 欧美一级国产精品| 国产乱码精品一区二区三区五月婷| 久久久久国产一区二区三区四区| 成人激情动漫在线观看| 亚洲午夜av在线| 欧美成人综合网站| 不卡视频一二三| 午夜视频一区二区三区| 欧美成人在线直播| 91婷婷韩国欧美一区二区| 亚洲电影在线播放| 精品国产污污免费网站入口 | 日韩欧美国产一区在线观看| 国产一区二区三区免费看 | 久久电影网站中文字幕| 欧美国产日本视频| 色婷婷激情久久| 国产日韩一级二级三级| 91国在线观看| 激情久久五月天| 一区二区国产视频| 久久久精品国产免大香伊| 99久久婷婷国产精品综合| 青青草国产精品亚洲专区无| 欧美激情综合在线| 日韩欧美综合在线| 91麻豆免费视频| 国产在线日韩欧美| 亚洲高清在线视频| 国产精品沙发午睡系列990531| 欧美精品一二三| 91社区在线播放| 国产福利一区二区三区| 免费成人在线观看| 尤物av一区二区| 欧美激情艳妇裸体舞| 日韩午夜在线观看视频| 国产欧美视频一区二区| 亚洲人亚洲人成电影网站色| 国产精品系列在线观看| 日韩电影一区二区三区| 亚洲精品网站在线观看| 国产精品色婷婷久久58| 久久综合狠狠综合| 日韩欧美一级精品久久| 欧美三级资源在线| 91浏览器在线视频| 成人午夜激情片| 国产综合久久久久影院| 日本在线观看不卡视频| 亚洲午夜电影在线| 一区二区三区免费| 亚洲精品亚洲人成人网| 亚洲人成影院在线观看| 国产清纯白嫩初高生在线观看91 | 欧美性大战久久久久久久| 成a人片国产精品| 高清成人在线观看| 精品一区二区日韩| 精品国产一区二区国模嫣然| 久久99国产精品久久| 亚洲欧美在线观看| **性色生活片久久毛片| 亚洲欧美偷拍另类a∨色屁股| 国产精品大尺度| 中文字幕在线观看一区二区| 国产精品传媒在线| 亚洲主播在线播放| 日韩国产在线一| 国产一区二区三区久久久| 91久久奴性调教| 日本成人在线看| 日本视频在线一区| 久久精品噜噜噜成人88aⅴ| 午夜av区久久| 麻豆国产精品官网| 国产成人99久久亚洲综合精品| 国内精品国产三级国产a久久| 亚洲国产精品尤物yw在线观看| 国产福利91精品一区二区三区| 国产自产视频一区二区三区| 国产精品亚洲人在线观看| 国产精品综合久久| 成人av网站在线| 91丨九色丨蝌蚪丨老版| 色综合天天视频在线观看| 欧美视频日韩视频| 91精品国产综合久久久蜜臀粉嫩 | 91天堂素人约啪| 色婷婷av一区二区三区软件| 欧美久久久久免费| 日韩你懂的电影在线观看| 久久精品人人爽人人爽| 亚洲精品久久久久久国产精华液| 亚洲电影一区二区| 国产一区二区三区av电影 | gogo大胆日本视频一区| 欧美在线免费观看视频| 日韩欧美激情四射| 亚洲国产精品成人综合| 亚洲va欧美va人人爽午夜| 日韩av高清在线观看| 国产成人av网站| 在线视频亚洲一区| 精品国产电影一区二区| 国产精品久久久久久妇女6080| 亚洲第一av色| 国产成人精品综合在线观看| 欧美在线高清视频| 久久久精品综合| 亚洲国产精品影院| 丁香激情综合国产| 3atv在线一区二区三区| 自拍偷拍亚洲欧美日韩| 麻豆91免费看| 91久久奴性调教| 国产欧美日韩精品一区| 日本最新不卡在线| 99久久国产免费看| 亚洲精品在线一区二区| 亚洲一区二区免费视频| 成人国产精品免费观看| 欧美大片顶级少妇| 亚洲综合色丁香婷婷六月图片| 精品影视av免费| 欧美日韩大陆在线| 国产精品久久久久久久久快鸭| 精品一区二区三区在线观看| 日本高清视频一区二区| 久久久综合视频| 久久国产视频网| 欧美日韩一区 二区 三区 久久精品 | 亚洲永久精品大片| 成人综合婷婷国产精品久久蜜臀| 欧美一二三区在线观看| 亚洲综合精品久久| 91在线一区二区三区| 久久蜜臀精品av| 精久久久久久久久久久| 91精品国产综合久久婷婷香蕉| 亚洲乱码国产乱码精品精可以看| 国产麻豆成人精品| 久久亚洲一区二区三区四区| 青草av.久久免费一区| 678五月天丁香亚洲综合网| 亚洲福利视频三区| 欧美三级中文字| 91美女片黄在线观看| 日本aⅴ精品一区二区三区 | 色欧美88888久久久久久影院| 欧美国产精品久久| 国产黄色精品网站| 国产日本亚洲高清| 国产成人av网站| 久久久久久久综合日本| 蜜桃av噜噜一区| 欧美一级艳片视频免费观看| 无吗不卡中文字幕| 日韩欧美亚洲国产精品字幕久久久| 五月天中文字幕一区二区| 欧美二区三区的天堂| 图片区小说区国产精品视频| 欧美精品国产精品| 奇米精品一区二区三区四区| 日韩午夜在线观看视频| 免费人成在线不卡| 精品欧美乱码久久久久久1区2区| 久久国产人妖系列| 久久久不卡网国产精品二区| 成人做爰69片免费看网站| 亚洲日本一区二区| 欧美三级在线播放| 开心九九激情九九欧美日韩精美视频电影 | 秋霞电影网一区二区| 精品国产一区二区三区四区四| 国产毛片精品国产一区二区三区| 欧美激情一区二区三区蜜桃视频 | 欧洲另类一二三四区| 视频一区在线视频| 久久久久久黄色| 91亚洲精品一区二区乱码| 又紧又大又爽精品一区二区|