Eigenschaft Left wird von Unbekannt verändert

Rund um die LCL und andere Komponenten
Antworten
thomas55
Beiträge: 12
Registriert: So 25. Sep 2016, 14:24
OS, Lazarus, FPC: Win7 (L 1.6.xy FPC 3.0.0)
CPU-Target: 64Bit
Wohnort: Berlin, Wetterseite

Eigenschaft Left wird von Unbekannt verändert

Beitrag von thomas55 »

Hallo liebe Forumsmitglieder,
nach langer Pause bin ich wieder bei Lazarus.
Ich möchte eine Angebotsanwendung bauen. Leider kommt bereits bei der ersten Form ein Hindernis daher.
Für die Bedienug der Daten habe ich DBNavigator + DBEdit + DBNavigator aneinandergereiht.
sieht in der Erstellung gut aus, wie gewünscht.
Nach Programmstart jedoch sind die Elemente nach links verschoben Jedenfalls wenn die Einstellung für Left auf DBNavigator1: 20
DBEdit1: 60
DBNavigator2: 220
steht. Dann wird die jeweilige Eigenschaft von irgendwas verändert auf: 17, 49, 200.
Das habe ich nicht programmiert.
Leider weiß ich nicht wie man Bilder hier einfügen kann.
Daher Bilder und unit1: https://mega.nz/#F!M8UFiIiC!V9VOFhTDnojCRWB9dZHtkA

Wenn ich die Left-Eigenschaft je um eins incrementiere oder dekrementiere geschieht das nicht.

Kann da jemand helfen?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: Eigenschaft Left wird von Unbekannt verändert

Beitrag von af0815 »

Die Frage ist, wie das gereiht hast ? Die Eigenschaften werden vermutlich durch definierte Anchors geändert.

Also entwerde durch die Einstellungen unter Align oder Anchors im Objectinspektor (OI) zu finden.

Ich mache Layouts mal grundsätzlich mit Anchors und seltener im Code.

Siehe auch
https://wiki.freepascal.org/Anchor_Sides/de
https://wiki.lazarus.freepascal.org/Autosize_/_Layout

Edit:
BTW: unter dem Editfenster im Forum gibt es Dateianhang hochladen. Und beim Hochladen bitte das *.pas UND *.lfm zippen und hochladen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

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

Re: Eigenschaft Left wird von Unbekannt verändert

Beitrag von wp_xyz »

af0815 hat geschrieben:Und beim Hochladen bitte das *.pas UND *.lfm zippen und hochladen.

Und das lpr und lpi auch mit dazupacken, sowieevtl benötigte Datendateien. Aber keine exe, ppu und was auch immer der Compiler erzeugt. Sonst wird der Download zu groß.

thomas55
Beiträge: 12
Registriert: So 25. Sep 2016, 14:24
OS, Lazarus, FPC: Win7 (L 1.6.xy FPC 3.0.0)
CPU-Target: 64Bit
Wohnort: Berlin, Wetterseite

Re: Eigenschaft Left wird von Unbekannt verändert

Beitrag von thomas55 »

Danke für die Antwort.
Das mit den Anchor... habe ich nicht gemacht. Zum Anschauen und Testen habe ich das ganze mikroskopische Projekt in der Mega. Es ist ja kaum 7MB zipped.
... und versuche es hier anzuhängen. aaaah. geht doch.
Vielleicht tritt es ja bei Dir nicht auf. Die Projekt1.exe ist mit dabei. In der tritt es bei mir auf ; und auch in jeder Art Projekt neu komiliert.
Bin gespannt.

Gruß aus Berlin
Thomas
Zuletzt geändert von thomas55 am Fr 27. Mär 2020, 09:08, insgesamt 1-mal geändert.

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

Re: Eigenschaft Left wird von Unbekannt verändert

Beitrag von wp_xyz »

Du hast anscheinend versucht die drei Elemente DBNavigator1, DBEdit1 und DBNavigato2r mit dem Anchor-Editor aneinander zu verankern und dabei die drei in einem verkorksten Zustand hinterlassen, weil keine der vier Anker-Checkboxes gesetzt ist, oder: weil im Objekt-Editor die Eigenschaft Anchors eine leere Menge ist. In diesem Zustand sind alle vier Seiten der Controls nicht verankert, d.h. haben einen Abstand zum entsprechenden Rand des Containers (hier: des Formualrs), der sich entsprechend der Formulargröße ändert.

Es gibt mehrere Möglichkeiten, das zu lösen:
  1. Lasse die Elemente akLeft und akTop in den Anchors gesetzt. Dadurch ist der Abstand nach links und oben immer konstant. Sorge aber vorher im Anchor-Editor dafür, dass die Comboboxen "Geschwister" im AnchorEditor leer (nil) sind, sonst tritt beim setzen der Häkchen der entsprechende Verankerung ein. Das reicht für "Wand- und Wiesen"-Anwendungen.
  2. Soll das Programm auch auf anderen WidgetSets gut aussehen, musst du komplett mit dem Anchor-Editor arbeiten, und die Controls aneinander verankern. Du kannst sie dann im Designer nicht mehr mit der Maus verschieben, kannst aber sicher sein, dass nichts überlappt. Das Schritt für Schritt zu beschreiben, wäre eine längere Aktion. Um das zu vermeiden habe ich dein Form1 mit dem Anker-Editor überarbeitet und alle Controls in der linken oberen Ecke aneinander verankert, so dass eine Größenveränderung auf einem anderen Betriebssystem zu keiner Überlappung führt. Öffne den Anker-Editor, klicke die einzelnen Controls an und schaue im AnkerEditor nach, welche Parameter gesetzt sind.
  3. Eine andere Möglichkeit mit demselben Ziel kommt ohne Anker-Editor aus und ginge z.B. auch in Delphi, wo es keinen AnkerEditor gibt. Setze ein Panel aufs Formular. DBNavigator1, DBEdit1 und DBNavigator2 kommen in dieses Panel. DBNavigator1 bekommt Align=alLeft, DBNavigator2 Align = alRight und DBEdit1 Align = alCenter. Zum Schluss wird noch das AutoSize des Panels auf true gesetzt. Die Breite des Edit kann man wegen des AutoSize nicht mehr mit der Maus verändern. Wenn du dir Breite ändern willst, dann kann man das in DBEdit1.Constraints.MinWidth machen.
Dateianhänge
unit1.zip
(3.08 KiB) 87-mal heruntergeladen

thomas55
Beiträge: 12
Registriert: So 25. Sep 2016, 14:24
OS, Lazarus, FPC: Win7 (L 1.6.xy FPC 3.0.0)
CPU-Target: 64Bit
Wohnort: Berlin, Wetterseite

Re: Eigenschaft Left wird von Unbekannt verändert

Beitrag von thomas55 »

wp_xyz, so ähnlich. Tatsächlich habe ich nur die Anker auf False gestellt. Frag nicht warum.
Nach Deiner Erklärung habe ich vieles mit den Ankern ausprobiert.
Nun glaube ich daß es mir klar geworden ist.

Tausend Dank und

Lg aus Berlin
Thomas

Antworten