AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Panels ausrichten

Offene Frage von "zeras"
Ein Thema von API · begonnen am 8. Jun 2013 · letzter Beitrag vom 10. Jun 2013
Antwort Antwort
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#1

Panels ausrichten

  Alt 8. Jun 2013, 08:52
Moin,

Auf meiner Form befinden sich zwei TPanel.

Panel1.Align := alClient;
Panel2.Align := alBottom;

Bei Klick auf einen Button soll Panel1 verschwinden und Panel2.Align := alClient gesetzt werden.
Nach erneutem Klick auf den Button soll wieder Panel1.Align := alClient und Panel2.Align := alBottom sein.

Sobald ein zweites Mal auf den Button geklickt wird, vergrößert sich jedoch die Form um fast das Doppelte!

Wie kann ich das verhindern?

Mein Code:

Delphi-Quellcode:
  if Panel1.Visible then
  begin
    Panel1.Hide;
    Panel2.Align := alclient;
  end
  else
  begin
    Panel1.Show;
    Panel2.Align := albottom;
  end;
das hilft auch nichts:

Delphi-Quellcode:
 if Panel1.Visible then
  begin
    Panel2.Tag := Panel2.Height;
    Panel1.Tag := Panel1.Height;
    Panel1.Hide;
    Panel2.Align := alclient;
  end
  else
  begin
    Panel1.Show;
    Panel1.Align := Alclient;
    Panel2.Align := albottom;
    Panel2.Height := Panel2.Tag;
    Panel1.Height := Panel1.Tag;
  end;
Gruß
API
Miniaturansicht angehängter Grafiken
panels_align.png  
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Panels ausrichten

  Alt 8. Jun 2013, 09:04
Versuch es mal so
Delphi-Quellcode:
  if Panel1.Visible
  then
    begin
      Panel1.Hide;
      Panel2.Tag := Panel2.Height;
      Panel2.Align := alClient;
    end
  else
    begin
      Panel2.Align := alBottom;
      Panel2.Height := Panel2.Tag;
      Panel1.Show;
    end;
Manchmal kommt es auf die Reihenfolge an
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Panels ausrichten

  Alt 8. Jun 2013, 17:50
Verwende doch einen TSplitter mit Align = alBotton , Height = 4 und Color = clBlue .
Mit dem Property Autosnap = True und MinSize = 40 kann der Benutzer das untere Panel bis auf 40 Pixel verkleinern.
Zieht er den Splitter weiter nach unten verschwindet das untere Panel ganz.
Der Splitter bleibt aber weiterhin sichtbar und der Benutzer kann das untere Panel wieder einblenden.

Vorteile: Kein Code notwendig, keine Platzverschwendung für den Button
fork me on Github
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#4

AW: Panels ausrichten

  Alt 8. Jun 2013, 18:23
Danke euch beiden, der Code von Sir Rufo hat funktioniert. Die Idee mit dem TSplitter werde ich noch anschauen.
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#5

AW: Panels ausrichten

  Alt 8. Jun 2013, 18:57
Ich glaub es geht auch damit, das Align auf Custom zu stellen und das Positionieren im dem OnAlignPosition-Event de Form zu regeln.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#6

AW: Panels ausrichten

  Alt 9. Jun 2013, 14:08
Verwende doch einen TSplitter mit Align = alBotton , Height = 4 und Color = clBlue .
Mit dem Property Autosnap = True und MinSize = 40 kann der Benutzer das untere Panel bis auf 40 Pixel verkleinern.
Zieht er den Splitter weiter nach unten verschwindet das untere Panel ganz.
Der Splitter bleibt aber weiterhin sichtbar und der Benutzer kann das untere Panel wieder einblenden.
Ich habe in etwas den Code von dir drin. Leider habe ich Probleme, mir die Position zu merken, wenn ich das Programm schliesse und wieder neu starte. Dann bekomme ich es einfach nicht hin, dass der Splitter an dergleichen Stelle wieder steht, wie beim letzten Programmstart.
Wie macht iht das mit dem Speichern der Splitterposition?
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von MrMooed
MrMooed

Registriert seit: 18. Feb 2012
101 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Panels ausrichten

  Alt 9. Jun 2013, 21:02
Im einfachsten Fall könntest du ein TIniFile nutzen?
Wurde ja schließlich dafür entwickelt um Fensterposition, Größe, etc. zu speichern.

MrMooed
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#8

AW: Panels ausrichten

  Alt 10. Jun 2013, 09:48
Der Trick ist nicht die Splitter-Position zu speichern, sondern die Höhe des Labels, das nich alClient ist.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: Panels ausrichten

  Alt 10. Jun 2013, 09:49
Der Trick ist nicht die Splitter-Position zu speichern, sondern die Höhe des Labels, das nich alClient ist.
Ebend, denn der Splitter kuschelt sich immer ganz eng daran an
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.643 Beiträge
 
Delphi 12 Athens
 
#10

AW: Panels ausrichten

  Alt 10. Jun 2013, 19:48
Der Trick ist nicht die Splitter-Position zu speichern, sondern die Höhe des Labels, das nich alClient ist.
Dann wird das wohl meine Lösung sein, denn die Splitterposition abzuspeichern hatte ich schon irgendwie gemacht, hat aber nicht funktioniert.

Vielen Dank. Werde das dieser Tage probieren.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 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