View Full Version : نمايش فرم ها بصورت متحرك
  
mojtaba_z
یک شنبه 11 مهر 1389, 16:50 عصر
سلام
در ابتداي اجراي برنامه دلفي ميخوام كه فرم ابتدايي بصورت متحرك و گرافيكي ظاهر بشه!
چطوري بايد اينكار رو بكنم؟ مثلا يك نمونه به اين صورت باشه كه فرم ابتدايي من به 16 مربع تقسيم بشه و از اطراف بسمت مركز صفحه بياد و به هم بچسبه و فرم اصلي رو نمايش بده؟
يا اينكه فرم من بصورت غير از مستطيل شكل باشه ؟
آيا براي اين كار كامپوننتي وجود داره ؟
عقاب سیاه
یک شنبه 11 مهر 1389, 18:02 عصر
سلام
از کد زیر می تونید برای بیضی سازی فرمتون استفاده کنید.
procedure TForm1.FormCreate(Sender: TObject);
var Hndl:THandle;
begin
    Hndl:=CreateEllipticRgn(30,30,200,100);
    SetWindowRgn(Handle,Hndl,True);
end;
عقاب سیاه
یک شنبه 11 مهر 1389, 18: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, 21: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.