<?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 : kod calismiyor ama357 satira hata gosteriyor</title>
  <link>https://forum.clomosy.com.tr/</link>
  <description><![CDATA[XML içerik linki; Clomosy | Forum : Genel &#304;&#351;lemler : kod calismiyor ama357 satira hata gosteriyor]]></description>
  <copyright>Copyright (c) 2006-2013 Web Wiz Forums - All Rights Reserved.</copyright>
  <pubDate>Fri, 17 Jul 2026 19:36:24 +0000</pubDate>
  <lastBuildDate>Fri, 17 Jul 2026 17:09:08 +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=1619</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[kod calismiyor ama357 satira hata gosteriyor : Merhaba Barthez hatan&#305; &#231;&#246;zd&#252;m...]]></title>
   <link>https://forum.clomosy.com.tr/forum_posts.asp?TID=1619&amp;PID=3742#3742</link>
   <description>
    <![CDATA[<strong>Yazar:</strong> <a href="https://forum.clomosy.com.tr/member_profile.asp?PF=468">ibrahimBsr</a><br /><strong>Konu:</strong> 1619<br /><strong>Gönderim Zamaný:</strong> 17&nbsp;Temmuz&nbsp;2026 Saat 17:09<br /><br />Merhaba Barthez hataný çözdüm sen baþlýklarýný TCLProLabel olarak kaydetmiþsin ama kullanýrken AddNewLabel olarak kullanmýþsýn bundan kaynaklý hata alýyordun kodun doðrusunu atýyorum:<br><div>var</div><div>&nbsp; MyForm: TclForm;</div><div>&nbsp; mainLayout, screenSwitcherLayout: TclLayout;</div><div>&nbsp; mvtScreenLayout, prodScreenLayout: TclLayout;</div><div>&nbsp; btnMvtScreen, btnProdScreen: TclProButton;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Header Panel</div><div>&nbsp; headerPanel: TclProPanel;</div><div>&nbsp; lblHeaderTitle, lblHeaderSubtitle: TclProLabel;</div><div>&nbsp; statsLayout: TclLayout;</div><div>&nbsp; pnlStat1, pnlStat2: TclProPanel;</div><div>&nbsp; lblStatVal1, lblStatLbl1, lblStatVal2, lblStatLbl2: TclProLabel;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Mouvements list</div><div>&nbsp; mvtScrollBox: TclVertScrollBox;</div><div>&nbsp; mvtQuery: TclJsonQuery;</div><div>&nbsp; mvtJson: String;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Production lots &amp; Invoices list</div><div>&nbsp; prodScrollBox: TclVertScrollBox;</div><div>&nbsp; lotsQuery: TclJsonQuery;</div><div>&nbsp; lotsJson: String;</div><div>&nbsp; invoicesQuery: TclJsonQuery;</div><div>&nbsp; invoicesJson: String;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Actions &amp; Scanner</div><div>&nbsp; mvtActionsPanel: TclProPanel;</div><div>&nbsp; prodActionsPanel: TclProPanel;</div><div>&nbsp; btnScanQr: TclProButton;</div><div>&nbsp; lblScanResult: TclProLabel;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Bottom Tab Bar</div><div>&nbsp; tabBarPanel: TclProPanel;</div><div>&nbsp; btnTabMvt, btnTabProd, btnTabUsers, btnTabReports, btnTabSettings: TclProButton;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Detail Sheets / Overlay</div><div>&nbsp; detailOverlay: TclProPanel;</div><div>&nbsp; detailSheet: TclProPanel;</div><div>&nbsp; lblDetailTitle, lblDetailSubtitle: TclProLabel;</div><div>&nbsp; pnlDetailGrid: TclProPanel;</div><div>&nbsp; lblGridVal1, lblGridLbl1, lblGridVal2, lblGridLbl2: TclProLabel;</div><div>&nbsp; lblGridVal3, lblGridLbl3, lblGridVal4, lblGridLbl4: TclProLabel;</div><div>&nbsp; btnDetailAction1, btnDetailAction2: TclProButton;</div><div>&nbsp; btnCloseDetail: TclProButton;</div><div>&nbsp; // Loop &amp; temporary variables</div><div>&nbsp; i, clickedIndex: Integer;</div><div>&nbsp; tempPanel: TclProPanel;</div><div>&nbsp; tempLayout,HeaderLayout: TclLayout;</div><div>&nbsp; tempLabel, tempLabel2,label1,label2: TclProLabel;</div><div>&nbsp; tempProgressBg, tempProgressFg: TclProPanel;</div><div>&nbsp; tempTypeIcon: TclProPanel;</div><div>void ShowMvtScreen;</div><div>{</div><div>&nbsp; mvtScreenLayout.Visible = True;</div><div>&nbsp; prodScreenLayout.Visible = False;</div><div>&nbsp; lblHeaderTitle.Text = 'Mouvements';</div><div>&nbsp; lblHeaderSubtitle.Text = '&amp; traçabilité';</div><div>&nbsp; lblHeaderSubtitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#00d4ff');</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Switch button styles</div><div>&nbsp; clComponent.SetupComponent(btnMvtScreen, '{"BackgroundColor":"#0d1520", "TextColor":"#e2eaf5"}');</div><div>&nbsp; clComponent.SetupComponent(btnProdScreen, '{"BackgroundColor":"#080d14", "TextColor":"#4a6580"}');</div><div>}</div><div>void ShowProdScreen;</div><div>{</div><div>&nbsp; mvtScreenLayout.Visible = False;</div><div>&nbsp; prodScreenLayout.Visible = True;</div><div>&nbsp; lblHeaderTitle.Text = 'Production';</div><div>&nbsp; lblHeaderSubtitle.Text = '&amp; lots';</div><div>&nbsp; lblHeaderSubtitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#60a5fa');</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Switch button styles</div><div>&nbsp; clComponent.SetupComponent(btnMvtScreen, '{"BackgroundColor":"#080d14", "TextColor":"#4a6580"}');</div><div>&nbsp; clComponent.SetupComponent(btnProdScreen, '{"BackgroundColor":"#0d1520", "TextColor":"#e2eaf5"}');</div><div>}</div><div>void OnMvtScreenClick;</div><div>{</div><div>&nbsp; ShowMvtScreen;</div><div>}</div><div>void OnProdScreenClick;</div><div>{</div><div>&nbsp; ShowProdScreen;</div><div>}</div><div>void CloseDetailOverlay;</div><div>{</div><div>&nbsp; detailOverlay.Visible = False;</div><div>}</div><div>void OpenMvtDetail;</div><div>var</div><div>&nbsp; idx: Integer;</div><div>&nbsp; foundMvt: Boolean;</div><div>{</div><div>&nbsp; idx = TclProPanel(MyForm.ClSender).ClTagInt;</div><div>&nbsp;&nbsp;</div><div>&nbsp; mvtQuery.First;</div><div>&nbsp; foundMvt = False;</div><div>&nbsp; i = 0;</div><div>&nbsp; while (not mvtQuery.Eof)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; if (i == idx)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; foundMvt = True;</div><div>&nbsp; &nbsp; &nbsp; Break;</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; i = i + 1;</div><div>&nbsp; &nbsp; mvtQuery.Next;</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; if (foundMvt)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; lblDetailTitle.Text = mvtQuery.FieldByName('id').AsString;</div><div>&nbsp; &nbsp; lblDetailSubtitle.Text = mvtQuery.FieldByName('product').AsString + ' · ' + mvtQuery.FieldByName('bloc').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl1.Text = 'QUANTITÉ';</div><div>&nbsp; &nbsp; lblGridVal1.Text = mvtQuery.FieldByName('qty').AsString + ' ' + mvtQuery.FieldByName('unit').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl2.Text = 'LOT';</div><div>&nbsp; &nbsp; lblGridVal2.Text = mvtQuery.FieldByName('lot').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl3.Text = 'DATE / HEURE';</div><div>&nbsp; &nbsp; lblGridVal3.Text = mvtQuery.FieldByName('date').AsString + ' ' + mvtQuery.FieldByName('time').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl4.Text = 'OPÉRATEUR';</div><div>&nbsp; &nbsp; lblGridVal4.Text = mvtQuery.FieldByName('operator').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; btnDetailAction1.Caption = 'Voir le QR';</div><div>&nbsp; &nbsp; btnDetailAction2.Caption = 'Annuler';</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; detailOverlay.Visible = True;</div><div>&nbsp; }</div><div>}</div><div>void OpenLotDetail;</div><div>var</div><div>&nbsp; idx: Integer;</div><div>&nbsp; foundLot: Boolean;</div><div>{</div><div>&nbsp; idx = TclProPanel(MyForm.ClSender).ClTagInt;</div><div>&nbsp;&nbsp;</div><div>&nbsp; lotsQuery.First;</div><div>&nbsp; foundLot = False;</div><div>&nbsp; i = 0;</div><div>&nbsp; while (not lotsQuery.Eof)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; if (i == idx)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; foundLot = True;</div><div>&nbsp; &nbsp; &nbsp; Break;</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; i = i + 1;</div><div>&nbsp; &nbsp; lotsQuery.Next;</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; if (foundLot)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; lblDetailTitle.Text = lotsQuery.FieldByName('id').AsString;</div><div>&nbsp; &nbsp; lblDetailSubtitle.Text = lotsQuery.FieldByName('product').AsString + ' · ' + lotsQuery.FieldByName('bloc').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl1.Text = 'QUANTITÉ';</div><div>&nbsp; &nbsp; lblGridVal1.Text = lotsQuery.FieldByName('qty').AsString + ' ' + lotsQuery.FieldByName('unit').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl2.Text = 'PROGRESSION';</div><div>&nbsp; &nbsp; lblGridVal2.Text = lotsQuery.FieldByName('progress').AsString + '%';</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl3.Text = 'DÉBUT';</div><div>&nbsp; &nbsp; lblGridVal3.Text = lotsQuery.FieldByName('started').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl4.Text = 'OPÉRATEUR';</div><div>&nbsp; &nbsp; lblGridVal4.Text = lotsQuery.FieldByName('operator').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; btnDetailAction1.Caption = 'Mettre à jour';</div><div>&nbsp; &nbsp; btnDetailAction2.Caption = 'Clôturer le lot';</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; detailOverlay.Visible = True;</div><div>&nbsp; }</div><div>}</div><div>void OpenInvoiceDetail;</div><div>var</div><div>&nbsp; idx: Integer;</div><div>&nbsp; foundInv: Boolean;</div><div>{</div><div>&nbsp; idx = TclProPanel(MyForm.ClSender).ClTagInt;</div><div>&nbsp;&nbsp;</div><div>&nbsp; invoicesQuery.First;</div><div>&nbsp; foundInv = False;</div><div>&nbsp; i = 0;</div><div>&nbsp; while (not invoicesQuery.Eof)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; if (i == idx)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; foundInv = True;</div><div>&nbsp; &nbsp; &nbsp; Break;</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; i = i + 1;</div><div>&nbsp; &nbsp; invoicesQuery.Next;</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; if (foundInv)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; lblDetailTitle.Text = invoicesQuery.FieldByName('id').AsString;</div><div>&nbsp; &nbsp; lblDetailSubtitle.Text = invoicesQuery.FieldByName('client').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl1.Text = 'MONTANT';</div><div>&nbsp; &nbsp; lblGridVal1.Text = invoicesQuery.FieldByName('amount').AsString + ' ' + invoicesQuery.FieldByName('currency').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl2.Text = 'STATUT';</div><div>&nbsp; &nbsp; lblGridVal2.Text = invoicesQuery.FieldByName('status').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl3.Text = 'ÉMISE LE';</div><div>&nbsp; &nbsp; lblGridVal3.Text = invoicesQuery.FieldByName('date').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl4.Text = 'ÉCHÉANCE';</div><div>&nbsp; &nbsp; lblGridVal4.Text = invoicesQuery.FieldByName('due').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; btnDetailAction1.Caption = 'Marquer payée';</div><div>&nbsp; &nbsp; btnDetailAction2.Caption = 'Exporter PDF';</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; detailOverlay.Visible = True;</div><div>&nbsp; }</div><div>}</div><div>void RunScanner;</div><div>{</div><div>&nbsp; MyForm.CallBarcodeReader(lblScanResult);</div><div>}</div><div>void TabClick;</div><div>var</div><div>&nbsp; tabName: String;</div><div>{</div><div>&nbsp; tabName = TclProButton(MyForm.ClSender).Caption;</div><div>&nbsp; ShowMessage('Navigation vers : ' + tabName);</div><div>}</div><div>void ActionClick;</div><div>var</div><div>&nbsp; actName: String;</div><div>{</div><div>&nbsp; actName = TclProButton(MyForm.ClSender).Text;</div><div>&nbsp; ShowMessage('Action déclenchée : ' + actName);</div><div>}</div><div>{</div><div>&nbsp; MyForm = TclForm.Create(Self);</div><div>&nbsp; MyForm.SetFormColor('#080d14', '#0d1520', clGVertical);</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Set window state to full screen on Windows</div><div>&nbsp; if (not Clomosy.PlatformIsMobile)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; MyForm.clSetWindowState(fwsMaximized);</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; // --- Data Init ---</div><div>&nbsp; mvtJson = '&#091;{"id":"MV-081","date":"12/07","time":"14:32","type":"entrée","product":"Produit A","lot":"LOT001","bloc":"Bloc A","qty":50,"unit":"kg","operator":"Y. Kaya"},' +</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'{"id":"MV-082","date":"12/07","time":"11:15","type":"sortie","product":"Produit B","lot":"LOT002","bloc":"Dépôt","qty":-10,"unit":"pcs","operator":"M. Arslan"},' +</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'{"id":"MV-083","date":"11/07","time":"09:47","type":"entrée","product":"Produit C","lot":"LOT003","bloc":"Bloc B","qty":120,"unit":"unité","operator":"F. Demir"},' +</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'{"id":"MV-084","date":"11/07","time":"08:05","type":"transfert","product":"Produit D","lot":"LOT001","bloc":"Bloc C","qty":30,"unit":"pcs","operator":"A. Yýldýz"}&#093;';</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div>&nbsp; lotsJson = '&#091;{"id":"LOT001","product":"Produit A","bloc":"Bloc A","qty":320,"unit":"kg","status":"production","started":"08/07","operator":"Y. Kaya","progress":72},' +</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '{"id":"LOT002","product":"Produit B","bloc":"Bloc B","qty":150,"unit":"pcs","status":"depot","started":"05/07","operator":"M. Arslan","progress":100},' +</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '{"id":"LOT003","product":"Produit C","bloc":"Bloc C","qty":480,"unit":"unité","status":"production","started":"10/07","operator":"F. Demir","progress":45}&#093;';</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><div>&nbsp; invoicesJson = '&#091;{"id":"F001","client":"Client A","amount":"250 000","currency":"DA","date":"01/07","due":"15/07","status":"payée"},' +</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '{"id":"F002","client":"Client B","amount":"120 000","currency":"DA","date":"03/07","due":"17/07","status":"retard"},' +</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '{"id":"F003","client":"Client C","amount":"85 000","currency":"DA","date":"06/07","due":"20/07","status":"en_attente"}&#093;';</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><div>&nbsp; mvtQuery = Clomosy.ClDataSetFromJSON(mvtJson);</div><div>&nbsp; lotsQuery = Clomosy.ClDataSetFromJSON(lotsJson);</div><div>&nbsp; invoicesQuery = Clomosy.ClDataSetFromJSON(invoicesJson);</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</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; // Leave space for bottom tab bar</div><div>&nbsp;&nbsp;</div><div>&nbsp; // &#091; ÉTAPE 1 : HEADER GESTION DES MEMBRES &#093;</div><div>&nbsp; HeaderLayout = MyForm.AddNewLayout(mainLayout, 'HeaderLayout');</div><div>&nbsp; HeaderLayout.Align = alTop;</div><div>&nbsp; HeaderLayout.Height = 80;</div><div><br></div><div>&nbsp; // Bouton Retour (Gauche)</div><div>&nbsp; label1 = MyForm.AddNewProLabel(HeaderLayout, 'label1', 'GESTIONNAIRES DES UTILISATEURS');</div><div>&nbsp; label1.Align = alTop;</div><div>&nbsp; label1.Margins.Left = 14;&nbsp;</div><div>&nbsp; label1.Margins.Top = 16;</div><div>&nbsp; label1.clProSettings.FontColor = clAlphaColor.clHexToColor('#446580');</div><div>&nbsp; label1.clProSettings.FontSize = 12;</div><div>&nbsp; label1.clProSettings.TextSettings.Font.Style = &#091;fsBold&#093;;</div><div>&nbsp; label1.SetclProSettings(label1.clProSettings);</div><div><br></div><div><br></div><div>&nbsp; // Titre "MEMBRES" (Centre)</div><div>&nbsp; label2 = MyForm.AddNewProLabel(HeaderLayout, 'label2', 'Utilisateurs &amp; roles');</div><div>&nbsp; label2.Align = alTop;</div><div>&nbsp; label2.Margins.Left = 14;&nbsp;</div><div>&nbsp; label2.Height = 40;</div><div>&nbsp; label2.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8eef5');</div><div>&nbsp; label2.clProSettings.FontSize = 30;</div><div>&nbsp; label2.clProSettings.TextSettings.Font.Style = &#091;fsBold&#093;;</div><div>&nbsp; label2.SetclProSettings(label2.clProSettings);</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // --- Header Panel ---</div><div>&nbsp; headerPanel = MyForm.AddNewProPanel(mainLayout, 'headerPanel');</div><div>&nbsp; headerPanel.Align = alTop;</div><div>&nbsp; headerPanel.Height = 110;</div><div>&nbsp; headerPanel.Margins.Left = 10;</div><div>&nbsp; headerPanel.Margins.Right = 10;</div><div>&nbsp; headerPanel.Margins.Top = 10;</div><div>&nbsp; headerPanel.Padding.Left = 15;</div><div>&nbsp; headerPanel.Padding.Top = 15;</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblHeaderTitle = MyForm.AddNewProLabel(headerPanel, 'lblHeaderTitle', 'Mouvements');</div><div>&nbsp; lblHeaderTitle.Align = alTop;</div><div>&nbsp; lblHeaderTitle.clProSettings.FontSize = 22;</div><div>&nbsp; lblHeaderTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; lblHeaderTitle.SetclProSettings(lblHeaderTitle.clProSettings);</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblHeaderSubtitle = MyForm.AddNewProLabel(headerPanel, 'lblHeaderSubtitle', '&amp; traçabilité');</div><div>&nbsp; lblHeaderSubtitle.Align = alTop;</div><div>&nbsp; lblHeaderSubtitle.clProSettings.FontSize&nbsp; = 18;</div><div>&nbsp; lblHeaderSubtitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#00d4ff');</div><div>&nbsp; lblHeaderSubtitle.Margins.Top = 2;</div><div>&nbsp; lblHeaderSubtitle.SetclProSettings(lblHeaderSubtitle.clProSettings);</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // --- Screen Switcher Pill ---</div><div>&nbsp; screenSwitcherLayout = MyForm.AddNewLayout(mainLayout, 'screenSwitcherLayout');</div><div>&nbsp; screenSwitcherLayout.Align = alTop;</div><div>&nbsp; screenSwitcherLayout.Height = 44;</div><div>&nbsp; screenSwitcherLayout.Margins.Left = 10;</div><div>&nbsp; screenSwitcherLayout.Margins.Right = 10;</div><div>&nbsp; screenSwitcherLayout.Margins.Top = 8;</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnMvtScreen = MyForm.AddNewProButton(screenSwitcherLayout, 'btnMvtScreen', 'Mouvements');</div><div>&nbsp; btnMvtScreen.Align = alLeft;</div><div>&nbsp; btnMvtScreen.Width = 170;</div><div>&nbsp; clComponent.SetupComponent(btnMvtScreen, '{"BackgroundColor":"#0d1520", "TextColor":"#e2eaf5", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnMvtScreen, tbeOnClick, 'OnMvtScreenClick');</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnProdScreen = MyForm.AddNewProButton(screenSwitcherLayout, 'btnProdScreen', 'Production');</div><div>&nbsp; btnProdScreen.Align = alRight;</div><div>&nbsp; btnProdScreen.Width = 170;</div><div>&nbsp; clComponent.SetupComponent(btnProdScreen, '{"BackgroundColor":"#080d14", "TextColor":"#4a6580", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnProdScreen, tbeOnClick, 'OnProdScreenClick');</div><div>&nbsp; // --- Mouvement Screen ---</div><div>&nbsp; mvtScreenLayout = MyForm.AddNewLayout(mainLayout, 'mvtScreenLayout');</div><div>&nbsp; mvtScreenLayout.Align = alClient;</div><div>&nbsp;&nbsp;</div><div>&nbsp; mvtScrollBox = MyForm.AddNewVertScrollBox(mvtScreenLayout, 'mvtScrollBox');</div><div>&nbsp; mvtScrollBox.Align = alClient;</div><div>&nbsp; mvtScrollBox.Margins.Top = 10;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Dynamically load Movements list</div><div>&nbsp; mvtQuery.First;</div><div>&nbsp; i = 0;</div><div>&nbsp; while (not mvtQuery.Eof)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; tempPanel = MyForm.AddNewProPanel(mvtScrollBox, 'mvtCard' + IntToStr(i));</div><div>&nbsp; &nbsp; tempPanel.Align = alTop;</div><div>&nbsp; &nbsp; tempPanel.Height = 70;</div><div>&nbsp; &nbsp; tempPanel.Margins.Left = 10;</div><div>&nbsp; &nbsp; tempPanel.Margins.Right = 10;</div><div>&nbsp; &nbsp; tempPanel.Margins.Bottom = 8;</div><div>&nbsp; &nbsp; tempPanel.ClTagInt = i;</div><div>&nbsp; &nbsp; clComponent.SetupComponent(tempPanel, '{"BackgroundColor":"#0d1520", "RoundHeight":12, "RoundWidth":12, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; &nbsp; MyForm.AddNewEvent(tempPanel, tbeOnClick, 'OpenMvtDetail');</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Icon panel wrapper</div><div>&nbsp; &nbsp; tempTypeIcon = MyForm.AddNewProPanel(tempPanel, 'mvtIcon' + IntToStr(i));</div><div>&nbsp; &nbsp; tempTypeIcon.Align = alLeft;</div><div>&nbsp; &nbsp; tempTypeIcon.Width = 40;</div><div>&nbsp; &nbsp; tempTypeIcon.Margins.Left = 10;</div><div>&nbsp; &nbsp; tempTypeIcon.Margins.Top = 10;</div><div>&nbsp; &nbsp; tempTypeIcon.Margins.Bottom = 10;</div><div>&nbsp; &nbsp; if (mvtQuery.FieldByName('type').AsString == 'entrée')</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempTypeIcon, '{"BackgroundColor":"#22c55e18", "BorderColor":"#22c55e30", "BorderWidth":1, "RoundHeight":8, "RoundWidth":8}');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; else if (mvtQuery.FieldByName('type').AsString == 'sortie')</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempTypeIcon, '{"BackgroundColor":"#f9731618", "BorderColor":"#f9731630", "BorderWidth":1, "RoundHeight":8, "RoundWidth":8}');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; else</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempTypeIcon, '{"BackgroundColor":"#00d4ff14", "BorderColor":"#00d4ff30", "BorderWidth":1, "RoundHeight":8, "RoundWidth":8}');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Details block</div><div>&nbsp; &nbsp; tempLayout = MyForm.AddNewLayout(tempPanel, 'mvtTextLayout' + IntToStr(i));</div><div>&nbsp; &nbsp; tempLayout.Align = alClient;</div><div>&nbsp; &nbsp; tempLayout.Margins.Left = 12;</div><div>&nbsp; &nbsp; tempLayout.Margins.Top = 12;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel = MyForm.AddNewProLabel(tempLayout, 'mvtLblProd' + IntToStr(i), mvtQuery.FieldByName('product').AsString);</div><div>&nbsp; &nbsp; tempLabel.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; &nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel2 = MyForm.AddNewProLabel(tempLayout, 'mvtLblSub' + IntToStr(i), mvtQuery.FieldByName('date').AsString + ' · ' + mvtQuery.FieldByName('time').AsString + ' · ' + mvtQuery.FieldByName('bloc').AsString);</div><div>&nbsp; &nbsp; tempLabel2.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontSize&nbsp; = 10;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; &nbsp; //tempLabel2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp; tempLabel2.Margins.Top = 3;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Qty block</div><div>&nbsp; &nbsp; tempLayout = MyForm.AddNewLayout(tempPanel, 'mvtQtyLayout' + IntToStr(i));</div><div>&nbsp; &nbsp; tempLayout.Align = alRight;</div><div>&nbsp; &nbsp; tempLayout.Width = 80;</div><div>&nbsp; &nbsp; tempLayout.Margins.Right = 10;</div><div>&nbsp; &nbsp; tempLayout.Margins.Top = 12;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel = MyForm.AddNewProLabel(tempLayout, 'mvtLblQty' + IntToStr(i), mvtQuery.FieldByName('qty').AsString);</div><div>&nbsp; &nbsp; tempLabel.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontSize&nbsp; = 15;</div><div>&nbsp; &nbsp; if (mvtQuery.FieldByName('qty').AsInteger &gt; 0)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#4ade80');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; else</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#fb923c');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel2 = MyForm.AddNewProLabel(tempLayout, 'mvtLblUnit' + IntToStr(i), mvtQuery.FieldByName('unit').AsString);</div><div>&nbsp; &nbsp; tempLabel2.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontSize&nbsp; = 9;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; &nbsp; //tempLabel2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp; tempLabel2.Margins.Top = 2;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; i = i + 1;</div><div>&nbsp; &nbsp; mvtQuery.Next;</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Administrator actions for Mouvements Screen</div><div>&nbsp; mvtActionsPanel = MyForm.AddNewProPanel(mvtScrollBox, 'mvtActionsPanel');</div><div>&nbsp; mvtActionsPanel.Align = alTop;</div><div>&nbsp; mvtActionsPanel.Height = 220;</div><div>&nbsp; mvtActionsPanel.Margins.Top = 15;</div><div>&nbsp; mvtActionsPanel.Margins.Left = 10;</div><div>&nbsp; mvtActionsPanel.Margins.Right = 10;</div><div>&nbsp;&nbsp;</div><div>&nbsp; tempLabel = MyForm.AddNewProLabel(mvtActionsPanel, 'lblAdminTitle1', 'ACTIONS ADMINISTRATEUR');</div><div>&nbsp; tempLabel.Align = alTop;</div><div>&nbsp; tempLabel.clProSettings.FontSize&nbsp; = 10;</div><div>&nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; tempLabel.Margins.Bottom = 8;</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnScanQr = MyForm.AddNewProButton(mvtActionsPanel, 'btnScanQr', 'Scanner un QR code / lot');</div><div>&nbsp; btnScanQr.Align = alTop;</div><div>&nbsp; btnScanQr.Height = 44;</div><div>&nbsp; btnScanQr.Margins.Bottom = 8;</div><div>&nbsp; clComponent.SetupComponent(btnScanQr, '{"BackgroundColor":"#00d4ff18", "TextColor":"#00d4ff", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#00d4ff30", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnScanQr, tbeOnClick, 'RunScanner');</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblScanResult = MyForm.AddNewProLabel(mvtActionsPanel, 'lblScanResult', '');</div><div>&nbsp; lblScanResult.Visible = False;</div><div>&nbsp; // --- Production Screen ---</div><div>&nbsp; prodScreenLayout = MyForm.AddNewLayout(mainLayout, 'prodScreenLayout');</div><div>&nbsp; prodScreenLayout.Align = alClient;</div><div>&nbsp; prodScreenLayout.Visible = False; // Hide initially</div><div>&nbsp;&nbsp;</div><div>&nbsp; prodScrollBox = MyForm.AddNewVertScrollBox(prodScreenLayout, 'prodScrollBox');</div><div>&nbsp; prodScrollBox.Align = alClient;</div><div>&nbsp; prodScrollBox.Margins.Top = 10;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Header section for active Lots</div><div>&nbsp; tempLabel = MyForm.AddNewProLabel(prodScrollBox, 'lblLotsHeader', 'Suivi de production');</div><div>&nbsp; tempLabel.Align = alTop;</div><div>&nbsp; tempLabel.Margins.Left = 12;</div><div>&nbsp; tempLabel.Margins.Bottom = 8;</div><div>&nbsp; tempLabel.clProSettings.FontSize&nbsp; = 11;</div><div>&nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Dynamically load Lots list</div><div>&nbsp; lotsQuery.First;</div><div>&nbsp; i = 0;</div><div>&nbsp; while (not lotsQuery.Eof)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; tempPanel = MyForm.AddNewProPanel(prodScrollBox, 'lotCard' + IntToStr(i));</div><div>&nbsp; &nbsp; tempPanel.Align = alTop;</div><div>&nbsp; &nbsp; tempPanel.Height = 85;</div><div>&nbsp; &nbsp; tempPanel.Margins.Left = 10;</div><div>&nbsp; &nbsp; tempPanel.Margins.Right = 10;</div><div>&nbsp; &nbsp; tempPanel.Margins.Bottom = 8;</div><div>&nbsp; &nbsp; tempPanel.ClTagInt = i;</div><div>&nbsp; &nbsp; clComponent.SetupComponent(tempPanel, '{"BackgroundColor":"#0d1520", "RoundHeight":12, "RoundWidth":12, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; &nbsp; MyForm.AddNewEvent(tempPanel, tbeOnClick, 'OpenLotDetail');</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Details block</div><div>&nbsp; &nbsp; tempLayout = MyForm.AddNewLayout(tempPanel, 'lotTextLayout' + IntToStr(i));</div><div>&nbsp; &nbsp; tempLayout.Align = alClient;</div><div>&nbsp; &nbsp; tempLayout.Margins.Left = 15;</div><div>&nbsp; &nbsp; tempLayout.Margins.Top = 12;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel = MyForm.AddNewProLabel(tempLayout, 'lotLblId' + IntToStr(i), lotsQuery.FieldByName('id').AsString);</div><div>&nbsp; &nbsp; tempLabel.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; &nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel2 = MyForm.AddNewProLabel(tempLayout, 'lotLblProduct' + IntToStr(i), lotsQuery.FieldByName('product').AsString + ' · ' + lotsQuery.FieldByName('bloc').AsString);</div><div>&nbsp; &nbsp; tempLabel2.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontSize&nbsp; = 10;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; &nbsp; //tempLabel2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp; tempLabel2.Margins.Top = 3;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Progress Bar rendering in Clomosy</div><div>&nbsp; &nbsp; tempProgressBg = MyForm.AddNewProPanel(tempLayout, 'lotProgressBg' + IntToStr(i));</div><div>&nbsp; &nbsp; tempProgressBg.Align = alTop;</div><div>&nbsp; &nbsp; tempProgressBg.Height = 4;</div><div>&nbsp; &nbsp; tempProgressBg.Margins.Top = 6;</div><div>&nbsp; &nbsp; clComponent.SetupComponent(tempProgressBg, '{"BackgroundColor":"#1e3552", "RoundHeight":2, "RoundWidth":2}');</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempProgressFg = MyForm.AddNewProPanel(tempProgressBg, 'lotProgressFg' + IntToStr(i));</div><div>&nbsp; &nbsp; tempProgressFg.Align = alLeft;</div><div>&nbsp; &nbsp; tempProgressFg.Width = Round(lotsQuery.FieldByName('progress').AsInteger * 1.5); // scaled width</div><div>&nbsp; &nbsp; if (lotsQuery.FieldByName('status').AsString == 'production')</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempProgressFg, '{"BackgroundColor":"#60a5fa", "RoundHeight":2, "RoundWidth":2}');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; else if (lotsQuery.FieldByName('status').AsString == 'depot')</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempProgressFg, '{"BackgroundColor":"#4ade80", "RoundHeight":2, "RoundWidth":2}');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; else</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempProgressFg, '{"BackgroundColor":"#fbbf24", "RoundHeight":2, "RoundWidth":2}');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Qty block</div><div>&nbsp; &nbsp; tempLayout = MyForm.AddNewLayout(tempPanel, 'lotQtyLayout' + IntToStr(i));</div><div>&nbsp; &nbsp; tempLayout.Align = alRight;</div><div>&nbsp; &nbsp; tempLayout.Width = 80;</div><div>&nbsp; &nbsp; tempLayout.Margins.Right = 10;</div><div>&nbsp; &nbsp; tempLayout.Margins.Top = 12;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel = MyForm.AddNewProLabel(tempLayout, 'lotLblQty' + IntToStr(i), lotsQuery.FieldByName('qty').AsString);</div><div>&nbsp; &nbsp; tempLabel.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; &nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel2 = MyForm.AddNewProLabel(tempLayout, 'lotLblUnit' + IntToStr(i), lotsQuery.FieldByName('unit').AsString);</div><div>&nbsp; &nbsp; tempLabel2.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontSize&nbsp; = 9;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; &nbsp; //tempLabel2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp; tempLabel2.Margins.Top = 2;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; i = i + 1;</div><div>&nbsp; &nbsp; lotsQuery.Next;</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Header section for Invoices</div><div>&nbsp; tempLabel = MyForm.AddNewProLabel(prodScrollBox, 'lblInvoicesHeader', 'Factures');</div><div>&nbsp; tempLabel.Align = alTop;</div><div>&nbsp; tempLabel.Margins.Left = 12;</div><div>&nbsp; tempLabel.Margins.Top = 15;</div><div>&nbsp; tempLabel.Margins.Bottom = 8;</div><div>&nbsp; tempLabel.clProSettings.FontSize&nbsp; = 11;</div><div>&nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Dynamically load Invoices list</div><div>&nbsp; invoicesQuery.First;</div><div>&nbsp; i = 0;</div><div>&nbsp; while (not invoicesQuery.Eof)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; tempPanel = MyForm.AddNewProPanel(prodScrollBox, 'invCard' + IntToStr(i));</div><div>&nbsp; &nbsp; tempPanel.Align = alTop;</div><div>&nbsp; &nbsp; tempPanel.Height = 70;</div><div>&nbsp; &nbsp; tempPanel.Margins.Left = 10;</div><div>&nbsp; &nbsp; tempPanel.Margins.Right = 10;</div><div>&nbsp; &nbsp; tempPanel.Margins.Bottom = 8;</div><div>&nbsp; &nbsp; tempPanel.ClTagInt = i;</div><div>&nbsp; &nbsp; clComponent.SetupComponent(tempPanel, '{"BackgroundColor":"#0d1520", "RoundHeight":12, "RoundWidth":12, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; &nbsp; MyForm.AddNewEvent(tempPanel, tbeOnClick, 'OpenInvoiceDetail');</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Details block</div><div>&nbsp; &nbsp; tempLayout = MyForm.AddNewLayout(tempPanel, 'invTextLayout' + IntToStr(i));</div><div>&nbsp; &nbsp; tempLayout.Align = alClient;</div><div>&nbsp; &nbsp; tempLayout.Margins.Left = 15;</div><div>&nbsp; &nbsp; tempLayout.Margins.Top = 12;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel = MyForm.AddNewProLabel(tempLayout, 'invLblId' + IntToStr(i), invoicesQuery.FieldByName('id').AsString + ' · ' + invoicesQuery.FieldByName('client').AsString);</div><div>&nbsp; &nbsp; tempLabel.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontSize&nbsp; = 12;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; &nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel2 = MyForm.AddNewProLabel(tempLayout, 'invLblSub' + IntToStr(i), 'Émise le ' + invoicesQuery.FieldByName('date').AsString + ' · Échéance ' + invoicesQuery.FieldByName('due').AsString);</div><div>&nbsp; &nbsp; tempLabel2.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontSize&nbsp; = 10;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; &nbsp; //tempLabel2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp; tempLabel2.Margins.Top = 3;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Amount block</div><div>&nbsp; &nbsp; tempLayout = MyForm.AddNewLayout(tempPanel, 'invAmountLayout' + IntToStr(i));</div><div>&nbsp; &nbsp; tempLayout.Align = alRight;</div><div>&nbsp; &nbsp; tempLayout.Width = 100;</div><div>&nbsp; &nbsp; tempLayout.Margins.Right = 10;</div><div>&nbsp; &nbsp; tempLayout.Margins.Top = 12;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel = MyForm.AddNewProLabel(tempLayout, 'invLblAmount' + IntToStr(i), invoicesQuery.FieldByName('amount').AsString + ' ' + invoicesQuery.FieldByName('currency').AsString);</div><div>&nbsp; &nbsp; tempLabel.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; &nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel2 = MyForm.AddNewProLabel(tempLayout, 'invLblStatus' + IntToStr(i), invoicesQuery.FieldByName('status').AsString);</div><div>&nbsp; &nbsp; tempLabel2.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontSize&nbsp; = 9;</div><div>&nbsp; &nbsp; if (invoicesQuery.FieldByName('status').AsString == 'payée')</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4ade80');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; else if (invoicesQuery.FieldByName('status').AsString == 'retard')</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#fb923c');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; else</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#fbbf24');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; //tempLabel2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp; tempLabel2.Margins.Top = 2;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; i = i + 1;</div><div>&nbsp; &nbsp; invoicesQuery.Next;</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Administrator actions for Production Screen</div><div>&nbsp; prodActionsPanel = MyForm.AddNewProPanel(prodScrollBox, 'prodActionsPanel');</div><div>&nbsp; prodActionsPanel.Align = alTop;</div><div>&nbsp; prodActionsPanel.Height = 140;</div><div>&nbsp; prodActionsPanel.Margins.Top = 15;</div><div>&nbsp; prodActionsPanel.Margins.Left = 10;</div><div>&nbsp; prodActionsPanel.Margins.Right = 10;</div><div>&nbsp;&nbsp;</div><div>&nbsp; tempLabel = MyForm.AddNewProLabel(prodActionsPanel, 'lblAdminTitle2', 'ACTIONS ADMINISTRATEUR');</div><div>&nbsp; tempLabel.Align = alTop;</div><div>&nbsp; tempLabel.clProSettings.FontSize&nbsp; = 10;</div><div>&nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; tempLabel.Margins.Bottom = 8;</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnScanQr = MyForm.AddNewProButton(prodActionsPanel, 'btnCreateLot', 'Créer un nouveau lot');</div><div>&nbsp; btnScanQr.Align = alTop;</div><div>&nbsp; btnScanQr.Height = 44;</div><div>&nbsp; btnScanQr.Margins.Bottom = 8;</div><div>&nbsp; btnScanQr.Text = 'Créer un nouveau lot';</div><div>&nbsp; clComponent.SetupComponent(btnScanQr, '{"BackgroundColor":"#00d4ff18", "TextColor":"#00d4ff", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#00d4ff30", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnScanQr, tbeOnClick, 'ActionClick');</div><div>&nbsp; // --- Bottom Tab Bar Panel ---</div><div>&nbsp; tabBarPanel = MyForm.AddNewProPanel(MyForm, 'tabBarPanel');</div><div>&nbsp; tabBarPanel.Align = alBottom;</div><div>&nbsp; tabBarPanel.Height = 60;</div><div>&nbsp; clComponent.SetupComponent(tabBarPanel, '{"BackgroundColor":"#07101c", "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnTabMvt = MyForm.AddNewProButton(tabBarPanel, 'btnTabMvt', 'Stock');</div><div>&nbsp; btnTabMvt.Align = alLeft;</div><div>&nbsp; btnTabMvt.Width = 75;</div><div>&nbsp; btnTabMvt.Caption = 'Stock';</div><div>&nbsp; clComponent.SetupComponent(btnTabMvt, '{"BackgroundColor":"#07101c", "TextColor":"#00d4ff", "RoundHeight":0, "RoundWidth":0}');</div><div>&nbsp; MyForm.AddNewEvent(btnTabMvt, tbeOnClick, 'TabClick');</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnTabProd = MyForm.AddNewProButton(tabBarPanel, 'btnTabProd', 'Rapports');</div><div>&nbsp; btnTabProd.Align = alLeft;</div><div>&nbsp; btnTabProd.Width = 75;</div><div>&nbsp; btnTabProd.Caption = 'Rapports';</div><div>&nbsp; clComponent.SetupComponent(btnTabProd, '{"BackgroundColor":"#07101c", "TextColor":"#4a6580", "RoundHeight":0, "RoundWidth":0}');</div><div>&nbsp; MyForm.AddNewEvent(btnTabProd, tbeOnClick, 'TabClick');</div><div>&nbsp; // --- Detail Overlay Sheet (Modals) ---</div><div>&nbsp; detailOverlay = MyForm.AddNewProPanel(MyForm, 'detailOverlay');</div><div>&nbsp; detailOverlay.Align = alClient;</div><div>&nbsp; detailOverlay.Visible = False;</div><div>&nbsp; clComponent.SetupComponent(detailOverlay, '{"BackgroundColor":"#040810d0"}');</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Dismiss overlay clicking the background</div><div>&nbsp; MyForm.AddNewEvent(detailOverlay, tbeOnClick, 'CloseDetailOverlay');</div><div>&nbsp;&nbsp;</div><div>&nbsp; detailSheet = MyForm.AddNewProPanel(detailOverlay, 'detailSheet');</div><div>&nbsp; detailSheet.Align = alBottom;</div><div>&nbsp; detailSheet.Height = 280;</div><div>&nbsp; clComponent.SetupComponent(detailSheet, '{"BackgroundColor":"#0c1828", "RoundHeight":20, "RoundWidth":20, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Sheet Header</div><div>&nbsp; lblDetailTitle = MyForm.AddNewProLabel(detailSheet, 'lblDetailTitle', 'MV-081');</div><div>&nbsp; lblDetailTitle.Align = alTop;</div><div>&nbsp; lblDetailTitle.Margins.Left = 20;</div><div>&nbsp; lblDetailTitle.Margins.Top = 20;</div><div>&nbsp; lblDetailTitle.clProSettings.FontSize&nbsp; = 18;</div><div>&nbsp; lblDetailTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; //lblDetailTitle.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblDetailSubtitle = MyForm.AddNewProLabel(detailSheet, 'lblDetailSubtitle', 'Produit A · Bloc A');</div><div>&nbsp; lblDetailSubtitle.Align = alTop;</div><div>&nbsp; lblDetailSubtitle.Margins.Left = 20;</div><div>&nbsp; lblDetailSubtitle.Margins.Top = 4;</div><div>&nbsp; lblDetailSubtitle.clProSettings.FontSize&nbsp; = 12;</div><div>&nbsp; lblDetailSubtitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //lblDetailSubtitle.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Close Button</div><div>&nbsp; btnCloseDetail = MyForm.AddNewProButton(detailSheet, 'btnCloseDetail', 'X');</div><div>&nbsp; btnCloseDetail.Align = alNone;</div><div>&nbsp; btnCloseDetail.Width = 30;</div><div>&nbsp; btnCloseDetail.Height = 30;</div><div>&nbsp; btnCloseDetail.Position.X = 320;</div><div>&nbsp; btnCloseDetail.Position.Y = 16;</div><div>&nbsp; clComponent.SetupComponent(btnCloseDetail, '{"BackgroundColor":"#0d1520", "TextColor":"#4a6580", "RoundHeight":6, "RoundWidth":6, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnCloseDetail, tbeOnClick, 'CloseDetailOverlay');</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Details Grid Layout</div><div>&nbsp; pnlDetailGrid = MyForm.AddNewProPanel(detailSheet, 'pnlDetailGrid');</div><div>&nbsp; pnlDetailGrid.Align = alTop;</div><div>&nbsp; pnlDetailGrid.Height = 110;</div><div>&nbsp; pnlDetailGrid.Margins.Top = 15;</div><div>&nbsp; pnlDetailGrid.Margins.Left = 20;</div><div>&nbsp; pnlDetailGrid.Margins.Right = 20;</div><div>&nbsp; clComponent.SetupComponent(pnlDetailGrid, '{"BackgroundColor":"#0c1828"}');</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Col 1 Row 1</div><div>&nbsp; lblGridVal1 = MyForm.AddNewProLabel(pnlDetailGrid, 'lblGridVal1', '50 kg');</div><div>&nbsp; lblGridVal1.Align = alNone;</div><div>&nbsp; lblGridVal1.Position.X = 10;</div><div>&nbsp; lblGridVal1.Position.Y = 10;</div><div>&nbsp; lblGridVal1.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; lblGridVal1.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; //lblGridVal1.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblGridLbl1 = MyForm.AddNewProLabel(pnlDetailGrid, 'lblGridLbl1', 'QUANTITÉ');</div><div>&nbsp; lblGridLbl1.Align = alNone;</div><div>&nbsp; lblGridLbl1.Position.X = 10;</div><div>&nbsp; lblGridLbl1.Position.Y = 28;</div><div>&nbsp; lblGridLbl1.clProSettings.FontSize&nbsp; = 9;</div><div>&nbsp; lblGridLbl1.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //lblGridLbl1.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Col 2 Row 1</div><div>&nbsp; lblGridVal2 = MyForm.AddNewProLabel(pnlDetailGrid, 'lblGridVal2', 'LOT001');</div><div>&nbsp; lblGridVal2.Align = alNone;</div><div>&nbsp; lblGridVal2.Position.X = 170;</div><div>&nbsp; lblGridVal2.Position.Y = 10;</div><div>&nbsp; lblGridVal2.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; lblGridVal2.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; //lblGridVal2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblGridLbl2 = MyForm.AddNewProLabel(pnlDetailGrid, 'lblGridLbl2', 'LOT');</div><div>&nbsp; lblGridLbl2.Align = alNone;</div><div>&nbsp; lblGridLbl2.Position.X = 170;</div><div>&nbsp; lblGridLbl2.Position.Y = 28;</div><div>&nbsp; lblGridLbl2.clProSettings.FontSize&nbsp; = 9;</div><div>&nbsp; lblGridLbl2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; ///lblGridLbl2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Col 1 Row 2</div><div>&nbsp; lblGridVal3 = MyForm.AddNewProLabel(pnlDetailGrid, 'lblGridVal3', '12/07 14:32');</div><div>&nbsp; lblGridVal3.Align = alNone;</div><div>&nbsp; lblGridVal3.Position.X = 10;</div><div>&nbsp; lblGridVal3.Position.Y = 60;</div><div>&nbsp; lblGridVal3.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; lblGridVal3.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; //lblGridVal3.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblGridLbl3 = MyForm.AddNewProLabel(pnlDetailGrid, 'lblGridLbl3', 'DATE / HEURE');</div><div>&nbsp; lblGridLbl3.Align = alNone;</div><div>&nbsp; lblGridLbl3.Position.X = 10;</div><div>&nbsp; lblGridLbl3.Position.Y = 78;</div><div>&nbsp; lblGridLbl3.clProSettings.FontSize&nbsp; = 9;</div><div>&nbsp; lblGridLbl3.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //lblGridLbl3.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Col 2 Row 2</div><div>&nbsp; lblGridVal4 = MyForm.AddNewProLabel(pnlDetailGrid, 'lblGridVal4', 'Y. Kaya');</div><div>&nbsp; lblGridVal4.Align = alNone;</div><div>&nbsp; lblGridVal4.Position.X = 170;</div><div>&nbsp; lblGridVal4.Position.Y = 60;</div><div>&nbsp; lblGridVal4.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; lblGridVal4.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; //lblGridVal4.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblGridLbl4 = MyForm.AddNewProLabel(pnlDetailGrid, 'lblGridLbl4', 'OPÉRATEUR');</div><div>&nbsp; lblGridLbl4.Align = alNone;</div><div>&nbsp; lblGridLbl4.Position.X = 170;</div><div>&nbsp; lblGridLbl4.Position.Y = 78;</div><div>&nbsp; lblGridLbl4.clProSettings.FontSize&nbsp; = 9;</div><div>&nbsp; lblGridLbl4.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //lblGridLbl4.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Detail Actions</div><div>&nbsp; btnDetailAction1 = MyForm.AddNewProButton(detailSheet, 'btnDetailAction1', 'Voir le QR');</div><div>&nbsp; btnDetailAction1.Align = alNone;</div><div>&nbsp; btnDetailAction1.Width = 160;</div><div>&nbsp; btnDetailAction1.Height = 44;</div><div>&nbsp; btnDetailAction1.Position.X = 20;</div><div>&nbsp; btnDetailAction1.Position.Y = 195;</div><div>&nbsp; clComponent.SetupComponent(btnDetailAction1, '{"BackgroundColor":"#00d4ff18", "TextColor":"#00d4ff", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#00d4ff30", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnDetailAction1, tbeOnClick, 'ActionClick');</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnDetailAction2 = MyForm.AddNewProButton(detailSheet, 'btnDetailAction2', 'Annuler');</div><div>&nbsp; btnDetailAction2.Align = alNone;</div><div>&nbsp; btnDetailAction2.Width = 160;</div><div>&nbsp; btnDetailAction2.Height = 44;</div><div>&nbsp; btnDetailAction2.Position.X = 195;</div><div>&nbsp; btnDetailAction2.Position.Y = 195;</div><div>&nbsp; clComponent.SetupComponent(btnDetailAction2, '{"BackgroundColor":"#f9731618", "TextColor":"#fb923c", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#f9731630", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnDetailAction2, tbeOnClick, 'ActionClick');</div><div>&nbsp;&nbsp;</div><div>&nbsp; ShowMvtScreen;</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>Fri, 17 Jul 2026 17:09:08 +0000</pubDate>
   <guid isPermaLink="true">https://forum.clomosy.com.tr/forum_posts.asp?TID=1619&amp;PID=3742#3742</guid>
  </item> 
  <item>
   <title><![CDATA[kod calismiyor ama357 satira hata gosteriyor : var MyForm: TclForm; mainLayout,...]]></title>
   <link>https://forum.clomosy.com.tr/forum_posts.asp?TID=1619&amp;PID=3741#3741</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> 1619<br /><strong>Gönderim Zamaný:</strong> 17&nbsp;Temmuz&nbsp;2026 Saat 16:56<br /><br /><div>var</div><div>&nbsp; MyForm: TclForm;</div><div>&nbsp; mainLayout, screenSwitcherLayout: TclLayout;</div><div>&nbsp; mvtScreenLayout, prodScreenLayout: TclLayout;</div><div>&nbsp; btnMvtScreen, btnProdScreen: TclProButton;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Header Panel</div><div>&nbsp; headerPanel: TclProPanel;</div><div>&nbsp; lblHeaderTitle, lblHeaderSubtitle: TclProLabel;</div><div>&nbsp; statsLayout: TclLayout;</div><div>&nbsp; pnlStat1, pnlStat2: TclProPanel;</div><div>&nbsp; lblStatVal1, lblStatLbl1, lblStatVal2, lblStatLbl2: TclProLabel;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Mouvements list</div><div>&nbsp; mvtScrollBox: TclVertScrollBox;</div><div>&nbsp; mvtQuery: TclJsonQuery;</div><div>&nbsp; mvtJson: String;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Production lots &amp; Invoices list</div><div>&nbsp; prodScrollBox: TclVertScrollBox;</div><div>&nbsp; lotsQuery: TclJsonQuery;</div><div>&nbsp; lotsJson: String;</div><div>&nbsp; invoicesQuery: TclJsonQuery;</div><div>&nbsp; invoicesJson: String;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Actions &amp; Scanner</div><div>&nbsp; mvtActionsPanel: TclProPanel;</div><div>&nbsp; prodActionsPanel: TclProPanel;</div><div>&nbsp; btnScanQr: TclProButton;</div><div>&nbsp; lblScanResult: TclProLabel;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Bottom Tab Bar</div><div>&nbsp; tabBarPanel: TclProPanel;</div><div>&nbsp; btnTabMvt, btnTabProd, btnTabUsers, btnTabReports, btnTabSettings: TclProButton;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Detail Sheets / Overlay</div><div>&nbsp; detailOverlay: TclProPanel;</div><div>&nbsp; detailSheet: TclProPanel;</div><div>&nbsp; lblDetailTitle, lblDetailSubtitle: TclProLabel;</div><div>&nbsp; pnlDetailGrid: TclProPanel;</div><div>&nbsp; lblGridVal1, lblGridLbl1, lblGridVal2, lblGridLbl2: TclProLabel;</div><div>&nbsp; lblGridVal3, lblGridLbl3, lblGridVal4, lblGridLbl4: TclProLabel;</div><div>&nbsp; btnDetailAction1, btnDetailAction2: TclProButton;</div><div>&nbsp; btnCloseDetail: TclProButton;</div><div>&nbsp; // Loop &amp; temporary variables</div><div>&nbsp; i, clickedIndex: Integer;</div><div>&nbsp; tempPanel: TclProPanel;</div><div>&nbsp; tempLayout,HeaderLayout: TclLayout;</div><div>&nbsp; tempLabel, tempLabel2,label1,label2: TclProLabel;</div><div>&nbsp; tempProgressBg, tempProgressFg: TclProPanel;</div><div>&nbsp; tempTypeIcon: TclProPanel;</div><div>void ShowMvtScreen;</div><div>{</div><div>&nbsp; mvtScreenLayout.Visible = True;</div><div>&nbsp; prodScreenLayout.Visible = False;</div><div>&nbsp; lblHeaderTitle.Text = 'Mouvements';</div><div>&nbsp; lblHeaderSubtitle.Text = '&amp; traçabilité';</div><div>&nbsp; lblHeaderSubtitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#00d4ff');</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Switch button styles</div><div>&nbsp; clComponent.SetupComponent(btnMvtScreen, '{"BackgroundColor":"#0d1520", "TextColor":"#e2eaf5"}');</div><div>&nbsp; clComponent.SetupComponent(btnProdScreen, '{"BackgroundColor":"#080d14", "TextColor":"#4a6580"}');</div><div>}</div><div>void ShowProdScreen;</div><div>{</div><div>&nbsp; mvtScreenLayout.Visible = False;</div><div>&nbsp; prodScreenLayout.Visible = True;</div><div>&nbsp; lblHeaderTitle.Text = 'Production';</div><div>&nbsp; lblHeaderSubtitle.Text = '&amp; lots';</div><div>&nbsp; lblHeaderSubtitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#60a5fa');</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Switch button styles</div><div>&nbsp; clComponent.SetupComponent(btnMvtScreen, '{"BackgroundColor":"#080d14", "TextColor":"#4a6580"}');</div><div>&nbsp; clComponent.SetupComponent(btnProdScreen, '{"BackgroundColor":"#0d1520", "TextColor":"#e2eaf5"}');</div><div>}</div><div>void OnMvtScreenClick;</div><div>{</div><div>&nbsp; ShowMvtScreen;</div><div>}</div><div>void OnProdScreenClick;</div><div>{</div><div>&nbsp; ShowProdScreen;</div><div>}</div><div>void CloseDetailOverlay;</div><div>{</div><div>&nbsp; detailOverlay.Visible = False;</div><div>}</div><div>void OpenMvtDetail;</div><div>var</div><div>&nbsp; idx: Integer;</div><div>&nbsp; foundMvt: Boolean;</div><div>{</div><div>&nbsp; idx = TclProPanel(MyForm.ClSender).ClTagInt;</div><div>&nbsp;&nbsp;</div><div>&nbsp; mvtQuery.First;</div><div>&nbsp; foundMvt = False;</div><div>&nbsp; i = 0;</div><div>&nbsp; while (not mvtQuery.Eof)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; if (i == idx)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; foundMvt = True;</div><div>&nbsp; &nbsp; &nbsp; Break;</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; i = i + 1;</div><div>&nbsp; &nbsp; mvtQuery.Next;</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; if (foundMvt)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; lblDetailTitle.Text = mvtQuery.FieldByName('id').AsString;</div><div>&nbsp; &nbsp; lblDetailSubtitle.Text = mvtQuery.FieldByName('product').AsString + ' · ' + mvtQuery.FieldByName('bloc').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl1.Text = 'QUANTITÉ';</div><div>&nbsp; &nbsp; lblGridVal1.Text = mvtQuery.FieldByName('qty').AsString + ' ' + mvtQuery.FieldByName('unit').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl2.Text = 'LOT';</div><div>&nbsp; &nbsp; lblGridVal2.Text = mvtQuery.FieldByName('lot').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl3.Text = 'DATE / HEURE';</div><div>&nbsp; &nbsp; lblGridVal3.Text = mvtQuery.FieldByName('date').AsString + ' ' + mvtQuery.FieldByName('time').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl4.Text = 'OPÉRATEUR';</div><div>&nbsp; &nbsp; lblGridVal4.Text = mvtQuery.FieldByName('operator').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; btnDetailAction1.Caption = 'Voir le QR';</div><div>&nbsp; &nbsp; btnDetailAction2.Caption = 'Annuler';</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; detailOverlay.Visible = True;</div><div>&nbsp; }</div><div>}</div><div>void OpenLotDetail;</div><div>var</div><div>&nbsp; idx: Integer;</div><div>&nbsp; foundLot: Boolean;</div><div>{</div><div>&nbsp; idx = TclProPanel(MyForm.ClSender).ClTagInt;</div><div>&nbsp;&nbsp;</div><div>&nbsp; lotsQuery.First;</div><div>&nbsp; foundLot = False;</div><div>&nbsp; i = 0;</div><div>&nbsp; while (not lotsQuery.Eof)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; if (i == idx)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; foundLot = True;</div><div>&nbsp; &nbsp; &nbsp; Break;</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; i = i + 1;</div><div>&nbsp; &nbsp; lotsQuery.Next;</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; if (foundLot)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; lblDetailTitle.Text = lotsQuery.FieldByName('id').AsString;</div><div>&nbsp; &nbsp; lblDetailSubtitle.Text = lotsQuery.FieldByName('product').AsString + ' · ' + lotsQuery.FieldByName('bloc').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl1.Text = 'QUANTITÉ';</div><div>&nbsp; &nbsp; lblGridVal1.Text = lotsQuery.FieldByName('qty').AsString + ' ' + lotsQuery.FieldByName('unit').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl2.Text = 'PROGRESSION';</div><div>&nbsp; &nbsp; lblGridVal2.Text = lotsQuery.FieldByName('progress').AsString + '%';</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl3.Text = 'DÉBUT';</div><div>&nbsp; &nbsp; lblGridVal3.Text = lotsQuery.FieldByName('started').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl4.Text = 'OPÉRATEUR';</div><div>&nbsp; &nbsp; lblGridVal4.Text = lotsQuery.FieldByName('operator').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; btnDetailAction1.Caption = 'Mettre à jour';</div><div>&nbsp; &nbsp; btnDetailAction2.Caption = 'Clôturer le lot';</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; detailOverlay.Visible = True;</div><div>&nbsp; }</div><div>}</div><div>void OpenInvoiceDetail;</div><div>var</div><div>&nbsp; idx: Integer;</div><div>&nbsp; foundInv: Boolean;</div><div>{</div><div>&nbsp; idx = TclProPanel(MyForm.ClSender).ClTagInt;</div><div>&nbsp;&nbsp;</div><div>&nbsp; invoicesQuery.First;</div><div>&nbsp; foundInv = False;</div><div>&nbsp; i = 0;</div><div>&nbsp; while (not invoicesQuery.Eof)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; if (i == idx)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; foundInv = True;</div><div>&nbsp; &nbsp; &nbsp; Break;</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; i = i + 1;</div><div>&nbsp; &nbsp; invoicesQuery.Next;</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; if (foundInv)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; lblDetailTitle.Text = invoicesQuery.FieldByName('id').AsString;</div><div>&nbsp; &nbsp; lblDetailSubtitle.Text = invoicesQuery.FieldByName('client').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl1.Text = 'MONTANT';</div><div>&nbsp; &nbsp; lblGridVal1.Text = invoicesQuery.FieldByName('amount').AsString + ' ' + invoicesQuery.FieldByName('currency').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl2.Text = 'STATUT';</div><div>&nbsp; &nbsp; lblGridVal2.Text = invoicesQuery.FieldByName('status').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl3.Text = 'ÉMISE LE';</div><div>&nbsp; &nbsp; lblGridVal3.Text = invoicesQuery.FieldByName('date').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; lblGridLbl4.Text = 'ÉCHÉANCE';</div><div>&nbsp; &nbsp; lblGridVal4.Text = invoicesQuery.FieldByName('due').AsString;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; btnDetailAction1.Caption = 'Marquer payée';</div><div>&nbsp; &nbsp; btnDetailAction2.Caption = 'Exporter PDF';</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; detailOverlay.Visible = True;</div><div>&nbsp; }</div><div>}</div><div>void RunScanner;</div><div>{</div><div>&nbsp; MyForm.CallBarcodeReader(lblScanResult);</div><div>}</div><div>void TabClick;</div><div>var</div><div>&nbsp; tabName: String;</div><div>{</div><div>&nbsp; tabName = TclProButton(MyForm.ClSender).Caption;</div><div>&nbsp; ShowMessage('Navigation vers : ' + tabName);</div><div>}</div><div>void ActionClick;</div><div>var</div><div>&nbsp; actName: String;</div><div>{</div><div>&nbsp; actName = TclProButton(MyForm.ClSender).Text;</div><div>&nbsp; ShowMessage('Action déclenchée : ' + actName);</div><div>}</div><div>{</div><div>&nbsp; MyForm = TclForm.Create(Self);</div><div>&nbsp; MyForm.SetFormColor('#080d14', '#0d1520', clGVertical);</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Set window state to full screen on Windows</div><div>&nbsp; if (not Clomosy.PlatformIsMobile)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; MyForm.clSetWindowState(fwsMaximized);</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; // --- Data Init ---</div><div>&nbsp; mvtJson = '&#091;{"id":"MV-081","date":"12/07","time":"14:32","type":"entrée","product":"Produit A","lot":"LOT001","bloc":"Bloc A","qty":50,"unit":"kg","operator":"Y. Kaya"},' +</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'{"id":"MV-082","date":"12/07","time":"11:15","type":"sortie","product":"Produit B","lot":"LOT002","bloc":"Dépôt","qty":-10,"unit":"pcs","operator":"M. Arslan"},' +</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'{"id":"MV-083","date":"11/07","time":"09:47","type":"entrée","product":"Produit C","lot":"LOT003","bloc":"Bloc B","qty":120,"unit":"unité","operator":"F. Demir"},' +</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;'{"id":"MV-084","date":"11/07","time":"08:05","type":"transfert","product":"Produit D","lot":"LOT001","bloc":"Bloc C","qty":30,"unit":"pcs","operator":"A. Yýldýz"}&#093;';</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div><div>&nbsp; lotsJson = '&#091;{"id":"LOT001","product":"Produit A","bloc":"Bloc A","qty":320,"unit":"kg","status":"production","started":"08/07","operator":"Y. Kaya","progress":72},' +</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '{"id":"LOT002","product":"Produit B","bloc":"Bloc B","qty":150,"unit":"pcs","status":"depot","started":"05/07","operator":"M. Arslan","progress":100},' +</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '{"id":"LOT003","product":"Produit C","bloc":"Bloc C","qty":480,"unit":"unité","status":"production","started":"10/07","operator":"F. Demir","progress":45}&#093;';</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><div>&nbsp; invoicesJson = '&#091;{"id":"F001","client":"Client A","amount":"250 000","currency":"DA","date":"01/07","due":"15/07","status":"payée"},' +</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '{"id":"F002","client":"Client B","amount":"120 000","currency":"DA","date":"03/07","due":"17/07","status":"retard"},' +</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; '{"id":"F003","client":"Client C","amount":"85 000","currency":"DA","date":"06/07","due":"20/07","status":"en_attente"}&#093;';</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div><div>&nbsp; mvtQuery = Clomosy.ClDataSetFromJSON(mvtJson);</div><div>&nbsp; lotsQuery = Clomosy.ClDataSetFromJSON(lotsJson);</div><div>&nbsp; invoicesQuery = Clomosy.ClDataSetFromJSON(invoicesJson);</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</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; // Leave space for bottom tab bar</div><div>&nbsp;&nbsp;</div><div>&nbsp; // &#091; ÉTAPE 1 : HEADER GESTION DES MEMBRES &#093;</div><div>&nbsp; HeaderLayout = MyForm.AddNewLayout(mainLayout, 'HeaderLayout');</div><div>&nbsp; HeaderLayout.Align = alTop;</div><div>&nbsp; HeaderLayout.Height = 80;</div><div><br></div><div>&nbsp; // Bouton Retour (Gauche)</div><div>&nbsp; label1 = MyForm.AddNewProLabel(HeaderLayout, 'label1', 'GESTIONNAIRES DES UTILISATEURS');</div><div>&nbsp; label1.Align = alTop;</div><div>&nbsp; label1.Margins.Left = 14;&nbsp;</div><div>&nbsp; label1.Margins.Top = 16;</div><div>&nbsp; label1.clProSettings.FontColor = clAlphaColor.clHexToColor('#446580');</div><div>&nbsp; label1.clProSettings.FontSize = 12;</div><div>&nbsp; label1.clProSettings.TextSettings.Font.Style = &#091;fsBold&#093;;</div><div>&nbsp; label1.SetclProSettings(label1.clProSettings);</div><div><br></div><div><br></div><div>&nbsp; // Titre "MEMBRES" (Centre)</div><div>&nbsp; label2 = MyForm.AddNewProLabel(HeaderLayout, 'label2', 'Utilisateurs &amp; roles');</div><div>&nbsp; label2.Align = alTop;</div><div>&nbsp; label2.Margins.Left = 14;&nbsp;</div><div>&nbsp; label2.Height = 40;</div><div>&nbsp; label2.clProSettings.FontColor = clAlphaColor.clHexToColor('#e8eef5');</div><div>&nbsp; label2.clProSettings.FontSize = 30;</div><div>&nbsp; label2.clProSettings.TextSettings.Font.Style = &#091;fsBold&#093;;</div><div>&nbsp; label2.SetclProSettings(label2.clProSettings);</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // --- Header Panel ---</div><div>&nbsp; headerPanel = MyForm.AddNewProPanel(mainLayout, 'headerPanel');</div><div>&nbsp; headerPanel.Align = alTop;</div><div>&nbsp; headerPanel.Height = 110;</div><div>&nbsp; headerPanel.Margins.Left = 10;</div><div>&nbsp; headerPanel.Margins.Right = 10;</div><div>&nbsp; headerPanel.Margins.Top = 10;</div><div>&nbsp; headerPanel.Padding.Left = 15;</div><div>&nbsp; headerPanel.Padding.Top = 15;</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblHeaderTitle = MyForm.AddNewLabel(headerPanel, 'lblHeaderTitle', 'Mouvements');</div><div>&nbsp; lblHeaderTitle.Align = alTop;</div><div>&nbsp; lblHeaderTitle.clProSettings.FontSize = 22;</div><div>&nbsp; lblHeaderTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; lblHeaderTitle.SetclProSettings(lblHeaderTitle.clProSettings);</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblHeaderSubtitle = MyForm.AddNewLabel(headerPanel, 'lblHeaderSubtitle', '&amp; traçabilité');</div><div>&nbsp; lblHeaderSubtitle.Align = alTop;</div><div>&nbsp; lblHeaderSubtitle.clProSettings.FontSize&nbsp; = 18;</div><div>&nbsp; lblHeaderSubtitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#00d4ff');</div><div>&nbsp; lblHeaderSubtitle.Margins.Top = 2;</div><div>&nbsp; lblHeaderSubtitle.SetclProSettings(lblHeaderSubtitle.clProSettings);</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // --- Screen Switcher Pill ---</div><div>&nbsp; screenSwitcherLayout = MyForm.AddNewLayout(mainLayout, 'screenSwitcherLayout');</div><div>&nbsp; screenSwitcherLayout.Align = alTop;</div><div>&nbsp; screenSwitcherLayout.Height = 44;</div><div>&nbsp; screenSwitcherLayout.Margins.Left = 10;</div><div>&nbsp; screenSwitcherLayout.Margins.Right = 10;</div><div>&nbsp; screenSwitcherLayout.Margins.Top = 8;</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnMvtScreen = MyForm.AddNewProButton(screenSwitcherLayout, 'btnMvtScreen', 'Mouvements');</div><div>&nbsp; btnMvtScreen.Align = alLeft;</div><div>&nbsp; btnMvtScreen.Width = 170;</div><div>&nbsp; clComponent.SetupComponent(btnMvtScreen, '{"BackgroundColor":"#0d1520", "TextColor":"#e2eaf5", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnMvtScreen, tbeOnClick, 'OnMvtScreenClick');</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnProdScreen = MyForm.AddNewProButton(screenSwitcherLayout, 'btnProdScreen', 'Production');</div><div>&nbsp; btnProdScreen.Align = alRight;</div><div>&nbsp; btnProdScreen.Width = 170;</div><div>&nbsp; clComponent.SetupComponent(btnProdScreen, '{"BackgroundColor":"#080d14", "TextColor":"#4a6580", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnProdScreen, tbeOnClick, 'OnProdScreenClick');</div><div>&nbsp; // --- Mouvement Screen ---</div><div>&nbsp; mvtScreenLayout = MyForm.AddNewLayout(mainLayout, 'mvtScreenLayout');</div><div>&nbsp; mvtScreenLayout.Align = alClient;</div><div>&nbsp;&nbsp;</div><div>&nbsp; mvtScrollBox = MyForm.AddNewVertScrollBox(mvtScreenLayout, 'mvtScrollBox');</div><div>&nbsp; mvtScrollBox.Align = alClient;</div><div>&nbsp; mvtScrollBox.Margins.Top = 10;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Dynamically load Movements list</div><div>&nbsp; mvtQuery.First;</div><div>&nbsp; i = 0;</div><div>&nbsp; while (not mvtQuery.Eof)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; tempPanel = MyForm.AddNewProPanel(mvtScrollBox, 'mvtCard' + IntToStr(i));</div><div>&nbsp; &nbsp; tempPanel.Align = alTop;</div><div>&nbsp; &nbsp; tempPanel.Height = 70;</div><div>&nbsp; &nbsp; tempPanel.Margins.Left = 10;</div><div>&nbsp; &nbsp; tempPanel.Margins.Right = 10;</div><div>&nbsp; &nbsp; tempPanel.Margins.Bottom = 8;</div><div>&nbsp; &nbsp; tempPanel.ClTagInt = i;</div><div>&nbsp; &nbsp; clComponent.SetupComponent(tempPanel, '{"BackgroundColor":"#0d1520", "RoundHeight":12, "RoundWidth":12, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; &nbsp; MyForm.AddNewEvent(tempPanel, tbeOnClick, 'OpenMvtDetail');</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Icon panel wrapper</div><div>&nbsp; &nbsp; tempTypeIcon = MyForm.AddNewProPanel(tempPanel, 'mvtIcon' + IntToStr(i));</div><div>&nbsp; &nbsp; tempTypeIcon.Align = alLeft;</div><div>&nbsp; &nbsp; tempTypeIcon.Width = 40;</div><div>&nbsp; &nbsp; tempTypeIcon.Margins.Left = 10;</div><div>&nbsp; &nbsp; tempTypeIcon.Margins.Top = 10;</div><div>&nbsp; &nbsp; tempTypeIcon.Margins.Bottom = 10;</div><div>&nbsp; &nbsp; if (mvtQuery.FieldByName('type').AsString == 'entrée')</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempTypeIcon, '{"BackgroundColor":"#22c55e18", "BorderColor":"#22c55e30", "BorderWidth":1, "RoundHeight":8, "RoundWidth":8}');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; else if (mvtQuery.FieldByName('type').AsString == 'sortie')</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempTypeIcon, '{"BackgroundColor":"#f9731618", "BorderColor":"#f9731630", "BorderWidth":1, "RoundHeight":8, "RoundWidth":8}');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; else</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempTypeIcon, '{"BackgroundColor":"#00d4ff14", "BorderColor":"#00d4ff30", "BorderWidth":1, "RoundHeight":8, "RoundWidth":8}');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Details block</div><div>&nbsp; &nbsp; tempLayout = MyForm.AddNewLayout(tempPanel, 'mvtTextLayout' + IntToStr(i));</div><div>&nbsp; &nbsp; tempLayout.Align = alClient;</div><div>&nbsp; &nbsp; tempLayout.Margins.Left = 12;</div><div>&nbsp; &nbsp; tempLayout.Margins.Top = 12;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel = MyForm.AddNewLabel(tempLayout, 'mvtLblProd' + IntToStr(i), mvtQuery.FieldByName('product').AsString);</div><div>&nbsp; &nbsp; tempLabel.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; &nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel2 = MyForm.AddNewLabel(tempLayout, 'mvtLblSub' + IntToStr(i), mvtQuery.FieldByName('date').AsString + ' · ' + mvtQuery.FieldByName('time').AsString + ' · ' + mvtQuery.FieldByName('bloc').AsString);</div><div>&nbsp; &nbsp; tempLabel2.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontSize&nbsp; = 10;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; &nbsp; //tempLabel2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp; tempLabel2.Margins.Top = 3;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Qty block</div><div>&nbsp; &nbsp; tempLayout = MyForm.AddNewLayout(tempPanel, 'mvtQtyLayout' + IntToStr(i));</div><div>&nbsp; &nbsp; tempLayout.Align = alRight;</div><div>&nbsp; &nbsp; tempLayout.Width = 80;</div><div>&nbsp; &nbsp; tempLayout.Margins.Right = 10;</div><div>&nbsp; &nbsp; tempLayout.Margins.Top = 12;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel = MyForm.AddNewLabel(tempLayout, 'mvtLblQty' + IntToStr(i), mvtQuery.FieldByName('qty').AsString);</div><div>&nbsp; &nbsp; tempLabel.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontSize&nbsp; = 15;</div><div>&nbsp; &nbsp; if (mvtQuery.FieldByName('qty').AsInteger &gt; 0)</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#4ade80');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; else</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#fb923c');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel2 = MyForm.AddNewLabel(tempLayout, 'mvtLblUnit' + IntToStr(i), mvtQuery.FieldByName('unit').AsString);</div><div>&nbsp; &nbsp; tempLabel2.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontSize&nbsp; = 9;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; &nbsp; //tempLabel2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp; tempLabel2.Margins.Top = 2;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; i = i + 1;</div><div>&nbsp; &nbsp; mvtQuery.Next;</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Administrator actions for Mouvements Screen</div><div>&nbsp; mvtActionsPanel = MyForm.AddNewProPanel(mvtScrollBox, 'mvtActionsPanel');</div><div>&nbsp; mvtActionsPanel.Align = alTop;</div><div>&nbsp; mvtActionsPanel.Height = 220;</div><div>&nbsp; mvtActionsPanel.Margins.Top = 15;</div><div>&nbsp; mvtActionsPanel.Margins.Left = 10;</div><div>&nbsp; mvtActionsPanel.Margins.Right = 10;</div><div>&nbsp;&nbsp;</div><div>&nbsp; tempLabel = MyForm.AddNewLabel(mvtActionsPanel, 'lblAdminTitle1', 'ACTIONS ADMINISTRATEUR');</div><div>&nbsp; tempLabel.Align = alTop;</div><div>&nbsp; tempLabel.clProSettings.FontSize&nbsp; = 10;</div><div>&nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; tempLabel.Margins.Bottom = 8;</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnScanQr = MyForm.AddNewProButton(mvtActionsPanel, 'btnScanQr', 'Scanner un QR code / lot');</div><div>&nbsp; btnScanQr.Align = alTop;</div><div>&nbsp; btnScanQr.Height = 44;</div><div>&nbsp; btnScanQr.Margins.Bottom = 8;</div><div>&nbsp; clComponent.SetupComponent(btnScanQr, '{"BackgroundColor":"#00d4ff18", "TextColor":"#00d4ff", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#00d4ff30", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnScanQr, tbeOnClick, 'RunScanner');</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblScanResult = MyForm.AddNewLabel(mvtActionsPanel, 'lblScanResult', '');</div><div>&nbsp; lblScanResult.Visible = False;</div><div>&nbsp; // --- Production Screen ---</div><div>&nbsp; prodScreenLayout = MyForm.AddNewLayout(mainLayout, 'prodScreenLayout');</div><div>&nbsp; prodScreenLayout.Align = alClient;</div><div>&nbsp; prodScreenLayout.Visible = False; // Hide initially</div><div>&nbsp;&nbsp;</div><div>&nbsp; prodScrollBox = MyForm.AddNewVertScrollBox(prodScreenLayout, 'prodScrollBox');</div><div>&nbsp; prodScrollBox.Align = alClient;</div><div>&nbsp; prodScrollBox.Margins.Top = 10;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Header section for active Lots</div><div>&nbsp; tempLabel = MyForm.AddNewLabel(prodScrollBox, 'lblLotsHeader', 'Suivi de production');</div><div>&nbsp; tempLabel.Align = alTop;</div><div>&nbsp; tempLabel.Margins.Left = 12;</div><div>&nbsp; tempLabel.Margins.Bottom = 8;</div><div>&nbsp; tempLabel.clProSettings.FontSize&nbsp; = 11;</div><div>&nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Dynamically load Lots list</div><div>&nbsp; lotsQuery.First;</div><div>&nbsp; i = 0;</div><div>&nbsp; while (not lotsQuery.Eof)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; tempPanel = MyForm.AddNewProPanel(prodScrollBox, 'lotCard' + IntToStr(i));</div><div>&nbsp; &nbsp; tempPanel.Align = alTop;</div><div>&nbsp; &nbsp; tempPanel.Height = 85;</div><div>&nbsp; &nbsp; tempPanel.Margins.Left = 10;</div><div>&nbsp; &nbsp; tempPanel.Margins.Right = 10;</div><div>&nbsp; &nbsp; tempPanel.Margins.Bottom = 8;</div><div>&nbsp; &nbsp; tempPanel.ClTagInt = i;</div><div>&nbsp; &nbsp; clComponent.SetupComponent(tempPanel, '{"BackgroundColor":"#0d1520", "RoundHeight":12, "RoundWidth":12, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; &nbsp; MyForm.AddNewEvent(tempPanel, tbeOnClick, 'OpenLotDetail');</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Details block</div><div>&nbsp; &nbsp; tempLayout = MyForm.AddNewLayout(tempPanel, 'lotTextLayout' + IntToStr(i));</div><div>&nbsp; &nbsp; tempLayout.Align = alClient;</div><div>&nbsp; &nbsp; tempLayout.Margins.Left = 15;</div><div>&nbsp; &nbsp; tempLayout.Margins.Top = 12;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel = MyForm.AddNewLabel(tempLayout, 'lotLblId' + IntToStr(i), lotsQuery.FieldByName('id').AsString);</div><div>&nbsp; &nbsp; tempLabel.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; &nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel2 = MyForm.AddNewLabel(tempLayout, 'lotLblProduct' + IntToStr(i), lotsQuery.FieldByName('product').AsString + ' · ' + lotsQuery.FieldByName('bloc').AsString);</div><div>&nbsp; &nbsp; tempLabel2.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontSize&nbsp; = 10;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; &nbsp; //tempLabel2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp; tempLabel2.Margins.Top = 3;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Progress Bar rendering in Clomosy</div><div>&nbsp; &nbsp; tempProgressBg = MyForm.AddNewProPanel(tempLayout, 'lotProgressBg' + IntToStr(i));</div><div>&nbsp; &nbsp; tempProgressBg.Align = alTop;</div><div>&nbsp; &nbsp; tempProgressBg.Height = 4;</div><div>&nbsp; &nbsp; tempProgressBg.Margins.Top = 6;</div><div>&nbsp; &nbsp; clComponent.SetupComponent(tempProgressBg, '{"BackgroundColor":"#1e3552", "RoundHeight":2, "RoundWidth":2}');</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempProgressFg = MyForm.AddNewProPanel(tempProgressBg, 'lotProgressFg' + IntToStr(i));</div><div>&nbsp; &nbsp; tempProgressFg.Align = alLeft;</div><div>&nbsp; &nbsp; tempProgressFg.Width = Round(lotsQuery.FieldByName('progress').AsInteger * 1.5); // scaled width</div><div>&nbsp; &nbsp; if (lotsQuery.FieldByName('status').AsString == 'production')</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempProgressFg, '{"BackgroundColor":"#60a5fa", "RoundHeight":2, "RoundWidth":2}');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; else if (lotsQuery.FieldByName('status').AsString == 'depot')</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempProgressFg, '{"BackgroundColor":"#4ade80", "RoundHeight":2, "RoundWidth":2}');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; else</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; clComponent.SetupComponent(tempProgressFg, '{"BackgroundColor":"#fbbf24", "RoundHeight":2, "RoundWidth":2}');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Qty block</div><div>&nbsp; &nbsp; tempLayout = MyForm.AddNewLayout(tempPanel, 'lotQtyLayout' + IntToStr(i));</div><div>&nbsp; &nbsp; tempLayout.Align = alRight;</div><div>&nbsp; &nbsp; tempLayout.Width = 80;</div><div>&nbsp; &nbsp; tempLayout.Margins.Right = 10;</div><div>&nbsp; &nbsp; tempLayout.Margins.Top = 12;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel = MyForm.AddNewLabel(tempLayout, 'lotLblQty' + IntToStr(i), lotsQuery.FieldByName('qty').AsString);</div><div>&nbsp; &nbsp; tempLabel.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; &nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel2 = MyForm.AddNewLabel(tempLayout, 'lotLblUnit' + IntToStr(i), lotsQuery.FieldByName('unit').AsString);</div><div>&nbsp; &nbsp; tempLabel2.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontSize&nbsp; = 9;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; &nbsp; //tempLabel2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp; tempLabel2.Margins.Top = 2;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; i = i + 1;</div><div>&nbsp; &nbsp; lotsQuery.Next;</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Header section for Invoices</div><div>&nbsp; tempLabel = MyForm.AddNewLabel(prodScrollBox, 'lblInvoicesHeader', 'Factures');</div><div>&nbsp; tempLabel.Align = alTop;</div><div>&nbsp; tempLabel.Margins.Left = 12;</div><div>&nbsp; tempLabel.Margins.Top = 15;</div><div>&nbsp; tempLabel.Margins.Bottom = 8;</div><div>&nbsp; tempLabel.clProSettings.FontSize&nbsp; = 11;</div><div>&nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Dynamically load Invoices list</div><div>&nbsp; invoicesQuery.First;</div><div>&nbsp; i = 0;</div><div>&nbsp; while (not invoicesQuery.Eof)</div><div>&nbsp; {</div><div>&nbsp; &nbsp; tempPanel = MyForm.AddNewProPanel(prodScrollBox, 'invCard' + IntToStr(i));</div><div>&nbsp; &nbsp; tempPanel.Align = alTop;</div><div>&nbsp; &nbsp; tempPanel.Height = 70;</div><div>&nbsp; &nbsp; tempPanel.Margins.Left = 10;</div><div>&nbsp; &nbsp; tempPanel.Margins.Right = 10;</div><div>&nbsp; &nbsp; tempPanel.Margins.Bottom = 8;</div><div>&nbsp; &nbsp; tempPanel.ClTagInt = i;</div><div>&nbsp; &nbsp; clComponent.SetupComponent(tempPanel, '{"BackgroundColor":"#0d1520", "RoundHeight":12, "RoundWidth":12, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; &nbsp; MyForm.AddNewEvent(tempPanel, tbeOnClick, 'OpenInvoiceDetail');</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Details block</div><div>&nbsp; &nbsp; tempLayout = MyForm.AddNewLayout(tempPanel, 'invTextLayout' + IntToStr(i));</div><div>&nbsp; &nbsp; tempLayout.Align = alClient;</div><div>&nbsp; &nbsp; tempLayout.Margins.Left = 15;</div><div>&nbsp; &nbsp; tempLayout.Margins.Top = 12;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel = MyForm.AddNewLabel(tempLayout, 'invLblId' + IntToStr(i), invoicesQuery.FieldByName('id').AsString + ' · ' + invoicesQuery.FieldByName('client').AsString);</div><div>&nbsp; &nbsp; tempLabel.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontSize&nbsp; = 12;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; &nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel2 = MyForm.AddNewLabel(tempLayout, 'invLblSub' + IntToStr(i), 'Émise le ' + invoicesQuery.FieldByName('date').AsString + ' · Échéance ' + invoicesQuery.FieldByName('due').AsString);</div><div>&nbsp; &nbsp; tempLabel2.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontSize&nbsp; = 10;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; &nbsp; //tempLabel2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp; tempLabel2.Margins.Top = 3;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; // Amount block</div><div>&nbsp; &nbsp; tempLayout = MyForm.AddNewLayout(tempPanel, 'invAmountLayout' + IntToStr(i));</div><div>&nbsp; &nbsp; tempLayout.Align = alRight;</div><div>&nbsp; &nbsp; tempLayout.Width = 100;</div><div>&nbsp; &nbsp; tempLayout.Margins.Right = 10;</div><div>&nbsp; &nbsp; tempLayout.Margins.Top = 12;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel = MyForm.AddNewLabel(tempLayout, 'invLblAmount' + IntToStr(i), invoicesQuery.FieldByName('amount').AsString + ' ' + invoicesQuery.FieldByName('currency').AsString);</div><div>&nbsp; &nbsp; tempLabel.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; &nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; &nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; tempLabel2 = MyForm.AddNewLabel(tempLayout, 'invLblStatus' + IntToStr(i), invoicesQuery.FieldByName('status').AsString);</div><div>&nbsp; &nbsp; tempLabel2.Align = alTop;</div><div>&nbsp; &nbsp; tempLabel2.clProSettings.FontSize&nbsp; = 9;</div><div>&nbsp; &nbsp; if (invoicesQuery.FieldByName('status').AsString == 'payée')</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4ade80');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; else if (invoicesQuery.FieldByName('status').AsString == 'retard')</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#fb923c');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; else</div><div>&nbsp; &nbsp; {</div><div>&nbsp; &nbsp; &nbsp; tempLabel2.clProSettings.FontColor = clAlphaColor.clHexToColor('#fbbf24');</div><div>&nbsp; &nbsp; }</div><div>&nbsp; &nbsp; //tempLabel2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; &nbsp; tempLabel2.Margins.Top = 2;</div><div>&nbsp; &nbsp;&nbsp;</div><div>&nbsp; &nbsp; i = i + 1;</div><div>&nbsp; &nbsp; invoicesQuery.Next;</div><div>&nbsp; }</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Administrator actions for Production Screen</div><div>&nbsp; prodActionsPanel = MyForm.AddNewProPanel(prodScrollBox, 'prodActionsPanel');</div><div>&nbsp; prodActionsPanel.Align = alTop;</div><div>&nbsp; prodActionsPanel.Height = 140;</div><div>&nbsp; prodActionsPanel.Margins.Top = 15;</div><div>&nbsp; prodActionsPanel.Margins.Left = 10;</div><div>&nbsp; prodActionsPanel.Margins.Right = 10;</div><div>&nbsp;&nbsp;</div><div>&nbsp; tempLabel = MyForm.AddNewLabel(prodActionsPanel, 'lblAdminTitle2', 'ACTIONS ADMINISTRATEUR');</div><div>&nbsp; tempLabel.Align = alTop;</div><div>&nbsp; tempLabel.clProSettings.FontSize&nbsp; = 10;</div><div>&nbsp; tempLabel.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //tempLabel.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp; tempLabel.Margins.Bottom = 8;</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnScanQr = MyForm.AddNewProButton(prodActionsPanel, 'btnCreateLot', 'Créer un nouveau lot');</div><div>&nbsp; btnScanQr.Align = alTop;</div><div>&nbsp; btnScanQr.Height = 44;</div><div>&nbsp; btnScanQr.Margins.Bottom = 8;</div><div>&nbsp; btnScanQr.Text = 'Créer un nouveau lot';</div><div>&nbsp; clComponent.SetupComponent(btnScanQr, '{"BackgroundColor":"#00d4ff18", "TextColor":"#00d4ff", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#00d4ff30", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnScanQr, tbeOnClick, 'ActionClick');</div><div>&nbsp; // --- Bottom Tab Bar Panel ---</div><div>&nbsp; tabBarPanel = MyForm.AddNewProPanel(MyForm, 'tabBarPanel');</div><div>&nbsp; tabBarPanel.Align = alBottom;</div><div>&nbsp; tabBarPanel.Height = 60;</div><div>&nbsp; clComponent.SetupComponent(tabBarPanel, '{"BackgroundColor":"#07101c", "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnTabMvt = MyForm.AddNewProButton(tabBarPanel, 'btnTabMvt', 'Stock');</div><div>&nbsp; btnTabMvt.Align = alLeft;</div><div>&nbsp; btnTabMvt.Width = 75;</div><div>&nbsp; btnTabMvt.Caption = 'Stock';</div><div>&nbsp; clComponent.SetupComponent(btnTabMvt, '{"BackgroundColor":"#07101c", "TextColor":"#00d4ff", "RoundHeight":0, "RoundWidth":0}');</div><div>&nbsp; MyForm.AddNewEvent(btnTabMvt, tbeOnClick, 'TabClick');</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnTabProd = MyForm.AddNewProButton(tabBarPanel, 'btnTabProd', 'Rapports');</div><div>&nbsp; btnTabProd.Align = alLeft;</div><div>&nbsp; btnTabProd.Width = 75;</div><div>&nbsp; btnTabProd.Caption = 'Rapports';</div><div>&nbsp; clComponent.SetupComponent(btnTabProd, '{"BackgroundColor":"#07101c", "TextColor":"#4a6580", "RoundHeight":0, "RoundWidth":0}');</div><div>&nbsp; MyForm.AddNewEvent(btnTabProd, tbeOnClick, 'TabClick');</div><div>&nbsp; // --- Detail Overlay Sheet (Modals) ---</div><div>&nbsp; detailOverlay = MyForm.AddNewProPanel(MyForm, 'detailOverlay');</div><div>&nbsp; detailOverlay.Align = alClient;</div><div>&nbsp; detailOverlay.Visible = False;</div><div>&nbsp; clComponent.SetupComponent(detailOverlay, '{"BackgroundColor":"#040810d0"}');</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Dismiss overlay clicking the background</div><div>&nbsp; MyForm.AddNewEvent(detailOverlay, tbeOnClick, 'CloseDetailOverlay');</div><div>&nbsp;&nbsp;</div><div>&nbsp; detailSheet = MyForm.AddNewProPanel(detailOverlay, 'detailSheet');</div><div>&nbsp; detailSheet.Align = alBottom;</div><div>&nbsp; detailSheet.Height = 280;</div><div>&nbsp; clComponent.SetupComponent(detailSheet, '{"BackgroundColor":"#0c1828", "RoundHeight":20, "RoundWidth":20, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Sheet Header</div><div>&nbsp; lblDetailTitle = MyForm.AddNewLabel(detailSheet, 'lblDetailTitle', 'MV-081');</div><div>&nbsp; lblDetailTitle.Align = alTop;</div><div>&nbsp; lblDetailTitle.Margins.Left = 20;</div><div>&nbsp; lblDetailTitle.Margins.Top = 20;</div><div>&nbsp; lblDetailTitle.clProSettings.FontSize&nbsp; = 18;</div><div>&nbsp; lblDetailTitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; //lblDetailTitle.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblDetailSubtitle = MyForm.AddNewLabel(detailSheet, 'lblDetailSubtitle', 'Produit A · Bloc A');</div><div>&nbsp; lblDetailSubtitle.Align = alTop;</div><div>&nbsp; lblDetailSubtitle.Margins.Left = 20;</div><div>&nbsp; lblDetailSubtitle.Margins.Top = 4;</div><div>&nbsp; lblDetailSubtitle.clProSettings.FontSize&nbsp; = 12;</div><div>&nbsp; lblDetailSubtitle.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //lblDetailSubtitle.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Close Button</div><div>&nbsp; btnCloseDetail = MyForm.AddNewProButton(detailSheet, 'btnCloseDetail', 'X');</div><div>&nbsp; btnCloseDetail.Align = alNone;</div><div>&nbsp; btnCloseDetail.Width = 30;</div><div>&nbsp; btnCloseDetail.Height = 30;</div><div>&nbsp; btnCloseDetail.Position.X = 320;</div><div>&nbsp; btnCloseDetail.Position.Y = 16;</div><div>&nbsp; clComponent.SetupComponent(btnCloseDetail, '{"BackgroundColor":"#0d1520", "TextColor":"#4a6580", "RoundHeight":6, "RoundWidth":6, "BorderColor":"#1a2d42", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnCloseDetail, tbeOnClick, 'CloseDetailOverlay');</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Details Grid Layout</div><div>&nbsp; pnlDetailGrid = MyForm.AddNewProPanel(detailSheet, 'pnlDetailGrid');</div><div>&nbsp; pnlDetailGrid.Align = alTop;</div><div>&nbsp; pnlDetailGrid.Height = 110;</div><div>&nbsp; pnlDetailGrid.Margins.Top = 15;</div><div>&nbsp; pnlDetailGrid.Margins.Left = 20;</div><div>&nbsp; pnlDetailGrid.Margins.Right = 20;</div><div>&nbsp; clComponent.SetupComponent(pnlDetailGrid, '{"BackgroundColor":"#0c1828"}');</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Col 1 Row 1</div><div>&nbsp; lblGridVal1 = MyForm.AddNewLabel(pnlDetailGrid, 'lblGridVal1', '50 kg');</div><div>&nbsp; lblGridVal1.Align = alNone;</div><div>&nbsp; lblGridVal1.Position.X = 10;</div><div>&nbsp; lblGridVal1.Position.Y = 10;</div><div>&nbsp; lblGridVal1.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; lblGridVal1.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; //lblGridVal1.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblGridLbl1 = MyForm.AddNewLabel(pnlDetailGrid, 'lblGridLbl1', 'QUANTITÉ');</div><div>&nbsp; lblGridLbl1.Align = alNone;</div><div>&nbsp; lblGridLbl1.Position.X = 10;</div><div>&nbsp; lblGridLbl1.Position.Y = 28;</div><div>&nbsp; lblGridLbl1.clProSettings.FontSize&nbsp; = 9;</div><div>&nbsp; lblGridLbl1.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //lblGridLbl1.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Col 2 Row 1</div><div>&nbsp; lblGridVal2 = MyForm.AddNewLabel(pnlDetailGrid, 'lblGridVal2', 'LOT001');</div><div>&nbsp; lblGridVal2.Align = alNone;</div><div>&nbsp; lblGridVal2.Position.X = 170;</div><div>&nbsp; lblGridVal2.Position.Y = 10;</div><div>&nbsp; lblGridVal2.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; lblGridVal2.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; //lblGridVal2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblGridLbl2 = MyForm.AddNewLabel(pnlDetailGrid, 'lblGridLbl2', 'LOT');</div><div>&nbsp; lblGridLbl2.Align = alNone;</div><div>&nbsp; lblGridLbl2.Position.X = 170;</div><div>&nbsp; lblGridLbl2.Position.Y = 28;</div><div>&nbsp; lblGridLbl2.clProSettings.FontSize&nbsp; = 9;</div><div>&nbsp; lblGridLbl2.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; ///lblGridLbl2.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Col 1 Row 2</div><div>&nbsp; lblGridVal3 = MyForm.AddNewLabel(pnlDetailGrid, 'lblGridVal3', '12/07 14:32');</div><div>&nbsp; lblGridVal3.Align = alNone;</div><div>&nbsp; lblGridVal3.Position.X = 10;</div><div>&nbsp; lblGridVal3.Position.Y = 60;</div><div>&nbsp; lblGridVal3.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; lblGridVal3.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; //lblGridVal3.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblGridLbl3 = MyForm.AddNewLabel(pnlDetailGrid, 'lblGridLbl3', 'DATE / HEURE');</div><div>&nbsp; lblGridLbl3.Align = alNone;</div><div>&nbsp; lblGridLbl3.Position.X = 10;</div><div>&nbsp; lblGridLbl3.Position.Y = 78;</div><div>&nbsp; lblGridLbl3.clProSettings.FontSize&nbsp; = 9;</div><div>&nbsp; lblGridLbl3.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //lblGridLbl3.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Col 2 Row 2</div><div>&nbsp; lblGridVal4 = MyForm.AddNewLabel(pnlDetailGrid, 'lblGridVal4', 'Y. Kaya');</div><div>&nbsp; lblGridVal4.Align = alNone;</div><div>&nbsp; lblGridVal4.Position.X = 170;</div><div>&nbsp; lblGridVal4.Position.Y = 60;</div><div>&nbsp; lblGridVal4.clProSettings.FontSize&nbsp; = 13;</div><div>&nbsp; lblGridVal4.clProSettings.FontColor = clAlphaColor.clHexToColor('#e2eaf5');</div><div>&nbsp; //lblGridVal4.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; lblGridLbl4 = MyForm.AddNewLabel(pnlDetailGrid, 'lblGridLbl4', 'OPÉRATEUR');</div><div>&nbsp; lblGridLbl4.Align = alNone;</div><div>&nbsp; lblGridLbl4.Position.X = 170;</div><div>&nbsp; lblGridLbl4.Position.Y = 78;</div><div>&nbsp; lblGridLbl4.clProSettings.FontSize&nbsp; = 9;</div><div>&nbsp; lblGridLbl4.clProSettings.FontColor = clAlphaColor.clHexToColor('#4a6580');</div><div>&nbsp; //lblGridLbl4.TextSettings.StyledSettings = ssFamily;</div><div>&nbsp;&nbsp;</div><div>&nbsp; // Detail Actions</div><div>&nbsp; btnDetailAction1 = MyForm.AddNewProButton(detailSheet, 'btnDetailAction1', 'Voir le QR');</div><div>&nbsp; btnDetailAction1.Align = alNone;</div><div>&nbsp; btnDetailAction1.Width = 160;</div><div>&nbsp; btnDetailAction1.Height = 44;</div><div>&nbsp; btnDetailAction1.Position.X = 20;</div><div>&nbsp; btnDetailAction1.Position.Y = 195;</div><div>&nbsp; clComponent.SetupComponent(btnDetailAction1, '{"BackgroundColor":"#00d4ff18", "TextColor":"#00d4ff", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#00d4ff30", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnDetailAction1, tbeOnClick, 'ActionClick');</div><div>&nbsp;&nbsp;</div><div>&nbsp; btnDetailAction2 = MyForm.AddNewProButton(detailSheet, 'btnDetailAction2', 'Annuler');</div><div>&nbsp; btnDetailAction2.Align = alNone;</div><div>&nbsp; btnDetailAction2.Width = 160;</div><div>&nbsp; btnDetailAction2.Height = 44;</div><div>&nbsp; btnDetailAction2.Position.X = 195;</div><div>&nbsp; btnDetailAction2.Position.Y = 195;</div><div>&nbsp; clComponent.SetupComponent(btnDetailAction2, '{"BackgroundColor":"#f9731618", "TextColor":"#fb923c", "RoundHeight":10, "RoundWidth":10, "BorderColor":"#f9731630", "BorderWidth":1}');</div><div>&nbsp; MyForm.AddNewEvent(btnDetailAction2, tbeOnClick, 'ActionClick');</div><div>&nbsp;&nbsp;</div><div>&nbsp; ShowMvtScreen;</div><div>&nbsp; MyForm.Run;</div><div>}</div><div><br></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>Fri, 17 Jul 2026 16:56:31 +0000</pubDate>
   <guid isPermaLink="true">https://forum.clomosy.com.tr/forum_posts.asp?TID=1619&amp;PID=3741#3741</guid>
  </item> 
 </channel>
</rss>