Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Untermenü in Combobox (https://www.delphipraxis.net/182130-untermenue-combobox.html)

Oniessen 2. Okt 2014 14:33

Untermenü in Combobox
 
Hallo!

Ich bin zwar schon par Jahre hier angemeldet, hab aber nie was geschrieben bzw. die Fragen wurden meist durch g**geln beantwortet.
Ich programmiere vor allem rein hobbymäßig und auch nur von Zeit zu Zeit.

Momentan sitze ich an einem Projekt, zur "Berechnung" bzw. Konstruktion von Sportbögen.
Ich schreibe das Ganze mit Lazarus, denke aber das macht für das Problem keinen Unterschied

Nun habe ich also folgendes Problem:
So ein moderner Bogen wird meist aus mehreren Hölzern und anderen Werkstoffen zusammen laminiert.

In einem 3-Spaltigen Stringgrid möchte ich dazu das Material per Combobox auswählen lassen, und daneben die Stärke bzw. die Verjüngung angeben lassen. Die anderen Informationen werden dann automatisch aus der entsprechenden Material-Klasse bzw. dem Record extrahiert.

Jetzt ist es aber so, das die Material Liste recht lang werden kann/wird. Zum Glück läßt sich aber das Material thematisch in Untergruppen oder Kategorien (Holzarten) z.b. Esche(Ash) aufteilen
(um mal zu schauen, wie viele es davon gibt: http://www.wood-database.com/)
Ähnlich sieht es aber auch mit Glasgewebe aus ( unidirektional, bidirektional etc. )

Darum nun meine Frage, ob jemand eine (natürlich möglichst einfache :wink:) Möglichkeit kennt, einer Combobox bzw. dem Comboboxfeld eines Stringgrids Untermenüs beizubringen.

Eine Möglichkeit wäre sicherlich ein Popup-Menü mit der entsprechenden Zelle bzw Spalte zu verknüpfen.
Da wäre allerdings die Frage, wie stellt man es an, dieses an die Zelle anzupassen also Größe, Position zu setzen??
Auch die Frage wie ich darin mit der Tastatur navigiere stellt sich, denke ich??

Vielleicht hat auch jemand einen anderen Lösungsvorschlag???


Vielen Dank für eure ganz sicher recht zahlreiche und professionelle Hilfe,
Gruß,
Oliver

Bernhard Geyer 2. Okt 2014 14:51

AW: Untermenü in Combobox
 
Zitat:

Zitat von Oniessen (Beitrag 1274639)
Darum nun meine Frage, ob jemand eine (natürlich möglichst einfache :wink:) Möglichkeit kennt, einer Combobox bzw. dem Comboboxfeld eines Stringgrids Untermenüs beizubringen.

Diverse Komponentensammlungen (z.B. Elpack) hätten eine passende fertige Komponente (http://lmd.de/products/vcl/lmdelpack...reenshots5.php)
Jedoch wird es diese vielfach nicht für Lazarus geben.
D.h. du musst das selbst machen. Edit mit Button nehmen. Bei Druck auf Button dynamisch ein gefülltes Tree-Control einblenden.

mkinzler 2. Okt 2014 15:46

AW: Untermenü in Combobox
 
Die JVCL enthält auch eine ComboBox mit einem Baum. (TDBLookupTreeViewCombo)
Und auch von TMS gibt es etwas
http://www.tmssoftware.com/site/advtree.asp

Bernhard Geyer 2. Okt 2014 15:52

AW: Untermenü in Combobox
 
Zitat:

Zitat von mkinzler (Beitrag 1274654)
Die JVCL enthält auch eine ComboBox mit einem Baum. (TDBLookupTreeViewCombo)
Und auch von TMS gibt es etwas
http://www.tmssoftware.com/site/advtree.asp

Alle beide auch für Lazarus?

Dejan Vu 2. Okt 2014 16:17

AW: Untermenü in Combobox
 
Wenn es drei Ebenen sind, kann man das auch mit drei Komboboxen machen.
1. Box: Hauptauswahl. Bei Auswahl füllt man die
2. Box: Unterauswahl. Bei Auswahl füllt man die
3. Box: Details.

Wenn in der 1.Box etwas geändert wird, löscht man natürlich die Auswahlliste der 3.Box

Oniessen 4. Okt 2014 07:18

AW: Untermenü in Combobox
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!

Vielen Dank für eure Hilfe!
Ich habes im Moment erst mal so gelöst:

Die entsprechende Spalte bekommt:
Delphi-Quellcode:
ButtonStyle CBSButton
und die entsprechende GridButtonClick sieht so aus bzw. fängt so an:

Delphi-Quellcode:
procedure TMainForm.MyStringGridButtonClick(Sender : TObject; aCol, aRow : Integer);
var
  TopRight :TPoint;
  PopPos : Tpoint;
begin
  TopRight.X := MyStringGrid.CellRect(aCol,aRow).Right;
  TopRight.Y := MyStringGrid.CellRect(aCol,aRow).Top;
  PopPos:= MyStringGrid.ClientToScreen(TopRight);
  PopupMenu1.PopUp(PopPos.x,PopPos.y);
end;
Das ist zwar kein 100% übliches Verhalten, aber ich denke durch den kurzen Mausweg und das direkte andocken ist das ähnlich genug, das ein Anwender sich zurecht findet.

Das sieht dann so in etwa aus:
Anhang 41934

Eine Baumansicht bzw., einen Treeview fände ich in diesem Fall übrigens nicht so toll, da mich ja weniger der Aufbau interessiert, als vielmehr die Übersichtlichkeit - also die Möglichkeit ein bestimmtes Material schneller zu finden/auszuwählen. Darum eben eher Menü->Untermenüs...

Nochmal vielen Dank für eure Hilfe,

Gruß, Oliver

Dejan Vu 4. Okt 2014 07:45

AW: Untermenü in Combobox
 
Ich mag diese Menüs nicht, weil sie sofort wieder zuklappen, wenn man mit der Maus nicht auf dem Menü bleibt. Mich nervt das. Aber das müssen deine Anwender entscheiden.

Ansonsten: Coole Idee. :thumb:

Sir Rufo 4. Okt 2014 08:56

AW: Untermenü in Combobox
 
Ob das wirklich "user-friendly" ist, müssen wohl die Anwender entscheiden.

Ich hätte da wohl ein eigenes Formular vorgeschlagen, wo dann diese Werte gemütlich ausgewählt werden können.
Wer den Namen kennt gibt den direkt in das Feld ein und zu Recherche eben das Formular.

Das ist dann auch mehr ZEN :)

Oniessen 4. Okt 2014 09:41

AW: Untermenü in Combobox
 
Hallo nochmal!

Die gemütliche Möglichkeit über ein eigenes kleines Modales Formular und 3 oder 4 hintereinander geschalteten Combo/Listboxen wäre auch eine Möglichkeit - und vielleicht wird es irgendwann auch dazu kommen, mal sehen, wie lang die "MaterialDatenbank" wird.

Meistens wird die Materialliste des Bogens/Designs so zwischen 3 und 7 Einträgen( entsprechend den Laminierungs Lagen) haben.
Momentan sehe ich es vom Umfang der Liste(n) und auch gerade vom Workflow eher so, wie ein Lesezeichenmenü eines Web-Browsers oder das Startmenü von Windows...
Ich wollte halt einfach nur ein klein wenig komfortabler aus den möglichen 50, 80 oder 100 Einträgen der verfügbaren Materialien auswählen können.
Oder z.b. schnell eine Zeile von z.B Ahorn-wasweisich in Esche-werweisdas ändern können....

Das mit dem Zuklappen habe ich bis jetzt zumindest in diesem Fall übrigens auch nicht beobachten können.
Solange ich nirgendwo hin klicke bleibt zumindest die vorletzte Ebene weiterhin geöffnet.

"User-friendly" finde ich übrigens soweit als möglich auf bereits bekannte Elemente zurück zu greifen bzw. diese Elemente, wenn es nicht anders geht auch so unverändert wie möglich zu gestalten.
Auch möglichst kurze Mauswege und "Augen/Blick-Wege" spielen sicherlich eine Rolle.
Aber wenn wir darüber anfangen zu diskutieren, wird der Thread wahrscheinlich so lang, wie es User hier im Forum gibt... :wink:

Gruß, Oliver

Bernhard Geyer 4. Okt 2014 09:46

AW: Untermenü in Combobox
 
Zitat:

Zitat von Sir Rufo (Beitrag 1274780)
Ob das wirklich "user-friendly" ist, müssen wohl die Anwender entscheiden.

Ich hätte da wohl ein eigenes Formular vorgeschlagen, wo dann diese Werte gemütlich ausgewählt werden können.
Wer den Namen kennt gibt den direkt in das Feld ein und zu Recherche eben das Formular.

Das ist dann auch mehr ZEN :)

Das machen wir (wie auch ein bekanntes Finanzprodukt für den Heimgebrauch) auch so. Der User kann Tippen und es erscheint ein gefilterte Auswahlliste. Er kann aber auch einen Dialog öffnen in dem er dann den Eintrag aus einer Baumansicht auswählt. Jeder wie er will und wie fit/wie oft er das machen muss.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:09 Uhr.
Seite 1 von 2  1 2      

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