Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Statusbar bleibt nicht alBottom (https://www.delphipraxis.net/125821-statusbar-bleibt-nicht-albottom.html)

messie 12. Dez 2008 14:55


Statusbar bleibt nicht alBottom
 
Moin,

ich habe ein Fenster, in dem verschiedene Panels und ein Statusbar angeordnet sind. Das Panel über dem Statusbar ist auch alBottom, weil es beim Resize dieselbe Höhe behalten soll.
Der Statusbar wird gelegentlich über dem Panel gezeichnet. Das hängt von der Auflösung und dem Format des Bildschirms und anderen unbekannten Parametern ab (Mondphasen? Rohölpreise?) ab.
Ich habe bisher noch keine andere Lösung gefunden, das benachbarte Panel anders zu platzieren.

Hat jemand ein wenig Klebstoff für meinen Statusbar?

Danke, Messie

Super_Chemiker 12. Dez 2008 15:14

Re: Statusbar bleibt nicht alBottom
 
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  statusbar1.Align := albottom;
  panel1.Align := albottom;
  panel1.Align := alnone;
end;
sollte gehen

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  statusbar1.Align := albottom;
  panel1.width := clientwidth;
  panel1.Height := wasauchimmergewünschtist;
  panel1.Top := clientheight - panel1.Height - statusbar1.Height;
end;
sollte auch gehen, vorrausgesetzt ich hab die frage verstanden! :-D

khh 12. Dez 2008 15:16

Re: Statusbar bleibt nicht alBottom
 
Zitat:

Zitat von Super_Chemiker
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  statusbar1.Align := albottom;
  panel1.Align := albottom;
  panel1.Align := alnone;
end;

kannst mir erkären weshalb du panel1.align 2mal setzt ?

Super_Chemiker 12. Dez 2008 15:24

Re: Statusbar bleibt nicht alBottom
 
@ khh
damit wird erst das panel nach unten geschoben und dann wird es wieder losgelassen, damit die Statusbar nach unten darf!
ob es ohne alnone setzen geht weiß ich nicht!:pale:

khh 12. Dez 2008 15:27

Re: Statusbar bleibt nicht alBottom
 
Zitat:

Zitat von Super_Chemiker
@ khh
damit wird erst das panel nach unten geschoben und dann wird es wieder losgelassen, damit die Statusbar nach unten darf!
ob es ohne alnone setzen geht weiß ich nicht!:pale:

das kommt mir aber spanisch vor ;-)

mkinzler 12. Dez 2008 15:30

Re: Statusbar bleibt nicht alBottom
 
Wenn du es auf alNone setzt, ist es wohl klar das es nicht mehr alBottom ist :zwinker:

khh 12. Dez 2008 15:35

Re: Statusbar bleibt nicht alBottom
 
Zitat:

Zitat von mkinzler
Wenn du es auf alNone setzt, ist es wohl klar das es nicht mehr alBottom ist :zwinker:

deshalb denke ich, dass die erste ausrichtung überflüssig ist, oder irre ich da?

mkinzler 12. Dez 2008 15:38

Re: Statusbar bleibt nicht alBottom
 
Er möchte ja eine Anordnung am unteren Rand. Vielleicht umgekehrt

khh 12. Dez 2008 15:41

Re: Statusbar bleibt nicht alBottom
 
Zitat:

Zitat von mkinzler
Er möchte ja eine Anordnung am unteren Rand. Vielleicht umgekehrt


mh, ich bin immer davon ausgegangen, dass diese Zuweisungen zur Laufzeit den Wert der variablen "einstellen".
Wenn ich das recht verstehe, meint er aber mit zwei Zuweisungen werden beim create beide ausgeführt!.

also erst alBottom und dann alNone

das kommt mir spanisch vor.

messie 12. Dez 2008 15:55

Re: Statusbar bleibt nicht alBottom
 
Zitat:

Zitat von Super_Chemiker
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  statusbar1.Align := albottom;
  panel1.Align := albottom;
  panel1.Align := alnone;
end;

Mit dieser Variante wird panel1 vom darüberliegenden Panel überschrieben(ist also weg, weil das alclient ist)
Zitat:

Zitat von Super_Chemiker
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  statusbar1.Align := albottom;
  panel1.width := clientwidth;
  panel1.Height := wasauchimmergewünschtist;
  panel1.Top := clientheight - panel1.Height - statusbar1.Height;
end;

geht auch nich'. Ich hab' da auch schon eine Menge probiert...selbst die Reihenfolge in der dfm-Datei habe ich vertauscht, auch das geht nicht. Wie gesagt, es ist nicht immer so. Da muss es noch einen anderen Einfluss geben.

Grüße, Messie

turboPASCAL 12. Dez 2008 16:06

Re: Statusbar bleibt nicht alBottom
 
Mach bitte mal 'n Screenshot (bitte nicht als Bitmap) von deiner Form und hänge es hier als Anhang dran.

messie 18. Dez 2008 11:13

Re: Statusbar bleibt nicht alBottom
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von turboPASCAL
Mach bitte mal 'n Screenshot (bitte nicht als Bitmap) von deiner Form und hänge es hier als Anhang dran.

So, jetzt sitze ich mal wieder beim Kunden dran. Hier der Screenshot.

Grüße, Messie

Tyrael Y. 18. Dez 2008 11:21

Re: Statusbar bleibt nicht alBottom
 
Die beiden Panels in ein neues Panel mit fester Höhe packen.
Der der immer ganz unten sein soll alBottom.
Den anderen alClient.

...oder hab ich was missverstanden?

ThunderDragon 11. Mär 2009 09:14

Re: Statusbar bleibt nicht alBottom
 
Hallo!

Das passiert (u.a. ??) , wenn man die Größe eines anderen alBottom Objekts zur Laufzeit verändert.
Habe nun unmittelbar nach der Veränderung folgendes ergänzt:

ListViewGraphObjects.Align := alNone;
ListViewGraphObjects.Align := alBottom;

Gibt es dafür auch eine saubere Lösung?

messie 11. Mär 2009 09:21

Re: Statusbar bleibt nicht alBottom
 
Einen Wechsel auf alNone zur Laufzeit würde bei mir nicht gehen, weil dann sofort ein anderes Element nachrücken würde. Das halte ich auch für riskant.

Eine wirklich saubere Lösung habe ich auch noch nicht gefunden. Mir ist die Reihenfolge der Platzierung zur Laufzeit auch noch nicht klar.

Grüße, Messie

messie 8. Jun 2009 13:30

Reihenfolge des Platzierens von Grafischen Elementen
 
So,

ich will das mal wieder hochbringen, weil mir die Systematik des Fensteraufbaus immer noch nicht klar ist.
Mir ist das mal wieder auf die Füße gefallen: aus einem anderen Formular, wo alle Elemente ihre Position halten, einfach alles rauskopiert, in ein neues Formular gepastet und schon verschieben sich die Elemente, wenn ich einmal kurz am visible eines einzelnen Elements rumdrehe. :wall:

Grüße, Messie

Satty67 8. Jun 2009 19:51

Re: Statusbar bleibt nicht alBottom
 
Für die Prioritäten bei gleicher Ausrichtung ist auch die Erstellungsreihenfolge wichtig. Die kann sich bei Copy&Paste natürlich ändern. Die kann man bei RechtsKlick auf übergeordnetes Control ändern.

Zwei Elemente mit gleicher Ausrichtung in einem Control ist aber immer etwas Spielerei. Da wurde eine einfache Lösung im Thread schon benannt. Wenn man z.B. zwei Panels hat, die beie alBottom ausgerichtet werden sollen, dürfen die nicht den gleichen Parent haben.

Panel_1 alBottom aufs Formular
Panel_2 alClient aufs Formular (ohne Border)
Panel_3 alBottom auf Panel_2

Da ich in Delphi5 lange die StatusBar durch eine Collection von Panels simuliert hab', bin ich so immer am sichersten gefahren.

messie 8. Jun 2009 21:53

Re: Statusbar bleibt nicht alBottom
 
Danke für den Tipp, werde ich morgen mal ausprobieren. Ich kann noch nicht sagen, ob das genauso funktioniert, weil ich Elemente der Tnt-Components bzw. deren Erben in Alphaskins verwende.

Grüße, Messie

jaenicke 9. Jun 2009 01:37

Re: Statusbar bleibt nicht alBottom
 
Als ich das mal gemacht habe (zur Einblendung eines Hinweisfensters), habe ich schlicht Top auf einen Wert über dem anderen Element gesetzt, dann wurde es darüber plaziert. So musste ich Align nie zur Laufzeit verändern.

Die sauberere (und allgemeinere) Lösung ist aber sicher die mit dem Panel als Container.

messie 9. Jun 2009 10:00

Re: Statusbar bleibt nicht alBottom
 
Zitat:

Zitat von jaenicke
Die sauberere (und allgemeinere) Lösung ist aber sicher die mit dem Panel als Container.

Ja, ich habe es jetzt so hinbekommen. Ist ein ganzer Stack von Containerpanels geworden, weil ich auch noch einen Splitter dazwischen hatte.
Eine Festlegung der Erstellungsreihenfolge habe ich nicht gefunden. Die gilt nur für die nicht-visuellen Kompos.

Grüße, Messie

Satty67 9. Jun 2009 10:46

Re: Statusbar bleibt nicht alBottom
 
Zitat:

Zitat von messie
Eine Festlegung der Erstellungsreihenfolge habe ich nicht gefunden. Die gilt nur für die nicht-visuellen Kompos

Ok, hab' ich dann wohl mit der Tab-Order verwechselt. Bleibe noch Form-Ansicht als text und manuelle ändern, aber wenn das mit den Panel-Containern jetzt geht ist das sicher einfacher und sicherer.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:15 Uhr.

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