AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Unterschiedliche Controls an gleicher Position

Unterschiedliche Controls an gleicher Position

Ein Thema von Hobbycoder · begonnen am 27. Apr 2017 · letzter Beitrag vom 27. Apr 2017
Antwort Antwort
Hobbycoder

Registriert seit: 22. Feb 2017
930 Beiträge
 
#1

Unterschiedliche Controls an gleicher Position

  Alt 27. Apr 2017, 07:30
Hi,

ich erstelle eine Eingabemaske zum festlegen von Bedingungen für später stattfindende Ereignisse, die sich aber dynamisch verändern soll.
In Eingabemaske wählt der Benutzer als aller erstes eine Quellobjekt aus, dessen Eigenschaften für die Bedingung überprüft werden sollen.
Nun haben nicht alle Objekte die gleichen Eigenschaften, so dass das Eingabecontrol für den Vergleichswert unterschiedlich sein kann.
Für manch ein Objekt benötige ich für den Vergleichswert ein Edit, für andere eine Combobox und für wieder anderes einen DateTimePicker.

Ich könnte natürlich alle Controls an ihre Position setzen, und nach Auswahl des Objektes nur das Visible machen, welches für die Eingabe sinnvoll ist.
Das wäre aber für die spätere Bearbeitung der Form unschön, weil ich nicht alle Controls sehen kann.

Ich könnte auch die Controls irgendwo auf die Form legen, und nach Auswahl des Objektes nicht nur das passen Visible machen, sondern auch passend platzieren.

Auch könnte ich das Control dynamisch erstellen lassen.

Gibt es noch andere Möglichkeiten sowas zu realisieren, von denen ich vielleicht noch nichts weiß, oder nicht von selbst drauf komme?
Wie macht ihr sowas?
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.610 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Unterschiedliche Controls an gleicher Position

  Alt 27. Apr 2017, 07:39
Du könntest dir mal (vererbte) Frames anschauen.
  Mit Zitat antworten Zitat
Poelser

Registriert seit: 21. Apr 2008
Ort: Europa
145 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Unterschiedliche Controls an gleicher Position

  Alt 27. Apr 2017, 07:48
Ich mache so etwas mit einem Pagecontrol, in dem zur Laufzeit die Tabs invisible sind. Auf jeder Page sind dann die Benötigten Controls. In Abhängigkeit von den benötigten Daten wird dann das entsprechende TabSheet aktiviert.
Wenn du das noch in ein Frame packst, dann kannst du das auch noch mehrfach verwenden. Bei mir ist das z.B. für einen Filter für Tabellenansichten so gemacht.

HTH, Poelser
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Unterschiedliche Controls an gleicher Position

  Alt 27. Apr 2017, 08:30
oder einen Frame an die gewünschte Position und zur Laufzeit

Delphi-Quellcode:
Edit1.Parent := Frame1;
RadioButton1.Parent := Frame1;
...
Die Controls selbst legst Du zur Entwurfszeit irgendwo aufs Formular

Ciao
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Unterschiedliche Controls an gleicher Position

  Alt 27. Apr 2017, 10:04
Man sollt sicher unterscheiden, ob man ganz unterschiedliche Masken pro Thema hat oder sich nur einzelne Controls marginal unterscheiden.

Für den ersten Fall wären sicher Frames oder embedded Forms sinnvoll.
Die enthalten in sich schon alle Controls und die GUI-Logik und werden nach Bedarf erzeugt und an die gewünschte Stelle platziert bzw. später wieder freigegeben.

PageControls ohne sichtbare Reiter wären eine Alternative, aber m.E. unhandlicher.

Edits ein- und ausblenden und verschieben würde ich nur im zweiten Fall, wenn es in den Masken nur geringe Unterschiede gibt.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
930 Beiträge
 
#6

AW: Unterschiedliche Controls an gleicher Position

  Alt 27. Apr 2017, 10:30
Danke für eure Anregungen.

ich werde das so machen, dass ich tatsächlich die Controls über Visible und Position anzeige bzw. ausblende.
Es handelt sich bei der Maske im Grunde nur im 1 Control, im einem Fall auch mal um 2. Alles anderen Controls sind bei allen Objekten gleich, so dass über Frames oder PageControl sich da nichts einsparen lässt.

Hatte gedacht, es gäbe noch irgendwas diesbezüglich in Delphi, was ich noch nicht kenne. Dem ist ja nicht der Fall.

Also, danke nochmal.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Unterschiedliche Controls an gleicher Position

  Alt 27. Apr 2017, 10:49
Für Sachen der Art benutze ich entweder Frames oder Panels.

Die Controls werden alle mit Align := alLeft "ausgestattet".

Durch Ändern von Visible braucht man sich nun nicht mehr um die Position kümmern, da sie sich immer alle linksbündig "nebeneinander" legen.

Man muss allerdings bei der Reihenfolge des Sichtbarmachens von links nach rechts vorgehen, da ansonsten die Reihenfolge "strubbelig" wird. Hat man allerdings links eine immer gleiche Anordnung und möchte nur beim rechten Control eine Auswahl haben, ist das ganze recht unproblematisch.
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
563 Beiträge
 
Delphi XE6 Enterprise
 
#8

AW: Unterschiedliche Controls an gleicher Position

  Alt 27. Apr 2017, 11:56
Ich verwende dafür Panels, die ich zur Designzeit auf dem Formular so verteile, dass ich alle darauf befindlichen Steuerelemente gut bearbeiten kann. Zur Laufzeit werden die Panels dann im OnCreate an die gleiche Stelle gesetzt und bis auf das jeweils anzuzeigende unsichtbar gemacht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.098 Beiträge
 
Delphi 12 Athens
 
#9

AW: Unterschiedliche Controls an gleicher Position

  Alt 27. Apr 2017, 11:58
Ich verwende dafür Panels, die ich zur Designzeit auf dem Formular so verteile, dass ich alle darauf befindlichen Steuerelemente gut bearbeiten kann. Zur Laufzeit werden die Panels dann im OnCreate an die gleiche Stelle gesetzt und bis auf das jeweils anzuzeigende unsichtbar gemacht.
TNotebook war vom Prinzip her nett, aber ist aber eine "schlechte" Demokomponente.

Also TPageControl, Tabs ausblenden und wie ein Panel mit mehreren Seiten verwenden.

Beim Visible-Ändern und die Controls (mit Margins) oder besser Panels auf alTop ... da muß man halt auf die Reihenfolge achten, da sie sich ändern könnte.
Möglich wäre auch Height=0 zu setzen, aber da muß man auf den Fokus achten und müsste eventuell noch mit Enabled rumspielen.
* Eventuell einfach Tag mit der "Sortierung" füllen oder die Erstellungsreihenfolge verwenden und dann nach Sichtbarkeisänderung das Top überall nochmal anpassen.
* Oder immer erst "alles" ausblenden und dann neu in der richtigen Reihenfolge das Einblenden, was grade benötigt wird.


Oder, wenn es nur einzene Controls sind, dann nicht mit Visible arbeiten, sondern mit Enabled und alles an seiner Position belassen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (27. Apr 2017 um 12:06 Uhr)
  Mit Zitat antworten Zitat
Bentissimo

Registriert seit: 25. Apr 2006
Ort: Friedenfels
82 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Unterschiedliche Controls an gleicher Position

  Alt 27. Apr 2017, 13:59
Scheint mir ein Fall für einen "Objektinspektor" zu sein. Oder allgemeiner ausgedrückt ein vertikales Grid.

Ich persönlich verwende DevExpress, da ist sowas dabei, aber sehr wahrscheinlich gibt es auch was kostenloses (Jedi?).
Stephan Schmahl
  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 +1. Es ist jetzt 14:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz