AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Panel Zentrieren...

Ein Thema von Delbor · begonnen am 2. Mai 2021 · letzter Beitrag vom 5. Mai 2021
Antwort Antwort
Seite 2 von 3     12 3   
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
999 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: Panel Zentrieren...

  Alt 3. Mai 2021, 13:37
Hi zusammen

Ich habe gerade gesehen, dass die drei *.pas- Dateien bislang dreimal angeklickt, bzw. wahrscheinlich drei mal gedownloaded wurden. Habt ihr dabeieine Antwort gefunden?

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.018 Beiträge
 
Delphi 10.3 Rio
 
#12

AW: Panel Zentrieren...

  Alt 3. Mai 2021, 16:06
Habt ihr dabeieine Antwort gefunden?
Ich konnte mit den Units noch nichts anfangen da mir RzTabs(?) unit fehlt. Noch keine Zeit gehabt das auseinander-zu-pflücken um es irgendwie nutzbar zu machen.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
999 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: Panel Zentrieren...

  Alt 3. Mai 2021, 16:38
Hi CodeZwerg

Der Termineingabeframe enthält keinen Code. Wenn der also nicht gefunden wird, kannst du die entsprechende Referenz darauf einfach löschen lassen.
Andrerseits könntest du dir die Raize-Components gratis von Embarcadero Downloaden. Allenfalls geht das mit der Communitie nicht.

Die Komponenten sind etwas besser als die Standards - die Tabsheets des PageControls lassen sich einfärben, die Reiter haben verschiedene Formen/Ecken oder auch nicht.

Einfach die Pas in ein Beispielprojekt kopieren (NICHT UMBENENNEN) und dem Projekt hinzufügen.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
999 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: Panel Zentrieren...

  Alt 4. Mai 2021, 13:00
Hi zusammen

Das ist der PnlCalendaframe zur Designzeit :
panelcalendarframe.jpg
clAqua sind dabei die beiden Panels, die je 6 Monatsframes aufnehmen. Width dieser Panels ist Widthtotal.
AParentCtrl ist das blaue Panel.

Und das ist das, wasmir zur Laufzeit gemeldet wird:
Zitat:
[Window Title]
Terminkalenderproject

[Content]
FDayNumberFrame.Width := 260 <== die sechs Monats-Kalender
AParentCtrl.Width := 1320 <== Der blaue Panel
Widthtotal := 1560 <== alle sechs Monatskalender
FDayNumberFrame.Width := 260
GetParentControlPostion := -240

[OK]
Und das ist der Frame zur Laufzeit:
Anhang 53956

Withtotal ist also grösser als das umgebende Panel. Also 2 verschiedene Koordinatensysteme? Und nun?

Gruss
delbor
Miniaturansicht angehängter Grafiken
panelcalendarframe-zur-laufzeit.jpg  
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.110 Beiträge
 
Delphi 10.4 Sydney
 
#15

AW: Panel Zentrieren...

  Alt 4. Mai 2021, 13:16
Andere spezille Ausrichtungkomponenten hast du auch mal ausprobiert?

Suche mal in der Komponenten nach Dingen mit "Panel" im Namen.
TGridPanel, TFlowPanel, TRelativePanel, ...


Im FMX nennen die sich "Layout".
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.089 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: Panel Zentrieren...

  Alt 4. Mai 2021, 13:37
Im FMX nennen die sich "Layout".
Nicht ganz, da gibt es auch ein TPanel.
TLayout sollte man als Container nehmen für andere Controls, das zeichnet sich nicht selbst und ist sehr schlank.
TPanel gehr aber auch, ist halt auch selbst ein Control.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.662 Beiträge
 
Delphi 7 Professional
 
#17

AW: Panel Zentrieren...

  Alt 4. Mai 2021, 13:38
Delphi-Quellcode:
...
  case AMonth of
    1..6: begin
            FParentCtrl := PnlSixMonts1;
            // Beim ersten Panel machst Du das und das Ergebnis stimmt.
            FParentCtrl.Padding.Left := GetParentControlPostion(FParentCtrl);
          end;
    7..12:begin
            FParentCtrl := PnlSixMonts2;
            // Beim zweiten Panel machst Du das nicht und das Ergebnis stimmt nicht.
            FParentCtrl.Padding.Left := GetParentControlPostion(FParentCtrl);
          end;
  end;
...
end;
Wäre das eine Möglichkeit?
Delphi-Quellcode:
...
  case AMonth of
    1.. 6: FParentCtrl := PnlSixMonts1;
    7..12: FParentCtrl := PnlSixMonts2;
  end;
  FParentCtrl.Padding.Left := GetParentControlPostion(FParentCtrl);
...
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.173 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: Panel Zentrieren...

  Alt 4. Mai 2021, 13:42
Bei solchen komplexeren Positionierungen würde ich das lieber selbst berechnen, also keine Aligns, Paddings und Margins benutzen.
Das wird insgesamt schneller sein und Du hast keine unübersichtlichen gegenseitigen Beeinflussungen.

Du kannst gezielt gewünschte Abstände einberechnen und die z.B. auch verringern, falls der Platz etwas knapper wird.
Auch das Zentrieren horizontal und vertikal ist kein Problem.

Natürlich musst Du dafür eine Funktion schreiben, aber das ist ein einmaliger Aufwand.
Aufrufen musst Du sie einmal bei der Initialisierung und dann im OnResize.

Dann hast Du alles selbst in der Hand und musst nicht mit Überraschungen der VCL umgehen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
999 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: Panel Zentrieren...

  Alt 4. Mai 2021, 14:51
Hi zusammen
Zuerst mal recht vielen Dank für eure vielen Antworten!
Andere spezille Ausrichtungkomponenten hast du auch mal ausprobiert?

Suche mal in der Komponenten nach Dingen mit "Panel" im Namen.
TGridPanel, TFlowPanel, TRelativePanel, ...
Ja,danke. Habe ich, bis auf TRelativpanel: Letzteres hab ich mir nur mal die Demo angesehen, während ich nach einer solchen suchte:TGridpanel, und von TFlowPanel habe ich auch eine Demo durchgearbeitet. Vielleicht mit gewissen Nuancen hab ich überall das selbe Problem: alle kleben standardmässig immer in Left.
Bei TGridpanel habe ich keinen Wert für den Abstand zischen zwei Controls gefunden, bei TFlowpanel ist es wohl mehr oder weniger dasselbe.

Wäre das eine Möglichkeit?
Delphi-Quellcode:
...
  case AMonth of
    1.. 6: FParentCtrl := PnlSixMonts1;
    7..12: FParentCtrl := PnlSixMonts2;
  end;
  FParentCtrl.Padding.Left := GetParentControlPostion(FParentCtrl);
...
Hab ich bereits so umgesetzt, steht so korrigiert aber nicht in der bereitgestellten *.pas. Was da (auch bei mir) noch fehlt: FParentCtrl hat von 1..6 einen andern Wert als von 7...12, wird also die ersten 6 mal überschrieben.

Bei solchen komplexeren Positionierungen würde ich das lieber selbst berechnen, also keine Aligns, Paddings und Margins benutzen.
Das wird insgesamt schneller sein und Du hast keine unübersichtlichen gegenseitigen Beeinflussungen.
Du kannst gezielt gewünschte Abstände einberechnen und die z.B. auch verringern, falls der Platz etwas knapper wird.
Auch das Zentrieren horizontal und vertikal ist kein Problem.

Natürlich musst Du dafür eine Funktion schreiben, aber das ist ein einmaliger Aufwand.
Aufrufen musst Du sie einmal bei der Initialisierung und dann im OnResize.

Dann hast Du alles selbst in der Hand und musst nicht mit Überraschungen der VCL umgehen.[/QUOTE]


Grundsätzlich stimme ich dir zu. Eine Besonderheit von Align ist zB., dass sich eine Komponente, die alLeft ausgrichtet werden soll, vor eine alLeft ausgerichtete Komponente schiebt. Bei mir kann das dann plötzlich heissen, dass der Februar vor dem Januar kommt...
Aber da sind auch die Werte, die ich zur Laufzeit ermittle und die den sichtbaren Panels total wiedersprechen.
Im "untersten" Frame, dem FDayNumberFrame, sind keinerlei Margins oder Paddings gesetzt: das Ding muss mit absolut minimalem Platz auskommen.
Ansonsten müsste ich mir das nochmal genau vornehmen...

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.662 Beiträge
 
Delphi 7 Professional
 
#20

AW: Panel Zentrieren...

  Alt 4. Mai 2021, 15:05
Wenn ich was links anordnen will, aber nicht ganz links, sondern rechts neben dem letzten ganz links, helfe ich mir in der Art:
Delphi-Quellcode:
Panel.Align := alRight; // Schiebt erstmal nach ganz rechts.
Panel.Align := alLeft; // Schiebt nun nicht nach ganz links, sondern rechts neben das "letzte" der links angeordeneten Elemente.

// oder:
Panel.Align := alLeft; // Schiebt nach ganz links.
Panel.Left := Parent.Width; // Verschiebt nach vielzuweit rechts, da aber Align = alLeft ist, wird daraus rechts neben dem "Letzten" links.

// oder:
Panel.Left := MaxInt; // Verschiebt nach vielzuweit rechts, da aber Align = alLeft ist, wird daraus rechts neben dem "Letzten" links.
Panel.Align := alLeft; // Schiebt nach ganz links. neben dem "Letzten" links.

// oder:
// In umgekehrter Reihenfolge einfügen.
// Zuerst das, was im Ergebnis am weitesten rechts sein soll.
// Dann das davor
// und dann das davor
// ...
// Hieße bei Dir also einfügen von
// Juni
// Mai
// April
// März
// Februar
// Januar
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 05:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf