Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Width nach links ausführen


bernd29 - Di 08.02.05 00:01
Titel: Width nach links ausführen
hallo !

ich habe ein panel das sich automatisch verbreitert nur eben nach rechts ich möchte aber das es das nach licks tut wie bekomme ich das hin?

bernd :(


Sprint - Di 08.02.05 00:40

Spiel mal ein bißchen mit den Eigenschaften Anchors, Left, Width & ClientWidth. Ein Blick in die Hilfe wäre auch hilfreich.


Edit: \\ Und natürlich mit dem Ereignis OnResize.


I.MacLeod - Di 08.02.05 00:41


Delphi-Quelltext
1:
Panel.SetBounds(Panel.Left-1, Panel.Top, Panel.Width+1, Panel.Height);                    


bernd29 - Di 08.02.05 00:42

hi

hab ich schon das panel verbreitert sich immer nur nach rechts ich hätte es aber gerne nach links .


BenBE - Di 08.02.05 00:55

Hier sind bereits 2 gute Vorschläge eingetroffen. Könntest Du bitte etwas dazu sagen, in wie weit die für Dein Problem funktionieren ODER eine genauere BEschreibung geben?


bernd29 - Di 08.02.05 09:58

tut mir leid hab mir noch mal das hirn verbogen und hab die lösung

statt:


Delphi-Quelltext
1:
2:
procedure TForm1.Timer2Timer(Sender: TObject);
const stepsize = 5;


hab ich dank euren vorschlägen:


Delphi-Quelltext
1:
2:
procedure TForm1.Timer2Timer(Sender: TObject);
const stepsize = -5;


geht super

dank euch noch mal

:lol:

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt


Maweki - Di 08.02.05 10:48

mich wuerde trotzdem mal die ganze loesung interessieren.

Waerest du so nett und wuerdest du mal die ganze OnTimer-prozedur posten...

Gruesse
Maweki


bernd29 - Di 08.02.05 18:20

also hier nun die gane procedure.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Timer2Timer(Sender: TObject);
const stepsize = 5;

function Min(a,b:integer):integer;
begin
if a<b then Result:=a
    else Result:=b;
  end;


begin
  if tor1.Width =6 then
  begin
    Timer2.Enabled:=false;
  end
  else
    tor2.Left:=Min(tor2.left + stepsize, 6);
end;


wen ihr stepsize nun ein minus verpasst den läuft es nach links
ich meine natürlich im const bereich.
gruss bernd

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt.


Maweki - Di 08.02.05 18:41

Wo veraenderst du die groesse des Panels eigentlich?

Ich wuerde es so machen:
Wenn du die groesse des Panels um, sagen wir 5 vergroesserst, dann ziehe doch einfach vom left genau diese 5 ab...
Und der Sinn deines Codes verschliesst sich mir noch. Koenntest du vielleicht (reines interesse) noch etwas mehr dazu sagen...

danke ;)


bernd29 - Di 08.02.05 18:47

aso ich war mit dem gepostetem code schon etwas weiter wie ich sehe na statt left nimste widht

veränder tust du es in diesem teil

tor1.widht:=Min(tor1.widht + stepsize, 200);

bernd

Moderiert von user profile iconAXMD: Delphi-Tags hinzugefügt.


Maweki - Di 08.02.05 18:51

ich meine einfach Width incrementieren und Left um das selbe decrementieren...

Und hat es eine spezielle bewandniss, dass du das ganze in einem timer ausfuehrst?


bernd29 - Di 08.02.05 18:56

ich wuste nur nicht wie man eine form aktualiesiert
also hab ich alles was ich neu erstellen wollte auf der form auf false gesetzt damit man das aber nicht sieht hab ich eine art tor das sich von zwei seiten zuzieht wen ich nun meine neuen einstellungen getan habe geht es auf und alles ist wie es ist

bernd


Maweki - Di 08.02.05 19:09

hilft dir die eigenschaft visible...
auf false sieht man das element nicht...


bernd29 - Di 08.02.05 19:14

schon klar nur ich habe mehrere panels die je nach anzahl des benutzers true oder false sein sollen
da ich das problem hatte das wen ich weniger haben wollte wie schon da waren ging garnix mehr ging immer also hab ich sie alle auf false sobalt ich im einstellung fenster bin damit es aber net so leer aus sieht lass ich das tor zu gehen .

bernd