Popularne okienka wyjeżdzające z krawędzi ekranu

Sheitar

Najpierw tuż pod implementation wklejamy kod

procedure WysunForme(Forma: TForm; Speed, Step, Wait: Integer; Wysow: Boolean);
begin
 if Wysow then
  begin
   Forma.Top:=Screen.WorkAreaHeight;
   Forma.Left:=Screen.WorkAreaWidth-Forma.Width;
   repeat
    Forma.Top:=Forma.Top-Step;
    Application.ProcessMessages;
    Sleep(Speed);
   until Forma.Top-Step<=Screen.WorkAreaHeight-Forma.Height;
  Forma.Top:=Screen.WorkAreaHeight-Forma.Height;
  if Wait>0 then
   begin
    Sleep(Wait);
    WysunForme(Forma, Speed, Step, Wait, not Wysow);
   end;
  end else begin
   Forma.Top:=Screen.WorkAreaHeight-Forma.Height;
   Forma.Left:=Screen.WorkAreaWidth-Forma.Width;
   repeat
    Forma.Top:=Forma.Top+Step;
    Application.ProcessMessages;
    Sleep(Speed);
   until Forma.Top+Step>=Screen.WorkAreaHeight;
  Forma.Top:=Screen.WorkAreaHeight;
  end;
end;

Gdzie:
Speed - ilość ms pomiędzy kolejnym krokiem im mniej tym szybciej
Step - ilość o ile pixeli przesuwana będzie Forma z każdym krokiem
Wait - ile ms ma odczekać po wyjechaniu; jeśli ustawione na 0 to Forma zostaje w finałowej pozycji, jeśli większe niż 0 to forma czeka daną ilość ms i chowa się po tym czasie.
Wysow - okresla kierunek ruchu; True wysuwa, False chowa

Przykład użycia:
Załóżmy że jest forma [Form1] z tym kodem i jednym przyciskiem [Button1] pod kod zdarzenia OnClick dajemy:

 if Button1.Tag=0 then
  begin
   WysunForme(Form1,10,2,0,True);
   Button1.Tag:=1;
  end else begin
   WysunForme(Form1,10,2,0,False);
   Button1.Tag:=0;
  end;

Kolejne nacisnięcia przycisku spowodują naprzemienne wysuwanie się formy jak i jej chowanie. Aby wysnąć formę na np. 2s po czym powinna się automatycznie schować należy użyć tego kodu:

WysunForme(Form1,10,2,2000,True);

7 komentarzy

a jak wysunąć inną formę nie główną? (np. Unit3)????

wywala mi Undeclared Identifier 'WorkAreaHeight' oraz 'WorkAreaWidth' i tyle z kompilacji... Za stare Delphi? (5) :/

Uff jak dawno mnie nie było. Bardzo fajne naprawde mi sie przyda dzieki. Mam tyko pytanko jak nacisnie jeszcze raz Button to mi zjezdza w dół ale za bardzo co trzeba zmienic zeby nie zjezdzalo tak w dół ??

I działa dzięki :)

Zaraz przetestuję to :)