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

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

?? aactrls.pas

?? 該控件顯示公歷和農歷
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
end;

//透明繪制
procedure TAAText.TransparentPaint;
begin
  CalcSize;
  DrawCanvas(Canvas);
end;

//默認文本創建默認標簽
function TAAText.UseDefaultLabels: Boolean;
begin
  Result := not FText.IsLinesStored;
end;

{ TTextParam }

//--------------------------------------------------------//
//平滑文本參數類                                          //
//--------------------------------------------------------//

//創建
constructor TTextParam.Create(AOwner: TAAGraphicControl;
  ChangedProc: TNotifyEvent);
begin
  inherited;
  Lines.Text := csAATextCopyRight;
end;

//釋放
destructor TTextParam.Destroy;
begin
  inherited;
end;

//文本存儲
function TTextParam.IsLinesStored: Boolean;
begin
  Result := Lines.Text <> csAATextCopyRight;
end;

{ TAAScrollText }

//--------------------------------------------------------//
//平滑滾動文本控件                                        //
//--------------------------------------------------------//

//控件初始化
constructor TAAScrollText.Create(AOwner: TComponent);
begin
  inherited;
  ControlStyle := ControlStyle + [csOpaque]; //由控件繪制所有客戶區
  FText := TScrollTextParam.Create(Self, OnLabelChanged);
  TextBmp := TBitmap.Create;
  TextBmp.PixelFormat := pf24bit;
  CurrBmp := TBitmap.Create;
  CurrBmp.PixelFormat := pf24bit;
  ScrollTimer := TAATimer.Create(Self);
  ScrollTimer.Enabled := False;
  ScrollTimer.OnTimer := OnScrollTimer;
  DelayTimer := TTimer.Create(Self);
  DelayTimer.Enabled := False;
  DelayTimer.OnTimer := OnDelayTimer;
  FCurrPos := 0;
  FRepeatCount := 0;
  FActive := True;
  RepeatDelay := 2000;
  ScrollStep := 1;
  ScrollDelay := 60;
  Color := clWhite;
  SetBounds(0, 0, 240, 280);
end;

//釋放
destructor TAAScrollText.Destroy;
begin
  Active := False;
  ScrollTimer.Free;
  DelayTimer.Free;
  TextBmp.Free;
  CurrBmp.Free;
  FText.Free;
  inherited;
end;

//顯示文本復位
procedure TAAScrollText.Reset;
var
  tActive: Boolean;
begin
  tActive := Active;
  FRepeatedCount := -1;
  Active := False;
  CreateText;
  FCurrPos := 0;
  Paint;
  Active := tActive;
end;

//繪制控件
procedure TAAScrollText.PaintCanvas;
var
  i: Integer;
  BkRed, BkGreen, BkBlue: Byte;
  tBkColor: TColor;

  //透明混合
  procedure DrawFade(y: Integer; Transparency: Integer);
  const
    MaxPixelCount = 32768;
  type
    PRGBTripleArray = ^TRGBTripleArray;
    TRGBTripleArray = array[0..MaxPixelCount] of TRGBTriple;
  var
    Row: PRGBTripleArray;
    x: Integer;
  begin
    Row := CurrBmp.ScanLine[y];
    for x := 0 to CurrBmp.Width - 1 do
    begin
      if Row[x].rgbtRed <> BkRed then
        Row[x].rgbtRed := Transparency * (Row[X].rgbtRed - BkRed) shr 8 + BkRed;
      if Row[x].rgbtGreen <> BkGreen then
        Row[x].rgbtGreen := Transparency * (Row[X].rgbtGreen - BkGreen) shr 8 + BkGreen;
      if Row[x].rgbtBlue <> BkBlue then
        Row[x].rgbtBlue := Transparency * (Row[X].rgbtBlue - BkBlue) shr 8 + BkBlue;
    end;
  end;
begin
  CurrBmp.Height := Height;
  CurrBmp.Width := Width;
  if FCurrPos + Height <= TextBmp.Height then //完整顯示
    BitBlt(CurrBmp.Canvas.Handle, 0, 0, Width, Height, TextBmp.Canvas.Handle, 0,
      FCurrPos, SRCCopy)
  else
  begin                       //首尾相接
    BitBlt(CurrBmp.Canvas.Handle, 0, 0, Width, TextBmp.Height - FCurrPos,
      TextBmp.Canvas.Handle, 0, FCurrPos, SRCCopy);
    BitBlt(CurrBmp.Canvas.Handle, 0, TextBmp.Height - FCurrPos, Width, Height -
      (TextBmp.Height - FCurrPos), TextBmp.Canvas.Handle, 0, 0, SRCCopy);
  end;
  if FText.Fade then          //淡入淡出
  begin
    tBkColor := ColorToRGB(Color);
    BkRed := GetRValue(tBkColor);
    BkGreen := GetGValue(tBkColor);
    BkBlue := GetBValue(tBkColor);
    for i := 0 to FText.FadeHeight - 1 do
    begin
      DrawFade(i, 255 * i div (FText.FadeHeight - 1));
      DrawFade(Height - 1 - i, 255 * i div (FText.FadeHeight - 1));
    end;
  end;                        //繪制到控件畫布
  if not (csDestroying in ComponentState) then
    BitBlt(Canvas.Handle, 0, 0, Width, Height, CurrBmp.Canvas.Handle, 0, 0, SRCCopy);
  if Assigned(OnPainted) then
    OnPainted(Self);
end;

//執行滾動
procedure TAAScrollText.OnScrollTimer(Sender: TObject);
begin
  if CurrPos = 0 then         //單次滾動完成
  begin
    FRepeatedCount := FRepeatedCount + 1;
    if (RepeatCount > 0) and (RepeatedCount >= RepeatCount) then
    begin                     //滾動完成
      Active := False;
      FRepeatedCount := -1;
      if Assigned(OnComplete) then
        OnComplete(Self);
      Exit;
    end else if DelayTimer.Interval > 0 then
    begin                     //循環延時
      ScrollTimer.Enabled := False;
      DelayTimer.Enabled := True;
      Exit;
    end;
  end;

  if (FScrollStep > 0) and (CurrPos + FScrollStep >= TextBmp.Height) then
    CurrPos := 0
  else if (FScrollStep < 0) and (CurrPos + FScrollStep < 0) then
    CurrPos := 0
  else
    CurrPos := CurrPos + FScrollStep; //當前位置增加
end;

//創建文本位圖
procedure TAAScrollText.CreateText;
var
  i, j: Integer;
  DispLines: TStrings;
  CurrText: string;
  WrapLines: TStrings;
  CurrHeight: Integer;
  CurrAlign: TAlignment;
  x, y: Integer;
  TextWidth: Integer;
  TextHeight: Integer;
  MaxCol: Integer;
begin
  BeginUpdate;
  DispLines := nil;
  WrapLines := nil;
  try
    DispLines := TStringList.Create; //臨時文本
    WrapLines := TStringList.Create;
    with FText do
    begin
      TextBmp.Height := 0;
      TextBmp.Width := Width;
      TextBmp.Canvas.Brush.Color := Color;
      TextBmp.Canvas.Brush.Style := bsSolid;
      DispLines.Clear;
      DispLines.AddStrings(Lines);
      AAFont.Canvas := TextBmp.Canvas;
      AAFont.Effect.Assign(FText.FontEffect);
      if Fade then            //淡入淡出空白
        CurrHeight := FadeHeight
      else
        CurrHeight := 0;
      CurrHeight := CurrHeight + Height * HeadSpace div 100; //頭部空白
      TextBmp.Canvas.Font.Assign(Font);
      for i := 0 to DispLines.Count - 1 do
      begin
        CurrText := DispLines[i]; //當前處理字符串
        if LabelEffect = leOnlyALine then
        begin
          TextBmp.Canvas.Font.Assign(Font);
          AAFont.Effect.Assign(FText.FontEffect);
        end;
        Fonts.Check(CurrText, TextBmp.Canvas.Font, AAFont.Effect); //檢查字體標簽
        Labels.Check(CurrText, CurrAlign); //檢查用戶標簽
        TextHeight := AAFont.TextHeight(CurrText + ' ');
        TextWidth := AAFont.TextWidth(CurrText);
        if WordWrap and (TextWidth > Width) then //自動換行
        begin
          MaxCol := Width * Length(CurrText) div TextWidth;
          while AAFont.TextWidth(Copy(CurrText, 1, MaxCol)) > Width do
            Dec(MaxCol);
          WrapText(CurrText, WrapLines, MaxCol);
        end else if CurrText <> '' then
          WrapLines.Text := CurrText
        else
          WrapLines.Text := ' ';
        CurrHeight := CurrHeight + Round(TextHeight * (1 + RowPitch / 100)) *
          WrapLines.Count;
      end;
      TextBmp.Canvas.Brush.Color := Color;
      TextBmp.Canvas.Brush.Style := bsSolid;
      CurrHeight := CurrHeight + Height * TailSpace div 100; //尾部空白
      if CurrHeight < ClientHeight then
        CurrHeight := ClientHeight;
      TextBmp.Height := CurrHeight;
      if Assigned(FText.BackGround.Graphic) and not
        FText.BackGround.Graphic.Empty then
        DrawBackGround(TextBmp.Canvas, Rect(0, 0, TextBmp.Width,
          TextBmp.Height), FText.BackGround.Graphic, FText.BackGroundMode);

      DispLines.Clear;
      DispLines.AddStrings(Lines);
      TextBmp.Canvas.Brush.Style := bsClear;
      AAFont.Effect.Assign(FText.FontEffect);
      if Fade then            //淡入淡出空白
        CurrHeight := FadeHeight
      else
        CurrHeight := 0;
      CurrHeight := CurrHeight + Height * HeadSpace div 100; //頭部空白
      TextBmp.Canvas.Font.Assign(Font);
      CurrAlign := Alignment; //默認對齊方式
      for i := 0 to DispLines.Count - 1 do
      begin
        CurrText := DispLines[i]; //當前處理字符串
        if LabelEffect = leOnlyALine then
        begin
          TextBmp.Canvas.Font.Assign(Font);
          AAFont.Effect.Assign(FText.FontEffect);
          CurrAlign := Alignment;
        end;
        Fonts.Check(CurrText, TextBmp.Canvas.Font, AAFont.Effect); //檢查字體標簽
        Labels.Check(CurrText, CurrAlign); //檢查用戶標簽
        TextWidth := AAFont.TextWidth(CurrText);
        if WordWrap and (TextWidth > Width) then //自動換行
        begin
          MaxCol := Width * Length(CurrText) div TextWidth;
          while AAFont.TextWidth(Copy(CurrText, 1, MaxCol)) > Width do
            Dec(MaxCol);
          WrapText(CurrText, WrapLines, MaxCol);
        end else if CurrText <> '' then
          WrapLines.Text := CurrText
        else
          WrapLines.Text := ' ';
        for j := 0 to WrapLines.Count - 1 do
        begin
          CurrText := WrapLines[j];
          TextHeight := AAFont.TextHeight(CurrText + ' ');
          TextWidth := AAFont.TextWidth(CurrText);
          case CurrAlign of     //對齊方式
            taLeftJustify: x := 0;
            taCenter: x := (TextBmp.Width - TextWidth) div 2;
            taRightJustify: x := TextBmp.Width - TextWidth;
          else x := 0;
          end;
          y := CurrHeight;      //行間距
          AAFont.TextOut(x, y, CurrText);
          CurrHeight := CurrHeight + Round(TextHeight * (1 + RowPitch / 100));
        end;
      end;
      if Assigned(OnTextReady) then //調用OnTextReady事件
        OnTextReady(Self);
    end;
  finally
    WrapLines.Free;
    DispLines.Free;
    EndUpdate;
  end;
end;

//設置活動
procedure TAAScrollText.SetActive(const Value: Boolean);
begin
  if FActive <> Value then
  begin
    FActive := Value;
    ScrollTimer.Enabled := FActive;
    if not FActive then
      DelayTimer.Enabled := False;
  end;
end;

//設置循環延時
procedure TAAScrollText.SetRepeatDelay(const Value: Word);
begin
  if FRepeatDelay <> Value then
  begin
    FRepeatDelay := Value;
    if FRepeatDelay <= 0 then
      FRepeatDelay := 0;
    DelayTimer.Interval := Value;
  end;
end;

//設置滾動延時
procedure TAAScrollText.SetScrollDelay(const Value: Word);
begin
  if FScrollDelay <> Value then
  begin
    FScrollDelay := Value;
    if FScrollDelay <= 0 then
      FScrollDelay := 0;
    ScrollTimer.Interval := FScrollDelay;
  end;
end;

//設置每次滾動增量
procedure TAAScrollText.SetScrollStep(const Value: Integer);
begin
  if FScrollStep <> Value then
  begin
    FScrollStep := Value;
  end;
end;

//設置循環次數
procedure TAAScrollText.SetRepeatCount(const Value: TBorderWidth);
begin
  if FRepeatCount <> Value then
  begin
    FRepeatCount := Value;
    if FRepeatCount <= 0 then
      FRepeatCount := 0;
    Changed;
  end;
end;

//設置文本內容
procedure TAAScrollText.SetText(const Value: TScrollTextParam);
begin
  FText.Assign(Value);
end;

//重頭開始滾動
procedure TAAScrollText.ReStart;
begin
  FRepeatedCount := -1;
  CurrPos := 0;
end;

//設置當前位置
procedure TAAScrollText.SetCurrPos(const Value: Integer);
begin
  if FCurrPos <> Value then
  begin
    FCurrPos := Value mod TextBmp.Height;
    if FCurrPos < 0 then
      Inc(FCurrPos, TextBmp.Height);
    Paint;
  end;
end;

//大小變化消息
function TAAScrollText.CanResize(var NewWidth,
  NewHeight: Integer): Boolean;
begin
  if NewWidth < 20 then NewWidth := 20;
  if NewHeight < 20 then NewHeight := 20;
  Result := inherited CanResize(NewWidth, NewHeight);
end;

//循環延時
procedure TAAScrollText.OnDelayTimer(Sender: TObject);
begin
  DelayTimer.Enabled := False;
  CurrPos := CurrPos + FScrollStep;
  if Active then
    ScrollTimer.Enabled := True;
end;

//創建默認字體集
procedure TAAScrollText.CreateDefFonts;
var
  FLabel: TFontLabel;
begin
  inherited;
  FLabel := Fonts.AddItem('Title4', '隸書', 22, clBlack, [fsBold], True, 2, 2);
  if Assigned(FLabel) then
  begin
    FLabel.Effect.Gradual.Enabled := True;
    FLabel.Effect.Gradual.Style := gsLeftToRight;
    FLabel.Effect.Gradual.StartColor := $00FF2200;
    FLabel.Effect.Gradual.EndColor := $002210FF;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品99久久久久久久女警| 久久你懂得1024| 国产一区二区三区电影在线观看| 成人一区二区三区视频| 成人激情动漫在线观看| 日韩精品一区二区三区swag| 亚洲综合成人在线| 不卡一区二区三区四区| 在线亚洲一区观看| 不卡的av电影| 欧美三级一区二区| 欧美日韩精品欧美日韩精品一 | 久久综合网色—综合色88| 日韩免费视频一区二区| 久久久美女艺术照精彩视频福利播放| 日韩一区二区精品| 国产日本欧美一区二区| 久久久精品黄色| 午夜精品免费在线| 蜜乳av一区二区| 91免费在线播放| 欧美一区二区三区免费大片| 亚洲国产精品激情在线观看| 综合电影一区二区三区| 蜜臀久久99精品久久久久久9| 日本aⅴ亚洲精品中文乱码| 国产成人精品免费网站| 在线免费观看一区| 91精品国产91综合久久蜜臀| 日韩欧美一区二区三区在线| 香蕉乱码成人久久天堂爱免费| 欧美视频在线一区| 久久国产福利国产秒拍| 国产欧美日韩卡一| 色婷婷国产精品| 久久精品久久久精品美女| 国产精品欧美一区喷水| 欧美午夜精品理论片a级按摩| 老司机精品视频导航| 国产精品乱码一区二三区小蝌蚪| 欧美日韩国产一二三| 国产黄人亚洲片| 日本亚洲一区二区| 亚洲一区视频在线观看视频| 欧美精品一区在线观看| 欧美丝袜自拍制服另类| av一本久道久久综合久久鬼色| 男男成人高潮片免费网站| 亚洲图片另类小说| 久久久青草青青国产亚洲免观| 欧美日韩亚洲综合一区| av在线免费不卡| 韩国成人福利片在线播放| 天天综合天天综合色| 欧美激情资源网| 精品日韩成人av| 欧美一区二区三区视频免费| 色狠狠综合天天综合综合| 国产精品18久久久久久久久| 天天综合网 天天综合色| 一区二区欧美在线观看| 国产精品美女久久久久久| 久久色在线观看| 91精品国产欧美一区二区18| 欧美网站大全在线观看| 色88888久久久久久影院按摩| 国产成人精品影院| 粉嫩aⅴ一区二区三区四区五区| 蓝色福利精品导航| 日本欧美肥老太交大片| 日本不卡一二三| 全部av―极品视觉盛宴亚洲| 日本亚洲电影天堂| 蜜臀av性久久久久蜜臀aⅴ| 日韩精品一级二级| 亚洲国产成人高清精品| 亚洲v日本v欧美v久久精品| 亚洲国产日韩在线一区模特 | 国产电影精品久久禁18| 久久精品99久久久| 久久精品噜噜噜成人88aⅴ| 美女视频免费一区| 麻豆中文一区二区| 精品亚洲免费视频| 国产高清精品网站| 丁香一区二区三区| 成人午夜视频在线| 99re66热这里只有精品3直播| 99精品欧美一区二区蜜桃免费| 91蜜桃免费观看视频| 在线视频观看一区| 337p亚洲精品色噜噜狠狠| 日韩你懂的在线观看| 国产亚洲美州欧州综合国| 中文字幕在线观看不卡视频| 亚洲精品视频免费看| 日日夜夜精品免费视频| 激情五月婷婷综合网| 成人免费高清视频| 91小视频免费看| 欧美疯狂做受xxxx富婆| 精品三级av在线| 欧美激情在线一区二区三区| 最新久久zyz资源站| 亚洲第一福利视频在线| 麻豆视频一区二区| 99久久精品国产麻豆演员表| 欧美亚洲高清一区二区三区不卡| 欧美一区二区三区日韩视频| 国产视频一区在线观看| 亚洲亚洲人成综合网络| 国产综合色产在线精品 | 一本到不卡免费一区二区| 欧美日本韩国一区二区三区视频| 26uuu亚洲婷婷狠狠天堂| 亚洲三级视频在线观看| 免费视频最近日韩| 99久精品国产| 欧美成人一区二区三区在线观看| 国产精品国产a级| 日韩成人av影视| 91在线免费视频观看| 日韩免费成人网| 一区二区三区精品视频| 国产精品一区二区91| 欧美日韩国产三级| 中文字幕av一区二区三区免费看| 亚洲国产欧美一区二区三区丁香婷| 狠狠色丁香久久婷婷综合丁香| 色婷婷综合久久久久中文 | 不卡av在线免费观看| 91精品国产福利在线观看| 亚洲女子a中天字幕| 九九在线精品视频| 欧美日韩欧美一区二区| 国产精品天干天干在观线| 麻豆免费精品视频| 欧美性生交片4| 国产精品久久久久久户外露出| 免费在线观看不卡| 欧美性高清videossexo| 国产精品久久久久精k8 | 国产91丝袜在线播放九色| 欧美日韩精品久久久| 亚洲免费看黄网站| 成人性生交大片免费看在线播放| 欧美精品1区2区3区| 亚洲天堂福利av| 成人精品国产一区二区4080| 精品美女在线观看| 日韩av不卡在线观看| 精品视频1区2区| 亚洲欧美偷拍另类a∨色屁股| 成人高清视频在线| 国产亚洲一区字幕| 国产黄色成人av| 久久久久久久久久久久久久久99 | 国产在线播放一区二区三区| 欧美肥妇free| 午夜欧美在线一二页| 91福利在线观看| 亚洲精品第一国产综合野| 成人午夜在线免费| 中文字幕亚洲一区二区av在线| 国产不卡免费视频| 日本一区二区三区在线观看| 国产激情偷乱视频一区二区三区| 欧美精品一区二区三区在线| 另类人妖一区二区av| 欧美成人性福生活免费看| 蜜桃传媒麻豆第一区在线观看| 欧美一区二区三区色| 九九久久精品视频| 国产欧美中文在线| 亚洲综合色自拍一区| 色综合久久88色综合天天| 一个色综合av| 欧美伦理电影网| 亚洲成av人片在www色猫咪| 欧美体内she精视频| 日韩精品每日更新| 精品日韩一区二区三区| 国产成人av电影在线| 中文字幕一区二区三区四区不卡| 99麻豆久久久国产精品免费| 亚洲免费观看高清| 91国产福利在线| 蜜桃av噜噜一区| 中文字幕精品一区| 欧美午夜电影一区| 久久精品国产网站| 国产精品免费av| 欧美亚洲尤物久久| 久久成人麻豆午夜电影| 国产精品日产欧美久久久久| 欧美亚日韩国产aⅴ精品中极品| 蜜桃av噜噜一区二区三区小说| 久久久久久黄色| 91国偷自产一区二区使用方法| 蜜桃视频在线一区|