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

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

?? scrolltext.pas

?? 這部分是作為免費(fèi)軟件。 TScrollText (版本1.0 )讓行文字的水平或垂直滾動(dòng)。它方便
?? PAS
字號(hào):
{----------------------------------------------------------
 TScrollText: Version 1.0  14 October, 1996.
 by Darryl West (dwest@dot.net.au)
 ----------------------------------------------------------
 This component is released as Freeware. It was developed
 using Delphi 2. If you have any suggestions, comments or
 bugs please E-mail me.
 ----------------------------------------------------------}
unit ScrollText;
interface
uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, ExtCtrls;

type
  TTextStyle = (tsNormal, tsRaised, tsLowered, tsShaddow);
  TScrollDirection = (sdStatic, sdRightToLeft, sdLeftToRight, sdTopToBottom, sdBottomToTop);
  TAlignment = (taCenter, taLeftJustify, taRightJustify);

  TCustomScrollText = class(TGraphicControl)
  private
    FAlignment: TAlignment;
    FTextStyle: TTextStyle;
    FScrollDirection: TScrollDirection;
    FTimer: TTimer;
    FItems: TStringList;
    FColor: TColor;
    FContinuous: Boolean;
    FFont: TFont;
    FOnBegin, FOnStep, FOnEnd: TNotifyEvent;
    FSteps, FSpeed, FDepth, LineHi, FCurrentStep, FTextWidth,
      FTextHeight, XPos, YPos: Integer;
    procedure SetAlignment(Value: TAlignment);
    procedure SetContinuous(Value: Boolean);
    procedure SetItems(Value: TStringList);
    procedure DataChanged;
    procedure SetTextStyle(Value: TTextStyle);
    procedure SetDirection(Value: TScrollDirection);
    procedure SetSteps(Value: Integer);
    procedure SetSpeed(Value: Integer);
    procedure SetColor(Value: TColor);
    procedure SetFont(Value: TFont);
    procedure SetDepth(Value: Integer);
    procedure SetSizeParams;
    procedure FontChanged(Sender: TObject);
    procedure DoTextOut(ACanvas: TCanvas; X, Y: Integer; AText: string);
  protected
    procedure Paint; override;
    procedure TimerTick(Sender: TObject);
    property Alignment: TAlignment read FAlignment write SetAlignment;
    property Depth: Integer read FDepth write SetDepth default 1;
    property ScrollDirection: TScrollDirection read FScrollDirection
      write SetDirection default sdRightToLeft;
    property Items: TStringList read FItems write SetItems;
    property OnBegin: TNotifyEvent read FOnBegin write FOnBegin;
    property OnStep: TNotifyEvent read FOnStep write FOnStep;
    property OnEnd: TNotifyEvent read FOnEnd write FOnEnd;
  public
    property CurrentStep: Integer read FCurrentStep;
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
    procedure ReverseDirection;
    procedure ScrollStart(StartingStep: Integer);
    procedure ScrollStop;
  published
    property TextStyle: TTextStyle read FTextStyle write SetTextStyle default tsNormal;
    property Steps: Integer read FSteps write SetSteps default 66;
    property Speed: Integer read FSpeed write SetSpeed default 200;
    property Color: TColor read FColor write SetColor default clBtnFace;
    property Continuous: Boolean read FContinuous write SetContinuous;
    property Font: TFont read FFont write SetFont;
  end;

  TScrollText = class(TCustomScrollText)
  published
    property Align;
    property Alignment;
    property Color;
    property Depth;
    property Items;
    property TextStyle;
    property ParentShowHint;
    property Font;
    property ScrollDirection;
    property ShowHint;
    property Speed;
    property Steps;
    property Visible;
    property OnBegin;
    property OnStep;
    property OnEnd;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TScrollText]);
end;

constructor TCustomScrollText.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := ControlStyle - [csOpaque];
  FItems := TStringList.Create;
  FItems.Add('ScrollText');

  Width := 200;
  Height := 20;
  FColor := clBtnFace;
  FSteps := 80;
  FCurrentStep := 0;
  FDepth := 1;
  FContinuous := True;
  FTextStyle := tsNormal;
  FAlignment := taCenter;

  FFont := TFont.Create;
  with FFont do begin
    Name := 'Arial';
    Size := 10;
    Color := clBlack;
  end;
  FFont.OnChange := FontChanged;

  FTimer := TTimer.Create(Self);
  FSpeed := 100;
  with FTimer do begin
    Enabled := False;
    OnTimer := TimerTick;
    Interval := FSpeed;
  end;

  FScrollDirection := sdRightToLeft;
  SetDirection(FScrollDirection); { Start scrolling if necessary. }
end;

destructor TCustomScrollText.Destroy;
begin
  FItems.Free;
  FTimer.Free;
  FFont.Free;
  inherited Destroy;
end;

procedure TCustomScrollText.SetItems(Value: TStringList);
begin
  if FItems <> Value then begin
    FItems.Assign(Value);
    DataChanged;
  end;
end;

procedure TCustomScrollText.DoTextOut(ACanvas: TCanvas; X, Y: Integer; AText: string);
var TextAdjustment: Integer;
begin
  with ACanvas do begin
    Font := FFont;
    Brush.Style := bsClear;

    if FAlignment = taCenter then
      TextAdjustment := Round((FTextWidth / 2) - (TextWidth(AText) / 2))
    else if FAlignment = taRightJustify then
      TextAdjustment := Round(FTextWidth - TextWidth(AText))
    else TextAdjustment := 0;

    case FTextStyle of
      tsRaised: begin
        Font.Color := clBtnHighlight;
        TextOut(X - FDepth + TextAdjustment, Y - FDepth, AText);
        Font.Color := clBtnShadow;
        TextOut(X + FDepth + TextAdjustment, Y + FDepth, AText);
      end;
      tsLowered: begin
        Font.Color := clBtnShadow;
        TextOut(X - FDepth + TextAdjustment, Y - FDepth, AText);
        Font.Color := clBtnHighlight;
        TextOut(X + FDepth + TextAdjustment, Y + FDepth, AText);
      end;
      tsShaddow: begin
        Font.Color := clBtnShadow;
        TextOut(X + FDepth + TextAdjustment, Y + FDepth, AText);
      end;
    end;
    Font.Color := FFont.Color;
    TextOut(X + TextAdjustment, Y, AText);
  end;
end;

procedure TCustomScrollText.Paint;
var TmpBmp: TBitMap;
    StartXPos, StartYPos, I: Integer;
    PercentDone: Double;
begin
  SetSizeParams;
  TmpBmp := TBitMap.Create;
  try
    TmpBmp.Width := Width;
    TmpBmp.Height := Height;
    with TmpBmp.Canvas do begin
      Font := FFont;
      Brush.Color := FColor;
      Brush.Style := bsSolid;
      FillRect(ClipRect);
    end;

    if FTextWidth >= Width then XPos := 0 else XPos := (Width - FTextWidth) div 2;
    if FTextHeight >= Height then YPos := 0 else YPos := (Height - FTextHeight) div 2;

    if csDesigning in ComponentState then PercentDone := 0.5 
    else PercentDone := FCurrentStep / FSteps;

    case FScrollDirection of
      sdRightToLeft: begin
        StartYPos := YPos;
        StartXPos := Round((FTextWidth + Width) * (1 - PercentDone)) - FTextWidth;
      end;
      sdLeftToRight: begin
        StartYPos := YPos;
        StartXPos := Round((FTextWidth + Width) * PercentDone) - FTextWidth;
      end;
      sdBottomToTop: begin
        StartXPos := XPos;
        StartYPos := Round((FTextHeight + Height) * (1 - PercentDone)) - FTextHeight;
      end;
      sdTopToBottom: begin
        StartXPos := XPos;
        StartYPos := Round((FTextHeight + Height) * PercentDone) - FTextHeight;
      end;
      else begin { static }
        StartXPos := XPos;
        StartYPos := YPos;
      end
    end;

    I := 0;
    while I < FItems.Count do begin
      DoTextOut(TmpBmp.Canvas, StartXPos, StartYPos, FItems.Strings[I]);
      Inc(StartYPos, LineHi);
      Inc(I);
    end;
    Canvas.Draw(0, 0, TmpBmp);
  finally
    TmpBmp.Free;
  end;
end;

procedure TCustomScrollText.SetSizeParams;
var S: String;
    I, SWidth: Integer;
    Metrics: TTextMetric;
begin
  with Canvas do begin
    Font := FFont;
    GetTextMetrics(Handle, Metrics);
    LineHi := Metrics.tmHeight + Metrics.tmInternalLeading;
    if FTextStyle in [tsRaised, tsLowered] then LineHi := LineHi + 2 * FDepth
    else if FTextStyle in [tsShaddow] then LineHi := LineHi + FDepth;
  end;
  FTextWidth := 0;
  I := 0;
  while I < FItems.Count do begin
    S := FItems.Strings[I];
    SWidth := Canvas.TextWidth(S);
    if FTextStyle in [tsRaised, tsLowered] then SWidth := SWidth + 2 * FDepth
    else if FTextStyle in [tsShaddow] then SWidth := SWidth + FDepth;
    if FTextWidth < SWidth then FTextWidth := SWidth;
    Inc(I);
  end;
  FTextHeight := LineHi * FItems.Count;
  if FTextWidth >= Width then XPos := 0 else XPos := (Width - FTextWidth) div 2;
  if FTextHeight >= Height then YPos := 0 else YPos := (Height - FTextHeight) div 2;
end;

procedure TCustomScrollText.DataChanged;
begin
  SetSizeParams;
  Invalidate;
end;

procedure TCustomScrollText.SetTextStyle(Value: TTextStyle);
begin
  if FTextStyle <> Value then begin
    FTextStyle := Value;
    DataChanged;
  end;
end;

procedure TCustomScrollText.SetDirection(Value: TScrollDirection);
begin
  if FScrollDirection <> Value then begin
    FScrollDirection := Value;
  end;
  if FScrollDirection = sdStatic then ScrollStop
  else ScrollStart(FCurrentStep);
end;

procedure TCustomScrollText.SetContinuous(Value: Boolean);
begin
  if FContinuous <> Value then begin
    FContinuous := Value;
    if FScrollDirection <> sdStatic then ScrollStart(FCurrentStep);
  end;
end;

procedure TCustomScrollText.SetSteps(Value: Integer);
begin
  if FSteps <> Value then begin
    FSteps := Value;
    if csDesigning in ComponentState then Invalidate;
  end;
end;

procedure TCustomScrollText.SetSpeed(Value: Integer);
begin
  if FSpeed <> Value then begin
    if Value > 1000 then Value := 1000
    else if Value < 1 then Value := 1;
    FSpeed := Value;
    if FTimer <> nil then FTimer.Interval := FSpeed;
  end;
end;

procedure TCustomScrollText.SetColor(Value: TColor);
begin
  if FColor <> Value then begin
    FColor := Value;
    DataChanged;
  end;
end;

procedure TCustomScrollText.FontChanged(Sender: TObject);
begin
  DataChanged;
end;

procedure TCustomScrollText.SetFont(Value: TFont);
begin
  if FFont <> Value then begin
    FFont.Assign(Value);
    DataChanged;
  end;
end;

procedure TCustomScrollText.SetAlignment(Value: TAlignment);
begin
  if FAlignment <> Value then begin
    FAlignment := Value;
    DataChanged;
  end;
end;

procedure TCustomScrollText.SetDepth(Value: Integer);
begin
  if FDepth <> Value then begin
    FDepth := Value;
    DataChanged;
  end;
end;

procedure TCustomScrollText.ScrollStart(StartingStep: Integer);
begin
  if FTimer.Enabled then Exit;
  if (StartingStep >= 0) and (StartingStep <= FSteps) then FCurrentStep := StartingStep;
  FTimer.Enabled := True;
end;

procedure TCustomScrollText.ScrollStop;
begin
  FTimer.Enabled := False;
end;

procedure TCustomScrollText.ReverseDirection;
begin
  if FScrollDirection = sdStatic then Exit;
  FCurrentStep := FSteps - FCurrentStep;
  case FScrollDirection of
    sdLeftToRight: FScrollDirection := sdRightToLeft;
    sdRightToLeft: FScrollDirection := sdLeftToRight;
    sdTopToBottom: FScrollDirection := sdBottomToTop;
    sdBottomToTop: FScrollDirection := sdTopToBottom;
  end;
end;

procedure TCustomScrollText.TimerTick(Sender: TObject);
begin
  if not FTimer.Enabled then Exit;
  if (FCurrentStep = 0) and Assigned(FOnBegin) then FOnBegin(Self);
  Inc(FCurrentStep);
  Paint;
  if Assigned(FOnStep) then FOnStep(Self);
  if FCurrentStep > FSteps then begin
    FTimer.Enabled := False;
    if Assigned(FOnEnd) then FOnEnd(Self);
    FCurrentStep := 0;
    if FContinuous then ScrollStart(FCurrentStep);
  end;
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丝袜脚交一区二区| 亚洲主播在线播放| 日韩一级视频免费观看在线| 色婷婷久久久综合中文字幕| 国产一区二区精品久久| 老司机精品视频一区二区三区| 亚洲成av人片一区二区三区| 一区二区久久久久久| 亚洲黄色小视频| 亚洲综合精品自拍| 亚洲成人av电影| 日韩精品亚洲专区| 久久国产精品72免费观看| 久久精工是国产品牌吗| 国产在线观看免费一区| 成人app在线观看| 91看片淫黄大片一级在线观看| 99久免费精品视频在线观看| 92精品国产成人观看免费| 91麻豆免费视频| 欧美网站一区二区| 精品日本一线二线三线不卡| 欧美精品一区二区三| 国产亚洲短视频| 1024亚洲合集| 亚洲18色成人| 国产酒店精品激情| 99精品热视频| 欧美一区日韩一区| 国产女同互慰高潮91漫画| 亚洲欧洲另类国产综合| 日韩高清一级片| 国产成人免费在线观看不卡| 91极品视觉盛宴| 日韩你懂的在线观看| 国产免费成人在线视频| 依依成人综合视频| 久久国产精品无码网站| 成人污视频在线观看| 欧美日韩一区精品| 国产日韩亚洲欧美综合| 亚洲最大的成人av| 国产一区二区免费视频| 日本韩国欧美国产| 国产欧美日韩在线视频| 蜜桃一区二区三区在线| 99re8在线精品视频免费播放| 欧美无乱码久久久免费午夜一区| 欧美一区二区三区在线观看| 国产精品成人免费在线| 欧美aⅴ一区二区三区视频| 从欧美一区二区三区| 欧美一区二区三区视频在线| 欧美极品少妇xxxxⅹ高跟鞋| 欧美aaaaa成人免费观看视频| 色综合久久久久综合体桃花网| 久久综合五月天婷婷伊人| 亚洲午夜精品网| 不卡的av网站| 精品久久久久久久久久久久久久久久久| 国产精品久久久久久久浪潮网站| 日韩国产欧美三级| 欧美亚洲禁片免费| 国产精品国产三级国产| 精品一区二区在线看| 欧美日韩视频专区在线播放| 国产精品精品国产色婷婷| 国产精品综合av一区二区国产馆| 日韩一区二区三区四区| 亚洲午夜久久久| 在线免费不卡电影| 最新久久zyz资源站| 国内外成人在线视频| 91精品久久久久久蜜臀| 亚洲一区二区在线免费观看视频| 91无套直看片红桃| 国产精品国产三级国产普通话三级| 激情成人综合网| 精品久久久久久久一区二区蜜臀| 久久超碰97人人做人人爱| 日韩限制级电影在线观看| 日日骚欧美日韩| 在线播放亚洲一区| 丝袜美腿一区二区三区| 欧美丰满高潮xxxx喷水动漫| 热久久国产精品| 欧美一级片免费看| 日本成人在线网站| 日韩免费成人网| 国产精一品亚洲二区在线视频| 精品国偷自产国产一区| 国产成人免费高清| 一区视频在线播放| 欧美无砖专区一中文字| 免费久久精品视频| 久久久久免费观看| av在线一区二区| 亚洲h精品动漫在线观看| 欧美一三区三区四区免费在线看| 蜜臀av一级做a爰片久久| 国产人久久人人人人爽| 99久久国产综合精品色伊| 亚洲在线成人精品| 日韩一区二区免费电影| 国产69精品久久久久777| 一区二区国产盗摄色噜噜| 欧美另类一区二区三区| 精品一区二区免费在线观看| 国产精品国产三级国产普通话三级| 91年精品国产| 蜜臀av性久久久久蜜臀av麻豆| 日本一区二区高清| 欧美精品一二三| 国产成人自拍网| 午夜精品一区二区三区三上悠亚 | 国产91富婆露脸刺激对白| 中文一区二区完整视频在线观看| 在线视频一区二区三| 紧缚奴在线一区二区三区| 1024国产精品| 欧美mv日韩mv| 欧美吻胸吃奶大尺度电影| 国产美女精品在线| 亚洲国产欧美在线人成| 久久久亚洲精品石原莉奈| 欧美中文字幕久久| 国产精品一区二区黑丝| 亚洲福利视频导航| 欧美激情一区二区三区四区| 91精品国产免费| 91麻豆.com| 国产激情偷乱视频一区二区三区| 亚洲第四色夜色| 国产精品三级av| 精品理论电影在线| 7777精品伊人久久久大香线蕉最新版| va亚洲va日韩不卡在线观看| 久久精品国产一区二区三区免费看| 亚洲视频在线一区| 国产精品女同一区二区三区| www日韩大片| 日韩一区二区三区高清免费看看| 色悠悠久久综合| 成人黄页毛片网站| 国产麻豆成人精品| 国产精品一级二级三级| 久久99蜜桃精品| 久久国产精品72免费观看| 日韩精品一卡二卡三卡四卡无卡| 亚洲与欧洲av电影| 亚洲国产美国国产综合一区二区| 日本一区二区不卡视频| 中文字幕二三区不卡| 久久麻豆一区二区| 26uuu国产一区二区三区| 日韩欧美高清在线| 日韩欧美精品在线视频| 日韩午夜电影在线观看| 制服丝袜成人动漫| 欧美一区二区三区精品| 欧美一区二区三区在线电影| 91精品国产手机| 日韩欧美一级在线播放| 日韩视频免费直播| 精品卡一卡二卡三卡四在线| 国产视频一区二区在线观看| 亚洲国产精品av| 亚洲精品中文字幕乱码三区| 一区二区高清在线| 午夜激情综合网| 久草热8精品视频在线观看| 国产精品一区专区| av不卡免费在线观看| 91成人国产精品| 欧美一级爆毛片| 国产女人aaa级久久久级| 亚洲精品视频观看| 人人精品人人爱| 成人av网址在线| 欧美巨大另类极品videosbest | 日韩三级视频在线观看| 精品福利在线导航| 中文字幕一区三区| 亚洲一区二区四区蜜桃| 国产日韩精品一区二区三区在线| 欧美高清hd18日本| 欧美韩日一区二区三区| 亚洲日本在线a| 奇米精品一区二区三区四区| 麻豆精品一二三| 懂色av一区二区在线播放| 欧美性生活一区| 欧美一级日韩一级| 亚洲精品一区二区三区精华液| 尤物在线观看一区| 亚洲444eee在线观看| 国产自产v一区二区三区c| 国产成人亚洲综合色影视| www.亚洲免费av| 欧美一区国产二区|