Tab je nach Problemstellung ändern

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Antworten
Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Tab je nach Problemstellung ändern

Beitrag von photor »

Hallo Forum,

ich suche nach einer brauchbaren Lösung für folgendes "Problem":

Ich programmiere gerade ein Tool zur Berechnung von Rissausbreitung (das tut aber nicht wirklich zur Sache). Diese Art Rechnung braucht je nach Problemstellung unterschiedliche Eingabeparameter. Eine einfache äquivalente Aufgabe wäre z.B. die Volumenberechnung von geometrischen Körpern: da brauche ich
  • für eine Kugel nur einen Radius (R),
  • für einen Zylinder einen Radius (R) und eine Höhe (H),
  • für einen Quader drei Kantenlängen (A, B, C),
  • für den Würfel nur eine (A)

usw.

Der Problemtyp soll über eine TComboBox ausgewählt werden; die Eingabeparameter sollen in einem Tab eines bereits definierten TPageControl untergebracht werden - und zwar auf einem(!), das sich - je nach Aufgabenstellung - die "Eingabemaske" ändert:
  • nur ein TEdit für R der Kugel;
  • 2 TEdits für H und R beim Zylinder
  • ...
(jeweils mit passendem TLabel und eventuell einem Bild/Skizze, eventuell noch gruppiert). Mir fällt im Moment nur ein, dieses Tab jeweils zur Laufzeit im Programm im Code zu definieren, was aber bestimmt nicht die beste und schon gar nicht eleganteste Lösung ist.

Kann man das Layout nicht im Voraus definieren und dann zur Laufzeit auf das Tab legen - und wie genau mache ich das konkret? Mir spukt was von TFrame im Kopf rum, habe damit aber noch nicht gearbeitet und brauche vielleicht einen Stubbs in die richtige Richtung. Oder gibt es noch andere Möglichkeiten?

Dankbar für jeden Tipp,

Photor

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Tab je nach Problemstellung ändern

Beitrag von Winni »

Hi!

Nimm für jede gewünschte Form eine GroupBox (oder ein Label).
Pack die notwendige Anzahl von Edit-Compos drauf.

Je nach gewünschter Form mach alle GroupBoxen invisible ausser der benötigten.
Bei Platzproblemen kannst Du die auch alle an die gleiche Stelle packen per Code.

Das hat den Vorteil, dass für den Kreis nur aus KreisEdit gelesen werden kann etc

In Delphi1-Zeiten hätten wir "Verschwendung" gesagt, aber heute ....

Winni
Zuletzt geändert von Winni am Mi 7. Apr 2021, 20:24, insgesamt 1-mal geändert.

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Tab je nach Problemstellung ändern

Beitrag von Winni »

Wie löscht man einen doppelten Beitag?

Benutzeravatar
h-elsner
Lazarusforum e. V.
Beiträge: 259
Registriert: Di 24. Jul 2012, 15:42
OS, Lazarus, FPC: LINUX Mint21.1, Win10, Lazarus 2.2.4, FPC3.2.2
CPU-Target: X86-64; arm 32bit
Wohnort: Illertissen
Kontaktdaten:

Re: Tab je nach Problemstellung ändern

Beitrag von h-elsner »

Wenn genug Platz ist, würde ich statt Visible True/False lieber Enabled True/False nehmen. Ich als Benutzer hasse es, wenn die Oberfläche sich laufend ändert und man immer überrascht wird. Mit Disabled kann man auch nichts eingeben oder verändern, aber man hat als Benutzer wenigstens eine Ahnung, was auf einen zukommen kann, welche Möglichkeiten es noch geben könnte usw.

Ich weiß, ist Geschmackssache. Wollte es nur mal aus meiner Sicht der Usability betrachten.

Gruß HE

Benutzeravatar
Levario
Beiträge: 101
Registriert: Mo 1. Sep 2014, 14:32
OS, Lazarus, FPC: Windows 10 Pro Laptop (Lazarus 3.0.0 FPC 3.2.2)
CPU-Target: 64 Bit
Wohnort: Deutschland / NRW

Re: Tab je nach Problemstellung ändern

Beitrag von Levario »

Hi wenn ich das richtig interpretiere kann man für jede Berechnung unterschiedliche Editfedler auswählen.

(1) Verwende einfach Frames und ändere die gesamte Oberfläche je nach Berechnung. https://www.youtube.com/watch?v=A4xsVaA ... e&index=22
(2) Erstelle die Eingabefelder erst zur Laufzeit.https://www.youtube.com/watch?v=_E0-sZS ... e&index=27

Bei der ersten Lösung muss man nicht die Editfelder ausblenden oder inaktiv schalten. Frames ermöglichen die Erstellung von schnellen Benutzeroberflächen per Mausklick. Die Elemente können gleich benahmt werden, sind aber in einer anderen Unit untergebracht.
Bei der ersten Lösung muss man ein wenig mehr programmieren, es lassen sich aber so dynamische und schicke Oberflächen erstellen

Beide Lösungen können über das TComboBox Element gesteuert werden.

Erfolgreiches programmieren

Gruß
Levi
Der Weg ist das Ziel... Aber bitte nicht vergessen los zu laufen :).

Benutzeravatar
photor
Beiträge: 443
Registriert: Mo 24. Jan 2011, 21:38
OS, Lazarus, FPC: Arch Linux: L 2.2.6 FPC 3.2.2 (Gtk2)
CPU-Target: 64Bit

Re: Tab je nach Problemstellung ändern

Beitrag von photor »

Moin,

zunächst eine Entschuldigung; aber ich finde gerade erst wieder Zeit. Dann ein „Danke“ für die Vorschläge. Die werde ich mir noch ausführlicher ansehen.

Erkenntnis bisher: alle Eingabefelder/parameter ließen sich (gruppiert mittels TGroupBox) auf 2 Tabs thematisch sinnvoll unterbringen. Je nach in der TComboBox eingestellten Berechnung ließen sich die entsprechenden TEdits enablen bzw. sichtbar schalten (wie man dies als übersichtliches Schema/Matrix hiterlegen könnte, muss ich noch überlegen).

Alternativ würde ich mich mit den TFrames beschäftigen. Das ist aber ein für mich ganz neues Thema.

Ciao,
Photor

Antworten