<?xml version="1.0" encoding="iso-8859-9" ?>
<?xml-stylesheet type="text/xsl" href="RSS_xslt_style.asp" version="1.0" ?>
<rss version="2.0" xmlns:WebWizForums="https://syndication.webwiz.net/rss_namespace/">
 <channel>
  <title>Clomosy | Forum : syntax error satir 193</title>
  <link>https://forum.clomosy.com.tr/</link>
  <description><![CDATA[XML içerik linki; Clomosy | Forum : Genel &#304;&#351;lemler : syntax error satir 193]]></description>
  <copyright>Copyright (c) 2006-2013 Web Wiz Forums - All Rights Reserved.</copyright>
  <pubDate>Tue, 21 Jul 2026 21:50:24 +0000</pubDate>
  <lastBuildDate>Tue, 21 Jul 2026 15:27:40 +0000</lastBuildDate>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Web Wiz Forums 12.07</generator>
  <ttl>30</ttl>
  <WebWizForums:feedURL>https://forum.clomosy.com.tr/RSS_post_feed.asp?TID=1624</WebWizForums:feedURL>
  <image>
   <title><![CDATA[Clomosy | Forum]]></title>
   <url>https://forum.clomosy.com.tr/forum_images/logo.png</url>
   <link>https://forum.clomosy.com.tr/</link>
  </image>
  <item>
   <title><![CDATA[syntax error satir 193 : Merhaba BarthezRefreshMovementsHistory...]]></title>
   <link>https://forum.clomosy.com.tr/forum_posts.asp?TID=1624&amp;PID=3760#3760</link>
   <description>
    <![CDATA[<strong>Yazar:</strong> <a href="https://forum.clomosy.com.tr/member_profile.asp?PF=257">Emr.Erkmn</a><br /><strong>Konu:</strong> 1624<br /><strong>Gönderim Zamaný:</strong> 21&nbsp;Temmuz&nbsp;2026 Saat 15:27<br /><br />Merhaba Barthez&nbsp;<br><br>RefreshMovementsHistory prosedürün de&nbsp;<br>193. satýr da bir tane kapanýþ parantezin eksik<br>Eklediðin de hata çözülecek&nbsp;<a href="https://static.cloudflareinsights.com/beac&#111;n.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" target="_blank" rel="nofollow">https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496"</a> integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon="{&quot;version&quot;:&quot;2024.11.0&quot;,&quot;token&quot;:&quot;439455f3e46c40b98dbd42a2f1a954d8&quot;,&quot;r&quot;:1,&quot;server_timing&quot;:{&quot;name&quot;:{&quot;cfCacheStatus&quot;:true,&quot;cfEdge&quot;:true,&quot;cfExtPri&quot;:true,&quot;cfL4&quot;:true,&quot;cfOrigin&quot;:true,&quot;cfSpeedBrain&quot;:true},&quot;location_startswith&quot;:null}}" crossorigin="anonymous">]]>
   </description>
   <pubDate>Tue, 21 Jul 2026 15:27:40 +0000</pubDate>
   <guid isPermaLink="true">https://forum.clomosy.com.tr/forum_posts.asp?TID=1624&amp;PID=3760#3760</guid>
  </item> 
  <item>
   <title><![CDATA[syntax error satir 193 : var MyForm: TclForm; mainLayout,...]]></title>
   <link>https://forum.clomosy.com.tr/forum_posts.asp?TID=1624&amp;PID=3759#3759</link>
   <description>
    <![CDATA[<strong>Yazar:</strong> <a href="https://forum.clomosy.com.tr/member_profile.asp?PF=476">Barthe_dev</a><br /><strong>Konu:</strong> 1624<br /><strong>Gönderim Zamaný:</strong> 21&nbsp;Temmuz&nbsp;2026 Saat 15:04<br /><br /><div>var</div><div>&nbsp; MyForm: TclForm;</div><div>&nbsp; mainLayout, headerLayout, switcherLayout: TclLayout;</div><div>&nbsp; scrollBody: TclVertScrollBox;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Header</div><div>&nbsp; lblKicker, lblTitle: TclProLabel;</div><div>&nbsp; btnSwitchEntry, btnSwitchExit: TclProButton;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Formulaire de Saisie (Entrée / Sortie)</div><div>&nbsp; formPanel: TclProPanel;</div><div>&nbsp; lblFormTitle: TclProLabel;</div><div>&nbsp; edtProduct, edtLot, edtBloc, edtQty, edtUnit: TclProEdit;</div><div>&nbsp; btnSubmitMvt: TclProButton;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Historique local / Journal de l'entrepôt</div><div>&nbsp; historyPanel: TclProPanel;</div><div>&nbsp; lblHistoryTitle: TclProLabel;</div><div>&nbsp; mvtQuery: TclJsonQuery;</div><div>&nbsp; mvtJson: String;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Navigation / TabBar</div><div>&nbsp; tabBarPanel: TclProPanel;</div><div>&nbsp; btnTabStock, btnTabScan, btnTabSettings: TclProButton;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Variables globales de contrôle</div><div>&nbsp; currentMvtType: String; // 'entrée' ou 'sortie'</div><div>&nbsp; i: Integer;</div><div>&nbsp; tempPanel: TclProPanel;</div><div>&nbsp; tempLayout: TclLayout;</div><div>&nbsp; tempLabel, tempLabel2: TclProLabel;</div><div>&nbsp; tempTypeIcon: TclProPanel;</div><div>&nbsp; rowQtyLayout: TclLayout;</div><div>&nbsp; Obj : TCLJSONObject;</div><div>&nbsp; //donnes pour l'enreigistremnet en data base&nbsp;</div><div>&nbsp; Rest : TclRest;</div><div>&nbsp; Json : String;</div><div>&nbsp; Result,role : String;</div><div>&nbsp;&nbsp;</div><div>&nbsp; //creation de la procedure pour la creation dynamique des blocs produit</div><div>&nbsp; historyScrollBox: TclVertScrollBox;</div><div>&nbsp; btnSeeMore: TclProButton;</div><div>&nbsp; isExpandedList: Boolean;</div><div>&nbsp; lastMvtCount: Integer;</div><div>&nbsp; historyContainerPanel: TclProPanel;</div><div>&nbsp; refreshIndex: Integer;</div><div><br></div><div>// ============================================================</div><div>// BASCULE ENTRÉE / SORTIE DE STOCK</div><div>// ============================================================</div><div>void SetModeEntry</div><div>{</div><div>&nbsp; currentMvtType = 'entrée';</div><div>&nbsp; lblFormTitle.Text = '&#128229; NOUVELLE ENTRÉE DE STOCK';</div><div>&nbsp; lblFormTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#4ade80');</div><div>&nbsp; lblFormTitle.SetclProSettings(lblFormTitle.clProSettings);</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnSubmitMvt.Caption = 'Valider l''Entrée (+)';</div><div>&nbsp; clComponent.SetupComponent(btnSubmitMvt, '{"BackgroundColor":"#22c55e20", "TextColor":"#4ade80", "RoundHeight":12, "RoundWidth":12, "BorderColor":"#22c55e50", "BorderWidth":1}');</div><div>&nbsp;&nbsp;</div><div>&nbsp; clComponent.SetupComponent(btnSwitchEntry, '{"BackgroundColor":"#0d1520", "TextColor":"#4ade80", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#22c55e40", "BorderWidth":1}');</div><div>&nbsp; clComponent.SetupComponent(btnSwitchExit, '{"BackgroundColor":"#080d14", "TextColor":"#4a6580", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>}</div><div><br></div><div>void SetModeExit</div><div>{</div><div>&nbsp; currentMvtType = 'sortie';</div><div>&nbsp; lblFormTitle.Text = '&#128228; NOUVELLE SORTIE DE STOCK';</div><div>&nbsp; lblFormTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#fb923c');</div><div>&nbsp; lblFormTitle.SetclProSettings(lblFormTitle.clProSettings);</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnSubmitMvt.Caption = 'Valider la Sortie (-)';</div><div>&nbsp; clComponent.SetupComponent(btnSubmitMvt, '{"BackgroundColor":"#f9731620", "TextColor":"#fb923c", "RoundHeight":12, "RoundWidth":12, "BorderColor":"#f9731650", "BorderWidth":1}');</div><div>&nbsp;&nbsp;</div><div>&nbsp; clComponent.SetupComponent(btnSwitchEntry, '{"BackgroundColor":"#080d14", "TextColor":"#4a6580", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; clComponent.SetupComponent(btnSwitchExit, '{"BackgroundColor":"#0d1520", "TextColor":"#fb923c", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#f9731640", "BorderWidth":1}');</div><div>}</div><div>// N'oubliez pas d'ajouter "lastMvtCount: Integer;" dans vos variables globales 'var' en haut du projet !</div><div><br></div><div>void RefreshMovementsHistory</div><div>var</div><div>&nbsp; Rest: TclRest;</div><div>&nbsp; apiUrl: String;</div><div>&nbsp; totalCardsHeight, i: Integer; // Localisation de 'i'</div><div>{</div><div>&nbsp; // ============================================================</div><div>&nbsp; // 1. Destruction propre du conteneur précédent</div><div>&nbsp; // ============================================================</div><div>&nbsp; if (historyContainerPanel &lt;&gt; nil) {</div><div>&nbsp; &nbsp; historyContainerPanel.Free;</div><div>&nbsp; &nbsp; historyContainerPanel = nil; // Réinitialisation du pointeur</div><div>&nbsp; }</div><div>&nbsp; // Génération d'un nom de composant UNIQUE pour éviter le conflit dans MyForm</div><div>&nbsp; refreshIndex = refreshIndex + 1;</div><div>&nbsp; // Recrée un panneau conteneur avec un nom unique</div><div>&nbsp; historyContainerPanel = MyForm.AddNewProPanel(historyScrollBox, 'historyContainerPanel_' + IntToStr(refreshIndex));</div><div>&nbsp; historyContainerPanel.Align = alTop;</div><div>&nbsp; clComponent.SetupComponent(historyContainerPanel, '{"BackgroundColor":"#00000000", "BorderWidth":0}');</div><div>&nbsp; // ============================================================</div><div>&nbsp; // 2. Chargement de l'API REST</div><div>&nbsp; // ============================================================</div><div>&nbsp; if (isExpandedList) {</div><div>&nbsp; &nbsp; apiUrl = '<a href="http://192.168.25.6/clomosyProject/Api/get_movements.php" target="_blank" rel="nofollow">http://192.168.25.6/clomosyProject/Api/get_movements.php</a>';</div><div>&nbsp; }</div><div>&nbsp; else {</div><div>&nbsp; &nbsp; apiUrl = '<a href="http://192.168.25.6/clomosyProject/Api/get_movements.php?limit=3" target="_blank" rel="nofollow">http://192.168.25.6/clomosyProject/Api/get_movements.php?limit=3</a>';</div><div>&nbsp; }</div><div>&nbsp; Rest = TclRest.Create;</div><div>&nbsp; try</div><div>&nbsp; &nbsp; Rest.BaseURL = apiUrl;</div><div>&nbsp; &nbsp; Rest.Method = rmGET;</div><div>&nbsp; &nbsp; Rest.Accept = 'application/json';</div><div>&nbsp; &nbsp; Rest.Execute;</div><div>&nbsp; &nbsp; if (Rest.Response &lt;&gt; '')&nbsp;</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; mvtQuery = Clomosy.ClDataSetFromJSON(Rest.Response);</div><div>&nbsp; &nbsp; &nbsp; mvtQuery.First;</div><div>&nbsp; &nbsp; &nbsp; i = 0;</div><div>&nbsp; &nbsp; &nbsp; totalCardsHeight = 0;</div><div>&nbsp; &nbsp; &nbsp; while (not mvtQuery.Eof)</div><div>&nbsp; &nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; // Création de la carte dans le conteneur dynamique</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempPanel = MyForm.AddNewProPanel(historyContainerPanel, 'mvtCard_' + IntToStr(refreshIndex) + '_' + IntToStr(i));</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempPanel.Align = alTop;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempPanel.Height = 62;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempPanel.Margins.Left = 4;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempPanel.Margins.Right = 4;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempPanel.Margins.Bottom = 8;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempPanel, '{"BackgroundColor":"#080d14", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; &nbsp; &nbsp; &nbsp; // Icône d'indicateur</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempTypeIcon = MyForm.AddNewProPanel(tempPanel, 'mvtIcon_' + IntToStr(refreshIndex) + '_' + IntToStr(i));</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempTypeIcon.Align = alLeft;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempTypeIcon.Width = 36;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempTypeIcon.Margins.Left = 8;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempTypeIcon.Margins.Top = 10;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempTypeIcon.Margins.Bottom = 10;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; if (mvtQuery.FieldByName('type').AsString == 'entrée') {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempTypeIcon, '{"BackgroundColor":"#22c55e18", "BorderColor":"#22c55e30", "BorderWidth":1, "RoundHeight":8, "RoundWidth":8}');</div><div>&nbsp; &nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; &nbsp; else {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempTypeIcon, '{"BackgroundColor":"#f9731618", "BorderColor":"#f9731630", "BorderWidth":1, "RoundHeight":8, "RoundWidth":8}');</div><div>&nbsp; &nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; &nbsp; // Détails Produit &amp; Heure</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLayout = MyForm.AddNewLayout(tempPanel, 'mvtTextLayout_' + IntToStr(refreshIndex) + '_' + IntToStr(i));</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLayout.Align = alClient;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLayout.Margins.Left = 10;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLayout.Margins.Top = 10;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel = MyForm.AddNewProLabel(tempLayout, 'mvtLblProd_' + IntToStr(refreshIndex) + '_' + IntToStr(i), mvtQuery.FieldByName('product').AsString);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel.Align = alTop;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel.clProSettings.FontSize = 12;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel.clProSettings.TextSettings.Font.Style = &#091;fsBold&#093;;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel.SetclProSettings(tempLabel.clProSettings);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel2 = MyForm.AddNewProLabel(tempLayout, 'mvtLblSub_' + IntToStr(refreshIndex) + '_' + IntToStr(i), mvtQuery.FieldByName('time').AsString + ' · ' + mvtQuery.FieldByName('bloc').AsString);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel2.Align = alTop;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel2.clProSettings.FontSize = 10;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel2.Margins.Top = 2;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel2.SetclProSettings(tempLabel2.clProSettings);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; // Quantité</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLayout = MyForm.AddNewLayout(tempPanel, 'mvtQtyLayout_' + IntToStr(refreshIndex) + '_' + IntToStr(i));</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLayout.Align = alRight;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLayout.Width = 80;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLayout.Margins.Right = 10;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLayout.Margins.Top = 10;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel = MyForm.AddNewProLabel(tempLayout, 'mvtLblQty_' + IntToStr(refreshIndex) + '_' + IntToStr(i), mvtQuery.FieldByName('qty').AsString + ' ' + mvtQuery.FieldByName('unit').AsString);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel.Align = alTop;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel.clProSettings.FontSize = 12;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; if (mvtQuery.FieldByName('qty').AsInteger &gt; 0) {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#4ade80');</div><div>&nbsp; &nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; &nbsp; else {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#fb923c');</div><div>&nbsp; &nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel.clProSettings.TextSettings.Font.Style = &#091;fsBold&#093;;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; tempLabel.SetclProSettings(tempLabel.clProSettings);</div><div>&nbsp; &nbsp; &nbsp; &nbsp; totalCardsHeight = totalCardsHeight + 70;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; i = i + 1;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; mvtQuery.Next;</div><div>&nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; // Ajustement dynamique de la hauteur</div><div>&nbsp; &nbsp; &nbsp; historyContainerPanel.Height = totalCardsHeight;</div><div>&nbsp; &nbsp; }</div><div>&nbsp; finally</div><div>&nbsp; &nbsp; Rest.Free;</div><div>&nbsp; }</div><div>&nbsp;</div><div><br></div><div>// ============================================================</div><div>// ENVOI DU MOUVEMENT AU BACKEND (API REST)</div><div>// ============================================================</div><div>//mettre la liste qutomatiquement a jour apres auel 'on a ajouter un nouveau element'</div><div>void SubmitMovement;</div><div>var</div><div>&nbsp; Rest: TclRest;</div><div>&nbsp; payloadJson, responseStr: String;</div><div>&nbsp; resObj: TclJSONObject;</div><div>{</div><div>&nbsp; if ((edtProduct.Text == '') || (edtQty.Text == '') )</div><div>&nbsp; {</div><div>&nbsp; &nbsp; ShowMessage('Veuillez renseigner au moins le produit et la quantité.');</div><div>&nbsp; &nbsp; Exit;</div><div>&nbsp; }</div><div><br></div><div>&nbsp; payloadJson = '{"type":"' + currentMvtType + '","product":"' + edtProduct.Text + '","lot":"' + edtLot.Text + '","bloc":"' + edtBloc.Text + '","qty":' + edtQty.Text + ',"unit":"' + edtUnit.Text + '"}';</div><div><br></div><div>&nbsp; Rest = TclRest.Create;</div><div>&nbsp; try</div><div>&nbsp; &nbsp; Rest.BaseURL = '<a href="http://192.168.25.6/clomosyProject/Api/add_movement.php" target="_blank" rel="nofollow">http://192.168.25.6/clomosyProject/Api/add_movement.php</a>';</div><div>&nbsp; &nbsp; Rest.Method = rmPOST;</div><div>&nbsp; &nbsp; Rest.Accept = 'application/json';</div><div>&nbsp; &nbsp; Rest.Body = payloadJson;</div><div>&nbsp; &nbsp; Rest.Execute;</div><div><br></div><div>&nbsp; &nbsp; responseStr = Rest.Response;</div><div>&nbsp; &nbsp; if (responseStr &lt;&gt; '')</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; resObj = TclJson.ParseToJSONObject(responseStr);</div><div>&nbsp; &nbsp; &nbsp; if ((resObj &lt;&gt; nil) &amp;&amp;&nbsp; (resObj.GetValue('success').AsBoolean))&nbsp;</div><div>&nbsp; &nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; &nbsp; ShowMessage('Mouvement enregistré avec succès !');</div><div>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; &nbsp; &nbsp; // Réinitialisation des champs</div><div>&nbsp; &nbsp; &nbsp; &nbsp; edtProduct.Text = '';</div><div>&nbsp; &nbsp; &nbsp; &nbsp; edtLot.Text = '';</div><div>&nbsp; &nbsp; &nbsp; &nbsp; edtQty.Text = '';</div><div>&nbsp; &nbsp; &nbsp; &nbsp; // &#128161; RAFRAÎCHISSEMENT IMMÉDIAT DE LA LISTE</div><div>&nbsp; &nbsp; &nbsp; &nbsp; RefreshMovementsHistory;</div><div>&nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; &nbsp; else{</div><div>&nbsp; &nbsp; &nbsp; &nbsp; ShowMessage('Erreur lors de l''enregistrement.');</div><div>&nbsp; &nbsp; &nbsp; }</div><div>&nbsp; &nbsp; }</div><div>&nbsp; finally</div><div>&nbsp; &nbsp; Rest.Free;</div><div>&nbsp; }</div><div>&nbsp; }</div><div><br></div><div>void TabClick</div><div>{</div><div>&nbsp; ShowMessage('Navigation : ' + TclProButton(MyForm.ClSender).Caption);</div><div>}</div><div>// Clic sur "Voir plus / Réduire"</div><div>void&nbsp; ToggleSeeMore;</div><div>{</div><div>&nbsp; isExpandedList = not isExpandedList;</div><div>&nbsp;&nbsp;</div><div>&nbsp; if (isExpandedList)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; historyPanel.Height = 420; // Agrandi le panneau</div><div>&nbsp; &nbsp; btnSeeMore.Caption = 'Réduire la liste &#9650;';</div><div>&nbsp; &nbsp;}</div><div>&nbsp; else</div><div>&nbsp; {</div><div>&nbsp; &nbsp; historyPanel.Height = 290; // Hauteur par défaut pour 3 cartes</div><div>&nbsp; &nbsp; btnSeeMore.Caption = 'Voir plus (Aujourd''hui) &#9660;';</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; RefreshMovementsHistory;</div><div>}</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>// ============================================================</div><div>// PROGRAMME PRINCIPAL</div><div>// ============================================================</div><div>{</div><div>&nbsp; MyForm = TclForm.Create(Self);</div><div>&nbsp; MyForm.SetFormColor('#080d14', '#0d1520', clGVertical);</div><div><br></div><div>&nbsp; if (not Clomosy.PlatformIsMobile) {</div><div>&nbsp; &nbsp; MyForm.clSetWindowState(fwsMaximized);</div><div>&nbsp; }</div><div>&nbsp; currentMvtType = 'entrée';</div><div><br></div><div>&nbsp; // --- Main Layout ---</div><div>&nbsp; mainLayout = MyForm.AddNewLayout(MyForm, 'mainLayout');</div><div>&nbsp; mainLayout.Align = alClient;</div><div>&nbsp; mainLayout.Margins.Bottom = 60;</div><div><br></div><div>&nbsp; // --- En-tête / Header ---</div><div>&nbsp; headerLayout = MyForm.AddNewLayout(mainLayout, 'headerLayout');</div><div>&nbsp; headerLayout.Align = alTop;</div><div>&nbsp; headerLayout.Height = 70;</div><div>&nbsp; headerLayout.Margins.Left = 16;</div><div>&nbsp; headerLayout.Margins.Right = 16;</div><div>&nbsp; headerLayout.Margins.Top = 10;</div><div><br></div><div>&nbsp; lblKicker = MyForm.AddNewProLabel(headerLayout, 'lblKicker', 'ESPACE GÉRANT D''ENTREPÔT');</div><div>&nbsp; lblKicker.Align = alTop;</div><div>&nbsp; lblKicker.Height = 14;</div><div>&nbsp; lblKicker.clProSettings.FontColor = clAlphaColor.clHexToColor('#00d4ff');</div><div>&nbsp; lblKicker.clProSettings.FontSize = 10;</div><div>&nbsp; lblKicker.clProSettings.TextSettings.Font.Style = &#091;fsBold&#093;;</div><div>&nbsp; lblKicker.SetclProSettings(lblKicker.clProSettings);</div><div><br></div><div>&nbsp; lblTitle = MyForm.AddNewProLabel(headerLayout, 'lblTitle', 'Gestion des Stocks');</div><div>&nbsp; lblTitle.Align = alTop;</div><div>&nbsp; lblTitle.Height = 32;</div><div>&nbsp; lblTitle.Margins.Top = 2;</div><div>&nbsp; lblTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; lblTitle.clProSettings.FontSize = 24;</div><div>&nbsp; lblTitle.clProSettings.TextSettings.Font.Style = &#091;fsBold&#093;;</div><div>&nbsp; lblTitle.SetclProSettings(lblTitle.clProSettings);</div><div><br></div><div>&nbsp; // --- Selecteur d'Action (Entrée / Sortie) ---</div><div>&nbsp; switcherLayout = MyForm.AddNewLayout(mainLayout, 'switcherLayout');</div><div>&nbsp; switcherLayout.Align = alTop;</div><div>&nbsp; switcherLayout.Height = 44;</div><div>&nbsp; switcherLayout.Margins.Left = 16;</div><div>&nbsp; switcherLayout.Margins.Right = 16;</div><div>&nbsp; switcherLayout.Margins.Bottom = 10;</div><div><br></div><div>&nbsp; btnSwitchEntry = MyForm.AddNewProButton(switcherLayout, 'btnSwitchEntry', '&#128229; Réception (Entrée)');</div><div>&nbsp; btnSwitchEntry.Align = alLeft;</div><div>&nbsp; btnSwitchEntry.Width = 165;</div><div>&nbsp; clComponent.SetupComponent(btnSwitchEntry, '{"BackgroundColor":"#0d1520", "TextColor":"#4ade80", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#22c55e40", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnSwitchEntry, tbeOnClick, 'SetModeEntry');</div><div><br></div><div>&nbsp; btnSwitchExit = MyForm.AddNewProButton(switcherLayout, 'btnSwitchExit', '&#128228; Expédition (Sortie)');</div><div>&nbsp; btnSwitchExit.Align = alRight;</div><div>&nbsp; btnSwitchExit.Width = 165;</div><div>&nbsp; clComponent.SetupComponent(btnSwitchExit, '{"BackgroundColor":"#080d14", "TextColor":"#4a6580", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnSwitchExit, tbeOnClick, 'SetModeExit');</div><div><br></div><div>&nbsp; // --- ScrollBox pour le formulaire et le journal ---</div><div>&nbsp; scrollBody = MyForm.AddNewVertScrollBox(mainLayout, 'scrollBody');</div><div>&nbsp; scrollBody.Align = alClient;</div><div>&nbsp; scrollBody.Margins.Left = 16;</div><div>&nbsp; scrollBody.Margins.Right = 16;</div><div><br></div><div>&nbsp; // ============================================================</div><div>&nbsp; // FORMULAIRE DE SAISIE DE STOCK</div><div>&nbsp; // ============================================================</div><div>&nbsp; formPanel = MyForm.AddNewProPanel(scrollBody, 'formPanel');</div><div>&nbsp; formPanel.Align = alTop;</div><div>&nbsp; formPanel.Height = 310;</div><div>&nbsp; formPanel.Margins.Bottom = 16;</div><div>&nbsp; clComponent.SetupComponent(formPanel, '{"BackgroundColor":"#0d1520", "RoundHeight":16, "RoundWidth":16, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div><br></div><div>&nbsp; lblFormTitle = MyForm.AddNewProLabel(formPanel, 'lblFormTitle', '&#128229; NOUVELLE ENTRÉE DE STOCK');</div><div>&nbsp; lblFormTitle.Align = alTop;</div><div>&nbsp; lblFormTitle.Height = 30;</div><div>&nbsp; lblFormTitle.Margins.Left = 14; lblFormTitle.Margins.Top = 10;</div><div>&nbsp; lblFormTitle.clProSettings.FontSize = 12;</div><div>&nbsp; lblFormTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#4ade80');</div><div>&nbsp; lblFormTitle.clProSettings.TextSettings.Font.Style = &#091;fsBold&#093;;</div><div>&nbsp; lblFormTitle.SetclProSettings(lblFormTitle.clProSettings);</div><div><br></div><div>&nbsp; edtProduct = MyForm.AddNewProEdit(formPanel, 'edtProduct', 'Nom ou référence du produit...');</div><div>&nbsp; edtProduct.Align = alTop; edtProduct.Height = 40;</div><div>&nbsp; edtProduct.Margins.Left = 14; edtProduct.Margins.Right = 14; edtProduct.Margins.Top = 6;</div><div>&nbsp; clComponent.SetupComponent(edtProduct, '{"BackgroundColor":"#080d14", "TextColor":"#e2eaf5", "RoundHeight":8, "RoundWidth":8, "BorderColor":"#1e3552", "BorderWidth":1}');</div><div><br></div><div>&nbsp; edtLot = MyForm.AddNewProEdit(formPanel, 'edtLot', 'Numéro de Lot (ex: LOT-2026-A)...');</div><div>&nbsp; edtLot.Align = alTop; edtLot.Height = 40;</div><div>&nbsp; edtLot.Margins.Left = 14; edtLot.Margins.Right = 14; edtLot.Margins.Top = 8;</div><div>&nbsp; clComponent.SetupComponent(edtLot, '{"BackgroundColor":"#080d14", "TextColor":"#e2eaf5", "RoundHeight":8, "RoundWidth":8, "BorderColor":"#1e3552", "BorderWidth":1}');</div><div><br></div><div>&nbsp; edtBloc = MyForm.AddNewProEdit(formPanel, 'edtBloc', 'Département / Bloc (ex: Bloc A)...');</div><div>&nbsp; edtBloc.Align = alTop; edtBloc.Height = 40;</div><div>&nbsp; edtBloc.Margins.Left = 14; edtBloc.Margins.Right = 14; edtBloc.Margins.Top = 8;</div><div>&nbsp; clComponent.SetupComponent(edtBloc, '{"BackgroundColor":"#080d14", "TextColor":"#e2eaf5", "RoundHeight":8, "RoundWidth":8, "BorderColor":"#1e3552", "BorderWidth":1}');</div><div><br></div><div>&nbsp; rowQtyLayout = MyForm.AddNewLayout(formPanel, 'rowQtyLayout');</div><div>&nbsp; rowQtyLayout.Align = alTop; rowQtyLayout.Height = 40;</div><div>&nbsp; rowQtyLayout.Margins.Left = 14; rowQtyLayout.Margins.Right = 14; rowQtyLayout.Margins.Top = 8;</div><div><br></div><div>&nbsp; edtQty = MyForm.AddNewProEdit(rowQtyLayout, 'edtQty', 'Quantité (ex: 50)');</div><div>&nbsp; edtQty.Align = alLeft; edtQty.Width = 160;</div><div>&nbsp; clComponent.SetupComponent(edtQty, '{"BackgroundColor":"#080d14", "TextColor":"#e2eaf5", "RoundHeight":8, "RoundWidth":8, "BorderColor":"#1e3552", "BorderWidth":1}');</div><div><br></div><div>&nbsp; edtUnit = MyForm.AddNewProEdit(rowQtyLayout, 'edtUnit', 'Unité (kg, pcs, L)');</div><div>&nbsp; edtUnit.Align = alRight; edtUnit.Width = 140;</div><div>&nbsp; clComponent.SetupComponent(edtUnit, '{"BackgroundColor":"#080d14", "TextColor":"#e2eaf5", "RoundHeight":8, "RoundWidth":8, "BorderColor":"#1e3552", "BorderWidth":1}');</div><div><br></div><div>&nbsp; btnSubmitMvt = MyForm.AddNewProButton(formPanel, 'btnSubmitMvt', 'Valider l''Entrée (+)');</div><div>&nbsp; btnSubmitMvt.Align = alTop; btnSubmitMvt.Height = 44;</div><div>&nbsp; btnSubmitMvt.Margins.Left = 14; btnSubmitMvt.Margins.Right = 14; btnSubmitMvt.Margins.Top = 14;</div><div>&nbsp; clComponent.SetupComponent(btnSubmitMvt, '{"BackgroundColor":"#22c55e20", "TextColor":"#4ade80", "RoundHeight":12, "RoundWidth":12, "BorderColor":"#22c55e50", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnSubmitMvt, tbeOnClick, 'SubmitMovement');</div><div><br></div><div>&nbsp; // ============================================================</div><div>&nbsp; // JOURNAL DES MOUVEMENTS RÉCENTS (DYNAMIQUE)</div><div>&nbsp; // ============================================================</div><div>&nbsp; historyPanel = MyForm.AddNewProPanel(scrollBody, 'historyPanel');</div><div>&nbsp; historyPanel.Align = alTop;</div><div>&nbsp; historyPanel.Height = 290;</div><div>&nbsp; historyPanel.Margins.Bottom = 16;</div><div>&nbsp; clComponent.SetupComponent(historyPanel, '{"BackgroundColor":"#0d1520", "RoundHeight":16, "RoundWidth":16, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div><br></div><div>&nbsp; lblHistoryTitle = MyForm.AddNewProLabel(historyPanel, 'lblHistoryTitle', '&#128203; Mouvements récents de votre département');</div><div>&nbsp; lblHistoryTitle.Align = alTop;</div><div>&nbsp; lblHistoryTitle.Height = 34;</div><div>&nbsp; lblHistoryTitle.Margins.Left = 14;&nbsp;</div><div>&nbsp; lblHistoryTitle.Margins.Top = 8;</div><div>&nbsp; lblHistoryTitle.clProSettings.FontSize = 12;</div><div>&nbsp; lblHistoryTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; lblHistoryTitle.clProSettings.TextSettings.Font.Style = &#091;fsBold&#093;;</div><div>&nbsp; lblHistoryTitle.SetclProSettings(lblHistoryTitle.clProSettings);</div><div><br></div><div>&nbsp; // Bouton "Voir plus" en bas du panneau</div><div>&nbsp; btnSeeMore = MyForm.AddNewProButton(historyPanel, 'btnSeeMore', 'Voir plus (Aujourd''hui) &#9660;');</div><div>&nbsp; btnSeeMore.Align = alBottom;</div><div>&nbsp; btnSeeMore.Height = 32;</div><div>&nbsp; btnSeeMore.Margins.Left = 12;&nbsp;</div><div>&nbsp; btnSeeMore.Margins.Right = 12;&nbsp;</div><div>&nbsp; btnSeeMore.Margins.Bottom = 8;</div><div>&nbsp; clComponent.SetupComponent(btnSeeMore, '{"BackgroundColor":"#080d14", "TextColor":"#00d4ff", "RoundHeight":8, "RoundWidth":8, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnSeeMore, tbeOnClick, 'ToggleSeeMore');</div><div><br></div><div>&nbsp; // Sous-conteneur défilant pour la liste dynamique des cartes</div><div>&nbsp; historyScrollBox = MyForm.AddNewVertScrollBox(historyPanel, 'historyScrollBox');</div><div>&nbsp; historyScrollBox.Align = alClient;</div><div>&nbsp; historyScrollBox.Margins.Left = 8;</div><div>&nbsp; historyScrollBox.Margins.Right = 8;</div><div>&nbsp; // Premier chargement au démarrage (Mode réduit : 3 éléments)</div><div>&nbsp; isExpandedList = False;</div><div>&nbsp; RefreshMovementsHistory;</div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div>&nbsp; // ============================================================</div><div>&nbsp; // TAB BAR INFÉRIEURE</div><div>&nbsp; // ============================================================</div><div>&nbsp; tabBarPanel = MyForm.AddNewProPanel(MyForm, 'tabBarPanel');</div><div>&nbsp; tabBarPanel.Align = alBottom;</div><div>&nbsp; tabBarPanel.Height = 58;</div><div>&nbsp; clComponent.SetupComponent(tabBarPanel, '{"BackgroundColor":"#07101c", "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div><br></div><div>&nbsp; btnTabStock = MyForm.AddNewProButton(tabBarPanel, 'btnTabStock', 'Saisie Stock');</div><div>&nbsp; btnTabStock.Align = alLeft; btnTabStock.Width = 115;</div><div>&nbsp; clComponent.SetupComponent(btnTabStock, '{"BackgroundColor":"#07101c", "TextColor":"#00d4ff", "RoundHeight":0, "RoundWidth":0}');</div><div>&nbsp; MyForm.AddNewEvent(btnTabStock, tbeOnClick, 'TabClick');</div><div><br></div><div>&nbsp; btnTabScan = MyForm.AddNewProButton(tabBarPanel, 'btnTabScan', 'Scanner QR');</div><div>&nbsp; btnTabScan.Align = alLeft; btnTabScan.Width = 115;</div><div>&nbsp; clComponent.SetupComponent(btnTabScan, '{"BackgroundColor":"#07101c", "TextColor":"#4a6580", "RoundHeight":0, "RoundWidth":0}');</div><div>&nbsp; MyForm.AddNewEvent(btnTabScan, tbeOnClick, 'TabClick');</div><div><br></div><div>&nbsp; btnTabSettings = MyForm.AddNewProButton(tabBarPanel, 'btnTabSettings', 'Profil');</div><div>&nbsp; btnTabSettings.Align = alClient;</div><div>&nbsp; clComponent.SetupComponent(btnTabSettings, '{"BackgroundColor":"#07101c", "TextColor":"#4a6580", "RoundHeight":0, "RoundWidth":0}');</div><div>&nbsp; MyForm.AddNewEvent(btnTabSettings, tbeOnClick, 'TabClick');</div><div><br></div><div>&nbsp; MyForm.Run;</div><div>}</div><a href="https://static.cloudflareinsights.com/beac&#111;n.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" target="_blank" rel="nofollow">https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496"</a> integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon="{&quot;version&quot;:&quot;2024.11.0&quot;,&quot;token&quot;:&quot;439455f3e46c40b98dbd42a2f1a954d8&quot;,&quot;r&quot;:1,&quot;server_timing&quot;:{&quot;name&quot;:{&quot;cfCacheStatus&quot;:true,&quot;cfEdge&quot;:true,&quot;cfExtPri&quot;:true,&quot;cfL4&quot;:true,&quot;cfOrigin&quot;:true,&quot;cfSpeedBrain&quot;:true},&quot;location_startswith&quot;:null}}" crossorigin="anonymous">]]>
   </description>
   <pubDate>Tue, 21 Jul 2026 15:04:19 +0000</pubDate>
   <guid isPermaLink="true">https://forum.clomosy.com.tr/forum_posts.asp?TID=1624&amp;PID=3759#3759</guid>
  </item> 
 </channel>
</rss>