<?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 - Langage</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Tout ce qui concerne le langage (POO, syntaxe, message d'erreur...)]]></description>
		<language>fr</language>
		<lastBuildDate>Wed, 03 Jun 2026 21:28:07 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 - Langage</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title><![CDATA[Problème avec l'ajout d'un label aux points d'une série de type TPoint]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183989&amp;goto=newpost</link>
			<pubDate>Mon, 01 Jun 2026 10:02:49 GMT</pubDate>
			<description>Lorsque je trace une fonction...</description>
			<content:encoded><![CDATA[<div>Lorsque je trace une fonction y=f(x) via 2 tableaux Xi, yi j'obtiens  (par exemple dans le cas présent la densité spectrale d'énergie avec la fréquence)<br />
<img src="https://www.developpez.net/forums/attachments/p676637d1780307296/environnements-developpement/delphi/langage/probleme-lajout-label-aux-points-serie-type-tpoint/.png/" border="0" alt="Nom : a.png
Affichages : 85
Taille : 67,7 Ko"  style="float: CONFIG" /><br />
Tout se passe bien. On notera les échelles de l'axe x (fréquences)<br />
<br />
Maintenant j'estime certains pics via des fit paraboliques. On obtient alors<br />
<img src="https://www.developpez.net/forums/attachments/p676638d1780307470/environnements-developpement/delphi/langage/probleme-lajout-label-aux-points-serie-type-tpoint/b.png/" border="0" alt="Nom : b.png
Affichages : 82
Taille : 102,7 Ko"  style="float: CONFIG" /><br />
L'échelle x est toujours OK<br />
Les maximums ont été repérés par l'adjonction de points via:<br />
<b>punkt1.Addxy(d,d6);</b><br />
Maintenant pour des facilités de lecture du graphe j'ai voulu repérer chacun de ces maxima par le N° d'ordre (correspondant à la fenêtre de la légende.<br />
J’ai alors utilisé:<br />
<b>punkt1.Addxy(d,d6,inttostr(n_fit_realized), $555555);</b><br />
Le résultat obtenu est alors:<br />
<img src="https://www.developpez.net/forums/attachments/p676639d1780307724/environnements-developpement/delphi/langage/probleme-lajout-label-aux-points-serie-type-tpoint/c.png/" border="0" alt="Nom : c.png
Affichages : 79
Taille : 115,5 Ko"  style="float: CONFIG" /><br />
<br />
Les N° de pics sont biens reportés mais cela a aussi &quot;ruiné&quot; l'axe x... toutefois &quot;quelque part&quot; il reste OK car les autres courbes sont bien positionnées.<br />
(Toutes les courbes se réfèrent au même axe bottomaxis)<br />
<br />
Comment puis-je afficher les N° tout en préservant mon axe x?<br />
<br />
Merci par avances pour vos remarques et suggestions.</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/p676637d1780307296/environnements-developpement/delphi/langage/probleme-lajout-label-aux-points-serie-type-tpoint/.png/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676638d1780307470/environnements-developpement/delphi/langage/probleme-lajout-label-aux-points-serie-type-tpoint/b.png/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676639d1780307724/environnements-developpement/delphi/langage/probleme-lajout-label-aux-points-serie-type-tpoint/c.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>j.p.mignot</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183989/environnements-developpement/delphi/langage/probleme-l-ajout-d-label-aux-points-d-serie-type-tpoint/</guid>
		</item>
		<item>
			<title>Question sur une fonction test:Tsringlist;</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183922&amp;goto=newpost</link>
			<pubDate>Wed, 27 May 2026 19:23:51 GMT</pubDate>
			<description><![CDATA[j'ai une fonction...]]></description>
			<content:encoded><![CDATA[<div>j'ai une fonction test:Tsringlist;<br />
je me demande si il faut liberer la fonction apres<br />
en faisant un test.free<br />
<br />
example<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 /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">function</span> test:Tstringlist;
<span style="color: #0000ff;">begin</span>
    result:=Tstringlist.Create;
    result.add<span class="br0">&#40;</span><span style="color: #FF0000;">'un'</span><span class="br0">&#41;</span>;
    result.add<span class="br0">&#40;</span><span style="color: #FF0000;">'deux'</span><span class="br0">&#41;</span>;
    result.add<span class="br0">&#40;</span><span style="color: #FF0000;">'trois'</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">begin</span>
    T1:=Tstringlist.Create;
    T1.AddStrings<span class="br0">&#40;</span>test<span class="br0">&#41;</span>;
<span style="color: #808080;">{ici --&gt;}</span>  test.Free;
    T1.Free;
<span style="color: #0000ff;">end</span>.</pre></td></tr></table></code><hr />
</div>je sais que l'on peut faire T1.add mais c'est juste (dans mon example) pour savoir si le Tstringlist est liberé apres la fonction (ou pas) ?.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>ZonZorg</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183922/environnements-developpement/delphi/langage/question-fonction-test-tsringlist/</guid>
		</item>
		<item>
			<title><![CDATA[[D7]  Hint avec Image]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183908&amp;goto=newpost</link>
			<pubDate>Wed, 27 May 2026 11:50:58 GMT</pubDate>
			<description><![CDATA[Bonjour, 
j'ai un...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
j'ai un Checklistbox, dont les items sont des nom de fichiers image Jpeg ou Bmp. J'aimerais que lorsque le pointeur de la souris survole un item, on affiche une vignette de l'image.<br />
<br />
J'ai vu qu'il existe THintWindows, mais je ne trouve pas d'exemple  et je ne sais pas comment faire. Il faudrait surement que je fasse une classe dérivée de THintWindows.<br />
<br />
Quelqu'un a t il un exemple  pour que je puisse démarrer ?<br />
<br />
A+<br />
Charly</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>Charly910</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183908/environnements-developpement/delphi/langage/d7-hint-image/</guid>
		</item>
		<item>
			<title>Recherche de fuite mémoire avec FastMM</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183542&amp;goto=newpost</link>
			<pubDate>Sun, 03 May 2026 07:17:21 GMT</pubDate>
			<description>Bonjour, 
 
cela fait un bail...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
cela fait un bail que je n'ai pas utilisé FastMM et je n'arrive pas à générer le rapport <br />
<img src="https://www.developpez.net/forums/attachments/p676097d1777791602/environnements-developpement/delphi/langage/recherche-fuite-memoire-fastmm/capture.png/" border="0" alt="Nom : Capture.png
Affichages : 93
Taille : 21,7 Ko"  style="float: CONFIG" /><br />
<br />
je joint pour ceux qui connaissent, le fichier FastMM4Options.inc modifié.<br />
<br />
L'unité de mon projet commence bien par FastMM4.<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 /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">program</span> testenumobject;
&nbsp;
<span style="color: #808080;">// en note ce qui a &eacute;t&eacute; modifi&eacute;  </span>
<span style="color: #808080;">{.$define FullDebugMode}</span>
<span style="color: #808080;">{.$define LogMemoryLeakDetailToFile}</span>
&nbsp;
<span style="color: #0000ff;">uses</span>
  FastMM4,</pre></td></tr></table></code><hr />
</div>et pourtant je ne trouve nulle part le fichier :arf: Je dois avoir oublié quelque chose mais quoi ?<br />
comme je ne me souviens plus de la dmarche que je suivais, je ne sais plus si :<br />
Il faut déclarer le fichier inc dans le projet<br />
Il faut mettre le fichier inc dans le repertoire de l'application ou celui des sources <br />
etc...<br />
<br />
Question subsidaire, j'ai FastMM4 mais j'ai vu qu'il y avait la version FastMM5 de dispo dois-je plutôt utiliser cette dernière ?</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/p676097d1777791602/environnements-developpement/delphi/langage/recherche-fuite-memoire-fastmm/capture.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	
		<fieldset class="fieldset">
			<legend>Fichiers attachés</legend>
			<ul>
			<li>
	<img class="inlineimg" src="https://forum.developpez.be/images/attach/txt.gif" alt="Type de fichier : txt" />
	<a href="https://www.developpez.net/forums/attachments/p676099d1777792330/environnements-developpement/delphi/langage/recherche-fuite-memoire-fastmm/fastmm4options.inc.txt/">FastMM4Options.inc.txt</a> 
(20,6 Ko)
</li>
			</ul>
		</fieldset>
	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>SergioMaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183542/environnements-developpement/delphi/langage/recherche-fuite-memoire-fastmm/</guid>
		</item>
		<item>
			<title><![CDATA[[D12 +] utilisation du type record]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183471&amp;goto=newpost</link>
			<pubDate>Wed, 29 Apr 2026 08:51:53 GMT</pubDate>
			<description>Bonjour, 
 
Jusque là je...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Jusque là je n'avais jamais vraiment utilisé de Record voici celui que j'ai créé (vous m'excuserez pour les noms de propriété ce n'est qu'un essai<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 /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">unit</span> dialoguetypes;
&nbsp;
<span style="color: #0000ff;">interface</span>
<span style="color: #0000ff;">type</span>  specialdirs = <span style="color: #0000ff;">Record</span>
  <span style="color: #0000ff;">private</span>
    Fname: <span style="color: #0080ff;">String</span>;
    Ficonnumber: <span style="color: #0080ff;">integer</span>;
    Ffullname: <span style="color: #0080ff;">String</span>;
    <span style="color: #0000ff;">procedure</span> Setfullname<span class="br0">&#40;</span><span style="color: #0000ff;">const</span> Value: <span style="color: #0080ff;">String</span><span class="br0">&#41;</span>;
    <span style="color: #0000ff;">procedure</span> Seticonnumber<span class="br0">&#40;</span><span style="color: #0000ff;">const</span> Value: <span style="color: #0080ff;">integer</span><span class="br0">&#41;</span>;
    <span style="color: #0000ff;">procedure</span> Setname<span class="br0">&#40;</span><span style="color: #0000ff;">const</span> Value: <span style="color: #0080ff;">String</span><span class="br0">&#41;</span>;
  <span style="color: #0000ff;">public</span>
   <span style="color: #0000ff;">property</span> name : <span style="color: #0080ff;">String</span> read Fname write Setname;
   <span style="color: #0000ff;">property</span> fullname : <span style="color: #0080ff;">String</span> read Ffullname write Setfullname;
   <span style="color: #0000ff;">property</span> iconnumber : <span style="color: #0080ff;">integer</span> read Ficonnumber write Seticonnumber;
   <span style="color: #0000ff;">constructor</span> Create<span class="br0">&#40;</span>aname,apath : <span style="color: #0080ff;">string</span>; aicon : <span style="color: #0080ff;">integer</span>=<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>;
  <span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">implementation</span>
&nbsp;
<span style="color: #808080;">{ specialdirs }</span>
&nbsp;
<span style="color: #0000ff;">constructor</span> specialdirs.Create<span class="br0">&#40;</span>aname, apath: <span style="color: #0080ff;">string</span>; aicon: <span style="color: #0080ff;">integer</span>=<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">begin</span>
name:=aname;
fullname:=apath;
iconnumber:=aicon;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">procedure</span> specialdirs.Setfullname<span class="br0">&#40;</span><span style="color: #0000ff;">const</span> Value: <span style="color: #0080ff;">String</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">begin</span>
  Ffullname := Value;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">procedure</span> specialdirs.Seticonnumber<span class="br0">&#40;</span><span style="color: #0000ff;">const</span> Value: <span style="color: #0080ff;">integer</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">begin</span>
  Ficonnumber := Value;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">procedure</span> specialdirs.Setname<span class="br0">&#40;</span><span style="color: #0000ff;">const</span> Value: <span style="color: #0080ff;">String</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">begin</span>
  Fname := Value;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">end</span>.</pre></td></tr></table></code><hr />
</div>voilà comme je voudrais l'utiliser, sauf que j'ai un problème (sinon je n'aurais pas fait de post) <br />
<img src="https://www.developpez.net/forums/attachments/p676025d1777452662/environnements-developpement/delphi/langage/d12-p-utilisation-type-record/capture.png/" border="0" alt="Nom : Capture.png
Affichages : 260
Taille : 17,8 Ko"  style="float: CONFIG" /><br />
<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 /></div></td><td valign="top"><pre style="margin: 0">
  TForm1 = class(TForm)
..
private
   ... 
   property pinneddirs : TList&lt;specialdirs&gt; read Fpinneddirs write Setpinneddirs;
..

procedure TForm1.Setpinneddirs(const Value: TList&lt;specialdirs&gt;);
var anItem : TTreeviewItem;
    d : specialdirs;
begin
  Fpinneddirs := Value;
  for var i:=0 to Fpinneddirs.count-1 do
    begin
      d:=Fpinneddirs[i];
      anitem:= TTreeviewItem.Create(self);
      anItem.Parent:=TreeView1;
      anItem.Text:=d.name;   <font color="#FF0000">// PLANTON voir image, les valeurs ne sont pas bonnes</font>
      anItem.Index:=i;
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var d : specialdirs;
begin
PinnedDirs:=TList&lt;Specialdirs&gt;.Create([d.Create('test','c:\test',1),d.Create('2test','C:\test2')]);
end;</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/p676025d1777452662/environnements-developpement/delphi/langage/d12-p-utilisation-type-record/capture.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>SergioMaster</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183471/environnements-developpement/delphi/langage/d12-p-utilisation-type-record/</guid>
		</item>
		<item>
			<title><![CDATA[afficher l'aide contextuelle fin de ligne dans Tlistbox et Tcombobox]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183047&amp;goto=newpost</link>
			<pubDate>Sun, 05 Apr 2026 01:34:37 GMT</pubDate>
			<description><![CDATA[je voudrai afficher l'aide...]]></description>
			<content:encoded><![CDATA[<div>je voudrai afficher l'aide contextuelle pour visualiser le reste de chaques lignes dans un listbox et combobox<br />
<br />
<img src="https://www.developpez.net/forums/attachments/p675421d1775352145/environnements-developpement/delphi/langage/afficher-l-aide-contextuelle-fin-ligne-tlistbox-tcombobox/pastisserie.jpg/" border="0" alt="Nom : pastisserie.jpg
Affichages : 327
Taille : 40,3 Ko"  style="float: CONFIG" /><br />
l'exemple zippé :<a href="https://www.developpez.net/forums/attachments/p675431d1775390690/environnements-developpement/delphi/langage/afficher-l-aide-contextuelle-fin-ligne-tlistbox-tcombobox/patisseries.zip/"  title="Nom : patisseries.zip
Affichages : 94
Taille : 213,0 Ko">patisseries.zip</a><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="40"><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 />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br />149<br />150<br />151<br />152<br />153<br />154<br />155<br />156<br />157<br />158<br />159<br />160<br />161<br />162<br />163<br />164<br />165<br />166<br />167<br />168<br />169<br />170<br />171<br />172<br />173<br />174<br />175<br />176<br />177<br />178<br />179<br />180<br />181<br />182<br />183<br />184<br />185<br />186<br />187<br />188<br />189<br />190<br />191<br />192<br />193<br />194<br />195<br />196<br />197<br />198<br />199<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">unit</span> Unit1;
&nbsp;
<span style="color: #0000ff;">interface</span>
&nbsp;
<span style="color: #0000ff;">uses</span>
  Windows,
  Classes , SysUtils , Forms , Controls , Graphics , Dialogs , StdCtrls, Types,Messages;
<span style="color: #0000ff;">type</span>
  TForm1 = <span style="color: #0000ff;">class</span><span class="br0">&#40;</span>TForm<span class="br0">&#41;</span>
    ListBox: TListBox;
    ListCombo: TComboBox;
    Label1: TLabel;
    <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> ListBoxDrawItem<span class="br0">&#40;</span>Control: TWinControl; Index: <span style="color: #0080ff;">Integer</span>;   Rect: TRect; State: TOwnerDrawState<span class="br0">&#41;</span>;
    <span style="color: #0000ff;">procedure</span> ListBoxMeasureItem<span class="br0">&#40;</span>Control: TWinControl; Index: <span style="color: #0080ff;">Integer</span>; <span style="color: #0000ff;">var</span> Height: <span style="color: #0080ff;">Integer</span><span class="br0">&#41;</span>;
    <span style="color: #0000ff;">procedure</span> ListComboExit<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>;
    <span style="color: #0000ff;">procedure</span> ListComboEnter<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>;
  <span style="color: #0000ff;">private</span>
    <span style="color: #0000ff;">PROCEDURE</span> AppShowHint<span class="br0">&#40;</span><span style="color: #0000ff;">VAR</span> HintStr: <span style="color: #0080ff;">STRING</span>; <span style="color: #0000ff;">VAR</span> CanShow: <span style="color: #0080ff;">Boolean</span>; <span style="color: #0000ff;">VAR</span> HintInfo: THintInfo<span class="br0">&#41;</span>; <span style="color: #808080;">// gestion de l'aide (dans listtitre)</span>
    <span style="color: #0000ff;">procedure</span> ApplicationIdle<span class="br0">&#40;</span>sender: <span style="color: #0080ff;">TObject</span>; <span style="color: #0000ff;">var</span> Done: <span style="color: #0080ff;">boolean</span><span class="br0">&#41;</span>;
    <span style="color: #808080;">{ D&eacute;clarations priv&eacute;es }</span>
  <span style="color: #0000ff;">public</span>
    <span style="color: #808080;">{ D&eacute;clarations publiques }</span>
  <span style="color: #0000ff;">END</span>;
&nbsp;
&nbsp;
<span style="color: #0000ff;">var</span>
  Form1: TForm1;
  Comboboxexit:<span style="color: #0080ff;">Boolean</span>;
<span style="color: #0000ff;">implementation</span>
&nbsp;
<span style="color: #808080;">{$R *.dfm}</span>
&nbsp;
<span style="color: #0000ff;">procedure</span> TForm1.ListBoxDrawItem<span class="br0">&#40;</span>Control: TWinControl; Index: <span style="color: #0080ff;">Integer</span>; Rect: TRect; State: TOwnerDrawState<span class="br0">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">PROCEDURE</span> Drawcolored<span class="br0">&#40;</span>Canvas: Tcanvas; Atext: <span style="color: #0080ff;">STRING</span>; Rect: TRECT; STATE: Townerdrawstate;AColor,Bcolor:<span style="color: #0080ff;">Longint</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">BEGIN</span>
      <span style="color: #0000ff;">WITH</span> Canvas <span style="color: #0000ff;">DO</span>
      <span style="color: #0000ff;">BEGIN</span>
            <span style="color: #0000ff;">IF</span> <span class="br0">&#40;</span>odSelected <span style="color: #0000ff;">in</span> State<span class="br0">&#41;</span> <span style="color: #0000ff;">THEN</span>
            <span style="color: #0000ff;">BEGIN</span>
                  Font.Color  := Acolor;
                  Brush.Color := Bcolor;
            <span style="color: #0000ff;">END</span>
            <span style="color: #0000ff;">ELSE</span>
            <span style="color: #0000ff;">BEGIN</span>
                  Font.Color  := Bcolor;
                  Brush.Color := Acolor;
            <span style="color: #0000ff;">END</span>;
            Pen.Color := Acolor;
            Rectangle<span class="br0">&#40;</span>Rect<span class="br0">&#41;</span>;
            Brush.Style := bsClear;
            Fillrect<span class="br0">&#40;</span>rect<span class="br0">&#41;</span>;
            Textout<span class="br0">&#40;</span>Rect.Left + <span style="color: #cc66cc;">2</span> , Rect.Top, Atext<span class="br0">&#41;</span>;
      <span style="color: #0000ff;">END</span>;
<span style="color: #0000ff;">END</span>; <span style="color: #808080;">{Drawcolored}</span>
&nbsp;
<span style="color: #0000ff;">BEGIN</span>
      <span style="color: #0000ff;">IF</span> <span class="br0">&#40;</span>Control <span style="color: #0000ff;">Is</span>  Tlistbox<span class="br0">&#41;</span> <span style="color: #0000ff;">THEN</span> <span style="color: #0000ff;">WITH</span> <span class="br0">&#40;</span>Control <span style="color: #0000ff;">As</span>  Tlistbox<span class="br0">&#41;</span> <span style="color: #0000ff;">DO</span> Drawcolored<span class="br0">&#40;</span>Canvas,ITEMS<span class="br0">&#91;</span>Index<span class="br0">&#93;</span>,Rect,STATE,Color,Font.Color<span class="br0">&#41;</span>;
      <span style="color: #0000ff;">IF</span> <span class="br0">&#40;</span>Control <span style="color: #0000ff;">Is</span> Tcombobox<span class="br0">&#41;</span> <span style="color: #0000ff;">THEN</span> <span style="color: #0000ff;">WITH</span> <span class="br0">&#40;</span>Control <span style="color: #0000ff;">As</span> Tcombobox<span class="br0">&#41;</span> <span style="color: #0000ff;">DO</span> Drawcolored<span class="br0">&#40;</span>Canvas,ITEMS<span class="br0">&#91;</span>Index<span class="br0">&#93;</span>,Rect,STATE,Color,Font.Color<span class="br0">&#41;</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">procedure</span> TForm1.ListBoxMeasureItem<span class="br0">&#40;</span>Control: TWinControl; Index: <span style="color: #0080ff;">Integer</span>;  <span style="color: #0000ff;">var</span> Height: <span style="color: #0080ff;">Integer</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">BEGIN</span>
      <span style="color: #0000ff;">IF</span> <span class="br0">&#40;</span>Control <span style="color: #0000ff;">IS</span> Tcombobox<span class="br0">&#41;</span> <span style="color: #0000ff;">THEN</span> Height := trunc<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="br0">&#40;</span>Control <span style="color: #0000ff;">As</span> Tcombobox<span class="br0">&#41;</span>.Itemheight+<span style="color: #cc66cc;">2</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
      <span style="color: #0000ff;">IF</span> <span class="br0">&#40;</span>Control <span style="color: #0000ff;">IS</span> Tlistbox<span class="br0">&#41;</span> <span style="color: #0000ff;">THEN</span> Height := trunc<span class="br0">&#40;</span><span class="br0">&#40;</span><span class="br0">&#40;</span>Control <span style="color: #0000ff;">As</span> Tlistbox<span class="br0">&#41;</span>.Itemheight+<span style="color: #cc66cc;">2</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">END</span>;
&nbsp;
<span style="color: #0000ff;">procedure</span> TForm1.ListComboExit<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>; <span style="color: #0000ff;">begin</span> Comboboxexit:=<span style="color: #0000ff;">true</span>; <span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">procedure</span> TForm1.ListComboEnter<span class="br0">&#40;</span>Sender: <span style="color: #0080ff;">TObject</span><span class="br0">&#41;</span>; <span style="color: #0000ff;">begin</span> Comboboxexit:=<span style="color: #0000ff;">false</span>; <span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #808080;">{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}</span>
<span style="color: #0000ff;">PROCEDURE</span> Tform1.Appshowhint<span class="br0">&#40;</span><span style="color: #0000ff;">VAR</span> Hintstr: <span style="color: #0080ff;">STRING</span>; <span style="color: #0000ff;">VAR</span> Canshow: <span style="color: #0080ff;">BOOLEAN</span>; <span style="color: #0000ff;">VAR</span> Hintinfo: Thintinfo<span class="br0">&#41;</span>;
<span style="color: #0000ff;">VAR</span>   Lstindex,Cpi,Maxlength,Listtitrewidth : <span style="color: #0080ff;">INTEGER</span>;
      lngtmp:<span style="color: #0080ff;">STRING</span>;
      ComboBoxpos: TRect;
      State: TOwnerDrawState;
&nbsp;
<span style="color: #0000ff;">PROCEDURE</span> hintcolored<span class="br0">&#40;</span>Canvas: Tcanvas;<span style="color: #0000ff;">VAR</span> Hintinfo: Thintinfo;Itemindex,Lstindex:<span style="color: #0080ff;">Integer</span>;lngtmp:<span style="color: #0080ff;">String</span>;AColor,Bcolor:<span style="color: #0080ff;">Longint</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">BEGIN</span>
      <span style="color: #0000ff;">WITH</span> Hintinfo <span style="color: #0000ff;">DO</span>
      <span style="color: #0000ff;">BEGIN</span>
            <span style="color: #0000ff;">IF</span> hintpos.X+Canvas.TEXTWIDTH<span class="br0">&#40;</span>lngtmp<span class="br0">&#41;</span>&gt;screen.DesktopWidth <span style="color: #0000ff;">THEN</span>
            <span style="color: #0000ff;">BEGIN</span>
                  Cpi:=<span style="color: #cc66cc;">0</span>;
                  <span style="color: #0000ff;">WHILE</span> <span class="br0">&#40;</span>hintpos.X+Canvas.TEXTWIDTH<span class="br0">&#40;</span>COPY<span class="br0">&#40;</span>lngtmp,<span style="color: #cc66cc;">1</span>,Cpi+<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span>&lt;screen.DesktopWidth<span class="br0">&#41;</span> <span style="color: #0000ff;">AND</span> <span class="br0">&#40;</span>CPI&lt;LENGTH<span class="br0">&#40;</span>lngtmp<span class="br0">&#41;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">DO</span> INC<span class="br0">&#40;</span>Cpi<span class="br0">&#41;</span>;
                  lngtmp := COPY<span class="br0">&#40;</span>lngtmp,<span style="color: #cc66cc;">1</span>,CPI-<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>;
            <span style="color: #0000ff;">END</span>;
            <span style="color: #0000ff;">IF</span> Cpi&gt;<span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">THEN</span>
            <span style="color: #0000ff;">BEGIN</span>
                  Hintstr:=lngtmp;
                  <span style="color: #0000ff;">IF</span> Itemindex = Lstindex <span style="color: #0000ff;">THEN</span>
                  <span style="color: #0000ff;">BEGIN</span>
                         Hintcolor:=Bcolor;
                         Screen.Hintfont.Color:= AColor;;
                  <span style="color: #0000ff;">END</span>
                  <span style="color: #0000ff;">ELSE</span>
                  <span style="color: #0000ff;">BEGIN</span>
                        Hintcolor:= AColor;
                        Screen.Hintfont.Color:= Bcolor;
                  <span style="color: #0000ff;">END</span>;
                  Reshowtimeout := <span style="color: #cc66cc;">500</span>;
                  Hidetimeout := <span style="color: #cc66cc;">2500</span>;
                  Canshow := <span style="color: #0000ff;">TRUE</span>;
            <span style="color: #0000ff;">END</span>;
     <span style="color: #0000ff;">END</span>;
<span style="color: #0000ff;">END</span>;
&nbsp;
<span style="color: #0000ff;">BEGIN</span>
      Canshow := <span style="color: #0000ff;">FALSE</span>;
      <span style="color: #0000ff;">WITH</span> Hintinfo <span style="color: #0000ff;">DO</span>
      <span style="color: #0000ff;">BEGIN</span>
            <span style="color: #0000ff;">IF</span> <span class="br0">&#40;</span>Hintcontrol <span style="color: #0000ff;">Is</span> TCombobox<span class="br0">&#41;</span> <span style="color: #0000ff;">THEN</span> <span style="color: #0000ff;">WITH</span> TCombobox<span class="br0">&#40;</span>Hintcontrol<span class="br0">&#41;</span> <span style="color: #0000ff;">DO</span>
            <span style="color: #0000ff;">BEGIN</span>
                  GetWindowRect<span class="br0">&#40;</span>Handle, ComboBoxpos<span class="br0">&#41;</span>;
                  hintpos.Y:=ComboBoxpos.Top;
                  Listtitrewidth:=Width-GetSystemMetrics<span class="br0">&#40;</span>SM_CXFRAME<span class="br0">&#41;</span> - GetSystemMetrics<span class="br0">&#40;</span>SM_CXVSCROLL<span class="br0">&#41;</span>;
                  <span style="color: #0000ff;">IF</span> Canvas.TEXTWIDTH<span class="br0">&#40;</span>TEXT<span class="br0">&#41;</span> &gt; Listtitrewidth <span style="color: #0000ff;">THEN</span>
                  <span style="color: #0000ff;">BEGIN</span>
                        lngtmp := TEXT;
                        Maxlength := <span style="color: #cc66cc;">0</span>;
                        Cpi:=<span style="color: #cc66cc;">1</span>;
                        <span style="color: #0000ff;">WHILE</span> <span class="br0">&#40;</span>Canvas.TEXTWIDTH<span class="br0">&#40;</span>COPY<span class="br0">&#40;</span>lngtmp,<span style="color: #cc66cc;">1</span>,Cpi<span class="br0">&#41;</span><span class="br0">&#41;</span>&lt;=Listtitrewidth<span class="br0">&#41;</span> <span style="color: #0000ff;">AND</span> <span class="br0">&#40;</span>Cpi&lt;=LENGTH<span class="br0">&#40;</span>TEXT<span class="br0">&#41;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">DO</span>
                        <span style="color: #0000ff;">BEGIN</span>
                              <span style="color: #0000ff;">IF</span> TEXT<span class="br0">&#91;</span>Cpi<span class="br0">&#93;</span>=<span style="color: #FF0000;">' '</span> <span style="color: #0000ff;">THEN</span> Maxlength:=Cpi;
                              INC<span class="br0">&#40;</span>Cpi<span class="br0">&#41;</span>;
                        <span style="color: #0000ff;">END</span>;
                        lngtmp := COPY<span class="br0">&#40;</span>TEXT,Maxlength+<span style="color: #cc66cc;">1</span>,LENGTH<span class="br0">&#40;</span>TEXT<span class="br0">&#41;</span><span class="br0">&#41;</span>;
                        hintpos.X:=ComboBoxpos.Left+<span style="color: #cc66cc;">2</span>+Canvas.TEXTWIDTH<span class="br0">&#40;</span>COPY<span class="br0">&#40;</span>TEXT,<span style="color: #cc66cc;">1</span>,Maxlength<span class="br0">&#41;</span><span class="br0">&#41;</span>;
                        hintcolored<span class="br0">&#40;</span>Canvas,Hintinfo,<span style="color: #cc66cc;">0</span>,<span style="color: #0080ff;">integer</span><span class="br0">&#40;</span>Comboboxexit<span class="br0">&#41;</span>,lngtmp,color,font.color<span class="br0">&#41;</span>;
                  <span style="color: #0000ff;">END</span>;<span style="color: #808080;">{}</span>
            <span style="color: #0000ff;">END</span>;
            <span style="color: #0000ff;">IF</span> <span class="br0">&#40;</span>Hintcontrol <span style="color: #0000ff;">Is</span> TLISTBOX<span class="br0">&#41;</span> <span style="color: #0000ff;">THEN</span> <span style="color: #0000ff;">WITH</span> TLISTBOX<span class="br0">&#40;</span>Hintcontrol<span class="br0">&#41;</span> <span style="color: #0000ff;">DO</span>
            <span style="color: #0000ff;">BEGIN</span>
                  Lstindex := Itematpos<span class="br0">&#40;</span>Cursorpos, <span style="color: #0000ff;">TRUE</span><span class="br0">&#41;</span>;
                  <span style="color: #0000ff;">IF</span> Lstindex &gt; -<span style="color: #cc66cc;">1</span> <span style="color: #0000ff;">THEN</span>
                  <span style="color: #0000ff;">BEGIN</span> <span style="color: #808080;">// Listbox Item Under Mouse</span>
                        Listtitrewidth:=Width-GetSystemMetrics<span class="br0">&#40;</span>SM_CXFRAME<span class="br0">&#41;</span>;
                        <span style="color: #0000ff;">IF</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>Getwindowlong<span class="br0">&#40;</span>HANDLE, Gwl_Style<span class="br0">&#41;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">AND</span> Ws_Vscroll<span class="br0">&#41;</span> &lt;&gt; <span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">THEN</span> Listtitrewidth:=Listtitrewidth - GetSystemMetrics<span class="br0">&#40;</span>SM_CXVSCROLL<span class="br0">&#41;</span>;
                        <span style="color: #0000ff;">IF</span> Canvas.TEXTWIDTH<span class="br0">&#40;</span>ITEMS<span class="br0">&#91;</span>Lstindex<span class="br0">&#93;</span><span class="br0">&#41;</span> &gt; Listtitrewidth <span style="color: #0000ff;">THEN</span>
                        <span style="color: #0000ff;">BEGIN</span>
                              Hintstr := ITEMS<span class="br0">&#91;</span>Lstindex<span class="br0">&#93;</span>;
                              Maxlength := <span style="color: #cc66cc;">0</span>;
                              Cpi:=<span style="color: #cc66cc;">1</span>;
                              <span style="color: #0000ff;">WHILE</span> <span class="br0">&#40;</span>Canvas.TEXTWIDTH<span class="br0">&#40;</span>COPY<span class="br0">&#40;</span>ITEMS<span class="br0">&#91;</span>Lstindex<span class="br0">&#93;</span>,<span style="color: #cc66cc;">1</span>,Cpi<span class="br0">&#41;</span><span class="br0">&#41;</span>&lt;=Listtitrewidth<span class="br0">&#41;</span> <span style="color: #0000ff;">AND</span> <span class="br0">&#40;</span>Cpi&lt;=LENGTH<span class="br0">&#40;</span>ITEMS<span class="br0">&#91;</span>Lstindex<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">DO</span>
                              <span style="color: #0000ff;">BEGIN</span>
                                    <span style="color: #0000ff;">IF</span> ITEMS<span class="br0">&#91;</span>Lstindex<span class="br0">&#93;</span><span class="br0">&#91;</span>Cpi<span class="br0">&#93;</span>=<span style="color: #FF0000;">' '</span> <span style="color: #0000ff;">THEN</span> Maxlength:=Cpi;
                                    INC<span class="br0">&#40;</span>Cpi<span class="br0">&#41;</span>;
                              <span style="color: #0000ff;">END</span>;<span style="color: #808080;">{}</span>
                              lngtmp := COPY<span class="br0">&#40;</span>ITEMS<span class="br0">&#91;</span>Lstindex<span class="br0">&#93;</span>,Maxlength+<span style="color: #cc66cc;">1</span>,LENGTH<span class="br0">&#40;</span>ITEMS<span class="br0">&#91;</span>Lstindex<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
                              <span style="color: #808080;">// positionnement du hint</span>
                              Hintpos := Clienttoscreen<span class="br0">&#40;</span>Point<span class="br0">&#40;</span>Canvas.TEXTWIDTH<span class="br0">&#40;</span>COPY<span class="br0">&#40;</span>ITEMS<span class="br0">&#91;</span>Lstindex<span class="br0">&#93;</span>,<span style="color: #cc66cc;">1</span>,Maxlength<span class="br0">&#41;</span><span class="br0">&#41;</span>-<span style="color: #cc66cc;">1</span>, Itemheight * <span class="br0">&#40;</span>Lstindex - Topindex<span class="br0">&#41;</span>-GetSystemMetrics<span class="br0">&#40;</span>SM_CYFRAME<span class="br0">&#41;</span>+<span style="color: #cc66cc;">4</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
                              hintcolored<span class="br0">&#40;</span>Canvas,Hintinfo,Itemindex,Lstindex,lngtmp,color,font.color<span class="br0">&#41;</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>;
<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>
      Listbox.ItemIndex:=<span style="color: #cc66cc;">0</span>;
      ListCombo.ItemIndex:=<span style="color: #cc66cc;">0</span>;
      Comboboxexit:=<span style="color: #0000ff;">true</span>;
      Application.ShowHint := <span style="color: #0000ff;">True</span>;
      Application.OnIdle := ApplicationIdle;
      Application.OnShowHint := AppShowHint;
<span style="color: #0000ff;">END</span>;
&nbsp;
<span style="color: #0000ff;">procedure</span> TForm1.ApplicationIdle<span class="br0">&#40;</span>sender: <span style="color: #0080ff;">TObject</span>; <span style="color: #0000ff;">var</span> Done: <span style="color: #0080ff;">boolean</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">var</span>
  pt: TPoint;
  wnd: HWND;
  lngtmp: <span style="color: #0000ff;">array</span><span class="br0">&#91;</span><span style="color: #cc66cc;">0</span>..<span style="color: #cc66cc;">128</span><span class="br0">&#93;</span> <span style="color: #0000ff;">of</span> <span style="color: #0080ff;">Char</span>;
  cpi: <span style="color: #0080ff;">Integer</span>;
&nbsp;
<span style="color: #0000ff;">begin</span>
  GetCursorPos<span class="br0">&#40;</span>pt<span class="br0">&#41;</span>;
  wnd := WindowFromPoint<span class="br0">&#40;</span>pt<span class="br0">&#41;</span>;
  <span style="color: #0000ff;">If</span> wnd &lt;&gt; <span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">then</span>
    <span style="color: #0000ff;">begin</span>
      lngtmp<span class="br0">&#91;</span><span style="color: #cc66cc;">0</span><span class="br0">&#93;</span> := <span style="color: #cc66cc;">#0</span>;
      GetClassName<span class="br0">&#40;</span>wnd, lngtmp, SizeOf<span class="br0">&#40;</span>lngtmp<span class="br0">&#41;</span><span class="br0">&#41;</span>;
      <span style="color: #0000ff;">if</span> StrIComp<span class="br0">&#40;</span>lngtmp, <span style="color: #FF0000;">'ComboLBox'</span><span class="br0">&#41;</span> = <span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">then</span>
        <span style="color: #0000ff;">begin</span>
          Windows.ScreenToClient<span class="br0">&#40;</span>wnd, pt<span class="br0">&#41;</span>;
          cpi := SendMessage<span class="br0">&#40;</span>wnd, LB_ITEMFROMPOINT, <span style="color: #cc66cc;">0</span>, <span style="color: #0080ff;">Integer</span><span class="br0">&#40;</span>PointToSmallpoint<span class="br0">&#40;</span>pt<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;
          <span style="color: #0000ff;">if</span> cpi &gt;= <span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">then</span>
            <span style="color: #0000ff;">begin</span>
              SendMessage<span class="br0">&#40;</span>wnd, LB_GETTEXT, cpi, <span style="color: #0080ff;">Integer</span><span class="br0">&#40;</span>@lngtmp<span class="br0">&#41;</span><span class="br0">&#41;</span>;
              Label1.Caption := lngtmp;
              exit;
            <span style="color: #0000ff;">end</span>;
        <span style="color: #0000ff;">end</span>;
    <span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">END</span>.</pre></td></tr></table></code><hr />
</div>la fiche: <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 />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">object</span> Form1: TForm1
  Left = <span style="color: #cc66cc;">541</span>
  Top = <span style="color: #cc66cc;">168</span>
  Hint = <span style="color: #FF0000;">'test'</span>
  BorderStyle = bsSingle
  Caption = <span style="color: #FF0000;">'Patisserie'</span>
  ClientHeight = <span style="color: #cc66cc;">297</span>
  ClientWidth = <span style="color: #cc66cc;">232</span>
  Color = <span style="color: #cc66cc;">8534605</span>
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -<span style="color: #cc66cc;">11</span>
  Font.Name = <span style="color: #FF0000;">'MS Sans Serif'</span>
  Font.Style = <span class="br0">&#91;</span><span class="br0">&#93;</span>
  OldCreateOrder = <span style="color: #0000ff;">False</span>
  Position = poScreenCenter
  ShowHint = <span style="color: #0000ff;">True</span>
  OnCreate = FormCreate
  PixelsPerInch = <span style="color: #cc66cc;">96</span>
  TextHeight = <span style="color: #cc66cc;">13</span>
  <span style="color: #0000ff;">object</span> Label1: TLabel
    Left = <span style="color: #cc66cc;">8</span>
    Top = <span style="color: #cc66cc;">248</span>
    Width = <span style="color: #cc66cc;">32</span>
    Height = <span style="color: #cc66cc;">13</span>
    Caption = <span style="color: #FF0000;">'Label1'</span>
  <span style="color: #0000ff;">end</span>
  <span style="color: #0000ff;">object</span> ListBox: TListBox
    Left = <span style="color: #cc66cc;">8</span>
    Top = <span style="color: #cc66cc;">24</span>
    Width = <span style="color: #cc66cc;">217</span>
    Height = <span style="color: #cc66cc;">208</span>
    Style = lbOwnerDrawFixed
    Color = <span style="color: #cc66cc;">12446463</span>
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clBlue
    Font.Height = -<span style="color: #cc66cc;">12</span>
    Font.Name = <span style="color: #FF0000;">'MS Sans Serif'</span>
    Font.Style = <span class="br0">&#91;</span><span class="br0">&#93;</span>
    ItemHeight = <span style="color: #cc66cc;">13</span>
    Items.Strings = <span class="br0">&#40;</span>
      <span style="color: #FF0000;">'p&acirc;tisseries fran&ccedil;aises typiques :  Le Paris-Brest'</span>
      <span style="color: #FF0000;">'p&acirc;tisseries fran&ccedil;aises typiques :  La Brioche'</span>
      <span style="color: #FF0000;">'p&acirc;tisseries fran&ccedil;aises typiques :  Les Chouquettes'</span>
      <span style="color: #FF0000;">'p&acirc;tisseries fran&ccedil;aises typiques :  Le Chou'</span>
      <span style="color: #FF0000;">'p&acirc;tisseries fran&ccedil;aises typiques :  L&#146;&Eacute;clair'</span>
      <span style="color: #FF0000;">'p&acirc;tisseries fran&ccedil;aises typiques :  La Charlotte aux fraises'</span><span class="br0">&#41;</span>
    ParentFont = <span style="color: #0000ff;">False</span>
    ParentShowHint = <span style="color: #0000ff;">False</span>
    ShowHint = <span style="color: #0000ff;">True</span>
    TabOrder = <span style="color: #cc66cc;">1</span>
    OnDrawItem = ListBoxDrawItem
    OnMeasureItem = ListBoxMeasureItem
  <span style="color: #0000ff;">end</span>
  <span style="color: #0000ff;">object</span> ListCombo: TComboBox
    Left = <span style="color: #cc66cc;">8</span>
    Top = <span style="color: #cc66cc;">2</span>
    Width = <span style="color: #cc66cc;">217</span>
    Height = <span style="color: #cc66cc;">19</span>
    Style = csOwnerDrawFixed
    Color = <span style="color: #cc66cc;">12446463</span>
    DropDownCount = <span style="color: #cc66cc;">13</span>
    Font.Charset = ANSI_CHARSET
    Font.Color = clRed
    Font.Height = -<span style="color: #cc66cc;">12</span>
    Font.Name = <span style="color: #FF0000;">'MS Sans Serif'</span>
    Font.Style = <span class="br0">&#91;</span><span class="br0">&#93;</span>
    ItemHeight = <span style="color: #cc66cc;">13</span>
    ParentFont = <span style="color: #0000ff;">False</span>
    ParentShowHint = <span style="color: #0000ff;">False</span>
    ShowHint = <span style="color: #0000ff;">True</span>
    TabOrder = <span style="color: #cc66cc;">0</span>
    OnDrawItem = ListBoxDrawItem
    OnEnter = ListComboEnter
    OnExit = ListComboExit
    OnMeasureItem = ListBoxMeasureItem
    Items.Strings = <span class="br0">&#40;</span>
      <span style="color: #FF0000;">'p&acirc;tisseries fran&ccedil;aises typiques :  Le Paris-Brest'</span>
      <span style="color: #FF0000;">'p&acirc;tisseries fran&ccedil;aises typiques :  La Brioche'</span>
      <span style="color: #FF0000;">'p&acirc;tisseries fran&ccedil;aises typiques :  Les Chouquettes'</span>
      <span style="color: #FF0000;">'p&acirc;tisseries fran&ccedil;aises typiques :  Le Chou'</span>
      <span style="color: #FF0000;">'p&acirc;tisseries fran&ccedil;aises typiques :  L&#146;&Eacute;clair'</span>
      <span style="color: #FF0000;">'p&acirc;tisseries fran&ccedil;aises typiques :  La Charlotte aux fraises'</span><span class="br0">&#41;</span>
  <span style="color: #0000ff;">end</span>
<span style="color: #0000ff;">end</span></pre></td></tr></table></code><hr />
</div>cela fonctionne bien dans un listbox par contre je n'arrive pas a le faire dans le menu dérroulant du tcombobox <br />
il n'y a pas de :  Lstindex := Itematpos(Cursorpos, TRUE); dans Tcombobox<br />
ensuite je suis passé par 'ApplicationIdle' pour savoir quel item est affiché (Label1.Caption) mais je ne sais pas comment l'afficher dans l'aide contextuelle.<br />
<br />
merci de vos aides</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/p675421d1775352145/environnements-developpement/delphi/langage/afficher-l-aide-contextuelle-fin-ligne-tlistbox-tcombobox/pastisserie.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	
		<fieldset class="fieldset">
			<legend>Fichiers attachés</legend>
			<ul>
			<li>
	<img class="inlineimg" src="https://forum.developpez.be/images/attach/zip.gif" alt="Type de fichier : zip" />
	<a href="https://www.developpez.net/forums/attachments/p675431d1775390690/environnements-developpement/delphi/langage/afficher-l-aide-contextuelle-fin-ligne-tlistbox-tcombobox/patisseries.zip/">patisseries.zip</a> 
(213,0 Ko)
</li>
			</ul>
		</fieldset>
	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>ZonZorg</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183047/environnements-developpement/delphi/langage/afficher-l-aide-contextuelle-fin-ligne-tlistbox-tcombobox/</guid>
		</item>
		<item>
			<title>fermeture de Fiche non modal</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182773&amp;goto=newpost</link>
			<pubDate>Fri, 20 Mar 2026 09:03:47 GMT</pubDate>
			<description><![CDATA[Bonjour, 
 
J'aurais besoin...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
J'aurais besoin d'une précision sur les fermeture de Fiche non Modal:<br />
<br />
je ferme et libère la Form 2 de cette manière:<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 /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">procedure</span> TForm2.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;">begin</span>
<span style="color: #0000ff;">if</span> Sender = Form2 <span style="color: #0000ff;">then</span> Action:=caFree;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">procedure</span> TForm2.FormDestroy<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: #0000ff;">if</span> Sender=Form2 <span style="color: #0000ff;">then</span> Form2:=<span style="color: #0000ff;">nil</span>;
<span style="color: #0000ff;">end</span>;</pre></td></tr></table></code><hr />
</div>Est ce que le code dans FormDestroy est utile ?<br />
<br />
L'appel a été fait comme ceci depuis Form1<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="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 /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
  form2:=Tform2.Create<span class="br0">&#40;</span><span style="color: #0000ff;">Self</span><span class="br0">&#41;</span>;
  <span style="color: #0000ff;">try</span>
  form2.Show;
  <span style="color: #0000ff;">except</span>
  FreeAndNil<span class="br0">&#40;</span>form2<span class="br0">&#41;</span>;</pre></td></tr></table></code><hr />
</div><br />
<br />
Cordialement</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>looping</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182773/environnements-developpement/delphi/langage/fermeture-fiche-non-modal/</guid>
		</item>
		<item>
			<title><![CDATA[Equivalent d'un case avec String et même plus]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182657&amp;goto=newpost</link>
			<pubDate>Sun, 15 Mar 2026 20:38:35 GMT</pubDate>
			<description>Bonsoir, 
 
Petite réflexion...</description>
			<content:encoded><![CDATA[<div>Bonsoir,<br />
<br />
Petite réflexion du week-end concernant l'instruction case de Delphi qui n'autorise que des types ordinaux. Donc, ne fonctionne pas par exemple avec une string. Il existe plusieurs manières de contourner et de parvenir au résultat telles que ce qui est proposé dans la <a href="https://delphi.developpez.com/faq/?page=Chaines-de-caracteres#Comment-faire-un-Case-Of-avec-des-String" target="_blank">FAQ de Développez</a>.<br />
<br />
En Java par exemple, l'instruction Switch a évolué lors des versions récentes et en plus d'accepter les string, l'instruction switch peut renvoyer une valeur pour initialiser une variable. J'ai donc essayé de trouver une solution qui permette de faire l'équivalent d'un case mais avec n'importe quel type (et pas en ajoutant que la possibilité avec une string) et qui permette d'initialiser la valeur d'une variable.<br />
<br />
L'idée est simplement d'utiliser les TDictionary. Dans le projet exemple joint (compatible en l'état avec Delphi 13 car utilisation de l'opérateur ternaire mais facilement modifiable pour le rendre compatible avec Delphi 12 et 11), je présente 3 exemples basés sur le principe suivant.<br />
Exemple d'un case potentiel sur une variable de type string pour alimenter une variable de type integer :<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="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 /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">var</span> nb := <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">case</span> uneString <span style="color: #0000ff;">of</span>
  <span style="color: #FF0000;">'un'</span>: nb := <span style="color: #cc66cc;">1</span>;
  <span style="color: #FF0000;">'deux'</span>: nb := <span style="color: #cc66cc;">2</span>;
  <span style="color: #FF0000;">'trois'</span>: nb := <span style="color: #cc66cc;">3</span>;
<span style="color: #0000ff;">end</span>;</pre></td></tr></table></code><hr />
</div>On peut initialiser la variable nb de la manière suivante :<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 /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080;">// Initialiser un TDictionary </span>
<span style="color: #0000ff;">var</span> dSimple:= TDictionary &lt;<span style="color: #0080ff;">string</span>, integer&gt;.Create;
dSimple.add<span class="br0">&#40;</span><span style="color: #FF0000;">'un'</span>, <span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>;
dSimple.add<span class="br0">&#40;</span><span style="color: #FF0000;">'deux'</span>, <span style="color: #cc66cc;">2</span><span class="br0">&#41;</span>;
dSimple.add<span class="br0">&#40;</span><span style="color: #FF0000;">'trois'</span>, <span style="color: #cc66cc;">3</span><span class="br0">&#41;</span>;
&nbsp;
<span class="br0">&#91;</span>...<span class="br0">&#93;</span>
&nbsp;
<span style="color: #808080;">// Initialisation de la variable nb </span>
<span style="color: #0000ff;">var</span> aValue := <span style="color: #cc66cc;">0</span>;
<span style="color: #0000ff;">var</span> nb := <span style="color: #0000ff;">if</span> dSimple.TryGetValue<span class="br0">&#40;</span>cbeSimple.Text.ToLower, aValue<span class="br0">&#41;</span>
                     <span style="color: #0000ff;">then</span> aValue
                     <span style="color: #0000ff;">else</span> <span style="color: #cc66cc;">0</span>;</pre></td></tr></table></code><hr />
</div>Avantages : c'est donc l'équivalent d'un case sur une variable de type string, qui permet d'initialiser une variable et il serait même possible de rajouter dynamiquement des cas non prévus dans le code initial (on pourrait initialiser le TDictionary via une requête SQL, via lecture d'un fichier de paramétrage, via un appel d'API...).<br />
<br />
Les deux autres exemples du projet joint sont similaires mais pour lesquels le TDictionary est toujours constitué d'une clé de type string (mais n'importe quel autre type serait possible) et le type des valeurs est soit une procédure soit une fonction ce qui permet plus de souplesse (n'importe quel traitement est envisageable).<br />
<br />
Voilà, si ça peut servir à quelqu'un ;)<br />
<br />
Fichier Zip du projet exemple : <a href="https://www.developpez.net/forums/attachments/p674969d1773606508/environnements-developpement/delphi/langage/equivalent-d-case-string-meme-plus/case-tdictionary.zip/"  title="Nom : case-tdictionary.zip
Affichages : 61
Taille : 76,1 Ko">case-tdictionary.zip</a></div>


	<div style="padding:10px">

	

	

	

	
		<fieldset class="fieldset">
			<legend>Fichiers attachés</legend>
			<ul>
			<li>
	<img class="inlineimg" src="https://forum.developpez.be/images/attach/zip.gif" alt="Type de fichier : zip" />
	<a href="https://www.developpez.net/forums/attachments/p674969d1773606508/environnements-developpement/delphi/langage/equivalent-d-case-string-meme-plus/case-tdictionary.zip/">case-tdictionary.zip</a> 
(76,1 Ko)
</li>
			</ul>
		</fieldset>
	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>gbegreg</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182657/environnements-developpement/delphi/langage/equivalent-d-case-string-meme-plus/</guid>
		</item>
		<item>
			<title><![CDATA[S'agit-il d'un nouveau bug de la classe TControl, ou est-il déjà connu de tous ?]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182189&amp;goto=newpost</link>
			<pubDate>Thu, 19 Feb 2026 05:56:49 GMT</pubDate>
			<description><![CDATA[S'agit-il d'un nouveau bug de...]]></description>
			<content:encoded><![CDATA[<div>S'agit-il d'un nouveau bug de la classe TControl, ou est-il déjà connu de tous*?<br />
<br />
Lorsqu'on utilise un objet comme TCustomPanel ou d'autres objets dérivés de TControl (en fait, presque tous), et qu'on tente d'effectuer un redimensionnement par effet miroir (où la propriété «*Width*» devient «*Left*» et inversement, et la propriété «*Height*» devient «*Top*» et inversement), le contrôle se bloque à certains moments lors du calcul. Pendant 16*instants (ou pixels), il reste figé, comme on peut le voir dans la vidéo*!<br />
<br />
Remarque*: lorsque la souris atteint une certaine valeur, le compteur régresse à des valeurs comprises entre +8, 0 et -8 (soit 16 + 1), avec un écart de 24. Ce cycle se répète pour d'autres valeurs, comme le montre l'image… qui démontre qu'il s'agit de multiples de 8, ce qui correspond aux bordures de la fenêtre, qui font, sauf erreur de ma part, 8*pixels.<br />
<br />
<img src="https://www.developpez.net/forums/attachments/p674372d1771480588/environnements-developpement/delphi/langage/s-agit-d-nouveau-bug-classe-tcontrol-deja-connu/delphi_bug_em_tcontrol_resizing_in_effect_mirror.gif/" border="0" alt="Nom : Delphi_Bug_em_TControl_Resizing_in_Effect_Mirror.gif
Affichages : 102
Taille : 1,60 Mo"  style="float: CONFIG" /><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 /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">unit</span> Unit1;
&nbsp;
<span style="color: #0000ff;">interface</span>
&nbsp;
<span style="color: #0000ff;">uses</span>
  System.SysUtils,
  System.Classes,
  Vcl.Controls,
  Vcl.StdCtrls,
  Vcl.ExtCtrls;
&nbsp;
<span style="color: #0000ff;">type</span>
  TMy_PNL_Teste = <span style="color: #0000ff;">class</span><span class="br0">&#40;</span> TCustomPanel <span class="br0">&#41;</span>
  <span style="color: #0000ff;">private</span>
    LCmp: TComponent;
  <span style="color: #0000ff;">protected</span>
    <span style="color: #0000ff;">procedure</span> Resize; <span style="color: #0000ff;">override</span>;
  <span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">implementation</span>
&nbsp;
<span style="color: #808080;">{ TMy_PNL_Teste }</span>
&nbsp;
<span style="color: #0000ff;">procedure</span> TMy_PNL_Teste.Resize;
<span style="color: #0000ff;">begin</span>
  <span style="color: #0000ff;">inherited</span>;
  LCmp := Parent.FindComponent<span class="br0">&#40;</span> <span style="color: #FF0000;">'Label1'</span> <span class="br0">&#41;</span>;
  <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span> LCmp &lt;&gt; <span style="color: #0000ff;">nil</span> <span class="br0">&#41;</span> <span style="color: #0000ff;">then</span>
    TLabel<span class="br0">&#40;</span> LCmp <span class="br0">&#41;</span>.Caption := Format<span class="br0">&#40;</span> <span style="color: #FF0000;">'(%d, %d)'</span>, <span style="color: #808080;">//</span>
      <span class="br0">&#91;</span> Width, Height <span class="br0">&#93;</span> <span class="br0">&#41;</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<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 /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">unit</span> umy_component_register;
&nbsp;
<span style="color: #0000ff;">interface</span>
&nbsp;
<span style="color: #0000ff;">uses</span>
  System.SysUtils,
  System.classes,
  <span style="color: #808080;">//</span>
  DesignIntf,
  DesignEditors;
&nbsp;
<span style="color: #0000ff;">procedure</span> <span style="color: #0000ff;">Register</span>;
&nbsp;
<span style="color: #0000ff;">implementation</span>
&nbsp;
<span style="color: #0000ff;">uses</span>
  Unit1;
&nbsp;
<span style="color: #0000ff;">procedure</span> <span style="color: #0000ff;">Register</span>;
<span style="color: #0000ff;">begin</span>
  RegisterComponents<span class="br0">&#40;</span> <span style="color: #FF0000;">'My Components'</span>, <span class="br0">&#91;</span> TMy_PNL_Teste <span class="br0">&#93;</span> <span class="br0">&#41;</span>;
<span style="color: #0000ff;">end</span>;
&nbsp;
<span style="color: #0000ff;">end</span>.</pre></td></tr></table></code><hr />
</div><br />
Je suppose que la méthode `DoConstrainedResize` est à l'origine de l'erreur de calcul. En effet, si vous observez attentivement, vous constaterez que lors du calcul de la largeur maximale, la largeur minimale n'est pas calculée*; autrement dit, la méthode vérifie si l'une est hors de l'intervalle, mais pas l'autre. Le même comportement est observé pour la hauteur. Je pense que c'est incorrect, car l'intervalle de valeurs devrait se situer entre la largeur minimale et la largeur maximale, et non pas seulement entre l'une des deux*!<br />
<br />
Cependant, comme `NewWidth` et `NewHeight` sont utilisées et modifiées par d'autres méthodes, l'origine exacte de l'erreur reste incertaine.<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 /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">procedure</span> TControl.DoConstrainedResize<span class="br0">&#40;</span><span style="color: #0000ff;">var</span> NewWidth, NewHeight: <span style="color: #0080ff;">Integer</span><span class="br0">&#41;</span>;  <span style="color: #808080;">// Vcl.Control.pas, line 7774, Delphi 13</span>
<span style="color: #0000ff;">var</span>
  MinWidth, MinHeight, MaxWidth, MaxHeight: <span style="color: #0080ff;">Integer</span>;
<span style="color: #0000ff;">begin</span>
  <span style="color: #0000ff;">if</span> Constraints.MinWidth &gt; <span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">then</span>
    MinWidth := Constraints.MinWidth
  <span style="color: #0000ff;">else</span>
    MinWidth := <span style="color: #cc66cc;">0</span>;
  <span style="color: #0000ff;">if</span> Constraints.MinHeight &gt; <span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">then</span>
    MinHeight := Constraints.MinHeight
  <span style="color: #0000ff;">else</span>
    MinHeight := <span style="color: #cc66cc;">0</span>;
  <span style="color: #0000ff;">if</span> Constraints.MaxWidth &gt; <span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">then</span>
    MaxWidth := Constraints.MaxWidth
  <span style="color: #0000ff;">else</span>
    MaxWidth := <span style="color: #cc66cc;">0</span>;
  <span style="color: #0000ff;">if</span> Constraints.MaxHeight &gt; <span style="color: #cc66cc;">0</span> <span style="color: #0000ff;">then</span>
    MaxHeight := Constraints.MaxHeight
  <span style="color: #0000ff;">else</span>
    MaxHeight := <span style="color: #cc66cc;">0</span>;
&nbsp;
  <span style="color: #808080;">{ Allow override of constraints }</span>
  ConstrainedResize<span class="br0">&#40;</span>MinWidth, MinHeight, MaxWidth, MaxHeight<span class="br0">&#41;</span>;
&nbsp;
  <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>MaxWidth &gt; <span style="color: #cc66cc;">0</span><span class="br0">&#41;</span> <span style="color: #0000ff;">and</span> <span class="br0">&#40;</span>NewWidth &gt; MaxWidth<span class="br0">&#41;</span> <span style="color: #0000ff;">then</span>       &lt;-------
    NewWidth := MaxWidth
  <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>MinWidth &gt; <span style="color: #cc66cc;">0</span><span class="br0">&#41;</span> <span style="color: #0000ff;">and</span> <span class="br0">&#40;</span>NewWidth &lt; MinWidth<span class="br0">&#41;</span> <span style="color: #0000ff;">then</span>
    NewWidth := MinWidth;
&nbsp;
  <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>MaxHeight &gt; <span style="color: #cc66cc;">0</span><span class="br0">&#41;</span> <span style="color: #0000ff;">and</span> <span class="br0">&#40;</span>NewHeight &gt; MaxHeight<span class="br0">&#41;</span> <span style="color: #0000ff;">then</span>     &lt;-------
    NewHeight := MaxHeight
  <span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>MinHeight &gt; <span style="color: #cc66cc;">0</span><span class="br0">&#41;</span> <span style="color: #0000ff;">and</span> <span class="br0">&#40;</span>NewHeight &lt; MinHeight<span class="br0">&#41;</span> <span style="color: #0000ff;">then</span>
    NewHeight := MinHeight;
<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/p674372d1771480588/environnements-developpement/delphi/langage/s-agit-d-nouveau-bug-classe-tcontrol-deja-connu/delphi_bug_em_tcontrol_resizing_in_effect_mirror.gif/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>emailx45</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182189/environnements-developpement/delphi/langage/s-agit-d-nouveau-bug-classe-tcontrol-deja-connu/</guid>
		</item>
		<item>
			<title><![CDATA[[D7] Violation d'accès]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181894&amp;goto=newpost</link>
			<pubDate>Tue, 03 Feb 2026 10:37:21 GMT</pubDate>
			<description>Bonjour à tous, 
 
je cherche...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
je cherche à créer un TBitmap avec cette fonction :<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 /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #808080;">{ ========================================================================= }</span>
<span style="color: #0000ff;">Function</span> CreateNewBitmap<span class="br0">&#40;</span>Width,Height: <span style="color: #0080ff;">Word</span>; Color: TColor<span class="br0">&#41;</span> : TBitmap ;
<span style="color: #0000ff;">var</span>
 bmp : TBitmap;
<span style="color: #0000ff;">begin</span>
 bmp := TBitmap.Create;
 <span style="color: #0000ff;">try</span>
   bmp.PixelFormat := pf24bit;
   bmp.Width := Width;
   bmp.Height := Height;
   bmp.Canvas.Brush.Color := Color;
   bmp.Canvas.FillRect<span class="br0">&#40;</span>Rect<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">0</span>, Width, Height<span class="br0">&#41;</span><span class="br0">&#41;</span>;
   Result.Assign<span class="br0">&#40;</span>Bmp<span class="br0">&#41;</span> ;                                          &lt;== Erreur ici
 <span style="color: #0000ff;">finally</span>
   bmp.Free;
 <span style="color: #0000ff;">end</span>;
<span style="color: #0000ff;">end</span>;
<span style="color: #808080;">{ ========================================================================= }</span></pre></td></tr></table></code><hr />
</div>J'ai une violation d'accès sur la ligne pointée surement parce ce que Result n'a pas été créé. Est ce que je dois faire un create sur le Bmp Result ?<br />
<br />
A+<br />
Charly</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>Charly910</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181894/environnements-developpement/delphi/langage/d7-violation-d-acces/</guid>
		</item>
		<item>
			<title>form et constraint</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181478&amp;goto=newpost</link>
			<pubDate>Wed, 14 Jan 2026 09:50:45 GMT</pubDate>
			<description>Bonjour, 
 
Un truc que je...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Un truc que je n'avais pas remarqué:<br />
<br />
Lorsque je réduis une &quot;form&quot; dans la barre des tache et que je la fais réapparaitre: je perds mes contraintes en hauteur.<br />
<br />
Voici les réglages utilisés:<br />
<img src="https://www.developpez.net/forums/attachments/p673251d1768384228/environnements-developpement/delphi/langage/form-constraint/size.jpg/" border="0" alt="Nom : size.jpg
Affichages : 153
Taille : 37,2 Ko"  style="float: CONFIG" /><br />
<br />
<br />
Lorsque j'ouvre la feuille la 1ère fois, pas de problème , mes contraintes sont respectées: je peux régler en hauteur de 650 à 905<br />
<br />
Par contre si je la réduis et que je la fais réapparaitre: les contraintes en hauteurs sont perdues: on peut étirer en hauteur sans contrainte ?<br />
<br />
Je suis en Delphi XE5<br />
<br />
Cordialement</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/p673251d1768384228/environnements-developpement/delphi/langage/form-constraint/size.jpg/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>looping</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181478/environnements-developpement/delphi/langage/form-constraint/</guid>
		</item>
		<item>
			<title><![CDATA[Comment trouver ce qui provoque une Exception Débordement d'entier]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181396&amp;goto=newpost</link>
			<pubDate>Fri, 09 Jan 2026 07:31:39 GMT</pubDate>
			<description><![CDATA[Bonjour 
 
J'ai un gros...]]></description>
			<content:encoded><![CDATA[<div>Bonjour<br />
<br />
J'ai un gros programme assez complexe qui de temps en temps plante avec une exception débordement d'entier.<br />
Le problème c'est que je n'arrive pas à savoir où ce produit cette exception. De plus ça se produit plus ou moins aléatoirement du coup c'est très difficile à reproduire.<br />
En version de debug je m’arrête  sur la procedure _InternalRaiseAtExcept de l'unité system.<br />
Et si je poursuis le pas à pas je me retrouve dans l'unité principale de mon programme mais impossible d'examiner les variables pour voir laquelle a déclenché l'exception.<br />
Existe t'il un moyen de voir ce qui déclenche cette exception ou des outils d'analyse de code qui permettent de signaler les problèmes potentiel</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>Gouyon</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181396/environnements-developpement/delphi/langage/trouver-provoque-exception-debordement-d-entier/</guid>
		</item>
		<item>
			<title>Affichage champ vectoriel</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181360&amp;goto=newpost</link>
			<pubDate>Wed, 07 Jan 2026 12:57:43 GMT</pubDate>
			<description><![CDATA[J'ai un fichier de n lignes...]]></description>
			<content:encoded><![CDATA[<div>J'ai un fichier de n lignes et 6 colonnes.<br />
<br />
Chaque ligne continent Y, Y, Y, Vx, Vy, Vz où [X,Y,Z] représentent les coordonnées d'un point dans l'espace et [Vx, Vy, Vz] les coordonnées d'un vecteur en [X,Y,Z]<br />
<br />
On peut écrire cela V(X,Y,Z) = ( Vx, Vy, Vz)  ou f(P)=V         ceci pour n points (X,Y,Z)<br />
<br />
<br />
est-il possible de représenter ce champ vectoriel avec des outils de delphi (comme open-gl ou autre).<br />
D’ailleurs la réponses pourrait être hors delphi.<br />
<br />
Voir la &quot;longueur&quot; d'un vecteur en 3D+perspective étant quasi impossible, j'imagine pouvoir tracer un array de flèches ou cônes, tous de même norme, orienté dans la direction de V en chaque point P et coder la norme de V en chaque point par la couleur de l'objet qui le représente <br />
<br />
Merci pour vos suggestions.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>j.p.mignot</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181360/environnements-developpement/delphi/langage/affichage-champ-vectoriel/</guid>
		</item>
		<item>
			<title>Problème de compilation</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180493&amp;goto=newpost</link>
			<pubDate>Sun, 16 Nov 2025 20:14:51 GMT</pubDate>
			<description>Bonjour à tous, 
 
Je suis...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
Je suis actuellement sous W10, Delphi RIO , Pack composants TMS. Aucune modification à l'environnement de dev n'a été apportée, ni mise à jour....<br />
<br />
J'ai seulement fait une recopie intégrale de ma structure de développement pour creer une nouvelle version.<br />
 <br />
<b>Voila mon problème.<br />
</b><br />
J'ai une DLL (parmi d'autres) que je compile sans erreur depuis plusieurs années, mais depuis quelques jours même si la compilation est correcte, les modifications que j'y apporte ne sont pas prises en compte dans la DLL compilée.<br />
<br />
<b>Voici mes observations:</b><br />
<br />
<ul><li style="">Quand je regarde dans le répertoire de destination des DLL de l'application, la date et l'heure de la compilation de la DLL sont correctes.</li><li style="">Le chemin de destination des DLL compilées est correct.</li><li style="">Le nom de l'hôte (pour son exécution) qui utilise la DLL est correct.</li><li style="">Quand je retire la DLL en question, l'application détecte bien son absence</li></ul><br />
Tous cela laisse penser que la DLL que je compile se trouve bien à l'endroit ou l'application doit la trouver.     <br />
<br />
<b>Remarque :</b> <br />
<br />
Ni les modifications dans le code, ni celles dans la fiche (par exemple ajout d'un composant) ne sont prises en compte.<br />
<br />
J'ai essayé de modifier deux autres DLL de cette application qui suit exactement le même processus de création des fiches, de dialogue ... , tous ce passe bien et parmi les 30 DLL qui sont associées à cette application, elle semble être la seule à faire cela.<br />
<br />
J'ai ouvert le source de la DLL dans l'éditeur Delphi et j'ai supprimé <b>Tous</b> les fichiers en rapport a cette DLL, et sauvegardé l'ensemble pour remplacer des fichiers qui serait corrompu...!<br />
<br />
Si je compile cette DLL dans une version précédente de l'application, elle prend en compte les modifications, et quand je déplace la DLL compilée dans la version actuelle de l'application le fonctionnement est conforme.<br />
<br />
Et la je suis a court d'idée, je n'arrive toujours pas a visualiser mes modifications, ni visuelle dans la fiche, ni fonctionnelle dans le code, quand je suis dans la structure de ma dernière version de l'application<br />
<br />
Des idées, des pistes ?<br />
<br />
Bonne soirée.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>petitcoucou31</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180493/environnements-developpement/delphi/langage/probleme-compilation/</guid>
		</item>
		<item>
			<title>Police système différente entre D7 et D10</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2180491&amp;goto=newpost</link>
			<pubDate>Sun, 16 Nov 2025 19:05:05 GMT</pubDate>
			<description>Bonjour. Je viens de...</description>
			<content:encoded><![CDATA[<div>Bonjour. Je viens de découvrir que le même code pour lire la police système ne me retourne pas ma même valeur suivant que je compile sous D7 ou sous D10.2.<br />
Le code est le suivant :<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"><span style="color: #0000ff;">var</span> 
    dc:HDC;
    result:<span style="color: #0080ff;">integer</span>;
<span style="color: #0000ff;">begin</span>
    dc:=GetDC<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span><span class="br0">&#41;</span>;
    result:=GetDeviceCaps<span class="br0">&#40;</span>dc,LOGPIXELSX<span class="br0">&#41;</span>;
    ReleaseDC<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>,dc<span class="br0">&#41;</span>;
    ....
<span style="color: #0000ff;">end</span>;</pre></td></tr></table></code><hr />
</div>Si mes paramètres d'affichage Windows (Windows10) sont à 100%, pas de souci, les deux compilations me renvoient result=96 (normal).<br />
Si je passe à 125% en paramètre d'affichage, la compilation D7 me renvoie toujours 96 (???) et la compilation D10 me renvoie 120 (normal).<br />
Une idée ?<br />
Gab</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f776/environnements-developpement/delphi/langage/">Langage</category>
			<dc:creator>f6dqm1</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2180491/environnements-developpement/delphi/langage/police-systeme-differente-entre-d7-d10/</guid>
		</item>
	</channel>
</rss>
