<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Composants FMX</title>
		<link>https://www.developpez.net/forums/</link>
		<description>Utilisation des différents composants FMX (FireMonkey Framework)</description>
		<language>fr</language>
		<lastBuildDate>Thu, 23 Jul 2026 04:43:42 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Composants FMX</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title>Delphi FMX et Multi-plateforme : suite, et fin (pour moi en tous cas)</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184450&amp;goto=newpost</link>
			<pubDate>Wed, 01 Jul 2026 06:40:37 GMT</pubDate>
			<description><![CDATA[En 2018, j'avais écrit cet...]]></description>
			<content:encoded><![CDATA[<div>En 2018, j'avais écrit cet article concernant mon expérience avec Delphi :<br />
<br />
<a href="https://www.developpez.net/forums/d1798867/environnements-developpement/delphi/debuter/2018-an-delphi-rad-studio-firemonkey-fmx/#post9903237" target="_blank">https://www.developpez.net/forums/d1...x/#post9903237</a>.<br />
<br />
Nous sommes en 2026, je reviens pour continuer ce compte-rendu.<br />
<br />
Depuis lors j'ai eu l'occasion maintes fois de mettre à jour mon application, soit de mon fait, soit du fait des évolutions des systèmes, et des évolutions surtout de Delphi. Et c'est surtout des évolutions de Delphi dont je souhaite parler aujourd'hui.<br />
<br />
Clairement, aujourd'hui, je déconseille fortement cet outil si on ne peut pas faire autrement. Néanmoins, il offre la possibilité de développer en théorie sur plusieurs plateformes simultanément, ce qui peut rester un avantage. Dans tous les autres cas, je le déconseille très fortement. Et si vous avez besoin de cet avantage et que vous êtes forcé de choisir Delphi, voici ce qui vous attend :<br />
<br />
Les mises à jour régulières.<br />
<br />
On pourrait croire que chaque mise à jour apporte son lot d'améliorations. Peut-être, mais généralement, ce sont des améliorations dont nous n'avons pas besoin. Mais surtout chaque mise à jour apporte son lot d'inconvénients et de problèmes.<br />
<br />
Donc déjà, il faut toujours attendre le premier fix. Ensuite, chaque nouvelle version du logiciel présente dans la plupart des cas des régressions.<br />
<br />
C'est-à-dire que votre application qui tournait avant ne tourne plus maintenant. Si vous avez pris soin de développer proprement, il suffit de trouver le bug. Et on repart. Mais dans 90% des cas, on ne repart pas. L'application ne fonctionne plus.<br />
<br />
Si comme c'est mon cas vous utilisez des outils externes, il est fort probable que vous ne puissiez plus compiler parce que Delphi n'assure pas la compatibilité ascendante. Donc vous devez attendre que vos outils externes soient à jour. Et de ce fait, vous devez payer les abonnements à tous vos outils externes. En plus de payer l'abonnement de mise à jour pour Delphi.<br />
<br />
De plus, des fonctionnalités de l'IDE disparaissent soudainement. Même si ce n'est pas fondamental au quotidien, il y a des fonctionnalités qui sont extrêmement pratiques et qui vous simplifient considérablement la vie. Eh bien, l'éditeur les enlève purement et simplement.<br />
<br />
Vous êtes toujours dans l'incertitude de savoir s'il n'y a pas un autre bug qui traîne quelque part que vous n'auriez pas vu. Si votre application est un petit peu importante comme la mienne, vous pouvez difficilement passer plusieurs jours de débugage.<br />
<br />
Après quoi, chaque année, vous devez payer une licence de mise à jour. En ce qui me concerne, ce sont plus de mille euros par an. <br />
<br />
Et concrètement, si vous développez crossplatform comme je le fais sur cinq plateformes différentes, ces mille euros correspondent à la possibilité de pouvoir continuer à déployer sur les différents systèmes. Donc vous n'avez pas le choix et Embarcadero le sait bien.<br />
<br />
Mais ils correspondent aussi et surtout à l'obligation de mettre à jour tous vos outils tiers, et donc de payer aussi les licences des outils tiers.<br />
<br />
En conclusion, vous l'avez compris, évitez Delphi dans la mesure du possible. Quand vous développez aussi sur des plateformes comme PHP, vous vous rendez compte à quel point la notion de fiabilité est totalement différente.<br />
<br />
Personnellement, j'ai décidé de jeter l'éponge et de repasser en SaaS sur des environnements PHP qui sont beaucoup plus fiables et beaucoup plus stables. Mais je suis obligé de conserver Delphi pour assurer la continuité de mon application. Ce que je regrette amèrement.<br />
<br />
Par ailleurs, et pour ceux qui ont lu mon premier article, la tentation est forte de prendre des experts Delphi. Sachez qu'ils sont très difficiles à trouver. Il y en a peu, et compte tenu des régressions systématiques et des inconvénients que pose ce langage au quotidien pour le développeur, je me demande bien comment il pourra y en avoir plus.<br />
<br />
Hope this helps</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>weabow</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184450/environnements-developpement/delphi/composants-fmx/delphi-fmx-multi-plateforme-suite-fin-moi-cas/</guid>
		</item>
		<item>
			<title>fond de bitmap après rotation</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184297&amp;goto=newpost</link>
			<pubDate>Fri, 19 Jun 2026 11:55:25 GMT</pubDate>
			<description>Bonjour 
Je voudrais savoir...</description>
			<content:encoded><![CDATA[<div>Bonjour<br />
Je voudrais savoir s'il est possible d'imposer une couleur de fond quand on utilise la fonction Rotate de TBitmap.<br />
Je m'explique j'ai une image qui fait 64x128 pixels et je la fait pivoter avec la fonction rotate de 60°<br />
Comme indiqué dans la documentation mon image est redimensionnée de manière à afficher l'image complète mais la couleur de fond de la nouvelle image est le blanc et je voudrais pouvoir changer ça.<br />
Exemple:<br />
<img src="https://www.developpez.net/forums/attachments/p677057d1781870195/environnements-developpement/delphi/composants-fmx/fond-bitmap-apres-rotation/drp_1_d1_z3.png/" border="0" alt="Nom : DRP_1_d1_Z3.png
Affichages : 88
Taille : 9,9 Ko"  style="float: CONFIG" /><br />
<br />
Est-ce possible et si oui comment faire</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p677057d1781870195/environnements-developpement/delphi/composants-fmx/fond-bitmap-apres-rotation/drp_1_d1_z3.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>Gouyon</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184297/environnements-developpement/delphi/composants-fmx/fond-bitmap-apres-rotation/</guid>
		</item>
		<item>
			<title>Un bouton en couleur avec des Styles basés sur des images</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184192&amp;goto=newpost</link>
			<pubDate>Fri, 12 Jun 2026 07:11:31 GMT</pubDate>
			<description>Bonjour, 
 
Changer la...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Changer la couleur d'un bouton stylé, s'il s'agit d'un style vraiment FMX est assez facile puisque le fond (background) est un TRectangle.<br />
Ce qui m'a toujours laissé sur ma faim est de pouvoir modifier ce même fond lorsque celui-ci est défini par un TButtonStyleObject. <br />
Personellement, je déteste les styles à base d'image (beaucoup plus gros en taille, plus &quot;restrictifs&quot;) cependant ils sont nettement plus &quot;jolis&quot; et légion.<br />
De plus j'ai l'impression que le nouvel outil &quot;FMX Style designer&quot;  proposé avec la version 13.1 (que je ne maitrise pas)  reste très image.<br />
  <br />
Dans ce cas c'est une portion de l'image du style qui est utilisée, portion définie par une collection de &quot;région&quot; (TBitmapLinks).<br />
Pas facile alors de colorier le bouton :weird: tout en gardant si possible les animations définies.<br />
<br />
<img src="https://www.developpez.net/forums/attachments/p676887d1781246547/environnements-developpement/delphi/composants-fmx/bouton-couleur-styles-bases-images/enregistrement-2026-06-12-082601.gif/" border="0" alt="Nom : Enregistrement-2026-06-12-082601.gif
Affichages : 68
Taille : 324,3 Ko"  style="float: CONFIG" /><br />
<br />
Mon astuce ? Mettre le bouton dans un TRectangle et codifier l'évènement OnApplyStyleLookup du bouton<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">procedure</span> TForm1.Button1ApplyStyleLookup<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">var</span> bck : TFmxObject;
<span style="color: #0000ff;">begin</span>
bck:=Button1.FindStyleResource<span class="br0">&#40;</span><span style="color: #FF0000;">'background'</span><span class="br0">&#41;</span>;
<span style="color: #808080;">// on a affaire &agrave; un TButtonStyleObject</span>
<span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>bck <span style="color: #0000ff;">is</span> TButtonStyleObject<span class="br0">&#41;</span> <span style="color: #0000ff;">AND</span> <span class="br0">&#40;</span><span style="color: #0000ff;">not</span> TButtonStyleObject<span class="br0">&#40;</span>bck<span class="br0">&#41;</span>.NormalLink.IsEmpty<span class="br0">&#41;</span> <span style="color: #0000ff;">then</span>
 <span style="color: #0000ff;">begin</span>
  TButtonStyleObject<span class="br0">&#40;</span>bck<span class="br0">&#41;</span>.NormalLink.Clear; <span style="color: #808080;">// d&eacute;sactive le fond normal</span>
  TButtonStyleObject<span class="br0">&#40;</span>bck<span class="br0">&#41;</span>.FocusedLink.Clear; <span style="color: #808080;">// d&eacute;sactive le fond si focus</span>
 <span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">end</span>;</pre></td></tr></table></code><hr />
</div>Petit inconvénient, au design vous remarquerez que la couleur censée être rouge vif est &quot;voilée&quot; (voile dû à un niveau de transparence)<br />
<img src="https://www.developpez.net/forums/attachments/p676888d1781247500/environnements-developpement/delphi/composants-fmx/bouton-couleur-styles-bases-images/capture.png/" border="0" alt="Nom : Capture.png
Affichages : 64
Taille : 57,8 Ko"  style="float: CONFIG" /><br />
<br />
Bien sûr, le plus simple est d'utiliser simplement un TRectangle pour faire office de bouton. <br />
Bien sûr, une solution, nettement plus compliquée, serait d'intégrer un rectangle rouge dans l'image (je devrai écrire les images puisque dépendant de la résolution) et de redéfinir les zones (TBounds).<br />
Une autre solution,serait d'ajouter un TStyleBook contenant un élément nommé <b>redbuttonstyle</b> viable si :<br />
<ul><li style="">On veut pouvoir changer de style au run-time.</li><li style="">On veut plusieurs boutons &quot;rouges&quot;.       </li></ul><br />
Enfin, dernière solution envisageable, créer le style du bouton au runtime, au détriment du WYSIWYG au moment du design.<br />
<br />
A moins qu'il existe une autre solution ?</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p676887d1781246547/environnements-developpement/delphi/composants-fmx/bouton-couleur-styles-bases-images/enregistrement-2026-06-12-082601.gif/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676888d1781247500/environnements-developpement/delphi/composants-fmx/bouton-couleur-styles-bases-images/capture.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>SergioMaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184192/environnements-developpement/delphi/composants-fmx/bouton-couleur-styles-bases-images/</guid>
		</item>
		<item>
			<title>WebBrowser et OnShouldStartLoadWithRequest</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184135&amp;goto=newpost</link>
			<pubDate>Mon, 08 Jun 2026 20:18:03 GMT</pubDate>
			<description>Salut 
 
je dois faire une...</description>
			<content:encoded><![CDATA[<div>Salut<br />
<br />
je dois faire une application qui affiche des informations sur l'identité d'un utilisateur<br />
<br />
Afin d'éviter d'utiliser trop de Tlabel et de Ttext, et pour un soucis esthétique également, j'ai décidé d'afficher toutes les informations au format html et donc via le TWebBrowser<br />
<br />
Seulement, je dois aussi interagir avec certains élément, j'ai décidé de les afficher via des liens et lors du clique sur ces liens, j'intercepte le lien dans l'évènement OnShouldStartLoadWithRequest pour déclencher des actions<br />
<br />
Mais j'ai 2 problèmes :<br />
<br />
1/ lors du chargement du code html (WebBrowser1.LoadFromStrings()), l'évènement OnShouldStartLoadWithRequest est déclenché 3 fois, là encore je peux contourner, en activant mon code après le chargement du HTML<br />
<br />
2/ et c'est là que je bloque : lorsque je clique sur un lien de la page, l'évènement OnShouldStartLoadWithRequest est déclenché également 3 fois<br />
<br />
j'ai testé tout ça en mettant un ajout de texte dans un Tmemo, et à chaque clique 3 lignes d'ajoute au Tmemo<br />
<br />
avez vous une idée de contournement pour le prob 2 ? ou alors une autre façon d'afficher du html que via le TWebBrowser ?<br />
<br />
merci</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>Coussati</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184135/environnements-developpement/delphi/composants-fmx/webbrowser-onshouldstartloadwithrequest/</guid>
		</item>
		<item>
			<title>Application boussole pour android</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184108&amp;goto=newpost</link>
			<pubDate>Sat, 06 Jun 2026 06:44:51 GMT</pubDate>
			<description>Bonjour 
Pour ceux que ça...</description>
			<content:encoded><![CDATA[<div>Bonjour<br />
Pour ceux que ça intéresse j'ai pondu une petite application boussole voir <a href="https://www.developpez.net/forums/blogs/27025-gouyon/b10778/application-boussole-android/" target="_blank">Application Boussole pour Android</a></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>Gouyon</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184108/environnements-developpement/delphi/composants-fmx/application-boussole-android/</guid>
		</item>
		<item>
			<title>Analyser une image contenant un gradient (dégradé de couleurs)</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183864&amp;goto=newpost</link>
			<pubDate>Mon, 25 May 2026 07:47:30 GMT</pubDate>
			<description>Bonjour, 
 
Je cherche des...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je cherche des pistes pour mieux définir mon analyse de gradient.<br />
<br />
Mon programme test est basique. Au design je créé un rectangle avec un gradient.<br />
<br />
puis via le onclick j'utilise ce code <br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">procedure</span> TForm3.Rectangle2Click<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">var</span> bmp : Tbitmap;
    dbmp : TBitmapData;
    dobreak : <span style="color: #0080ff;">boolean</span>;
    x,y :<span style="color: #0080ff;">integer</span>;
<span style="color: #0000ff;">begin</span>
 bmp:=Rectangle2.MakeScreenshot;
 bmp.Map<span class="br0">&#40;</span>TMapAccess.read,dbmp<span class="br0">&#41;</span>;
 <span style="color: #0000ff;">var</span> tcolor:=dbmp.GetPixel<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">0</span><span class="br0">&#41;</span>;   <span style="color: #808080;">// topleft</span>
 <span style="color: #0000ff;">var</span> cColor:=dbmp.GetPixel<span class="br0">&#40;</span>dbmp.width <span style="color: #0000ff;">div</span> <span style="color: #cc66cc;">2</span>, dbmp.height <span style="color: #0000ff;">div</span> <span style="color: #cc66cc;">2</span><span class="br0">&#41;</span>;   <span style="color: #808080;">// center</span>
 radiant.text:=format<span class="br0">&#40;</span><span style="color: #FF0000;">'%s %s'</span>,<span class="br0">&#91;</span>AlphaColorToString<span class="br0">&#40;</span>tcolor<span class="br0">&#41;</span>, AlphaColorToString<span class="br0">&#40;</span>ccolor<span class="br0">&#41;</span><span class="br0">&#93;</span><span class="br0">&#41;</span>;
 bmp.Unmap<span class="br0">&#40;</span>dbmp<span class="br0">&#41;</span>;
 freeandnil<span class="br0">&#40;</span>bmp<span class="br0">&#41;</span>;
<span style="color: #0000ff;">end</span>;</pre></td></tr></table></code><hr />
</div><img src="https://www.developpez.net/forums/attachments/p676494d1779693391/environnements-developpement/delphi/composants-fmx/analyser-image-contenant-gradient-degrade-couleurs/capture.png/" border="0" alt="Nom : Capture.png
Affichages : 123
Taille : 24,8 Ko"  style="float: CONFIG" /><br />
<br />
Facile, oui, mais, ce n'est qu'un exemple particulier !  <br />
Comment détecter le type (radial dans cet exemple) et surtout le centre ? <br />
Dans le cas d'un gradient linéaire cela devient encore plus compliqué puisque l'angle va jouer !<br />
<br />
Et enfin, je ne me suis arrêté qu'à deux couleurs or les possibilités des gradients (même si je trouve que le designer est plutôt bogué) sont énormes.<br />
<br />
Il y a déjà un bail, j'avais fait un truc par code  pour un <a href="https://www.developpez.net/forums/d2130365-2/environnements-developpement/delphi/composants-fmx/centre-gradient-utilisation-globalusegpucanvas-skia/" target="_blank">composant led<br />
</a> . Cet aparté me fait penser que depuis 2022 les choses ont peut-être changé :roll:<br />
<br />
Vous vous poserez peut-être la question du pourquoi je me casse la tête. Ma réponse : cela concerne toujours les styles firemonkey  <br />
<img src="https://www.developpez.net/forums/attachments/p676495d1779694928/environnements-developpement/delphi/composants-fmx/analyser-image-contenant-gradient-degrade-couleurs/capture.png/" border="0" alt="Nom : Capture.png
Affichages : 132
Taille : 155,0 Ko"  style="float: CONFIG" /><br />
Comment extraire le gradient du style Calypso complexe puisqu'il me semble qu'il est impossible à réaliser avec Delphi, il doit manquer les gradients de type conique et mesh (encore que pour ce dernier je pense que ce n'est qu'un problème de centre)</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p676494d1779693391/environnements-developpement/delphi/composants-fmx/analyser-image-contenant-gradient-degrade-couleurs/capture.png/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676495d1779694928/environnements-developpement/delphi/composants-fmx/analyser-image-contenant-gradient-degrade-couleurs/capture.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>SergioMaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183864/environnements-developpement/delphi/composants-fmx/analyser-image-contenant-gradient-degrade-couleurs/</guid>
		</item>
		<item>
			<title><![CDATA[[Windows] Les styles Metroplis*.style]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183533&amp;goto=newpost</link>
			<pubDate>Sat, 02 May 2026 08:54:39 GMT</pubDate>
			<description>Bonjour, 
Toujours dans ma...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
Toujours dans ma future unité permettant un dialogue d'ouverture de fichier je suis &quot;tombé&quot; sur un cas étrange voilà deux images. <br />
<br />
Déjà que les styles W10Modern*.style ne respectent pas les hauteurs des composants lors du design (je pense en connaitre la raison).<br />
<br />
<img src="https://www.developpez.net/forums/attachments/p676094d1777711389/environnements-developpement/delphi/composants-fmx/styles-metroplis-style/capture.png/" border="0" alt="Nom : Capture.png
Affichages : 118
Taille : 83,7 Ko"  style="float: CONFIG" /><br />
<br />
C'est surtout la seconde image qui m'interpelle.<br />
<br />
<img src="https://www.developpez.net/forums/attachments/p676095d1777711420/environnements-developpement/delphi/composants-fmx/styles-metroplis-style/capture_3.png/" border="0" alt="Nom : Capture_3.PNG
Affichages : 106
Taille : 70,4 Ko"  style="float: CONFIG" /> <br />
<br />
Comme vous le constatez l'arborescence est boguée (pour ne pas dire de gros mots).<br />
<br />
Questions : Pourquoi ? Comment m'en sortir ? C'est quoi metropolis de Microsoft (j'ai complètement oublié) ? <br />
<br />
Aucune urgence, je vais simplement enlever ces Metropolisxxx de ma boite de choix, mais quand même, c'est étrange et c'est le genre de chose qui surprend.</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p676094d1777711389/environnements-developpement/delphi/composants-fmx/styles-metroplis-style/capture.png/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676095d1777711420/environnements-developpement/delphi/composants-fmx/styles-metroplis-style/capture_3.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>SergioMaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183533/environnements-developpement/delphi/composants-fmx/styles-metroplis-style/</guid>
		</item>
		<item>
			<title><![CDATA[[Windows] Faire une arborescence de répertoires (Delphi 12+)]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183322&amp;goto=newpost</link>
			<pubDate>Tue, 21 Apr 2026 08:17:07 GMT</pubDate>
			<description>Bonjour, 
 
Je me suis lancé...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je me suis lancé dans une sorte de défi : Faire l'équivalent d'un TOpendialog mais avec &quot;style&quot;. Pour l'instant je m'occupe de la partie répertoires<br />
<img src="https://www.developpez.net/forums/attachments/p675777d1776758322/environnements-developpement/delphi/composants-fmx/faire-arborescence-repertoires-delphi-12p/capture.png/" border="0" alt="Nom : Capture.png
Affichages : 183
Taille : 29,3 Ko"  style="float: CONFIG" /><br />
Mais je tombe sur un os :   <br />
 EDirectoryNotFoundException 'Impossible de trouver le chemin spécifié [C:\Documents and Settings]'.<br />
<br />
Qu'est-ce que ce c:\Documents and Settings ? Un lien symbolique<br />
<br />
Si je sais comment ne plus afficher ce &quot;Documents and settings&quot; simplement en déplaçant  les lignes  <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block"><span style="color: #0000ff;">try</span>  HasChildren := Length<span class="br0">&#40;</span>TDirectory.GetDirectories<span class="br0">&#40;</span>SubDir<span class="br0">&#41;</span><span class="br0">&#41;</span> &gt; <span style="color: #cc66cc;">0</span>;</span> comme marqué ici en rouge,  <br />
je ne voudrai pas passé à coté d'un lien particulier.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br /></div></td><td valign="top"><pre style="margin: 0">procedure TForm1.AddDirectories(ParentNode: TTreeviewItem; const Path: string);
var
  SubDirs: TStringDynArray;
  SubDir: string;
  NewNode: TTreeviewItem;
  HasChildren: Boolean;
begin
  // Récupère tous les sous-répertoires en une seule ligne
  if DirectoryExists(Path) then
  begin
    SubDirs := TDirectory.GetDirectories(Path, '*',
      TSearchOption.soTopDirectoryOnly);
    for SubDir in SubDirs do
    begin
<font color="#FF0000"> //      try
 //        HasChildren := Length(TDirectory.GetDirectories(SubDir)) &gt; 0;
</font>        NewNode := TTreeViewItem.Create(ParentNode);
        NewNode.Parent := ParentNode;
        NewNode.Text := TPath.GetFileName(SubDir); // Nom seul, sans le chemin
        NewNode.ImageIndex := 0;
        NewNode.TagString := StrNew(PChar(SubDir)); // Chemin complet stocké
        NewNode.OnClick := TreeViewItemClick;
        // Vérifie si ce sous-dossier a lui-même des enfants
        // pour afficher ou non le bouton [+]
        try
          HasChildren := Length(TDirectory.GetDirectories(SubDir)) &gt; 0;
        except
          HasChildren := False;
        end;

        if HasChildren then
          // Nœud fantôme : déclenche l'affichage du bouton [+]
          NoeudFantome(NewNode);
    end;
  end;
end;</pre></td></tr></table></code><hr />
</div>utilisation <br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">procedure</span> TForm3.AddSystemPath;
<span style="color: #0000ff;">var</span>
  SystemItem, DiskItem: TTreeViewItem;
<span style="color: #0000ff;">begin</span>
  SystemItem := TTreeViewItem.Create<span class="br0">&#40;</span><span style="color: #0000ff;">Self</span><span class="br0">&#41;</span>;
  SystemItem.Text := <span style="color: #FF0000;">'Ce PC'</span>;
  SystemItem.ImageIndex := <span style="color: #cc66cc;">2</span>;
  SystemItem.TagString := <span style="color: #FF0000;">''</span>;
  SystemItem.OnClick := TreeViewItemClick;
  SystemItem.Parent := TreeView1;
  <span style="color: #0000ff;">for</span> <span style="color: #0000ff;">var</span> s <span style="color: #0000ff;">in</span> TDirectory.GetLogicalDrives <span style="color: #0000ff;">do</span>
  <span style="color: #0000ff;">begin</span>
    DiskItem := TTreeViewItem.Create<span class="br0">&#40;</span><span style="color: #0000ff;">Self</span><span class="br0">&#41;</span>;
    DiskItem.Parent := SystemItem;
    DiskItem.Text := s;
    DiskItem.ImageIndex := <span style="color: #cc66cc;">3</span>;
    DiskItem.TagString := S;
    DiskItem.OnClick := TreeViewItemClick;
    AddDirectories<span class="br0">&#40;</span>DiskItem, S<span class="br0">&#41;</span>;
  <span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">end</span>;</pre></td></tr></table></code><hr />
</div>En bref, GetDirectories est rapide mais est-ce la meilleure solution ?<br />
<br />
En attendant, je vais continuer en codant la partie onExpand</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p675777d1776758322/environnements-developpement/delphi/composants-fmx/faire-arborescence-repertoires-delphi-12p/capture.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>SergioMaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183322/environnements-developpement/delphi/composants-fmx/faire-arborescence-repertoires-delphi-12p/</guid>
		</item>
		<item>
			<title><![CDATA[[Windows] Fusion de menu]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183196&amp;goto=newpost</link>
			<pubDate>Tue, 14 Apr 2026 06:32:10 GMT</pubDate>
			<description>Bonjour, 
 
Si en VCL la...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Si en VCL la fusion de menu est simple, je n'ai pas trouvé son équivalent. A moins que ce soit moi ?<br />
<br />
Ajouter des éléments de menu est semble t-il assez simple, j'ai fait un truc de ce genre :<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">procedure</span> Tcomparateur.RefreshWindowsMnu;
<span style="color: #0000ff;">var</span> amnuItem : TMenuItem;
<span style="color: #0000ff;">begin</span>
<span style="color: #0000ff;">for</span> <span style="color: #0000ff;">var</span> F  <span style="color: #0000ff;">in</span> Datas.Childforms <span style="color: #0000ff;">do</span>     <span style="color: #808080;">//  Childforms  est TDictionary&lt;String,PForm&gt;, PForm : un pointeur de TForm</span>
  <span style="color: #0000ff;">begin</span>
    amnuitem:=TmenuItem.Create<span class="br0">&#40;</span>Fenetres<span class="br0">&#41;</span>;   <span style="color: #808080;">// fenetres est un TMenuItem</span>
    amnuItem.Parent:=Fenetres;
    amnuItem.Text:=F.Key;
    amnuItem.name:=StringReplace<span class="br0">&#40;</span>F.key,<span style="color: #FF0000;">'.'</span>,<span style="color: #FF0000;">''</span>,<span class="br0">&#91;</span>rfReplaceAll<span class="br0">&#93;</span><span class="br0">&#41;</span>;
    amnuItem.OnClick:=ShowChildWindow;
  <span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">end</span>;</pre></td></tr></table></code><hr />
</div>Mais qu'en est-il de la suppression d'un élément ainsi créé ?<br />
<br />
Question subsidiaire : comment faire en sorte d'insérer les items créés au dessus des options &quot;fixe&quot; (par exemple Fermer tout, Réduire tout) ?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>SergioMaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183196/environnements-developpement/delphi/composants-fmx/fusion-menu/</guid>
		</item>
		<item>
			<title>Utilisation de TImageViewer</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182991&amp;goto=newpost</link>
			<pubDate>Thu, 02 Apr 2026 10:05:34 GMT</pubDate>
			<description>Bonjour, 
Je veux visualiser...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
Je veux visualiser une image dans un <b>TImageviewer</b> et pouvoir adresser les pixels à l'aide la souris.<br />
Par défaut, qu'elle que soit la taille du composant définie à la création, la taille de l'image visualisée est adaptée à la fenêtre du composant (option &quot;bestfit&quot;). <br />
Le niveau de zoom peut alors être changé en utilisant la molette centrale de la souris, et le centrage de l'image ajusté avec les curseurs latéraux (option &quot;scroll&quot;). C'est parfait.<br />
Maintenant, en promenant la souris (option &quot;hittest'' et utilisation de l'événement &quot;mousemove&quot;), j'obtiens des coordonnées X et Y pour chaque pixel, qui semblent être des coordonnées ''écran''. <br />
J'ai bien trouvé la méthode &quot;screentolocal&quot; mais elle donne des coordonnées dans le composant (donc après centrage et zoom).<br />
Quelle est la méthode pour les transformer en coordonnées dans l'image initiale ?<br />
Merci, d'avance.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>_alx_</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182991/environnements-developpement/delphi/composants-fmx/utilisation-timageviewer/</guid>
		</item>
		<item>
			<title><![CDATA[[Windows] TFlowLayout questions de manipulations]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182989&amp;goto=newpost</link>
			<pubDate>Thu, 02 Apr 2026 09:08:40 GMT</pubDate>
			<description>Bonjour, 
 
Dans mon...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Dans mon programme de comparateur de style (cf. <a href="https://www.developpez.net/forums/d2182909/environnements-developpement/delphi/composants-fmx/tableau-tframes-perte-focus-l-application/" target="_blank">discussion 1</a>, <a href="https://www.developpez.net/forums/d2182914/environnements-developpement/delphi/composants-fmx/obtenir-style-cours/" target="_blank">discusion 2</a>)<br />
j'utilise un TFlowLayout pour pour stocker des cadres (TFrame) tous identiques.<br />
<br />
Ma première question concerne le premier cadre posé. <b>Comment faire en sorte que le cadre montrant le style de référence soit toujours le premier dans le TFlowlayout ? </b><br />
Je m'explique, quand je démarre mon application (obligatoirement sous windows) j'obtiens mon &quot;style par défaut&quot; (selon la version de windows).<br />
J'ai une option de programme qui me permet de changer ce style (que je nomme mon style de référence) <br />
<img src="https://www.developpez.net/forums/attachments/p675358d1775120327/environnements-developpement/delphi/composants-fmx/tflowlayout-questions-manipulations/capture.png/" border="0" alt="Nom : Capture.png
Affichages : 97
Taille : 47,7 Ko"  style="float: CONFIG" /><br />
Seulement je voudrais que ce style de référence (dans cette image UbuntuClearFantasy) soit le premier cadre dans mon TLayout<br />
<br />
Deuxième question, beaucoup plus subsidiaire, j'ai mis ce TFlowLayout au sein d'un TScrollbox pour tenter d'obtenir un défilement, seulement, la plupart du temps je ne vois absolument pas les barres de défilement.<br />
Si, pour la barre horizontale, j'arrive à comprendre la cause autant pour la barre verticale j'ai de réels soucis l'affichage de cette barre étant vraiment trop aléatoire ! <br />
Je pense que mon souci vient essentiellement du calcul de la taille du TFlowLayout. <b>Comment calculer correctement ses hauteurs et largeurs et dans quel évènement ? </b></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p675358d1775120327/environnements-developpement/delphi/composants-fmx/tflowlayout-questions-manipulations/capture.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>SergioMaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182989/environnements-developpement/delphi/composants-fmx/tflowlayout-questions-manipulations/</guid>
		</item>
		<item>
			<title>Obtenir le style en cours / Faire un comparateur</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182914&amp;goto=newpost</link>
			<pubDate>Sun, 29 Mar 2026 09:10:28 GMT</pubDate>
			<description>Bonjour, 
 
Il y a déjà un...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Il y a déjà un bail, que je sais comment obtenir le style d'un TControl en utilisant sa &quot;scene&quot; <br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">var</span> sb : TFMXObject;
<span style="color: #0000ff;">begin</span>
  <span style="color: #0000ff;">if</span> assigned<span class="br0">&#40;</span>btnStyle.Scene<span class="br0">&#41;</span> <span style="color: #0000ff;">then</span>
   <span style="color: #0000ff;">begin</span>
   <span style="color: #0000ff;">if</span> <span style="color: #0000ff;">not</span> Assigned<span class="br0">&#40;</span>btnStyle.Scene.StyleBook<span class="br0">&#41;</span> <span style="color: #0000ff;">then</span>
      sb := TStyleManager.ActiveStyleForScene<span class="br0">&#40;</span>btnstyle.Scene<span class="br0">&#41;</span>
    <span style="color: #0000ff;">else</span>
      sb := btnStyle.Scene.StyleBook.Style;</pre></td></tr></table></code><hr />
</div>seulement il ne s'agit pas du style de la fiche et j'ai un gros doute sur le résultat si je teste ce code dans le onCreate de la fiche<br />
<img src="https://www.developpez.net/forums/attachments/p675295d1774774127/environnements-developpement/delphi/composants-fmx/obtenir-style-cours-faire-comparateur/capture.png/" border="0" alt="Nom : Capture.png
Affichages : 286
Taille : 11,0 Ko"  style="float: CONFIG" /><br />
<br />
Mais voilà, un TForm n'est pas un TControl et donc, n'a pas de scene.<br />
<br />
Comment alors obtenir le style utilisé à la création de la forme si StyleBook est vide ?</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p675295d1774774127/environnements-developpement/delphi/composants-fmx/obtenir-style-cours-faire-comparateur/capture.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>SergioMaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182914/environnements-developpement/delphi/composants-fmx/obtenir-style-cours-faire-comparateur/</guid>
		</item>
		<item>
			<title><![CDATA[Tableau de Tframes - perte de focus sur l'application]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182909&amp;goto=newpost</link>
			<pubDate>Sat, 28 Mar 2026 09:12:46 GMT</pubDate>
			<description>Bonjour, 
 
En fait, je tente...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
En fait, je tente de créer un comparateur de style. Pour cela dans ma fiche principale j'ai un TFlowlayout (ce qui ressemble beaucoup à un tableau d'où le titre).<br />
Voilà ce que cela donne (ceci n'est, pour l'instant, qu'un brouillon)<br />
<img src="https://www.developpez.net/forums/attachments/p675290d1774688138/environnements-developpement/delphi/composants-fmx/tableau-tframes-perte-focus-l-application/capture.png/" border="0" alt="Nom : Capture.png
Affichages : 122
Taille : 14,3 Ko"  style="float: CONFIG" /><br />
Comme vous le constaterez, il est possible de supprimer un élément du tableau et c'est peut-être de là que viens le souci.<br />
Si je ferme l'une de ces cadres, j'ai l'impression de perdre le focus. C'est à dire que je ne peux pas fermer la fenêtre principale. Il faut que je clique sur le bouton (même en annulant ensuite le dialogue) pour &quot;ré-avoir&quot; la main.<br />
Maintenant que j'y pense, j'ai déjà  eu ce cas lors de clôture d'onglet mais avec des Fiches &quot;dockées&quot;, je vais fouiller cette piste mais, en attendant, voici le code    <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">type</span>
  TForm3 = <span style="color: #0000ff;">class</span><span class="br0">&#40;</span>TForm<span class="br0">&#41;</span>
    StyleBook1: TStyleBook;
    Button1: TButton;
    FlowLayout1: TFlowLayout;
    OpenDialog1: TOpenDialog;
    <span style="color: #0000ff;">procedure</span> Button1Click<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>;
    <span style="color: #0000ff;">procedure</span> FormCreate<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>;
    <span style="color: #0000ff;">procedure</span> FormClose<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span>; <span style="color: #0000ff;">var</span> Action: TCloseAction<span class="br0">&#41;</span>;
  <span style="color: #0000ff;">private</span>
    <span style="color: #808080;">{ D&eacute;clarations priv&eacute;es }</span>
       FFrames : TDictionary&lt;<span style="color: #0080ff;">String</span>,TFrame&gt;;
       <span style="color: #0000ff;">procedure</span> CloseFrame<span class="br0">&#40;</span>Sender : <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>;
  <span style="color: #0000ff;">public</span>
    <span style="color: #808080;">{ D&eacute;clarations publiques }</span>
  <span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">var</span>
  Form3: TForm3;
&nbsp;
<span style="color: #0000ff;">implementation</span>
&nbsp;
<span style="color: #808080;">{$R *.fmx}</span>
&nbsp;
<span style="color: #0000ff;">procedure</span> TForm3.Button1Click<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">var</span> F : TFrame1;
<span style="color: #0000ff;">begin</span>
<span style="color: #0000ff;">if</span> opendialog1.execute <span style="color: #0000ff;">then</span>
<span style="color: #0000ff;">begin</span>
 <span style="color: #808080;">// pas de doublon possible</span>
 <span style="color: #0000ff;">if</span> <span style="color: #0000ff;">not</span> FFrames.ContainsKey<span class="br0">&#40;</span>ExtractFileName<span class="br0">&#40;</span>Opendialog1.FileName<span class="br0">&#41;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">then</span>
 <span style="color: #0000ff;">begin</span>
   <span style="color: #808080;">// cr&eacute;ation du cadre</span>
   F:=TFrame1.Create<span class="br0">&#40;</span><span style="color: #0000ff;">Self</span><span class="br0">&#41;</span>;
   F.Parent:=FlowLayout1;
   <span style="color: #0000ff;">var</span> t:=StringReplace<span class="br0">&#40;</span>ExtractFileName<span class="br0">&#40;</span>Opendialog1.FileName<span class="br0">&#41;</span>,<span style="color: #FF0000;">'.'</span>,<span style="color: #FF0000;">''</span>,<span class="br0">&#91;</span>TReplaceFlag.rfReplaceAll<span class="br0">&#93;</span><span class="br0">&#41;</span>;
   F.Name:=T;
   F.Label1.Text:=ExtractFileName<span class="br0">&#40;</span>Opendialog1.FileName<span class="br0">&#41;</span>;
   F.SpeedButton1.TagObject:=F;  <span style="color: #808080;">// bouton de fermeture du cadre</span>
   F.SpeedButton1.OnClick:=CloseFrame;
   F.LoadStyle<span class="br0">&#40;</span>Opendialog1.FileName<span class="br0">&#41;</span>;   <span style="color: #808080;">// permet de charger le fond </span>
   FFrames.Add<span class="br0">&#40;</span>F.Label1.Text,F<span class="br0">&#41;</span>;
 <span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">procedure</span> TForm3.CloseFrame<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">begin</span>
<span style="color: #808080;">// supprimer un cadre</span>
<span style="color: #0000ff;">var</span> F :=TSpeedButton<span class="br0">&#40;</span>Sender<span class="br0">&#41;</span>.TagObject <span style="color: #0000ff;">as</span> TFrame1;
FFrames.Remove<span class="br0">&#40;</span>F.Label1.Text<span class="br0">&#41;</span>;
FreeAndNil<span class="br0">&#40;</span>TSpeedButton<span class="br0">&#40;</span>Sender<span class="br0">&#41;</span>.TagObject<span class="br0">&#41;</span>;
<span style="color: #808080;">// Button1.SetFocus; fonctionne pas !?</span>
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">procedure</span> TForm3.FormClose<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span>; <span style="color: #0000ff;">var</span> Action: TCloseAction<span class="br0">&#41;</span>;
<span style="color: #0000ff;">var</span> F : TFrame;
<span style="color: #0000ff;">begin</span>
<span style="color: #808080;">// supprimer les cadres restant</span>
<span style="color: #0000ff;">for</span> <span style="color: #0000ff;">var</span> cle <span style="color: #0000ff;">in</span> FFrames.Keys <span style="color: #0000ff;">do</span>
 <span style="color: #0000ff;">begin</span>
  <span style="color: #0000ff;">if</span> FFrames.TryGetValue<span class="br0">&#40;</span>cle,F<span class="br0">&#41;</span> <span style="color: #0000ff;">then</span> F.Free;
  FFrames.Remove<span class="br0">&#40;</span>cle<span class="br0">&#41;</span>;
 <span style="color: #0000ff;">end</span>;
<span style="color: #808080;">// supprimer le dictionnaire</span>
FreeAndNil<span class="br0">&#40;</span>FFrames<span class="br0">&#41;</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">procedure</span> TForm3.FormCreate<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">begin</span>
<span style="color: #808080;">// cr&eacute;er de dictionnaire</span>
FFrames:=TDictionary&lt;<span style="color: #0080ff;">String</span>,TFrame&gt;.Create;
<span style="color: #0000ff;">end</span>;</pre></td></tr></table></code><hr />
</div><div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">constructor</span> TFrame1.Create<span class="br0">&#40;</span>AOwner: TComponent<span class="br0">&#41;</span>;
<span style="color: #0000ff;">begin</span>
<span style="color: #0000ff;">inherited</span>;
StyleBook:=TStyleBook.Create<span class="br0">&#40;</span><span style="color: #0000ff;">self</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">destructor</span> TFrame1.Destroy;
<span style="color: #0000ff;">begin</span>
StyleBook.Free;
<span style="color: #0000ff;">inherited</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">procedure</span> TFrame1.LoadStyle<span class="br0">&#40;</span><span style="color: #0000ff;">const</span> filename: <span style="color: #0080ff;">String</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">var</span> aStream : TMemoryStream;
    Back: TControl;
<span style="color: #0000ff;">begin</span>
aStream:=TMemoryStream.Create;
<span style="color: #0000ff;">try</span>
  aStream.LoadFromFile<span class="br0">&#40;</span>FileName<span class="br0">&#41;</span>;
  aStream.Position:=<span style="color: #cc66cc;">0</span>;
  StyleBook.LoadFromStream<span class="br0">&#40;</span>aStream<span class="br0">&#41;</span>;
<span style="color: #0000ff;">finally</span>
  aStream.Free;
<span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">var</span> Style := StyleBook.Styles<span class="br0">&#91;</span><span style="color: #cc66cc;">0</span><span class="br0">&#93;</span>.Style;
<span style="color: #0000ff;">var</span> Backg := Style.FindStyleResource<span class="br0">&#40;</span><span style="color: #FF0000;">'backgroundstyle'</span><span class="br0">&#41;</span>;
       <span style="color: #0000ff;">if</span> Assigned<span class="br0">&#40;</span>Backg<span class="br0">&#41;</span> <span style="color: #0000ff;">then</span>
        <span style="color: #0000ff;">begin</span>
          Back := Backg.Clone<span class="br0">&#40;</span>LayoutView<span class="br0">&#41;</span> <span style="color: #0000ff;">as</span> TControl;
          Back.Parent := LayoutView;
          Back.Align := TAlignLayout.Client;
          Back.HitTest := <span style="color: #0000ff;">false</span>;
          Back.Visible := <span style="color: #0000ff;">True</span>;
        <span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">end</span>;</pre></td></tr></table></code><hr />
</div></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p675290d1774688138/environnements-developpement/delphi/composants-fmx/tableau-tframes-perte-focus-l-application/capture.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>SergioMaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182909/environnements-developpement/delphi/composants-fmx/tableau-tframes-perte-focus-l-application/</guid>
		</item>
		<item>
			<title><![CDATA[[Android] Quelle mémoire allouée et quelle mémoire utilisée par une app?]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182569&amp;goto=newpost</link>
			<pubDate>Wed, 11 Mar 2026 09:55:32 GMT</pubDate>
			<description>Petit préambule: Je poste...</description>
			<content:encoded><![CDATA[<div>Petit préambule: Je poste cette discussion sous &quot;Composants FMX&quot; bien que cela ne concerne pas vraiment un composant FMX mais plus précisément une problématique posée par Android et comme il n'y a pas un chapitre Delphi/Android, je poste la discussion sous FMX (parce que le plus souvent FMX = app multi-plateforme = Android)<br />
<br />
Mon problème: Afficher dans une app, la mémoire allouée à l'app par Android et la mémoire vraiment utilisée à l'instant t...<br />
<br />
J'ai beau eu cherché, j'ai pas trouvé la solution:<br />
<br />
1. Je peux afficher la mémoire totale de l'appareil et la mémoire encore disponible à l'instant t, mais cela ne dit rien puisque par une soustraction on va obtenir la mémoire utilisée par la totalité des app qui tournent sur l'appareil Android et pas spécifiquement pour une app donnée<br />
<br />
2. On peut vérifier dans les options de développement de l'appareil Android, l'utilisation moyenne de la mémoire faite par l'app sur une durée prédéfinie du genre 1 jour, 3 jours, 1 semaine  &gt;&gt;&gt; Ce n'est pas ce que je veux!<br />
<br />
3. On peut visualiser l'utilisation de la mémoire via Android Studio  &gt;&gt;&gt; Ce n'est pas ce que je veux!<br />
<br />
<br />
Est-ce que quelqu'un connait un moyen d'obtenir la mémoire max allouée à une app et la mémoire vraiment utilisée pas une app Android via du code Delphi?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>Anselme45</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182569/environnements-developpement/delphi/composants-fmx/memoire-allouee-memoire-utilisee-app/</guid>
		</item>
		<item>
			<title>Un bouton avec un TSKSVG</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182374&amp;goto=newpost</link>
			<pubDate>Sat, 28 Feb 2026 08:06:52 GMT</pubDate>
			<description>---Citation (Envoyé par...</description>
			<content:encoded><![CDATA[<div><div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			<div>
				Envoyé par <strong>SergioMaster</strong>
				<a href="d2182249-m12115934/environnements-developpement/delphi/composants-fmx/modifier-style-runtime-suite-analyse/#post12115934" rel="nofollow"><img class="inlineimg" src="https://forum.developpez.be/images/buttons/viewpost.gif" alt="Voir le message" /></a>
			</div>
			<div class="message">Qui n'est pas frustré par la taille des glyphes dans un FMX.TButton, sans parler du fait que l'on retombe dans l'utilisation d'un TImageList (avec 3 tailles par icones), impossible à agrandir sans passer par du code ! Un de mes projets est de créer un nouveau composant utilisant un SVG à la place du glyphe histoire de m'affranchir de la TimageList et de gérer la taille ou du moins d'en faire quelque chose de plus &quot;visible&quot;.</div>
			
		<hr />
	</div>
</div>Une première ébauche avant de passer au stade composant.<br />
<br />
Au design <br />
<img src="https://www.developpez.net/forums/attachments/p674624d1772264450/environnements-developpement/delphi/composants-fmx/bouton-tsksvg/capture.png/" border="0" alt="Nom : Capture.png
Affichages : 111
Taille : 6,3 Ko"  style="float: CONFIG" /><br />
<br />
Comme vous le constaterez, pas de TStyleBook.<br />
Le style est en fait inclus dans une ressource &quot;indépendante&quot;<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080;">{$R svgbuttonstyle.res svgbuttonstyle.rc}</span>
&nbsp;
<span style="color: #0000ff;">procedure</span> TForm1.Button2Click<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">begin</span>
button1.IsPressed:=<span style="color: #0000ff;">not</span> button1.IsPressed;
<span style="color: #0000ff;">var</span> t:=button1.FindStyleResource<span class="br0">&#40;</span><span style="color: #FF0000;">'pressedstyle'</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">if</span> assigned<span class="br0">&#40;</span>t<span class="br0">&#41;</span> <span style="color: #0000ff;">then</span> TColorAnimation<span class="br0">&#40;</span>t<span class="br0">&#41;</span>.Enabled:=button1.IsPressed;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">procedure</span> TForm1.FormCreate<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">begin</span>
button1.ApplyStyleLookup;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">initialization</span>
 TStyleStreaming.LoadFromResource<span class="br0">&#40;</span>HInstance,<span style="color: #FF0000;">'fmxsvgbuttonstyle'</span>,RT_RCDATA<span class="br0">&#41;</span>;</pre></td></tr></table></code><hr />
</div>et voilà un premier résultat<br />
<img src="https://www.developpez.net/forums/attachments/p674625d1772264995/environnements-developpement/delphi/composants-fmx/bouton-tsksvg/fmxsvgbuttonstyle.gif/" border="0" alt="Nom : fmxsvgbuttonstyle.gif
Affichages : 133
Taille : 364,1 Ko"  style="float: CONFIG" /><br />
<br />
Mais tout n'est pas rose, j'ai un problème avec le ispressed  : si je repasse avec la souris je perd la couleur définie par le trigger ispressed :weird:<br />
<br />
<br />
contenu du fichier .rc ?<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">fmxsvgbuttonstyle RCDATA <span style="color: #FF0000;">&quot;FMX.svgbuttonstyle.fsf&quot;</span></code><hr />
</div>le &quot;source&quot; du style ?<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">object</span> TStyleContainer
  <span style="color: #0000ff;">object</span> TLayout
    StyleName = <span style="color: #FF0000;">'svgbuttonstyle'</span>
    Align = Center
    Size.Width = <span style="color: #cc66cc;">177.666687011718800000</span>
    Size.Height = <span style="color: #cc66cc;">38.000000000000000000</span>
    Size.PlatformDefault = <span style="color: #0000ff;">False</span>
    Visible = <span style="color: #0000ff;">False</span>
    TabOrder = <span style="color: #cc66cc;">0</span>
    <span style="color: #0000ff;">object</span> TRectangle
      StyleName = <span style="color: #FF0000;">'background'</span>
      Align = Contents
      Fill.Color = claSilver
      Size.Width = <span style="color: #cc66cc;">177.666687011718800000</span>
      Size.Height = <span style="color: #cc66cc;">38.000000000000000000</span>
      Size.PlatformDefault = <span style="color: #0000ff;">False</span>
      Stroke.Kind = None
      <span style="color: #0000ff;">object</span> TRectangle
        StyleName = <span style="color: #FF0000;">'buttoncontent'</span>
        Align = Client
        Fill.Kind = None
        HitTest = <span style="color: #0000ff;">False</span>
        Size.Width = <span style="color: #cc66cc;">177.666687011718800000</span>
        Size.Height = <span style="color: #cc66cc;">38.000000000000000000</span>
        Size.PlatformDefault = <span style="color: #0000ff;">False</span>
        Stroke.Kind = None
        <span style="color: #0000ff;">object</span> TSkSvg
          StyleName = <span style="color: #FF0000;">'svg'</span>
          Align = Left
          Anchors = <span class="br0">&#91;</span>akLeft, akTop, akRight, akBottom<span class="br0">&#93;</span>
          Margins.Left = <span style="color: #cc66cc;">2.000000000000000000</span>
          Margins.Top = <span style="color: #cc66cc;">2.000000000000000000</span>
          Margins.Right = <span style="color: #cc66cc;">2.000000000000000000</span>
          Margins.Bottom = <span style="color: #cc66cc;">2.000000000000000000</span>
          Position.X = <span style="color: #cc66cc;">2.000000000000000000</span>
          Position.Y = <span style="color: #cc66cc;">2.000000000000000000</span>
          Size.Width = <span style="color: #cc66cc;">36.000000000000000000</span>
          Size.Height = <span style="color: #cc66cc;">34.000000000000000000</span>
          Size.PlatformDefault = <span style="color: #0000ff;">False</span>
          Svg.Source = 
            <span style="color: #FF0000;">'&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; width=&quot;1200&quot; height=&quot;800'</span> +
            <span style="color: #FF0000;">'&quot;&gt;'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'&lt;rect width=&quot;1200&quot; height=&quot;800&quot; fill=&quot;#0057B7&quot;/&gt;'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'&lt;rect widt'</span> +
            <span style="color: #FF0000;">'h=&quot;1200&quot; height=&quot;400&quot; y=&quot;400&quot; fill=&quot;#FFD700&quot;/&gt;'</span><span style="color: #cc66cc;">#13</span><span style="color: #cc66cc;">#10</span><span style="color: #FF0000;">'&lt;/svg&gt;'</span>
        <span style="color: #0000ff;">end</span>
        <span style="color: #0000ff;">object</span> TLabel
          StyleName = <span style="color: #FF0000;">'text'</span>
          Align = Client
          Size.Width = <span style="color: #cc66cc;">137.666687011718800000</span>
          Size.Height = <span style="color: #cc66cc;">38.000000000000000000</span>
          Size.PlatformDefault = <span style="color: #0000ff;">False</span>
          Text = <span style="color: #FF0000;">'Texte'</span>
          TabOrder = <span style="color: #cc66cc;">1</span>
        <span style="color: #0000ff;">end</span>
      <span style="color: #0000ff;">end</span>
      <span style="color: #0000ff;">object</span> TColorAnimation
        StyleName = <span style="color: #FF0000;">'mouseoverstyle'</span>
        Enabled = <span style="color: #0000ff;">True</span>
        Duration = <span style="color: #cc66cc;">0.200000002980232200</span>
        Inverse = <span style="color: #0000ff;">True</span>
        PropertyName = <span style="color: #FF0000;">'Fill.Color'</span>
        StartValue = claSilver
        StopValue = claTurquoise
        Trigger = <span style="color: #FF0000;">'IsMouseOver=true'</span>
        TriggerInverse = <span style="color: #FF0000;">'IsMouseOver=false'</span>
      <span style="color: #0000ff;">end</span>
      <span style="color: #0000ff;">object</span> TColorAnimation
        StyleName = <span style="color: #FF0000;">'pressedstyle'</span>
        Duration = <span style="color: #cc66cc;">0.200000002980232200</span>
        PropertyName = <span style="color: #FF0000;">'Fill.Color'</span>
        StartValue = claSilver
        StopValue = claYellowgreen
        Trigger = <span style="color: #FF0000;">'IsPressed=true'</span>
        TriggerInverse = <span style="color: #FF0000;">'IsPressed=false'</span>
      <span style="color: #0000ff;">end</span>
    <span style="color: #0000ff;">end</span>
  <span style="color: #0000ff;">end</span>
<span style="color: #0000ff;">end</span></pre></td></tr></table></code><hr />
</div>comment je me suis débrouillé pour obtenir le style ?<br />
J'ai posé un TStylebook, créé mon style (cf le source ci-dessus) et sauvegardé en .fsf vant de supprimer le TStyleBook. <br />
<br />
Inconvénient de cette méthode : au design on a un bouton &quot;standard&quot; ce n'est qu'à l'éxecution que l'on voit le résultat d'où l'idée de créer un composant. <br />
Inconnue actuelle : ce style, évidemment, devra se trouver dans l'unité mais surtout être chargé autrement que par l'instruction que j'ai utilisée<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"> TStyleStreaming.LoadFromResource<span class="br0">&#40;</span>HInstance,<span style="color: #FF0000;">'fmxsvgbuttonstyle'</span>,RT_RCDATA<span class="br0">&#41;</span>;</code><hr />
</div></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p674624d1772264450/environnements-developpement/delphi/composants-fmx/bouton-tsksvg/capture.png/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p674625d1772264995/environnements-developpement/delphi/composants-fmx/bouton-tsksvg/fmxsvgbuttonstyle.gif/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1683/environnements-developpement/delphi/composants-fmx/">Composants FMX</category>
			<dc:creator>SergioMaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182374/environnements-developpement/delphi/composants-fmx/bouton-tsksvg/</guid>
		</item>
	</channel>
</rss>
