Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Ribbon-Taste mit eigenem Bild

Begonnen von Stele4, Heute um 13:40:13

⏪ vorheriges - nächstes ⏩

Stele4

Hallo!
In der Tabelle USysRibbons ist das XML fuer ein Ribbon-Tab hinterlegt.
Der Aufruf funktioniert.
Eine Taste soll ein eigenes Bild erhalten. XML wurde angepasst: image="IcoTst".

In der Tabelle MySysResources wurde manuell ein neuer Datensatz angelegt.
Doppelklick auf das Feld '@' oeffnet den Dialog fuer den Import der png-Datei.
Die uebrigen Felder: Extension=png, Id=11, Name=IcoTst, Type=img oder image oder 5.

Bei Anwahl des Tabs erscheint eine Fehlermeldung, dass kein loadimage callback vorhanden ist.

Es steht geschrieben, dass bei richtiger Bereitstellung der Bilddaten keine weitere Programmierung notwendig sein soll. U.a muss in MySysResources Type=image sein.
An anderer Stelle steht, dass das Bild nicht einfach so per Dialog, sondern nur ueber ein Hilfs-Formular importiert werden kann.

Bei mir funktioniert nichts von alledem.
Wie macht man es denn nun richtig?

Gruss Stele


PhilS

Zitat von: Stele4 am Heute um 13:40:13Es steht geschrieben, dass bei richtiger Bereitstellung der Bilddaten keine weitere Programmierung notwendig sein soll.
Wo steht das geschrieben? Das wäre mir neu. Meines Wissens muss ein eigenes Bild für ein Ribbon-Control immer mit der getImage Callback-Prozedur geladen werden.

Hier findest du dazu eine Anleitung: https://www.accessribbon.de/index.php?Access_-_Ribbons:Eigene_Icons_Bilder_in_Ribbon_Controls_verwenden

Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Stele4

Hallo Phil!
Der CoPilot hat's geschrieben. Ich habe mir nicht die Muehe gemacht, die Quelle zu pruefen. Den Chat finde ich nicht mehr.

Ich hatte mir das Tool von Gunther gegoennt. Ist immer ein guter Einstieg.
Mir gefiel aber die Idee, die Bilder im Frontend und nicht daneben zu haben.
Mit den Daten aus MySysResources sollte es auch funktionieren, aber die Beschreibungen dazu schrecken eher ab.

Wird wohl doch der Bilderordner neben der accde.

Gruss und Dank!

PhilS

Zitat von: Stele4 am Heute um 14:56:40Mir gefiel aber die Idee, die Bilder im Frontend und nicht daneben zu haben.
Mit den Daten aus MySysResources sollte es auch funktionieren, aber die Beschreibungen dazu schrecken eher ab.
Das ist sicherlich auch möglich. Es gibt nur keine eingebaute Funktionalität dazu und du musst es dann selbst programmieren. D.h. Binärdaten aus der MSysResources-Tabelle lesen, diese Daten in eine Bitmap laden, und dann die Bitmap als Rückgabewert der Callback-Function setzen.
Möglich, aber nicht ganz einfach. Soweit ich mich erinnern kann, habe ich das so auch noch nicht gemacht.

Als "Kompromiss" könntest du deine Bilder schon in MSysResourcesoder einer anderen Tabelle speichern und sie beim Start deiner Anwendung ins Dateisystem schreiben, und sie dann von dort auslesen, wie unter dem o.g. Link beschrieben.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Stele4

#4
Du meinst GDI+?
Ich werde es probieren, aber das bleibt akademisch.
Schlank und robust ist mir lieber.
Allerdings ergibt sich auch hier ein Problem: Das xml-Attribut 'getImage' wird nicht akzeptiert.
Das Schema ist '..Office2009/07/CustomUi'. Das sollte passen.

Gibt es noch eine andere Moeglichkeit?

PS: 'loadimage' beim Ribbon gibt es bei mir leider auch nicht (vgl. https://stackoverflow.com/questions/52915787/access-2013-custom-images-for-the-ribbon)

PhilS

Zitat von: Stele4 am Heute um 16:31:11Allerdings ergibt sich auch hier ein Problem: Das xml-Attribut 'getImage' wird nicht akzeptiert.
getImage ist ein Attribut des Buttons und benennt die Callback-Prozedur die jedes mal aufgerufen wird, wenn das Bild angezeigt werden soll.
loadImage ist ein Attribut des Ribbons und benennt die Callback-Prozedur die für jedes Steuerelement einmalig aufgerufen wird, wenn das Bild das erste Mal angezeigt werden soll.

Generell: Achtung XML ist case-sensitive, d.h. loadImage und loadimage sind nicht identisch.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

Stele4

CASESENSITIVE! Es daemmert von fern!
.. Und du hast recht.

In einem separaten Versuch wurde 'loadImage' akzeptiert und ich konnte wie in stackoverflow vorgehen:
 - Ribbon: loadImage=[Name der CallBack-Prozedur],
 - Buttons: image=[Name des Bildes].
Wie das im Hintergrund funktioniert, kann ich nur ahnen. Die Prozedur fuer das Callback des Ribbons weist einem Control ein Bild zu. Es wird also im 'Kopf' angegeben, was mit dem Attribut 'image' der Buttons getan werden soll.

Danke Phil!