Ribbons (diesmal vielleicht wirklich)

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • Ribbons (diesmal vielleicht wirklich)

      Hi Leute, ich war fleißig mit PureBasic. Aber da PureBasic auch keine Ribbons kennt und ich die wirklich mag (da gehen die Geschmäcker ja weit auseinander), nehme ich das selbst in die Hand. Ich will es nachher auch gern für XProfan verfügbar machen, per DLL. Dazu fehlt mir aber noch ein bisschen Wissen, deshalb konzentriere ich mich erst auf PureBasic. Von allen, die An Ribbons interessiert sind hätte ich gern Feedback, aber bedenkt bitte, dass das Projekt noch ganz am Anfang steht. Im Anhang ist eine "Demo". Ihr könnt ein Element anklicken, dann wird die ID unten angezeigt. Mittels "Daten lesen" könnt ihr die Eigenschaften der gewählten ID laden, mit "Daten schreiben" könnt ihr sie wieder schreiben. Die Vergabe der IDs erfolgt in der Demo "logisch": 1, 2, 3...Kategorien, 10, 20, 30...Gruppen, 100, 101, 102...einzelne Steuerelemente usw. Für die Demo reichts sicher. Außerdem könnt ihr die Farbe ändern, entweder mit einem direkten Farbwert (probiert mal "16767679") oder einem RGB-Wert ("255,0,0"). Ach ja, das Design weicht absichtlich vom Microsoft-Design ab. Einerseits, weil es was eigenes ist, andererseits hat Microsoft das Design immer wieder verändert und ich will etwas "dauerhaftes" erstellen. Zuguterletzt ist einiges davon auch schwer zu klonen.

      Was schon funktioniert:
      - Automatische Anordnung und Breiteneinstellung, keine Breitenangaben für irgendein Steuerelement nötig
      - Besagte Steuerelemente erstellen, ändern, versetzen und wieder löschen (Buttons, PushButtons, Checkboxen,...)
      - Steuerelemente abfragen (Hover und Left/Right-Click/DoubleClick)
      - Automatische Anpassung des Ribbons bei Größenänderung des Fensters
      - Automatische Anpassung des Ribbons bei Änderung einer Eigenschaft eines Steuerelements
      - Verkürzung von Gruppennamen, falls nötig
      - Automatische oder selbst gewählte Einstellung der Schriftfarbe
      - Benutzerdefinierte Wahl der Schriftart
      Dateien
      • Ribbon.zip

        (93,91 kB, 8 mal heruntergeladen, zuletzt: )
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 14TB
      XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net
    • Hallo Stephan, ich gebe mein bestes. Momentan muss ich noch eine Möglichkeit finden Klicks und Hovern abzufangen. Das klappt innerhalb von PureBasic sehr gut, bei einer DLL, die dann in XProfan benutzt wird ist das was anderes. Aber das wird schon werden.
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 14TB
      XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net
    • Hallo Michael,
      danke für den Hinweis. Ich kann mich leider erst nächste darum kümmern. Ich bin noch voll eingespannt habe dann aber viel Urlaub und Kurzarbeit, da werden sich ein paar Tage finden lassen.
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 14TB
      XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net
    • Ich hab mal 'n Mani rausgesucht

      XML-Quellcode: manifest.xml

      1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      2. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      3. <assemblyIdentity version="1.1.1.1" processorArchitecture="X86" name="Company.Exename" type="Win32"/>
      4. <description>My App Description</description>
      5. <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
      6. <application>
      7. <!-- Windows 10 -->
      8. <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
      9. <!-- Windows 8.1 -->
      10. <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
      11. <!-- Windows Vista -->
      12. <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
      13. <!-- Windows 7 -->
      14. <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
      15. <!-- Windows 8 -->
      16. <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
      17. </application>
      18. </compatibility>
      19. <dependency>
      20. <dependentAssembly>
      21. <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/>
      22. </dependentAssembly>
      23. </dependency>
      24. </assembly>
      Alles anzeigen
      Zwischen /compatibility und dependency könnte auch noch der Trust mit rein...

      XML-Quellcode

      1. <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
      2. <security>
      3. <requestedPrivileges>
      4. <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
      5. </requestedPrivileges>
      6. </security>
      7. </trustInfo>
      Programmieren, das spannendste Detektivspiel der Welt.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Michael Wodrich ()

    • Hallo Michael,
      danke dafür, aber ich weiß gerade gar nicht worauf du hinaus willst.
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 14TB
      XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net
    • Ein vorhandenes Manifest und der eingeschaltete Level 2 sorgen dafür, das zusätzliche Notify-Messages ausgelöst werden.
      Wenn die Maus über Objekten wie Buttons oder Flächen schwebt. Damit lässt sich bei deiner Arbeit so einiges vereinfachen.
      Evtl. kann sogar alles in XProfan selbst geschrieben werden.
      Allerdings erinnere ich mich, das es auch Probleme gab. Tooltips z.B. können einen in den Wahnsinn treiben.
      Aber eins nach dem anderen.... Ich finde das Projekt gut.
      Programmieren, das spannendste Detektivspiel der Welt.
    • Hallo Michael,
      natürlich kann das komplett in XProfan geschrieben werden, aber ich glaube, das ist schlicht zu langsam. Deshalb will ich ja die DLL verwenden.
      Ich habe gerade angefangen zu experimentieren. Es ist vielversprechend, das Ribbon wird schon gezeichnet und ich kann Steuerelemente erstellen etc. Um die Messageverwaltung kümmere ich mich danach, hoffentlich ist nicht alles für die Katz. Aber eins nach dem anderen.
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 14TB
      XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net
    • Statusupdate: Das Control kann erstellt werden. Kein Subclassing oder so nötig um das Hovern zu zeichnen, das kommt direkt durch die DLL. Ich kümmer mich als nächstes um den Fall, dass das Fenster in der Größe angepasst wird, danach noch das Abfangen von Klicks und dann kann ich was zum Testen hochladen. Stay tuned!
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 14TB
      XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net
    • Es lebt! Und funktioniert. Upload nächste Woche. Kein Subclassing, Manifest, Fastmode...nötig. Ich bin begeistert!
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 14TB
      XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net
    • Hier mal eine Demo. Höchst experimentell, schlecht dokumentiert, sicher noch voller Bugs. Aber der Beweis, dass es einfach in XProfan integrierbar ist.
      Dateien
      • Ribbon.zip

        (75,17 kB, 5 mal heruntergeladen, zuletzt: )
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 14TB
      XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net
    • Update, aber immer noch nicht für die breite Öffentlichkeit:
      • Verbesserte Darstellung bei Größenänderung des Elternfensters, sofern diese von der DLL verwaltet wird.
      • Neue Funktion um die Checkboxen durch eigene Bilder zu ersetzen.
      • Die meisten Funktionen bieten jetzt mehr oder weniger sinnvolle Rückgabewerte.
      Ich experimentiere jetzt mit der Verwaltung mehrerer Ribbons in einem Programm (aber natürlich weiterhin nur eins pro Fenster), neuen Steuerelementen und der Möglichkeit das Ribbon zu minimieren (da bin ich noch unsicher, ob das überhaupt was wird, aber mal sehen...).

      Nachtrag: Bei meinen Tests hast das Arbeiten mit mehreren Ribbons auf einmal wunderbar funktioniert.
      Dateien
      • Ribbon.zip

        (85,89 kB, 6 mal heruntergeladen, zuletzt: )
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 14TB
      XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Jac de Lad ()

    • Soooo, ich war fleißig:
      • Komplettes Umschreiben des Renderings. Bisher brauchte ein Neuzeichnen beim Hovern auf meinem System etwa 10ms, jetzt nur noch 1ms. Das Neuzeichnen beim Anklicken von Checkboxen, Ändern der Kategorie etc. dauert immer noch länger (etwa 21ms bei mir). Noch experimentell, aber ich bin guter Dinge, dass es so bleiben kann.
      • Neue Funktion: SetRibbonRounding(handle,wert) (und die entsprechende Get-Funktion) ermöglicht das Einstellen der Rundungen, womit das Ribbon weiter nach dem persönlichen Geschmack anpassbar ist.
      • Die Einklappfunktion ist schon zum Teil eingebaut, aber noch nicht fertig.
      Morgen räume ich den Code auf, arbeite an der Einklappfunktion und schaue mal, ob ich ein paar neue Steuerelemente reinkriege. Mir schweben da Listen, Ausklapplisten, Buttons mit Dropdownfunktion und eine Art Sidebar (wie in MS Office) vor. Vielleicht auch eine Scrollfunktion für das Menü (wenn das Fenster zu klein ist).

      Übrigens habe ich das Ribbon schon in einem Projekt erfolgreich eingesetzt. Zwar in PureBasic, aber mein zweites Projekt ist ein Programm in XProfan. Das werde ich in ein paar Wochen auf Ribbon umstellen. :-)
      Dateien
      • Ribbon.zip

        (88,89 kB, 2 mal heruntergeladen, zuletzt: )
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 14TB
      XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net
      • Das Ribbon kann jetzt zusammengeklappt werden (sofern ein Stil dafür angegeben wurde).
      • Das Rendering wurde weiter optimiert.
      • Einige Renderfehler wurden behoben.
      Dateien
      • Ribbon.zip

        (89,69 kB, 4 mal heruntergeladen, zuletzt: )
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 14TB
      XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net
    • Letztes Update für heute:
      • Einige Funktionen wurden in SetRibbonMetric/GetRibbonMetric integriert, deshalb entfallen jetzt die Funktionen ...Color/...Roundness/...UpdateMode.
      • Kategorien können jetzt auch Icons enthalten (konnten sie vorher schon, aber jetzt werden sie auch gerendert.
      • Der Code wurde weiter aufgeräumt.
      Es fällt mir schwer neue Controls zu "erfinden", da mein Zeichenbereich auf das Ribbon beschränkt ist. Ich experimentiere momentan damit z.B. bei Comboboxen ein Fenster über das eigentliche Fenster zu legen, aber ich weiß irgendwie noch nicht so richtig wie das klappen wird. Ich bin voller Hoffnung, dass ich das hinbekomme. Prinzipiell würde ich dem Teil jetzt aber den Status "Alpha-Version" geben.
      Dateien
      • Ribbon.zip

        (89,64 kB, 3 mal heruntergeladen, zuletzt: )
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 14TB
      XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net
    • Ersteres: SetRibbonItemStatus(id,~Ribbon_Status_Disabled)
      Zweiteres: Das könnte ich implementieren, aber XProfan hat keinen Zugriff auf das Control. Du kannst zwar die Position bekommen, aber nichts manipulieren.
      XProfan-Semiprofi (XProfan X4a+XPIA+LemonEd)
      Ryzen 1700X/MSI B350 PC MATE/16GB RAM@2933MHz/Radeon HD7770 OC/Creative X-Fi XTreme Music/90TB HDD+256GB Samsung 960 EVO/28" Samsung 4k
      TerraMaster F4-420 mit 14TB
      XBox Classic/360S/Series X/PS3 Super Slim 500GB/PS4 Pro (XBL-ID: jacdelad, PSN: jacdelad84)
      OnePlus 6 8GB/256GB
      jacdelad.bplaced.net