View Full Version : نمايش فرم ها بصورت متحرك
mojtaba_z
یک شنبه 11 مهر 1389, 15:50 عصر
سلام
در ابتداي اجراي برنامه دلفي ميخوام كه فرم ابتدايي بصورت متحرك و گرافيكي ظاهر بشه!
چطوري بايد اينكار رو بكنم؟ مثلا يك نمونه به اين صورت باشه كه فرم ابتدايي من به 16 مربع تقسيم بشه و از اطراف بسمت مركز صفحه بياد و به هم بچسبه و فرم اصلي رو نمايش بده؟
يا اينكه فرم من بصورت غير از مستطيل شكل باشه ؟
آيا براي اين كار كامپوننتي وجود داره ؟
عقاب سیاه
یک شنبه 11 مهر 1389, 17:02 عصر
سلام
از کد زیر می تونید برای بیضی سازی فرمتون استفاده کنید.
procedure TForm1.FormCreate(Sender: TObject);
var Hndl:THandle;
begin
Hndl:=CreateEllipticRgn(30,30,200,100);
SetWindowRgn(Handle,Hndl,True);
end;
عقاب سیاه
یک شنبه 11 مهر 1389, 17:10 عصر
کد زیر هم باید یک نوع افکت روی فرم ایجاد کند!
هنوز خودم امتحانش نکردم!
type
TFadeType = (ftIn, ftOut) ;
TAboutBox = class(TForm)
//controls...
procedure fadeTimerTimer(Sender: TObject) ;
procedure FormCreate(Sender: TObject) ;
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean) ;
private
fFadeType: TFadeType;
property FadeType : TFadeType read fFadeType write fFadeType;
public
class function Execute() : TModalResult;
end;
fade out
procedure TAboutBox.FormCreate(Sender: TObject) ;
begin
AlphaBlend := true;
AlphaBlendValue := 0;
fFadeType := ftIn;
fadeTimer.Enabled := true;
end;
procedure TAboutBox.fadeTimerTimer(Sender: TObject) ;
const
FADE_IN_SPEED = 3;
FADE_OUT_SPEED = 5;
var
newBlendValue : integer;
begin
case FadeType of
ftIn:
begin
if AlphaBlendValue < 255 then
AlphaBlendValue := FADE_IN_SPEED + AlphaBlendValue
else
fadeTimer.Enabled := false;
end;
ftOut:
begin
if AlphaBlendValue > 0 then
begin
newBlendValue := -1 * FADE_OUT_SPEED + AlphaBlendValue;
if newBlendValue > 0 then
AlphaBlendValue := newBlendValue
else
AlphaBlendValue := 0;
end
else
begin
fadeTimer.Enabled := false;
Close; //this time for real
end;
end;
end;
end;
procedure TAboutBox.FormCloseQuery(Sender: TObject; var CanClose: Boolean) ;
begin
//no close before we fade away
if FadeType = ftIn then
begin
fFadeType := ftOut;
AlphaBlendValue := 255;
fadeTimer.Enabled := true;
CanClose := false;
end
else
begin
CanClose := true;
end;
end;
class function TAboutBox.Execute: TModalResult;
begin
with TAboutBox.Create(nil) do
begin
try
result := ShowModal;
finally
Release;
end;
end;
end;
procedure TMainForm.btnAboutBoxClick(Sender: TObject) ;
begin
TAboutBox.Execute;
end;
MOJTABAATEFEH
یک شنبه 11 مهر 1389, 20:04 عصر
سلام
در ابتداي اجراي برنامه دلفي ميخوام كه فرم ابتدايي بصورت متحرك و گرافيكي ظاهر بشه!
چطوري بايد اينكار رو بكنم؟ مثلا يك نمونه به اين صورت باشه كه فرم ابتدايي من به 16 مربع تقسيم بشه و از اطراف بسمت مركز صفحه بياد و به هم بچسبه و فرم اصلي رو نمايش بده؟
يا اينكه فرم من بصورت غير از مستطيل شكل باشه ؟
آيا براي اين كار كامپوننتي وجود داره ؟
دستورات و کامپوننت های زیادی برای شکل غیر متعارف دادن به فرم وجود داره برای مورد دوم هم کامپوننت Billenium Effect قدرت مانور خوبی داره و اگر بخواید از دستورات خود دلفی استفاده کنید از نمونه کد زیر استفاده کنید البته افکت های دیگه ای هم داره:
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Hide;
AnimateWindow(Form2.Handle, 2000, AW_CENTER);
Form2.show;
end;
موفق باشید
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.