Anchors Verhalten erstaunlich...

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
siro
Beiträge: 732
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Anchors Verhalten erstaunlich...

Beitrag von siro »

Wo packe ich den Thread hin, es ist ja kein Problem vorhanden, ganz im Gegenteil :D

Es funktioniert etwas richtig, ohne dass ich es programmiert habe....

Zur Sache:
Für ein speziellen Projekt möchte ich unter einem Kurvenfenster eine Skalierung haben, bzw. bei Bedarf sogar mehrere,
die der Benutzer beliebig ein oder ausblenden kann.
Um das Verhalten zu testen, habe ich mal dieses kleine Testprogrämmchen geschrieben, was auf Anhieb richtig funktioniert. :shock:
Ich bin erstaunt, natürlich auch begeistert....aber verstehen tue ich es nicht wirklich.
Screen1.png
Screen1.png (12.63 KiB) 4533 mal betrachtet
Wenn ich red ausschalte, wird es unsichtbar, eine neue Ausrichtung fürs Kurvenfenster ist erforderlich. Funzt

Wenn ich yellow ausschalte, dann rutscht red an green heran, das soll auch so sein, ich staune aber dass dies automatisch passiert.
red hat ja einen unteren Anchor von yellow von mir bekommen, da yellow unsichtbar wird, woher weis red, dass nun grün als Anchor gilt ??

Egal was ich klicke (ein oder ausschalte), es funktiniert exakt so wie ich es vorhatte, ohne dass ich auch nur eine Zeile programmiert habe.

G E I L :mrgreen:

Wenn ein Objekt unsichtbar wird und ein anderes einen Anchor auf dieses Objekt hat, gibt es da eine Hierachie wer wo ran rückt ?
Die Objekte müssen sich ja auch merken wo sie ursprünglich mal angebunden ware, wenn ich die nämlich wieder sichtbar mache.
Das funktioniert wirklich erstaunlich gut.

simples Beispielprojekt anbei:
project1.zip
(105.77 KiB) 61-mal heruntergeladen
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6217
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Anchors Verhalten erstaunlich...

Beitrag von af0815 »

Ja es ist erstaunlich :D Soweit ich das bereits einmal verfolgt habe, gibt es eine eigene Loop die Aufgerufen wird, wen ein Element über die Anchors was ändert. Ich hatte den gegenteiligen Fall, das die Loop Infinite aufgerufen wurde und dann aufgrund einer Überwachung eine Fehlermeldung gibt.

Mit den Anchors und etwas Code kann man sehr stabile Layouts machen, die auch über Widgetset Grenzen sehr stabil sind.

Das Verfahren ist mir zusammen mit dynamischen Frames echt ans Herz gewachsen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4895
Registriert: Fr 8. Apr 2011, 09:01

Re: Anchors Verhalten erstaunlich...

Beitrag von wp_xyz »

Dass das gelbe Panel unsichtbar geschaltet wird, bewirkt nicht, dass die Anker-Kette zu den Nachbar-Panels gelöst wird. Denk dir einfach, dass das unsichtbar Panel Höhe Null bekommen hat.

Ja, die Anker sind genial. Man darf nur nicht kreuz-und-quer verankern, sonst kommt es leicht zu dem Fehler mit den Endlos-Schleifen. Das Formular kann man dann nur noch retten, indem man die IDE verlässt und in einem externen Editor die Verankerungs-Properties in der lfm-Datei entfernt und Left/Top/Width/Height der verankerten Controls prüft und ggfs wieder auf vernünftige Werte zurücksetzt.

Ein Problem machen unsichtbare Controls, wenn man das Anchoring mit AutoSize des Formulars verknüpft: das am weitesten unten stehende Control bestimmt bei AutoSize die Größe des Formulars. Wenn es unsichtbar wird, verändert sich dann plötzlich die Größe des Formulars. Besonders verwirrend, wenn dieses Control auf einer nicht aktiven Seite eines PageControl sitzt. In diesem Fall lässt man am besten die Finger vom AutoSizing.

siro
Beiträge: 732
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Anchors Verhalten erstaunlich...

Beitrag von siro »

@af0815:
Ich habe mich auch schon das ein oder andere Mal "verankert" :roll: mit den Dingern und dann kam tatsächlich eine Rekursive Schleife auf, welche aber angewarnt wurde....
Manchmal hatte ich die Komponenten garnicht mehr lösen/verschieben können und habe sie dann im Objektinspektor gelöscht, das war einfacher.

wp_xyz:
Denk dir einfach, dass das unsichtbare Panel Höhe Null bekommen hat.
Eine SEHR gute Info mit der Höhe 0. Es ist also nix umgeankert worden, sondern durch den Abstand (Höhe) von 0 bleiben die Verbinungen ja alle bestehen
damit ergibt sich der Zusammenhang automatisch, das macht absolut Sinn.

Auf jeden Fall ne coole Sache, wenn man es richtig macht.
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6217
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Anchors Verhalten erstaunlich...

Beitrag von af0815 »

siro hat geschrieben:
Di 22. Aug 2023, 16:40
Auf jeden Fall ne coole Sache, wenn man es richtig macht.
+1

das ist das Schwerste an der Sache :mrgreen:
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten