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 network • my 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
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"
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
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 network • my 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
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?
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
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... -.- )
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
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.
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
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.