Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Form"ausschieben" - Problem (https://www.delphipraxis.net/88699-form-ausschieben-problem.html)

E307 19. Mär 2007 18:17


Form"ausschieben" - Problem
 
Hallo zusammen!
Mein Formular (Form1) wird durch den Code unten an den rechten Fensterrand verschoben:
Code1
Delphi-Quellcode:
//Form ausschieben
procedure TForm1.FrmScrollOut;
var i: Integer;
begin
if FPosition=fpRight then begin
  if not SlideDone then begin
    for i := Form1.Left downto Screen.Width do
    begin
      Left := i;
      //if i mod DelayTime = 0 then Sleep(10); // Für besseres Sliding
      slidedone:= true;
    end;
    Left := Screen.Width+Form1.Width+10;
    end;
    end;
end;
Code2
Delphi-Quellcode:
//Form einziehen
procedure TForm1.FrmScrollIn;
var i: Integer;
begin
if FPosition = fpRight then begin
if not SlideDone then begin
  SetFocus;
    for i := Screen.Width downto Screen.Width do
    begin
      Left := i;
      slidedone:=true;
      //if i mod DelayTime = 0 then Sleep(10); // Für besseres Sliding
    end;
    Left := Screen.Width + Overlap;
    end;
    end;
end;

Variablen:
Overlap: Integer ^= Wert, den das Formular im eingerollten Zustand überragen soll
slidedone: Boolean ^= Nicht wichtig, die Variable wird für die Mausaktionen gebraucht
FPosition: record ^= Nicht wichtig, gibt die Position des Forms an

Die auskommentierten Zeilen können vernachlässigt werden. Durch Code1 soll das Formular ausgeschoben werden, wenn man mit der Maus über den Rahmen, der noch sichtbar ist, gefahren ist. Wenn man mit der Maus wieder vom Formular heruntergeht, soll das Formular durch Code2 wieder eingefahren werden. Das funktionierte auch, solange ich das Formular mit anderen Werten im Code an der oberen Bildschirmseite schieben wollte. Der Code oben soll das fpr den rechten Rand erledigen, tut das aber nicht. Was ist daran falsch?
(Werd diese Formulierung nicht verstanden hat, der sollte sich mal Bei Google suchenAquaDock ansehen, vielleicht wird das dann klarer)

DP-Maintenance 19. Mär 2007 18:29

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.

DelphiKlaus 20. Mär 2007 06:31

Re: Form"ausschieben" - Problem
 
Hallo alleine,

mir fallen nur die beiden Schleifen auf:

Delphi-Quellcode:
    for i := Form1.Left downto Screen.Width do
setzt voraus, dass Form1.Left grösser als Screen.Width ist. Und

Delphi-Quellcode:
    for i := Screen.Width downto Screen.Width do
ist ja eigentlich garkeine Schleife.

E307 20. Mär 2007 14:53

Re: Form"ausschieben" - Problem
 
Code1:
Delphi-Quellcode:
//Form ausschieben
procedure TForm1.FrmScrollOut;
var i: Integer;
begin
if FPosition = fpRight then begin
if not SlideDone then begin
  SetFocus;
    for i := Form1.Left downto Screen.Width do
    begin
      Left := i;
      slidedone:=true;
      if i mod DelayTime = 0 then Sleep(10); // Für besseres Sliding
    end;
    Left := Screen.Width + Overlap;
    end;
    end;
end;
Code2:
Delphi-Quellcode:
//Form einziehen
procedure TForm1.FrmScrollIn;
var i: Integer;
begin
        if FPosition=fpRight then begin
  if not SlideDone then begin
    for i := Screen.Width to Screen.Width+Width do
    begin
      Left := i;
      if i mod DelayTime = 0 then Sleep(10); // Für besseres Sliding
      slidedone:= true;
    end;
    Left := Screen.Width+Form1.Width;
    end;
    end;
end;
:shock: Der Code von oben ist nicht nur falsch, sondern auch unsinnig. Das hier ist der richtige falscheCode!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz