Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Komponente gesucht (https://www.delphipraxis.net/196674-komponente-gesucht.html)

e-gon 8. Jun 2018 09:38

Komponente gesucht
 
Hallo,

häufig schreibe ich Programm, die in irgendeiner Form Datenbanken bearbeiten. Die über Abfragen erhaltenen Daten werden angezeigt und können vom Benutzer dann verändert und in die Datenbank gespeichert werden. Eben der ganz normale Wahnsinn.

Für statistische Zwecke schaffe ich gerne immer noch die Möglichkeit benutzerdefinierter Abfragen. Dabei nutze ich unterschiedliche Komponenten - meistens TEdit für Text und TCheckBox für ja/nein-Abfragen.

Ein Beispiel: Um in der Abfrage alle Produkte mit einem bestimmten Namen zu finden, bietet sich TEdit natürlich an. Für die Farbe benutze ich hingegen gerne CheckBoxen. Also eine CheckBox für rot, eine für grün, eine für blau, usw... Dadurch kann man auch mehrere Produkte unterschiedlicher Farbe gleichzeitig finden. Also wenn die CheckBox für rot und blau auf True stehen, eben alle roten und blauen Produkte.

Allerdings hat es sich oft gezeigt dass nicht nur eine positive Auswahl (also z.B. alle roten und blauen Produkte) sondern auch eine negative Auswahl (also z.B. keine grünen Produkte) gewünscht wird. Dafür bräuchte ich allerdings eine CheckBox mit drei Zuständen: 1. nicht ausgewählt, 2. positiv ausgewählt, 3. negativ ausgewählt.

Bisher löste ich das Problem immer mit einer normalen CheckBox, die auch bei einem Rechtsklick gecheckt oder nicht gecheckt werden kann, deren Text bei Checked=True aber rot angezeigt wird und somit als negative Auswahl markiert ist. Aber auf Dauer ist das keine gute Lösung. Deshalb meine Frage an Euch: Kennt Ihr dafür eine brauchbare Komponente?

Gruß
e-gon

SProske 8. Jun 2018 09:44

AW: Komponente gesucht
 
Ich hätte das 2teilig gestaltet - erst die "Meta"-Auswahl (enthält/enthält nicht bei Checkboxen, enthält/startet mit/endet mit/enthält nicht.. bei Zeichenketten, gleich/ungleich/größer/kleiner bei Zahlen) und dann die Angabe des konkreten Werts bzw. der konkreten Werte.

Jasocul 8. Jun 2018 09:48

AW: Komponente gesucht
 
Zitat:

Zitat von e-gon (Beitrag 1404238)
Dafür bräuchte ich allerdings eine CheckBox mit drei Zuständen: 1. nicht ausgewählt, 2. positiv ausgewählt, 3. negativ ausgewählt.

Schau dir dazu mal die Eigenschaft AllowGrayed an.
Alternativ wechselst du auf Radiogroups. Das benötigt allerdings mehr Platz auf der Form.

e-gon 8. Jun 2018 09:55

AW: Komponente gesucht
 
Danke für die schnellen Antworten!

Leider ist der Platz oft das Problem. Deshalb würde ich schon gerne das alles mit einer einzigen Komponente machen. Zweiteilig oder gar drei Radioboxen fressen einfach zu viel Platz.

Stimmt! Die Eigenschaft AllowGrayed könnte ich evtl. dazu nutzen. Muss es mir mal genauer anschauen...

Gruß
e-gon

bcvs 8. Jun 2018 10:17

AW: Komponente gesucht
 
Wie wäre es mit einer Combobox mit drei Einträgen: enthält / enthält nicht / egal ?

KodeZwerg 8. Jun 2018 10:18

AW: Komponente gesucht
 
Dann mach es doch über ComboBoxen, der Platz ist identisch, oder FlowPanels.

e-gon 8. Jun 2018 10:47

AW: Komponente gesucht
 
Bei ComboBoxen ist das Problem, dass man mindestens zwei Klicks braucht, während es bei einer CheckBox (mit Rechts- oder Linksklick) derzeit nur ein Klick ist.

Ein Produkt kann nämlich bis zu 30 verschiedene Eigenschaften haben und, wenn diese wie bei den Farben aufgedröstelt werden, aus 10 oder mehr Möglichkeiten bestehen. Da spielt ein oder zwei Klicks durchaus eine Rolle. Deshalb ist die Eigenschaft AllowGrayed bei ComboBoxen auch nicht so geeignet.

Mir kam aber gerade die Idee pro Möglichkeit ein einfaches TLabel zu nutzen und je nachdem wo der Benutzer hinklickt (vordere Bereich für positiv ausgewählt, mittig für nicht gewählt, hinterer Bereich für negativ ausgewählt) das Label mit entsprechender Hintergrundsfarbe zu markieren.

Was haltet Ihr davon? Wäre sowas intuitiv?

rapante 8. Jun 2018 11:08

AW: Komponente gesucht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hy,
wenn du keine eigene Komponente bauen möchtest, geht es am schnellsten mit einer RadioGroup:
3 Spalten. Itmes: ja, nein, egal (oder so ähnlich ;) )

Das nimmt nicht viel mehr Platz ein...

Jumpy 8. Jun 2018 11:10

AW: Komponente gesucht
 
Das Problem ist, wir genau treffe ich die richtige Stelle. Genauso fände ich bei der Checkbox-Idee es evtl. unintuitiv mit der rechten Maustaste zu klicken, um zu negieren.

Variante: z.b. blaues Label: 1x klick ausgewählt, wird gehighlighted, 2ter klick negiert, 3ter klick wieder abgewählt?

Bernhard Geyer 8. Jun 2018 11:22

AW: Komponente gesucht
 
Zitat:

Zitat von e-gon (Beitrag 1404245)
Stimmt! Die Eigenschaft AllowGrayed könnte ich evtl. dazu nutzen. Muss es mir mal genauer anschauen...

Und gesetzt wird über das Property State (cbChecked, cbUnchecked und cbGrayed)

e-gon 8. Jun 2018 11:39

AW: Komponente gesucht
 
Zitat:

Und gesetzt wird über das Property State (cbChecked, cbUnchecked und cbGrayed)
Womit ich dann wieder die Rechtsklick-Variante nutzen könnte...

Was mir an der eigenen Label-Lösung nicht so gefällt: Man kann diese ausschließlich mit der Maus nutzen. Per Tastatur könnte man das Label ja nicht setzen.

Jumpy 8. Jun 2018 11:41

AW: Komponente gesucht
 
Oder ein kleines Label, wie ein Button.
Standard-Farbe zunächst grau (nicht selected).
Linksklick wird grün, rechtsklick rot.
Erneuter Linksklick auf grünes Label macht dieses wieder grau (analog rechts und rot).

KodeZwerg 8. Jun 2018 12:04

AW: Komponente gesucht
 
Ich würde mit FlowPanels arbeiten die einem ruhig viel Eigenschaften bieten und mit default start-werten anfangen damit irgendwas vorselektiert ist.
Wenn alles sofort mit singleclick Lösung arbeiten soll muss logischer Weise auch alles sofort klickbar/hotkey sein, was ein links/rechts/multi-click Verfahren ausschließt und viel Platz kostet.
Für alles wo man +2 Clicks braucht mit deiner Variante, das kann definitiv in einer 3-Klick FlowPanel Lösung enden da Du auf dem Panel ja dann jede Option per CheckBox o.ä. bereitstellen kannst.
Klick 1 = FlowPanel zeigen, Klick 2 = Eigenschaften ändern, Klick 3 = Weiter machen/Panel schließen/whatever.

Man kann auch ein Button verschiedene Settings haben lassen das der sich selbst auch umbenennt je nachdem wie oft du raufklickst, vieles ist realisierbar, obs praktisch ist müssen Deine Anwender entscheiden :-)

Rechtsklick-Maus scheidet für Tastatur-Bedienung ja auch irgendwie aus, oder?

himitsu 8. Jun 2018 12:10

AW: Komponente gesucht
 
Zitat:

Zitat von KodeZwerg (Beitrag 1404262)
Rechtsklick-Maus scheidet für Tastatur-Bedienung ja auch irgendwie aus, oder?

Links = Leertaste
Rechts = Strg+Leertaste

Und die Tastaturmaus kann auch Rechts und Links klicken. (die kann man sich im Windows aktivieren und liegt z.B. bei ausgeschaltetem NumLock im Nummernblock)

[edit]
Grade was Neues gelernt ... Alt+Shift+NummLock ... hatte es bei mir sonst immer erst in den Windowssetting so eingestellt, dass es automatisch geht, aber wenn das bisher noch nicht aktiviert war, dann ging es nicht.

KodeZwerg 8. Jun 2018 12:19

AW: Komponente gesucht
 
Zitat:

Zitat von himitsu (Beitrag 1404263)
Zitat:

Zitat von KodeZwerg (Beitrag 1404262)
Rechtsklick-Maus scheidet für Tastatur-Bedienung ja auch irgendwie aus, oder?

Links = Leertaste
Rechts = Strg+Leertaste

Diese Art der Bedienung muss er seinen Anwendern beibringen, nicht mir.

e-gon 8. Jun 2018 12:56

AW: Komponente gesucht
 
Zitat:

Diese Art der Bedienung muss er seinen Anwendern beibringen, nicht mir.
Das ist das nächste Problem. Es sollte dann auch noch irgendwie intuitiv sein...

@KodeZwerg: Es ist dann schon ein Unterschied ob ein oder drei Klicks pro Möglichkeit je Eigenschaft. Bei nur 20 Eigenschaften a 10 Möglichkeiten sind es schon 200 Komponenten. Natürlich nutzt man nur einen kleinen Teil davon, aber die Anzahl Klicks spielt durchaus eine Rolle. Außerdem wäre es gut den Zustand jeder einzelnen Möglichkeit auf einen Blick zu sehen und nicht erst ein FlowPanel öffnen zu müssen.

KodeZwerg 8. Jun 2018 13:18

AW: Komponente gesucht
 
Sorry wenn ich bei FlowPanels irgendwie stocken bleibe, alternativ ein kleines ">>" Symbol fürs FlowPanel "öffnen" mit allen Eigenschaften und die absoluten Basics in der Hauptansicht integrieren? Ach ich weiß auch nicht, ich mag halt die fliegenden Fenster für genau diesen Zweck, viel Verpacken bei wenig Platz in der Hauptansicht. Man sollte ja nicht jedes FP offen da rumschwirren lassen, nur eines für den aktuellen Eintrag.
Eine Zweite Alternative die mir einfällt wäre mit TabControls, HauptTab und EigenschaftenTab, hängt halt stark von Deiner Art der Verarbeitung ab, wie etwas realisierbar wäre.

e-gon 8. Jun 2018 13:23

AW: Komponente gesucht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal etwas mit Labels herumgespielt. Wie oben erwähnt könnte die Steuerung so laufen, dass ein Klick im vorderen Drittel des Labels die Möglichkeit selektiert (grün), im mittleren Drittel abwählt (weiß) und das hintere Drittel die Sache negiert (rot). Wenn ich die Labels alle gleich lang mache und die Eigenschaft taCenter setze sollte die Steuerung wohl besser gehen.

Das Ganze hat zwei Vorteile:
1. Singleclick
2. Schnelle Übersicht

Aber wie intuitiv ist das?

@KodeZwerg: Ich sage nicht dass FlowPanel gar nicht gehen. Aber Singleclick ist mir in diesem Fall wichtiger. :)

rapante 8. Jun 2018 13:29

AW: Komponente gesucht
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von e-gon (Beitrag 1404276)
Aber wie intuitiv ist das?

Ich glaube von selbst kommt da kein User drauf.
Ich habe schon die Support-Anrufe im Ohr: "manchmal wird es grün und manchmal rot wenn ich draufklicke..."
Vor allem klappt dann die Tastaturbedienung nicht mehr und von Barrierefreiheit ist das meilenweit entfernt.

Ich würde bei den Standards bleiben - Checkbox oder Radiogroup.

e-gon 8. Jun 2018 13:34

AW: Komponente gesucht
 
Da ist wohl leider was Wahres dran. :(

Ich muss das ganze jetzt mal sacken lassen. Vielen Dank an alle Beteiligten für die Ideen und Vorschläge!

Gruß
e-gon

bcvs 8. Jun 2018 14:38

AW: Komponente gesucht
 
Gerade mal ausprobiert: man könnte auch eine Scrollbar dafür zweckentfremden.

Mit den Eigenschaften Min=0 und Max=2 hat die dann nur drei mögliche Positionen.

Hobbycoder 8. Jun 2018 15:12

AW: Komponente gesucht
 
Also ich würde bei den "Standards" bleiben. Das schafft intuitiv dann jeder.

Ich würde sogar kein AllowGrayed verwenden, da es sicherlich noch viele User gibt, die kennen das gar nicht.
Sonder nur 2 Checkboxen. "Aktiv" und "Negativ".

Aktiv deselektiert würde dann die Abfrage nicht verwenden
Aktiv selektiert würde die Abfrage mit positiven Werten verwenden
Aktiv und Negativ würde die Abfrage mit negativen Werten verwenden

Und die Checkbox Negativ wäre bei nicht selektierter Aktiv-Checkbox natürlich disabled.
So wäre das für mich logisch.

Wenn's aus Platzgründen nicht mit Text neben der Checkbox passt, dann würde ich das spaltenartig positionieren und mit Spaltentitel benennen.

p80286 8. Jun 2018 17:58

AW: Komponente gesucht
 
Zitat:

Zitat von e-gon (Beitrag 1404238)
Ein Beispiel: Um in der Abfrage alle Produkte mit einem bestimmten Namen zu finden, bietet sich TEdit natürlich an.

Hier würde ich eine Combobox wählen, da dann die vorhandenen Namen zur Auswahl stehen und nicht das, was der Benutzer mit Bestimmtheit kennt, und was dann garantiert nicht in der DB ist.

Und ich vermute, nicht alle suchbaren Produkte haben alle Eigenschaften. Dann könntest du über eine hierarchische Abfrage ggf. die abzufragenden Parameter einengen.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:43 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