Q&A

  • 캡션을 흐르게 하는 방법 아시는분 ^^
오랫만에 또 질문을 하네여 ^^;;
혹시 글자를 흐르게 하는 방법 아시는분 있나요?
그러니까 뉴스에 자막처럼 흘러가는 효과를 만들수 있는지요.
아님 콤포넌트를 써야하는지... 현잰 label의 위치를 변경하는걸로 구현해놓긴 해놧는디... 이넘은 label의 caption을 변경할때마다 이동위치를 다시 계산해야 하거덩엽...ㅠ,.ㅠ(제가 짜논건 아니지만) 어떤 방법이 있을꺼 같기도 한디... 게시판에서 찾으려니.. 어떤 검색어를 써야할지도 모르겠네요 ㅋㅋ
애니메이션 효과도 아니구... 글자 흐름도 아니고...ㅋㅋㅋ
어렵다....
암튼 아시는 고수님덜~~ ^^ 외면 하지 마시고 리플부탁합니다...
만약 콤포면 구입할수있는곳 부탁합니다...^^(꽁짜면 더 좋구여 ㅋㅋㅋ)
그럼 존 하루보내시와여~~
참고로 전 델 5만 씀돠 ㅋㅋㅋ
3  COMMENTS
  • Profile
    사발우성 2003.03.17 18:30
    없다니까여 ㅋㅋㅋ 메롱~
  • Profile
    nilriri™ 2003.03.16 02:27
    그런데 오브젝트 인스펙터에서 값을 지정하면
    디자인 시에 지정한 값을 인식을 못하는 걸까요? ㅡㅡ;

    setScroll해줄때 처리하게 바꿨는뎅..

    샘플 첨부합니다...^^;;

    그럼..


    {*---------------------------------------------------------------------------*}
    {*  컴포넌트    명  :  scrLabel                                              *}
    {*  설          명  :  흐르는 레이블                                         *}
    {*  작    성    일  : 2003. 3. 15                                                  *}
    {*  작    성    자  : nilriri™정재홍 (nilriri2@hotmail.com)                 *)
    {*---------------------------------------------------------------------------*}
    {*  사용법                                                                   *)
    {*  scroll : toStop , toLeft, toRight, toTop, toBottom                       *)
    {*  speed  : integer ; 이동 속도 (1/1000초)                                  *)
    {*---------------------------------------------------------------------------*}
    {*  Sample

        procedure TscrollTest.scrLabel1Click(Sender: TObject);
        begin
           Tscrlabel(Sender).Scroll := toLeft;
           Tscrlabel(Sender).Speed := 250;
        end;
    *)
    {*---------------------------------------------------------------------------*}

    Unit scrLabel;

    Interface

    uses
      SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
      Menus, Forms, Dialogs, StdCtrls, ExtCtrls;

    type
      TScroll = 0..4;

    const
      toStop   = TScroll(0);
      toLeft   = TScroll(1);
      toRight  = TScroll(2);
      toTop    = TScroll(3);
      toBottom = TScroll(4);

    type
      TscrLabel = class(TCustomLabel)
      private
        Timer : TTimer;
        fScroll: TScroll;
        fSpeed: Integer;
        procedure SetScroll(Value: TScroll);
        procedure SetSpeed(Value: Integer);
        procedure ScrollLabel(Sender: TObject);
      protected
      public
        constructor Create(AOwner: TComponent);
      published
    //    property Align;
        property Alignment;
        property Anchors;
        property AutoSize;
        property BiDiMode;
        property Caption;
        property Color;
        property Constraints;
        property DragCursor;
        property DragKind;
        property DragMode;
        property Enabled;
        property FocusControl;
        property Font;
        property ParentBiDiMode;
        property ParentColor;
        property ParentFont;
        property ParentShowHint;
        property PopupMenu;
        property Scroll: TScroll read fScroll write SetScroll default toLeft;
        property ShowAccelChar;
        property ShowHint;
        property Speed: Integer read fSpeed write SetSpeed default 1000;
        property Transparent;
        property Layout;
        property Visible;
        property WordWrap;
        property OnClick;
        property OnContextPopup;
        property OnDblClick;
        property OnDragDrop;
        property OnDragOver;
        property OnEndDock;
        property OnEndDrag;
        property OnMouseDown;
        property OnMouseMove;
        property OnMouseUp;
        property OnMouseEnter;
        property OnMouseLeave;
        property OnStartDock;
        property OnStartDrag;
      end;


    procedure Register;

    implementation

    procedure Register;
    begin
      RegisterComponents('Additional', [TscrLabel]);
    end;

    constructor TscrLabel.Create(AOwner: TComponent);
    begin
      inherited Create(AOwner);
      ControlStyle := ControlStyle + [csOpaque, csReplicatable];
    end;

    procedure TscrLabel.ScrollLabel(Sender: TObject);
    var
       initLeft, initTop : integer;
    begin
       if Parent.ClassName = 'TPanel' then
       begin
          initLeft := TPanel(Parent).Width  - Width;
          initTop  := TPanel(Parent).Height - Height;
       end else if Parent.ClassName = 'TGroupBox' then
       begin
          initLeft := TGroupBox(Parent).Width  - Width;
          initTop  := TGroupBox(Parent).Height - Height;
       end else
       begin
          initLeft := TForm(Parent).Width  - Width;
          initTop  := TForm(Parent).Height - Height;
       end;

       case fScroll of
          toStop : exit;
          toLeft : begin
             Left := Left - 1;
             if Left < 0 then Left := initLeft;
          end;
          toRight : begin
             Left := Left + 1;
             if Left > initLeft then Left := 0 - Width;
          end;
          toTop : begin
             Top := Top - 1;
             if Top < 0 then Top := initTop;
          end;
          toBottom : begin
             Top := Top + 1;
             if Top > initTop then Top := 0 - Height;
          end;
          else
             exit;
       end;
    end;

    procedure TscrLabel.SetScroll(Value: TScroll);
    begin
       fScroll := Value;
       if Not assigned(Timer) then
       begin
          Timer := TTimer.Create(self);
          Timer.OnTimer := ScrollLabel;
          Timer.Interval := fSpeed;
       end;
       Timer.Enabled := Not (Value = toStop);
    end;

    procedure TscrLabel.SetSpeed(Value: Integer);
    begin
       if assigned(Timer) then
       begin
          try
             Timer.Enabled := false;
             Timer.Interval := Value;
          finally
             Timer.Enabled := true;
          end;
       end;
    end;

    end.
  • Profile
    이해원 2003.03.15 21:04
    뭐 설명하기 뭐해서 그냥 플그램 올립니다.