{"id":5123,"date":"2013-11-15T00:15:27","date_gmt":"2013-11-14T23:15:27","guid":{"rendered":"http:\/\/blogs.wittwer.fr\/whiler\/?p=5123"},"modified":"2013-11-15T20:12:29","modified_gmt":"2013-11-15T19:12:29","slug":"deboguer-sur-android-avec-delphi-en-wi-fi","status":"publish","type":"post","link":"https:\/\/blogs.wittwer.fr\/whiler\/2013\/11\/15\/deboguer-sur-android-avec-delphi-en-wi-fi\/","title":{"rendered":"D\u00e9boguer sur Android avec Delphi en Wi-Fi"},"content":{"rendered":"<p>Lors du <a href=\"\/whiler\/2013\/11\/14\/le-dev-du-jeudi-saison-3\/\" title=\"Le Dev du jeudi Saison 3\">premier \u00e9pisode du Dev du Jeudi de la Saison 3<\/a>, Thierry a fait une application de type <a href=\"https:\/\/youtu.be\/-AVHKAbCsKg?t=37m4s\" title=\"Vid\u00e9o de l'\u00e9pisode 1 de la Saison 3\" target=\"_blank\">horloge qu&rsquo;il a d\u00e9ploy\u00e9 sur son t\u00e9l\u00e9phone portable<\/a> via un c\u00e2ble USB&#8230;<\/p>\n<p>Un participant a demand\u00e9 s&rsquo;il \u00e9tait possible de d\u00e9ployer en <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Wi-Fi\" rel=\"glossary\" target=\"_blank\" title=\"Wikipedia, D&eacute;finition de&nbsp;: Wi-Fi\" style=\"\" >Wi-Fi<\/a><sup style=\"font-family: Georgia, Times New Roman, Serif; font-weight: bold; color: #AAAAAA\" ><em>W<\/em><\/sup>&#8230; un autre a envoy\u00e9 un lien pour un type d&rsquo;application qui devait le permettre&#8230;<\/p>\n<p>Une fois le s\u00e9minaire termin\u00e9, j&rsquo;ai test\u00e9 une de ces applications, dans le cas pr\u00e9sent, <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.ttxapps.wifiadb&#038;hl=fr\" title=\"WiFi ADB sur Google Play\" target=\"_blank\">WiFi ADB<\/a>, avec <a href=\"\/whiler\/2013\/01\/25\/wiko-cink-slim\/\" title=\" Wiko Cink Slim\">mon t\u00e9l\u00e9phone<\/a>&#8230;<\/p>\n<div id=\"attachment_5124\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5124\" src=\"\/whiler\/wp-content\/uploads\/2013\/11\/wifiadb.png\" alt=\"WiFi ADB\" width=\"300\" height=\"300\" class=\"size-full wp-image-5124\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/wifiadb.png 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/wifiadb-150x150.png 150w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><p id=\"caption-attachment-5124\" class=\"wp-caption-text\">WiFi ADB<\/p><\/div>\n<p>Parmi les avantages de cette solution&nbsp;:<br \/>\n<!--more--><\/p>\n<ul>\n<li>Pas besoin de brancher le p\u00e9riph\u00e9rique<\/li>\n<li>Inutile d&rsquo;installer les pilotes du p\u00e9riph\u00e9riques  <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/yes.gif\" alt=\"(y)\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> <\/li>\n<\/ul>\n<p>Inconv\u00e9nients&nbsp;:<\/p>\n<ul>\n<li>Le p\u00e9riph\u00e9rique doit \u00eatre root\u00e9  <img src=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-includes\/images\/smilies\/skype\/\/worry.gif\" alt=\":s\" class=\"wp-smiley\" style=\"height: 1em; max-height: 1em;\" \/> <\/li>\n<li>Il faut connecter le p\u00e9riph\u00e9rique \u00e0 ADB (pas de d\u00e9couverte automatique)<\/li>\n<\/ul>\n<p>Je commence par installer, ex\u00e9cuter puis activer l&rsquo;application WiFi ADB sur mon t\u00e9l\u00e9phone&nbsp;:<br \/>\n<div id=\"attachment_5125\" style=\"width: 190px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2013\/11\/wifiadb-started.jpg\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5125\" src=\"\/whiler\/wp-content\/uploads\/2013\/11\/wifiadb-started-180x300.jpg\" alt=\"D\u00e9marrage de WiFi ADB\" width=\"180\" height=\"300\" class=\"size-medium wp-image-5125\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/wifiadb-started-180x300.jpg 180w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/wifiadb-started.jpg 480w\" sizes=\"auto, (max-width: 180px) 100vw, 180px\" \/><\/a><p id=\"caption-attachment-5125\" class=\"wp-caption-text\">D\u00e9marrage de WiFi ADB<\/p><\/div><\/p>\n<p>Puis, je connecte mon t\u00e9l\u00e9phone \u00e0 l&rsquo;ADB utilis\u00e9 par Delphi. Si vous avez une adresse IP fixe pour votre t\u00e9l\u00e9phone, vous pouvez vous cr\u00e9er un outil dans Delphi pour facilement le lancer lorsque vous en avez besoin&nbsp;:<br \/>\n<div id=\"attachment_5126\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2013\/11\/Delphi-Add-Tool.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5126\" src=\"\/whiler\/wp-content\/uploads\/2013\/11\/Delphi-Add-Tool-300x171.png\" alt=\"Ajouter un outil\" width=\"300\" height=\"171\" class=\"size-medium wp-image-5126\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/Delphi-Add-Tool-300x171.png 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/Delphi-Add-Tool.png 442w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-5126\" class=\"wp-caption-text\">Ajouter un outil<\/p><\/div><br \/>\nEnsuite, on appelle ce nouvel outil&nbsp;:<br \/>\n<div id=\"attachment_5127\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2013\/11\/adb-connect.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5127\" src=\"\/whiler\/wp-content\/uploads\/2013\/11\/adb-connect-300x179.png\" alt=\"Connexion du t\u00e9l\u00e9phone \u00e0 ADB\" width=\"300\" height=\"179\" class=\"size-medium wp-image-5127\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/adb-connect-300x179.png 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/adb-connect-1024x611.png 1024w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/adb-connect.png 1440w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-5127\" class=\"wp-caption-text\">Connexion du t\u00e9l\u00e9phone \u00e0 ADB<\/p><\/div><\/p>\n<p>Il suffit ensuite de simplement rafra\u00eechir la liste des cibles disponibles&nbsp;:<br \/>\n<div id=\"attachment_5128\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2013\/11\/resfresh-target.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5128\" src=\"\/whiler\/wp-content\/uploads\/2013\/11\/resfresh-target-300x179.png\" alt=\"Rafra\u00eechir la liste\" width=\"300\" height=\"179\" class=\"size-medium wp-image-5128\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/resfresh-target-300x179.png 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/resfresh-target-1024x611.png 1024w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/resfresh-target.png 1440w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-5128\" class=\"wp-caption-text\">Rafra\u00eechir la liste<\/p><\/div><br \/>\nEt le p\u00e9riph\u00e9rique apparait&nbsp;:<br \/>\n<div id=\"attachment_5129\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2013\/11\/new-target.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5129\" src=\"\/whiler\/wp-content\/uploads\/2013\/11\/new-target-300x179.png\" alt=\"Affichage du t\u00e9l\u00e9phone\" width=\"300\" height=\"179\" class=\"size-medium wp-image-5129\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/new-target-300x179.png 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/new-target-1024x611.png 1024w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/new-target.png 1440w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-5129\" class=\"wp-caption-text\">Affichage du t\u00e9l\u00e9phone<\/p><\/div><\/p>\n<p>Vous pouvez d\u00e8s lors d\u00e9ployer via Wi-Fi sur le t\u00e9l\u00e9phone ainsi que d\u00e9boguer votre application&nbsp;:<br \/>\n<div id=\"attachment_5131\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2013\/11\/debug1.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5131\" src=\"\/whiler\/wp-content\/uploads\/2013\/11\/debug1-300x179.png\" alt=\"D\u00e9bogage\" width=\"300\" height=\"179\" class=\"size-medium wp-image-5131\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/debug1-300x179.png 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/debug1-1024x611.png 1024w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/debug1.png 1440w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-5131\" class=\"wp-caption-text\">D\u00e9bogage<\/p><\/div><br \/>\n<div id=\"attachment_5132\" style=\"width: 310px\" class=\"wp-caption aligncenter\"><a href=\"\/whiler\/wp-content\/uploads\/2013\/11\/debug2.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-5132\" src=\"\/whiler\/wp-content\/uploads\/2013\/11\/debug2-300x179.png\" alt=\"D\u00e9bogage\" width=\"300\" height=\"179\" class=\"size-medium wp-image-5132\" srcset=\"https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/debug2-300x179.png 300w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/debug2-1024x611.png 1024w, https:\/\/blogs.wittwer.fr\/whiler\/wp-content\/uploads\/2013\/11\/debug2.png 1440w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><p id=\"caption-attachment-5132\" class=\"wp-caption-text\">D\u00e9bogage<\/p><\/div><\/p>\n<p>Vous avez lu ou simplement regard\u00e9 tout l&rsquo;article et vous mourrez certainement d&rsquo;envie d&rsquo;avoir la m\u00eame horloge&#8230; Aucun probl\u00e8me, vous pouvez t\u00e9l\u00e9charger&nbsp;:<\/p>\n<table width=\"100%\">\n<tr>\n<td align=\"center\"><a href=\"https:\/\/www.whiler.com\/freewares\/download?clock.zip\" title=\"T\u00e9l\u00e9charger le code source\">Code source<\/a><\/td>\n<td align=\"center\"><a href=\"https:\/\/www.whiler.com\/freewares\/download?clock.apk\" title=\"T\u00e9l\u00e9charger l'application Android\">Application Android<\/a><\/td>\n<\/tr>\n<\/table>\n<p>&nbsp;<br \/>\nSur la <a href=\"\/whiler\/2013\/11\/15\/deboguer-sur-android-avec-delphi-en-wi-fi\/2\/\" title=\"Aller sur la seconde page\">seconde page<\/a>, le code source du projet.<br \/>\n&nbsp;<\/p>\n<blockquote><p>Application d\u00e9velopp\u00e9e avec <a target=\"_blank\" href=\"https:\/\/www.embarcadero.com\/fr\/products\/delphi\">Embarcadero Delphi XE5<\/a>.<\/p><\/blockquote>\n<p><center><a href=\"\/whiler\/category\/computer\/delphi\/\" title=\"Articles concernant Delphi\"><img loading=\"lazy\" decoding=\"async\" src=\"\/whiler\/wp-content\/uploads\/2009\/10\/built_with_delphi.png\" alt=\"D\u00e9velopp\u00e9 en Delphi\" title=\"D\u00e9velopp\u00e9 en Delphi\" width=\"125\" height=\"51\" class=\"size-full wp-image-2721\" \/><\/a><\/center><\/p>\n<p><!--nextpage--><\/p>\n<h3>Le code&nbsp;:<\/h3>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>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 \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">unit<\/span> uMain<span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">interface<\/span><br \/>\n<br \/>\n<span class=\"kw1\">uses<\/span><br \/>\n&nbsp; System<span class=\"sy1\">.<\/span><span class=\"me1\">SysUtils<\/span><span class=\"sy1\">,<\/span> System<span class=\"sy1\">.<\/span><span class=\"me1\">Types<\/span><span class=\"sy1\">,<\/span> System<span class=\"sy1\">.<\/span><span class=\"me1\">UITypes<\/span><span class=\"sy1\">,<\/span> System<span class=\"sy1\">.<\/span><span class=\"me1\">Classes<\/span><span class=\"sy1\">,<\/span> System<span class=\"sy1\">.<\/span><span class=\"me1\">Variants<\/span><span class=\"sy1\">,<\/span><br \/>\n&nbsp; FMX<span class=\"sy1\">.<\/span><span class=\"me1\">Types<\/span><span class=\"sy1\">,<\/span> FMX<span class=\"sy1\">.<\/span><span class=\"me1\">Controls<\/span><span class=\"sy1\">,<\/span> FMX<span class=\"sy1\">.<\/span><span class=\"me1\">Forms<\/span><span class=\"sy1\">,<\/span> FMX<span class=\"sy1\">.<\/span><span class=\"me1\">Graphics<\/span><span class=\"sy1\">,<\/span> FMX<span class=\"sy1\">.<\/span><span class=\"me1\">Dialogs<\/span><span class=\"sy1\">,<\/span> FMX<span class=\"sy1\">.<\/span><span class=\"me1\">Layouts<\/span><span class=\"sy1\">,<\/span><br \/>\n&nbsp; FMX<span class=\"sy1\">.<\/span><span class=\"me1\">Objects<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">type<\/span><br \/>\n&nbsp; TfrmClockMain <span class=\"sy3\">=<\/span> <span class=\"kw1\">class<\/span><span class=\"br0\">&#40;<\/span>TForm<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; sclytClock<span class=\"sy1\">:<\/span> TScaledLayout<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; cClock<span class=\"sy1\">:<\/span> TCircle<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; rrecHours<span class=\"sy1\">:<\/span> TRoundRect<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; lytHours<span class=\"sy1\">:<\/span> TLayout<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; lytMinutes<span class=\"sy1\">:<\/span> TLayout<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; rrecMinutes<span class=\"sy1\">:<\/span> TRoundRect<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; crectMinute<span class=\"sy1\">:<\/span> TCalloutRectangle<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; lytMinute<span class=\"sy1\">:<\/span> TLayout<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; lytHour<span class=\"sy1\">:<\/span> TLayout<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; crectHour<span class=\"sy1\">:<\/span> TCalloutRectangle<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; lytSecond<span class=\"sy1\">:<\/span> TLayout<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; crecSecond<span class=\"sy1\">:<\/span> TCalloutRectangle<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; tmrSeconds<span class=\"sy1\">:<\/span> TTimer<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; cMiddle<span class=\"sy1\">:<\/span> TCircle<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">procedure<\/span> FormCreate<span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">procedure<\/span> tmrSecondsTimer<span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; <span class=\"kw1\">private<\/span><br \/>\n&nbsp; &nbsp; <span class=\"coMULTI\">{ Private declarations }<\/span><br \/>\n&nbsp; <span class=\"kw1\">public<\/span><br \/>\n&nbsp; &nbsp; <span class=\"coMULTI\">{ Public declarations }<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; frmClockMain<span class=\"sy1\">:<\/span> TfrmClockMain<span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">implementation<\/span><br \/>\n<br \/>\n<span class=\"co2\">{$R *.fmx}<\/span><br \/>\n<br \/>\n<span class=\"kw1\">procedure<\/span> TfrmClockMain<span class=\"sy1\">.<\/span><span class=\"me1\">FormCreate<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; iLoop<span class=\"sy1\">:<\/span> <span class=\"kw4\">Integer<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; lyt &nbsp;<span class=\"sy1\">:<\/span> TLayout<span class=\"sy1\">;<\/span><br \/>\n&nbsp; rrec <span class=\"sy1\">:<\/span> TRoundRect<span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"kw1\">for<\/span> iLoop <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> <span class=\"nu0\">1<\/span> <span class=\"kw1\">to<\/span> <span class=\"nu0\">59<\/span> <span class=\"kw1\">do<\/span><br \/>\n&nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; lyt <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> TLayout<span class=\"sy1\">.<\/span><span class=\"me1\">Create<\/span><span class=\"br0\">&#40;<\/span>cClock<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">with<\/span> lyt <span class=\"kw1\">do<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; Parent &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> cClock<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; Align &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> TAlignLayout<span class=\"sy1\">.<\/span><span class=\"me1\">alClient<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; RotationAngle <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> iLoop <span class=\"sy3\">*<\/span> <span class=\"nu0\">6<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">with<\/span> TRoundRect<span class=\"sy1\">.<\/span><span class=\"me1\">Create<\/span><span class=\"br0\">&#40;<\/span>lyt<span class=\"br0\">&#41;<\/span> <span class=\"kw1\">do<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">begin<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">if<\/span> iLoop <span class=\"kw1\">mod<\/span> <span class=\"nu0\">5<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span> <span class=\"kw1\">then<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rrec <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> rrecHours<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">else<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rrec <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> rrecMinutes<span class=\"sy1\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Parent &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> lyt<span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Width &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> rrec<span class=\"sy1\">.<\/span><span class=\"me1\">Width<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Height &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> rrec<span class=\"sy1\">.<\/span><span class=\"me1\">Height<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Fill<span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span> &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> rrec<span class=\"sy1\">.<\/span><span class=\"me1\">Fill<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Stroke<span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span> &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> rrec<span class=\"sy1\">.<\/span><span class=\"me1\">Stroke<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Position<span class=\"sy1\">.<\/span><span class=\"me1\">X<\/span> &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> rrec<span class=\"sy1\">.<\/span><span class=\"me1\">Position<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">X<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Position<span class=\"sy1\">.<\/span><span class=\"me1\">Y<\/span> &nbsp; &nbsp;<span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> rrec<span class=\"sy1\">.<\/span><span class=\"me1\">Position<\/span><span class=\"sy1\">.<\/span><span class=\"me1\">Y<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; lytMinute<span class=\"sy1\">.<\/span><span class=\"me1\">BringToFront<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; lytHour<span class=\"sy1\">.<\/span><span class=\"me1\">BringToFront<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; lytSecond<span class=\"sy1\">.<\/span><span class=\"me1\">BringToFront<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; cMiddle<span class=\"sy1\">.<\/span><span class=\"me1\">BringToFront<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">procedure<\/span> TfrmClockMain<span class=\"sy1\">.<\/span><span class=\"me1\">tmrSecondsTimer<\/span><span class=\"br0\">&#40;<\/span>Sender<span class=\"sy1\">:<\/span> <span class=\"kw4\">TObject<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">var<\/span><br \/>\n&nbsp; iH<span class=\"sy1\">,<\/span> iMn<span class=\"sy1\">,<\/span> iSec<span class=\"sy1\">,<\/span> iMSec<span class=\"sy1\">:<\/span> <span class=\"kw4\">Word<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">begin<\/span><br \/>\n&nbsp; <span class=\"kw3\">DecodeTime<\/span><span class=\"br0\">&#40;<\/span>Now<span class=\"sy1\">,<\/span> iH<span class=\"sy1\">,<\/span> iMn<span class=\"sy1\">,<\/span> iSec<span class=\"sy1\">,<\/span> iMSec<span class=\"br0\">&#41;<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; lytHour<span class=\"sy1\">.<\/span><span class=\"me1\">RotationAngle<\/span> &nbsp; <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> iH &nbsp; <span class=\"sy3\">*<\/span> <span class=\"nu0\">30<\/span> <span class=\"sy3\">+<\/span> iMn<span class=\"sy3\">\/<\/span><span class=\"nu0\">2<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; lytMinute<span class=\"sy1\">.<\/span><span class=\"me1\">RotationAngle<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> iMn &nbsp;<span class=\"sy3\">*<\/span> <span class=\"nu0\">6<\/span> &nbsp;<span class=\"sy3\">+<\/span> iSec<span class=\"sy3\">\/<\/span><span class=\"nu0\">10<\/span><span class=\"sy1\">;<\/span><br \/>\n&nbsp; lytSecond<span class=\"sy1\">.<\/span><span class=\"me1\">RotationAngle<\/span> <span class=\"sy1\">:<\/span><span class=\"sy3\">=<\/span> iSec <span class=\"sy3\">*<\/span> <span class=\"nu0\">6<\/span><span class=\"sy1\">;<\/span><br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">;<\/span><br \/>\n<br \/>\n<span class=\"kw1\">end<\/span><span class=\"sy1\">.<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<h3>La conception&nbsp;:<\/h3>\n<div class=\"codecolorer-container delphi dawn\" style=\"overflow:auto;white-space:nowrap;width:480px;height:300px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>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 \/><\/div><\/td><td><div class=\"delphi codecolorer\"><span class=\"kw1\">object<\/span> frmClockMain<span class=\"sy1\">:<\/span> TfrmClockMain<br \/>\n&nbsp; Left <span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><br \/>\n&nbsp; Top <span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><br \/>\n&nbsp; Caption <span class=\"sy3\">=<\/span> <span class=\"st0\">'Delphi Clock'<\/span><br \/>\n&nbsp; ClientHeight <span class=\"sy3\">=<\/span> <span class=\"nu0\">567<\/span><br \/>\n&nbsp; ClientWidth <span class=\"sy3\">=<\/span> <span class=\"nu0\">384<\/span><br \/>\n&nbsp; FormFactor<span class=\"sy1\">.<\/span><span class=\"me1\">Width<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">320<\/span><br \/>\n&nbsp; FormFactor<span class=\"sy1\">.<\/span><span class=\"me1\">Height<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">480<\/span><br \/>\n&nbsp; FormFactor<span class=\"sy1\">.<\/span><span class=\"me1\">Devices<\/span> <span class=\"sy3\">=<\/span> <span class=\"br0\">&#91;<\/span>dkDesktop<span class=\"br0\">&#93;<\/span><br \/>\n&nbsp; OnCreate <span class=\"sy3\">=<\/span> FormCreate<br \/>\n&nbsp; DesignerMobile <span class=\"sy3\">=<\/span> <span class=\"kw2\">True<\/span><br \/>\n&nbsp; DesignerWidth <span class=\"sy3\">=<\/span> <span class=\"nu0\">384<\/span><br \/>\n&nbsp; DesignerHeight <span class=\"sy3\">=<\/span> <span class=\"nu0\">592<\/span><br \/>\n&nbsp; DesignerDeviceName <span class=\"sy3\">=<\/span> <span class=\"st0\">'Google Nexus 4'<\/span><br \/>\n&nbsp; DesignerOrientation <span class=\"sy3\">=<\/span> <span class=\"nu0\">0<\/span><br \/>\n&nbsp; DesignerOSVersion <span class=\"sy3\">=<\/span> <span class=\"st0\">''<\/span><br \/>\n&nbsp; <span class=\"kw1\">object<\/span> sclytClock<span class=\"sy1\">:<\/span> TScaledLayout<br \/>\n&nbsp; &nbsp; Align <span class=\"sy3\">=<\/span> alFit<br \/>\n&nbsp; &nbsp; Height <span class=\"sy3\">=<\/span> <span class=\"nu0\">567.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; OriginalWidth <span class=\"sy3\">=<\/span> <span class=\"nu0\">383.999969482421900000<\/span><br \/>\n&nbsp; &nbsp; OriginalHeight <span class=\"sy3\">=<\/span> <span class=\"nu0\">566.999938964843800000<\/span><br \/>\n&nbsp; &nbsp; Width <span class=\"sy3\">=<\/span> <span class=\"nu0\">384.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">object<\/span> cClock<span class=\"sy1\">:<\/span> TCircle<br \/>\n&nbsp; &nbsp; &nbsp; Align <span class=\"sy3\">=<\/span> alFit<br \/>\n&nbsp; &nbsp; &nbsp; Height <span class=\"sy3\">=<\/span> <span class=\"nu0\">383.999969482421900000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; Stroke<span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span> <span class=\"sy3\">=<\/span> claSienna<br \/>\n&nbsp; &nbsp; &nbsp; Stroke<span class=\"sy1\">.<\/span><span class=\"me1\">Thickness<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">20.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; Width <span class=\"sy3\">=<\/span> <span class=\"nu0\">383.999938964843800000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">object<\/span> lytSecond<span class=\"sy1\">:<\/span> TLayout<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Align <span class=\"sy3\">=<\/span> alClient<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Height <span class=\"sy3\">=<\/span> <span class=\"nu0\">383.999969482421900000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; RotationAngle <span class=\"sy3\">=<\/span> <span class=\"nu0\">60.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Width <span class=\"sy3\">=<\/span> <span class=\"nu0\">383.999938964843800000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">object<\/span> crecSecond<span class=\"sy1\">:<\/span> TCalloutRectangle<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Fill<span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span> <span class=\"sy3\">=<\/span> claFirebrick<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Height <span class=\"sy3\">=<\/span> <span class=\"nu0\">161.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Position<span class=\"sy1\">.<\/span><span class=\"me1\">X<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">188.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Position<span class=\"sy1\">.<\/span><span class=\"me1\">Y<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">32.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Stroke<span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span> <span class=\"sy3\">=<\/span> claNull<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Width <span class=\"sy3\">=<\/span> <span class=\"nu0\">8.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CalloutWidth <span class=\"sy3\">=<\/span> <span class=\"nu0\">12.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CalloutLength <span class=\"sy3\">=<\/span> <span class=\"nu0\">5.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">object<\/span> lytHour<span class=\"sy1\">:<\/span> TLayout<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Align <span class=\"sy3\">=<\/span> alClient<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Height <span class=\"sy3\">=<\/span> <span class=\"nu0\">383.999969482421900000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Width <span class=\"sy3\">=<\/span> <span class=\"nu0\">383.999938964843800000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">object<\/span> crectHour<span class=\"sy1\">:<\/span> TCalloutRectangle<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Fill<span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span> <span class=\"sy3\">=<\/span> claGoldenrod<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Height <span class=\"sy3\">=<\/span> <span class=\"nu0\">113.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Position<span class=\"sy1\">.<\/span><span class=\"me1\">X<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">188.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Position<span class=\"sy1\">.<\/span><span class=\"me1\">Y<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">80.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Stroke<span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span> <span class=\"sy3\">=<\/span> claNull<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Width <span class=\"sy3\">=<\/span> <span class=\"nu0\">8.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CalloutWidth <span class=\"sy3\">=<\/span> <span class=\"nu0\">12.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CalloutLength <span class=\"sy3\">=<\/span> <span class=\"nu0\">5.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">object<\/span> lytMinute<span class=\"sy1\">:<\/span> TLayout<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Align <span class=\"sy3\">=<\/span> alClient<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Height <span class=\"sy3\">=<\/span> <span class=\"nu0\">383.999969482421900000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; RotationAngle <span class=\"sy3\">=<\/span> <span class=\"nu0\">30.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Width <span class=\"sy3\">=<\/span> <span class=\"nu0\">383.999938964843800000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">object<\/span> crectMinute<span class=\"sy1\">:<\/span> TCalloutRectangle<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Fill<span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span> <span class=\"sy3\">=<\/span> claGold<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Height <span class=\"sy3\">=<\/span> <span class=\"nu0\">161.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Position<span class=\"sy1\">.<\/span><span class=\"me1\">X<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">188.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Position<span class=\"sy1\">.<\/span><span class=\"me1\">Y<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">32.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Stroke<span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span> <span class=\"sy3\">=<\/span> claNull<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Width <span class=\"sy3\">=<\/span> <span class=\"nu0\">8.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CalloutWidth <span class=\"sy3\">=<\/span> <span class=\"nu0\">12.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CalloutLength <span class=\"sy3\">=<\/span> <span class=\"nu0\">5.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">object<\/span> lytHours<span class=\"sy1\">:<\/span> TLayout<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Align <span class=\"sy3\">=<\/span> alClient<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Height <span class=\"sy3\">=<\/span> <span class=\"nu0\">383.999969482421900000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Width <span class=\"sy3\">=<\/span> <span class=\"nu0\">383.999938964843800000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">object<\/span> rrecHours<span class=\"sy1\">:<\/span> TRoundRect<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Fill<span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span> <span class=\"sy3\">=<\/span> claBlack<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Height <span class=\"sy3\">=<\/span> <span class=\"nu0\">32.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Position<span class=\"sy1\">.<\/span><span class=\"me1\">X<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">187.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Position<span class=\"sy1\">.<\/span><span class=\"me1\">Y<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">25.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Width <span class=\"sy3\">=<\/span> <span class=\"nu0\">10.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">object<\/span> lytMinutes<span class=\"sy1\">:<\/span> TLayout<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Align <span class=\"sy3\">=<\/span> alClient<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Height <span class=\"sy3\">=<\/span> <span class=\"nu0\">383.999969482421900000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; RotationAngle <span class=\"sy3\">=<\/span> <span class=\"nu0\">6.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Width <span class=\"sy3\">=<\/span> <span class=\"nu0\">383.999938964843800000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">object<\/span> rrecMinutes<span class=\"sy1\">:<\/span> TRoundRect<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Fill<span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span> <span class=\"sy3\">=<\/span> claPeru<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Height <span class=\"sy3\">=<\/span> <span class=\"nu0\">24.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Position<span class=\"sy1\">.<\/span><span class=\"me1\">X<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">188.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Position<span class=\"sy1\">.<\/span><span class=\"me1\">Y<\/span> <span class=\"sy3\">=<\/span> <span class=\"nu0\">25.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Stroke<span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span> <span class=\"sy3\">=<\/span> claNull<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Width <span class=\"sy3\">=<\/span> <span class=\"nu0\">8.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">object<\/span> cMiddle<span class=\"sy1\">:<\/span> TCircle<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Align <span class=\"sy3\">=<\/span> alCenter<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Fill<span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span> <span class=\"sy3\">=<\/span> claSienna<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Height <span class=\"sy3\">=<\/span> <span class=\"nu0\">50.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Stroke<span class=\"sy1\">.<\/span><span class=\"me1\">Color<\/span> <span class=\"sy3\">=<\/span> claNull<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; Width <span class=\"sy3\">=<\/span> <span class=\"nu0\">24.000000000000000000<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><br \/>\n&nbsp; <span class=\"kw1\">object<\/span> tmrSeconds<span class=\"sy1\">:<\/span> TTimer<br \/>\n&nbsp; &nbsp; OnTimer <span class=\"sy3\">=<\/span> tmrSecondsTimer<br \/>\n&nbsp; &nbsp; Left <span class=\"sy3\">=<\/span> <span class=\"nu0\">24<\/span><br \/>\n&nbsp; &nbsp; Top <span class=\"sy3\">=<\/span> <span class=\"nu0\">504<\/span><br \/>\n&nbsp; <span class=\"kw1\">end<\/span><br \/>\n<span class=\"kw1\">end<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Lors du premier \u00e9pisode du Dev du Jeudi de la Saison 3, Thierry a fait une application de type horloge qu\u2019il a d\u00e9ploy\u00e9 sur son t\u00e9l\u00e9phone portable via un c\u00e2ble USB\u2026<\/p>\n<p>Un participant a demand\u00e9 s\u2019il \u00e9tait possible de d\u00e9ployer en Wi-Fi\u2026 un autre a envoy\u00e9 un lien pour un type d\u2019application qui devait le permettre\u2026<\/p>\n<p>Une fois le s\u00e9minaire termin\u00e9, j\u2019ai test\u00e9 une de ces applications, dans le cas pr\u00e9sent, WiFi ADB, avec mon t\u00e9l\u00e9phone\u2026<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_links_to":"","_links_to_target":""},"categories":[132,7,6],"tags":[158,27,154,44,146,93],"class_list":["post-5123","post","type-post","status-publish","format-standard","hentry","category-android","category-delphi","category-dev","tag-android","tag-coloration-syntaxique","tag-delphi","tag-embarcadero","tag-firemonkey","tag-freeware"],"_links":{"self":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/5123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/comments?post=5123"}],"version-history":[{"count":0,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/posts\/5123\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/media?parent=5123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/categories?post=5123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.wittwer.fr\/whiler\/wp-json\/wp\/v2\/tags?post=5123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}