ورود

View Full Version : کامپوننت Animation Caption



AliReza Vafakhah
یک شنبه 17 آبان 1388, 23:54 عصر
با سلام خدمت دوستان

میرم سر اصل مطلب ؛ خیلی وقت بود که می خواستم یه کامپوننت بنویسم اما خوب با ساختار کامپوننت نویسی آشنا نبود تا اینکه تو سایت یه PDF در این رابطه پیدا کردم شروع به مطالعه کردم و حدود 20 صفحه را تا حالا خوندم (خیلی اهل مطالعه نیستم) تا بالاخره دیشب یهو به فکرم افتاد و این کامپوننت رو نوشتم .

کامپوننت Animation Caption که کار خیلی ساده ای رو انجام میده و متن برنامه شما رو به حرکت در میاره .

از دوستان تقاضا می کنم که کامپوننت رو دانلود کنن و عیب ها رو به من بگن زیرا اولین کار من در کامپوننت نویسی هست و حتما نقص های زیادی داره .

با تشکر
دانلود به همراه سورس و Sample.exe
در دلفی 7 و 2009 تست شده

نسخه جدید در پست شماره 6 برابر با تاریخ 1389/01/15

AliReza Vafakhah
چهارشنبه 20 آبان 1388, 02:12 صبح
دوستان این هم سورس کامل

لطفا اگه مشکلی می بینید خواهشا عرض کنید




unit AVF_AnimationCaption;

interface

uses
SysUtils, Classes, ExtCtrls, Forms, Controls ,StrUtils ,Dialogs;

type
TRightToLeftMode=(LeftMode,RightMode);

type
TAnimationCaption = class(TComponent)
private
FAnmationString,tempStr:string;
FActive:Boolean;
ObjectTimer:TTimer;
FForm:TCustomForm;
FInterval:Integer;
StrFirstCaption:string;
FSpace:Byte;
FRightToLeft:TRightToLeftMode;
{ Private declarations }
procedure RunAnimation(Sender:TObject);
protected
procedure FSetAnimationText(const Value:string);
procedure SetActive(const Value:Boolean);
procedure SetInterval(const Value:Integer);
procedure SetSpace(const Value:byte);
procedure SetRightToLeftMode(const value:TRightToLeftMode);
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner:TComponent );override;
destructor Destroy;override;
published
property AnimationText:string read FAnmationString write FSetAnimationText;
property Active:Boolean read FActive write SetActive default True;
property Interval:Integer read FInterval write SetInterval default 200;
property Space:Byte read FSpace write SetSpace default 3;
property RightToLeftMode:TRightToLeftMode read FRightToLeft write SetRightToLeftMode default LeftMode;
{ Published declarations }
end;

{$R AVF_AnimationCaption.res}

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('AVF', [TAnimationCaption]);
end;

{ TComponent1 }

constructor TAnimationCaption.Create(AOwner: TComponent);
begin
inherited;
if (not Assigned(FForm)) then
FForm:=GetParentForm(TControl(AOwner));
FInterval:=200;
FSpace:=3;
FAnmationString:=FForm.Caption;
StrFirstCaption:=FForm.Caption;
ObjectTimer:=TTimer.Create(Self);
ObjectTimer.OnTimer:=RunAnimation;
ObjectTimer.Interval:=FInterval;
tempStr:=FAnmationString+DupeString(' ',3);
FActive:=True;
end;

destructor TAnimationCaption.Destroy;
begin
if (FActive) then FActive:=False;
FreeAndNil(ObjectTimer);
if not (csDestroying in FForm.ComponentState) then
FForm.Caption:=StrFirstCaption;
inherited;
end;

procedure TAnimationCaption.FSetAnimationText(const Value: string);
begin
FAnmationString:=Value;
tempStr:=FAnmationString+DupeString(' ',FSpace);
end;

procedure TAnimationCaption.RunAnimation(Sender: TObject);
var
s:string;
begin
if (not FActive) then Exit;
if (FRightToLeft=LeftMode) then
begin
s:=LeftStr(tempStr,1);
tempStr:=MidStr(tempStr,2,Length(tempStr)-1)+s;
end
else
begin
s:=RightStr(tempStr,1);
tempStr:=s+MidStr(tempStr,1,Length(tempStr)-1);
end;
FForm.Caption:=tempStr;
end;

procedure TAnimationCaption.SetActive(const Value:Boolean);
begin
FActive:=Value;
ObjectTimer.Enabled:=FActive;
end;

procedure TAnimationCaption.SetInterval(const Value: Integer);
begin
FInterval:=Value;
ObjectTimer.Interval:=FInterval;
end;

procedure TAnimationCaption.SetRightToLeftMode(const value: TRightToLeftMode);
begin
FRightToLeft:=value;
end;

procedure TAnimationCaption.SetSpace(const Value: byte);
begin
if (Value<2) then
FSpace:=2
else
FSpace:=Value;
tempStr:=FAnmationString+DupeString(' ',FSpace);
end;

.end

AliReza Vafakhah
سه شنبه 25 اسفند 1388, 16:00 عصر
دوستان نسخه جدید رو امروز براتون قرار دادم

به دلیل ویروسی بودن فایل Sample-Exe.rar ، این فایل پاک شد .

شما سورس را به همراه Sample-Source.rar دانلود کنید و سپس پروژ را کامپایل کنید و هیچ مشکلی به وجود نخواهد آمد

با تشکر از دوست عزیز hossein.kh (http://barnamenevis.biz/forum/member.php?u=67718) که ویروسی بودن فایل Sample-Exe.rar را اطلاع دادند.

حسین خانی
چهارشنبه 26 اسفند 1388, 06:53 صبح
با سلام :لبخندساده:

فایل Sample-Exe.rar‏ حاوی ویروس Induc.A است !

AliReza Vafakhah
چهارشنبه 26 اسفند 1388, 16:21 عصر
با سلام :لبخندساده:

فایل Sample-Exe.rar‏ حاوی ویروس Induc.A است !

دوست عزیز سپاس گذارم .

بله سیستم من آلوده هست (البته یک هفته پش با Nod ویروس کشی کردم)

البته من فایل رو به VirusTotal سپردم و این هم نتیجه (http://www.virustotal.com/analisis/78aab3a2b31be0f8e6b65292d55dc501eb9b7f0646358f149f 4627a6d2ede58f-1268831108).

به هر حال دوستان عذر می خوام فایل Sample-Exe.rar را فعلا حذف میکنم .

AliReza Vafakhah
یک شنبه 15 فروردین 1389, 12:59 عصر
دوستان سلام نسخه جدید کامپوننت را امروز برایتان قرار دادم.

تغییراتی که در این نسخه صورت گرفته (اتصال به TLabel برای نمایش دوگانه) و یک افکت جدید .

لطفا دوستان دانلود کنند و نظر بدهند من می خواهم در آیند با توابع GDI-PLUS این کامپوننت رو جذابتر کنم.

فایل Sample-Exe.rar بدون هیچ ویروس قرار داده شده.

با تشکر.

famarini
دوشنبه 25 مرداد 1389, 01:38 صبح
سلام AliReza Vafakhah (http://www.barnamenevis.org/forum/member.php?u=74110) عزیز
من کامپوننت شما رو تست کردم مشکل اساسی این کامپوننت نشون دادن حروف فارسی است ممنون می شم حل کنید این مشکلو و دیگری نرم نبودن نمایش حروف (یعنی خیلی نرم نمایش نمی ده خشک خشکه)
بازم از تلاشت ممنون

Site Admin
جمعه 08 بهمن 1389, 20:30 عصر
این کامپوننت اگر به کپشن فرمها وصل نباشه بهتره و اگر بشه در یک لیست از بالا به پایین باشه قشنگتره یه چیزی مثل پایان فیلم های سینمایی که اسامی بازیگرها نوشته میشه