Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 08:44

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 27 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: UI: Dropdown und Popup menu
BeitragVerfasst: Mo Jun 09, 2008 16:33 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

also meine UI ist im grunde genommen fertig und kann alles was man so erwartet und von der VCL her kennt, bis auf 1.5 dinge.. :/

Wie würdet ihr Dropdown und PopupMenüs machen..?

möglichkeit 1)
Einfach ganz normal wie alle anderen elemente zeichnen über allem anderem..

Pro: Wäre das leichteste
Kontra: Würde vom Fenster beschnitten werden..

möglichkeit 2)
Ein extra fenster dafür erstellen..

Pro/Kontra.. ? :)

Wäre es sinnvoll immer für jedes PopupMenü etc ein neues fenster zu erstellen inkl. OpenGL etc..?

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 09, 2008 16:39 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Ich würde eine modifikation der Möglichkeit 1 vorschlagen. Du könntest das ganz normal in dein Fenster zeichnen und das DropDown/Popup einfach ein bisschen nachpositionieren, sodass es den Rand nicht schneidet. Und wenn das nicht geht, am oberen / unteren Rand eben Scroller einbauen bzw die Breite der Einträge durch "..." beschränken (und dann mit Hints aushelfen).

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 09, 2008 17:19 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Ich kann Lord Horazont nur voll und ganz beipflichten :wink:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 09, 2008 18:22 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich würde auch Möglichkeit 1 nehmen und dabei das PopUp immer in den Clientbereich verschieben, dass es nie übersteht.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jun 09, 2008 22:04 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Wie wärs mit einem etwas anderen ansatz?

So wie die Iconleiste bei OSX, nur eben senkrecht. 5 menüpunkte anzeigen, die dann nach oben und unten immer kleiner werden und durch entsprechendes positionieren der maus rauf bzw runter scrollt.

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2008 08:16 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
@damadmax: Die idee find ich sehr gut. Ist die Maus im oberen drittel des Menüs, scrollts nach oben. Ist es im unteren drittel, nach unten. Stell mir das hübsch vor.
Macht natürlich nur sinn für listen. Bei PopUp-Menüs ist der Inhalt ja recht inhomogen und da muss man sonst immer erst suchen.

@Aya: Du solltest vorgeben wozu deine GUI benutzt werden soll. Wenn du eigentlich die GUI in Anwendungen nutzen willst, dann kannst du ja eine Mindest-Fenstergröße vorgeben. Dann weißt du schonmal wie groß dein Popupmenü maximal sein darf. Willst du alles erlauben (auch minifenster wie bei WinAmp), dann gehts wohl nur mit nem zweiten Fenster.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2008 19:11 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
In X-Dream GUI hatte ich mal sowas realisiert, hab sogar noch nen video auf dem Projektserver.
http://xdream.linuxprofessionals.org/screenshots/iconbar2.avi
Allerdings für Popups total unbrauchbar, da man jedesmal die Einträge suchen muss.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2008 19:18 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Eine spontane Idee, falls du auf minifenster angewiesen bist: Du könntest (um leistung beim erstellen der Fenster zu sparen) den Popup/Dropdown-Inhalt in deinem Hauptkontext (z.B. im AUX-Buffer oder einem FBO) rendern und dann per BitBlt auf dein Popup kopieren. Damit sparst du dir nervige Dinge wie Context Sharing und so. Und da du dann sowieso keine Alphatransparenzen haben kannst (es sei denn, du benutzt layered windows, wobei das so eine Sache mit der performance ist...), fällt das ja auch nicht weiter auf.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2008 19:26 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hmm ich werd wohl erstmal die idee mit dem umpositionieren des menüs verfolgen, wobei das bei groß verschachtelten menüs schnell sehr voll werden kann ^^

Und ansonsten, hat es große nachteile wenn ich einfach alle fenster direkt beim start schon erzeuge (bzw sie neu erzeuge sobald sie einträge ändern), so performance technisch?

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 10, 2008 22:46 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Aug 18, 2007 18:47
Beiträge: 694
Wohnort: Köln
Programmiersprache: Java
Da wären wir dann beim Thema GUI Design.

Useability ist das Zauberwort.

Was braucht der Benutzer wirklich?

_________________
Es werde Licht.
glEnable(GL_LIGHTING);
Und es ward Licht.


Zitat aus einem Java Buch: "C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off"

on error goto next


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Jun 11, 2008 12:28 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Blender hat 3 möglichkeiten, wie man an eine funktion rankommen kann.
1. direkter shortcut
2. direkter popup menüeintrag
3. ein zwischending aus 1 und 2(shortcut führt zu einem neues popupmenü,wo man dann seine funktion wählen kann)
Das popupmenü ist sonnst nicht erreichbar und listet alle funktionen einer kategorie auf.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 17, 2008 09:36 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Hi,

also ich hab das gestern mal so eingebaut das das menü halt immer nur so groß ist wie das form wo es drauf ist und sich dann dementsprechend anpasst. klappt auch wunderbar.. nur, dann hab ich mir eben mal in meim flipbook die menüs so angeschaut und da direkt mal festgestellt das fast jedes menü großer ist als das Form wo es drin ist :/

Also bekomm ich da aufjedenfall probleme (ausser ich mach die schrift kleiner etc)... eine idee die mir da jetzt noch gekommen war, ich könnte für die PopupMenüs eigentlich ja die normalen System-Menüs benutzen... wird zwar dann ein punkt in dem system wo es nichtmehr komplett platform unabhängig ist (bzw es nur da geht wo man die system menüs eingebunden hat), aber dafür gäbe es dann ja als alternative die im-fenster-menüs wie ich sie jetzt habe..

Mal schauen wie ich das hinbekomme... bei Windows ist es ja kein problem, bei Linux denke ich mal auch weniger... und bei OSX wird es horror... :/ (Ich hab bis heute nicht rausgefunden wie ma in OSX ein fenster ohne den InterfaceBuilder und ohne GLUT erstellt... wenn man in osx-dev foren fragt sagen die immer "nimm den InterfaceBuilder" oder "GLUT!"... und dann noch dieses schreckliche Objective-C... -.- )

Aya~


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 17, 2008 10:57 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Zitat:
eine idee die mir da jetzt noch gekommen war, ich könnte für die PopupMenüs eigentlich ja die normalen System-Menüs benutzen..

Damit legst Du Dir meiner Meinung nach ein Ei. Wenn Du Dir die Mühe machst, Scrollbars zu erzeugen, bist Du das Problem grundsätzlich los. ScrollBars kann man überall wiederverwenden.
Traude


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 17, 2008 11:00 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
Ja, aber Scrollbars in einem PopupMenü sind nicht wirklich user freundlich...

Und mir geht es mehr darum das es userfriendly ist als das es für mich leicht zu coden ist ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jun 17, 2008 11:06 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Wie wärs damit: das Popup-Menu folgt der Maus? Das heißt, wenn die Maus vorher über dem Popup war (den Fokus hatte?) und dann nur leicht über den oberen/unteren Rand hinausgeht, scrollt das Popup von selbst.
Oder so, wie es Windows gemacht hat: nur die oft benutzten Einträge anzeigen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 27 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]