Image d'accueil barre de menu

Je suis en train de travailler au passage d’une appli de v13 à v17-32, puis v17-64.
Je croyais que la bibliothèque d’images était vouée à la déchèterie, mais je vois qu’elle est toujours là.
Je me suis préparé quand même à sa disparition future en plaçant toutes mes images en ressources (en png).
Il me reste un problème concernant les “images de fond” associées à des barres de menu,.
Lorsqu’on les associe à une barre de menu, cela crée automatiquement une image dans la bibliothèque.
Impossible de référencer une image en ressource.
Cette fonctionnalité est-elle aussi vouée aux gémonies?
Comment l’outrepasser?

bonjour

Via l’interface je ne jure de rien, mais par programmation c’est tout à fait possible;

voila un bout de code qui marche (en mode projet)
(sinon, en mode binaire, avec “#image/…” à la place de “path:/RESOURCES/…” ça doit marcher aussi.
à noter que “RESOURCES” est un mot clé, pas le nom du dossier “resources”.

<code 4D>
$menu:=Create menu

APPEND MENU ITEM($menu;“Alpha”)
SET MENU ITEM ICON($menu;-1;“path:/RESOURCES/Circles/yellow.png”)

APPEND MENU ITEM($menu;“Bravo”)
SET MENU ITEM ICON($menu;-1;“path:/RESOURCES/Circles/Blue.png”)

APPEND MENU ITEM($menu;“Charlie”)
SET MENU ITEM ICON($menu;-1;“path:/RESOURCES/Circles/red.png”)

$val:=Dynamic pop up menu($menu)

RELEASE MENU($val)
</code 4D>

Cordialement

Roland Lannuzel

Perso, j’opterais plutôt pour masquer le process principal.
(assert à rien, n’est-ce pas, Roland ? :wink: )

… ? …

Roland, il ne s’agit pas d’une icône associée à une ligne de menu, mais d’une “image de fond” ou “image d’accueil”.
A priori ça ne peut pas se faire par programmation.

[]33563186;“Your comment here…”[/]

Je pense qu’il y a confusion, il parle de l’image de fond de la fenêtre du process principal qui est associée à une barre (complète) de menu et non pas d’une image pour une rubrique de menu :wink:

Cette image n’est pas gérable par programmation.

Oui, c’est ça, Manuel.
Et pour l’instant on ne peut pas non plus mettre une image située en ressource.
Donc obligation bibli d’images.

: Francois PELUCHON

Donc obligation bibli d’images.
Oui et non. Si tu cherches a être pérenne, il serait préférable de masquer la fenêtre du process principal. Ensuite, si tu veux vraiment gérer une fenêtre de fond :doubt:, tu peux toujours en ouvrir une et charger une image dans un formulaire…

Oui, mais concrètement?
“Creer fenêtre formulaire” et après?
“A noter que le formulaire nomForm n’est pas affiché dans la fenêtre créée.”
“Il vous appartient, si vous le souhaitez, d’afficher le formulaire (par exemple à l’aide de la commande AJOUTER ENREGISTREMENT.”
Ici, je n’ai pas de table, ni d’enregistrement, juste une image à afficher.

Si tu détricotes la pelote, on va pas en finir. :wink:

Il faut utiliser Dialogue, la commande AJOUTER ENREGISTREMENT est normalement plus à utiliser de nos jours…

: Roland LANNUZEL

…? …
(fit-il, interloqué)

J’ai supposé que François parlait de l’image associée à la fenêtre-qui-ne-sert-à-rien :
https://doc.4d.com/4Dv18/4D/18/Gerer-les-barres-de-menus.300-4575511.fr.html

OK, pardon, j’avais lu (et repondu) trop vite…

Et je confirme que l’image en question n’est pas modifiable par programmation.

Pour aller plus loin, à mon sens, cette fenêtre n’a pas lieu d’être, mais c’est un éternel débat sur les interfaces…

Roland Lannuzel

Je sais,
J’ai essayé mais j’avais un blocage avec l’écran DIALOGUE, qui attendait une action (validation annulation,…)
J’ai trouvé sur la doc DIALOGUE de la v17.3 ceci, que je vais essayer :
“Si vous passez le paramètre facultatif * , le formulaire est chargé et affiché dans la dernière fenêtre ouverte du process courant et la commande termine son exécution en laissant le formulaire actif à l’écran.”
Ca peut être ça.

De toute façon, il te faudra gérer des process différents. Mais, entre nous, pourquoi veux-tu conserver une fenêtre avec une image en fond qui ne sert plus et ne se fait plus de nos jours ?

François,
cette fenêtre du process principal ne sert pas à grand chose, mis à part mettre à disposition la barre de menus.
Tu peux :
1/ la cacher en décochant la préférence “Afficher fenêtres” - Accueil
2/ afficher à la place un formulaire avec dialogue qui “servira” la barre de menus.
Après, pour que le formulaire ouvert en 2/ ne soit pas complètement à poil, tu peux lui ajouter des boutons qui font les mêmes choses que les menus. Et encore après, tu te dis que les menus ne servent plus à rien.

: Francois PELUCHON

J’ai essayé mais j’avais un blocage avec l’écran DIALOGUE, qui
attendait une action (validation annulation,…)
J’ai trouvé sur la doc DIALOGUE de la v17.3 ceci, que je vais essayer
:
“Si vous passez le paramètre facultatif * , le formulaire est chargé
et affiché dans la dernière fenêtre ouverte du process courant et la
commande termine son exécution en laissant le formulaire actif à
l’écran.”
Ca peut être ça.
Non, le * de DIALOGUE n’est pas fait pour ça, mais je ne m’étends pas là-dessus. En fait, le Sur ouverture se déroule dans le process principal, il faut le laisser faire son tralala habituel (déclarations/initialisations…). Mais comme tu l’as masqué, question interface, tu l’oublies, c’est à toi de créer un nouveau process d’interface qui sera le “point de départ” de ce que fait ton application :

  • dans le sur ouverture (vers la fin), Nouveau process (“monProcessAccueil”;…)
  • dans la méthode monProcessAccueil, DIALOGUE(“monFormulaireAccueil”…)
    Tu devras probablement procéder à des adaptations, mais c’est assez rapide et on se porte beaucoup mieux quand on n’utilise plus le process principal (je trouve).

OK, bien vu Arnaud, merci.