Sayfayı Yazdır | Pencereyi Kapat

Dinamik olarak VerticalScroll yerleştrime hatası

Nereden Yazdırıldığı: Clomosy | Forum
Kategori: Genel Programlama
Forum Adı: Genel İşlemler
Forum Tanımlaması: TRObject dili ile programlama yaparken karşılaşılan genel işlemler
URL: https://forum.clomosy.com.tr/forum_posts.asp?TID=1218
Tarih: 07 Kasım 2025 Saat 23:59
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Dinamik olarak VerticalScroll yerleştrime hatası
Mesajı Yazan: M-Guney
Konu: Dinamik olarak VerticalScroll yerleştrime hatası
Mesaj Tarihi: 07 Kasım 2025 Saat 15:37
Dinamik olarak vertical scrolla yerleştrime işlemi yapmak istiyorum fakat yerleştirirken arada vertical scroll farklı konuma yerleştiriyor örnek vermem gerekirse 6 dan sonra 7 gelmesi gerekirken 8 geliyor.

void OrdersPnlV(FCount: integer;FArr :TCLJSONArray; FJson : String)  // Scrolbar içinde oluşturduğumuz dinamik panaller ve öğeleri
  var
  I:integer;
  {
    Clomosy.setClipBoard(FJson);
  //Clomosy.setClipBoard(FJson);
  //ShowMessage('FCount: '+ IntToStr(FCount)+ ' table_name: '+ Clomosy.CLParseJSON(FJson, IntToStr(0) + '.table_name'))
  for (I = 0 to FCount - 1) { // HERE
  //ShowMessage('FCount: '+ IntToStr(FCount)+ ' table_name: '+ Clomosy.CLParseJSON(FJson, IntToStr(I) + '.table_name'))
  //ShowMessage('Array Item :'+FArr.GetItem(I).GetValueByPath('order_time').AsString +'FJson: '+Clomosy.CLParseJSON(FJson, IntToStr(I) + '.order_time'));
  OrdersPnl = MainForm.addnewpropanel(vScroll,'OrdersPnl'+IntToStr(I));
  OrdersPnl.Align = alMostTop;
  //OrdersPnl.Width = 50;
  OrdersPnl.Width =(MainForm.clWidth*0.127);
  //OrdersPnl.Height = 102;
  OrdersPnl.Height = (MainForm.clHeight*0.1216);
  SetObjectMargins(OrdersPnl,7);
  OrdersPnl.clProSettings.BorderWidth = 3;
  OrdersPnl.clProSettings.RoundHeight=5;
  OrdersPnl.clProSettings.RoundWidth=5;
  OrdersPnl.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#1e1e1e');
  OrdersPnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#3a3a3a');
  OrdersPnl.SetclProSettings(OrdersPnl.clProSettings);


  TableLbl = MainForm.AddNewProLabel(OrdersPnl,'TableLbl'+ IntToStr(I),Clomosy.CLParseJSON(FJson, IntToStr(I) + '.table_name'));// HERE
  TableLbl.Align = alTop;
  TableLbl.Width = (MainForm.clWidth * 0.3817);  //150
  TableLbl.Height = (MainForm.clHeight * 0.0238); //20
  TableLbl.Margins.Left= (MainForm.clWidth*-68.70)/100; //-270
  TableLbl.Margins.Top= (MainForm.clHeight*0.834)/100;  //7
  TableLbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  TableLbl.clProSettings.FontSize = 20;
  TableLbl.clProSettings.FontVertAlign = palcenter;
  TableLbl.clProSettings.FontHorzAlign = palcenter;
  TableLbl.clProSettings.TextSettings.Font.Style = [fsBold];
  TableLbl.SetclProSettings(TableLbl.clProSettings);
  
  ClockPnl = MainForm.addnewpropanel(OrdersPnl,'ClockPnl'+IntToStr(I));
  ClockPnl.Align = alCenter;
  ClockPnl.Width = (MainForm.clWidth * 0.3817); //150
  ClockPnl.Height = (MainForm.clHeight * 0.0358); //30
  ClockPnl.Margins.Bottom = (MainForm.clHeight * 0.0417);
  ClockPnl.Margins.Left = (MainForm.clWidth * -0.4453); //-175
  ClockPnl.clProSettings.BorderWidth = 1;
  //ClockPnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#3a3a3a');
  ClockPnl.SetclProSettings(ClockPnl.clProSettings);
  
  StatePnl = MainForm.addnewpropanel(OrdersPnl,'StatePnl'+IntToStr(I));
  StatePnl.Align = alCenter;
  StatePnl.Width = (MainForm.clWidth * 0.4707); //185
  StatePnl.Height = (MainForm.clHeight * 0.0358); //30
  StatePnl.Margins.Bottom = (MainForm.clHeight * 0.0179); //15
  StatePnl.Margins.Left = (MainForm.clWidth * -0.3511); //-138
  StatePnl.Margins.Top = (MainForm.clHeight * 0.0477);  //40
  StatePnl.clProSettings.BorderWidth = 1;
  //StatePnl.clProSettings.BorderColor = clAlphaColor.clHexToColor('#3a3a3a');
  StatePnl.SetclProSettings(StatePnl.clProSettings);
  
  ClockDisplayLbl = MainForm.AddNewProLabel(ClockPnl,'ClockDisplayLbl'+IntToStr(I),'SAAT:');
  ClockDisplayLbl.Align = alLeft;
  ClockDisplayLbl.Width = (MainForm.clWidth * 0.1272); //50
  ClockDisplayLbl.Height = (MainForm.clHeight * 0.0238); //20
  ClockDisplayLbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  ClockDisplayLbl.clProSettings.FontSize = 14;
  ClockDisplayLbl.clProSettings.FontVertAlign = palcenter;
  ClockDisplayLbl.clProSettings.FontHorzAlign = palcenter;
  ClockDisplayLbl.clProSettings.TextSettings.Font.Style = [fsBold];
  ClockDisplayLbl.SetclProSettings(ClockDisplayLbl.clProSettings);
  
  ClockLbl = MainForm.AddNewProLabel(ClockPnl,'ClockLbl'+IntToStr(I), Clomosy.CLParseJSON(FJson, IntToStr(I) + '.order_time'));// HERE
  ClockLbl.Align = alLeft;
  ClockLbl.Width = (MainForm.clWidth * 0.1272); //50
  ClockLbl.Height = (MainForm.clHeight * 0.0358); //30
  ClockLbl.Margins.Left = (MainForm.clWidth * -0.0051);  //-2
  ClockLbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  ClockLbl.clProSettings.FontSize = 14;
  ClockLbl.clProSettings.FontVertAlign = palcenter;
  ClockLbl.clProSettings.FontHorzAlign = palcenter;
  ClockLbl.clProSettings.TextSettings.Font.Style = [fsBold];
  ClockLbl.SetclProSettings(ClockLbl.clProSettings);
  
  StateLbl = MainForm.AddNewProLabel(StatePnl,'StateLbl'+IntToStr(I),'Durum:');
  StateLbl.Align = alLeft;
  StateLbl.Width = (MainForm.clWidth * 0.1145); //45
  StateLbl.Height = (MainForm.clHeight * 0.0238); //20
  StateLbl.Margins.Left = (MainForm.clWidth * 0.0127); //5
  StateLbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  StateLbl.clProSettings.FontSize = 14;
  StateLbl.clProSettings.FontVertAlign = palcenter;
  StateLbl.clProSettings.FontHorzAlign = palcenter;
  StateLbl.clProSettings.TextSettings.Font.Style = [fsBold];
  StateLbl.SetclProSettings(StateLbl.clProSettings);
  
  StateDisplayLbl = MainForm.AddNewProLabel(StatePnl,'StateDisplayLbl'+IntToStr(I), Clomosy.CLParseJSON(FJson, IntToStr(I) + '.status'));
  StateDisplayLbl.Align = alLeft;
  StateDisplayLbl.Width = (MainForm.clWidth * 0.3308); //130
  StateDisplayLbl.Height = (MainForm.clHeight * 0.0238); //20
  StateDisplayLbl.Margins.Left = (MainForm.clWidth * -0.0254); //-10
  StateDisplayLbl.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  StateDisplayLbl.clProSettings.FontSize = 14;
  StateDisplayLbl.clProSettings.FontVertAlign = palcenter;
  StateDisplayLbl.clProSettings.FontHorzAlign = palcenter;
  StateDisplayLbl.clProSettings.TextSettings.Font.Style = [fsBold];
  StateDisplayLbl.SetclProSettings(StateDisplayLbl.clProSettings);
  
  DetailsBtn= MainForm.AddNewProButton(OrdersPnl, 'DetailsBtn'+IntToStr(I), 'DETAYLAR');
  DetailsBtn.clTagStr = 'DetailsBtn_'+IntToStr(I);
  DetailsBtn.Align = alCenter;
  DetailsBtn.Width = (MainForm.clWidth*0.3817); //150
  DetailsBtn.Height = (MainForm.clHeight*0.1144); //96
  DetailsBtn.Margins.Bottom= (MainForm.clHeight*0.03442); //27.2
  DetailsBtn.Margins.Left=(MainForm.clWidth*51.65)/100; //203
  DetailsBtn.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  DetailsBtn.clProSettings.FontSize = 16;
  DetailsBtn.clProSettings.FontVertAlign = palcenter;
  DetailsBtn.clProSettings.FontHorzAlign = palcenter;
  DetailsBtn.clProSettings.TextSettings.Font.Style = [fsBold];
  DetailsBtn.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4caf50');
  DetailsBtn.clProSettings.RoundWidth = 5;
  DetailsBtn.clProSettings.RoundHeight = 5;
  MainForm.AddNewEvent(DetailsBtn,tbeOnClick,'gotodetails');
  DetailsBtn.SetclProSettings(DetailsBtn.clProSettings);
  
  }
}

Örnek Json kodum

[{"order_id":21,"table_name":"K1","status":"paid","order_time":"12:50"},{"order_id":19,"table_name":"K1","status":"paid","order_time":"12:45"},{"order_id":16,"table_name":"K1","status":"paid","order_time":"12:40"},{"order_id":15,"table_name":"K1","status":"paid","order_time":"12:40"},{"order_id":14,"table_name":"K10","status":"paid","order_time":"18:48"},{"order_id":13,"table_name":"K10","status":"paid","order_time":"18:48"},{"order_id":12,"table_name":"K10","status":"pending","order_time":"18:46"},{"order_id":11,"table_name":"K10","status":"pending","order_time":"17:40"},{"order_id":10,"table_name":"K1","status":"pending","order_time":"17:40"},{"order_id":9,"table_name":"K1","status":"pending","order_time":"17:24"},{"order_id":8,"table_name":"K1","status":"pending","order_time":"17:23"},{"order_id":7,"table_name":"K1","status":"pending","order_time":"16:42"},{"order_id":6,"table_name":"K1","status":"paid","order_time":"16:35"},{"order_id":5,"table_name":"K1","status":"paid","order_time":"16:29"},{"order_id":4,"table_name":"K1","status":"pending","order_time":"16:26"},{"order_id":3,"table_name":"K1","status":"pending","order_time":"20:38"},{"order_id":2,"table_name":"K1","status":"paid","order_time":"20:37"},{"order_id":1,"table_name":"K1","status":"paid","order_time":"20:37"}]
https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">



Cevaplar:
Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 07 Kasım 2025 Saat 16:13
Çözüm olarak önce mevcut componentleri temizleyip, sonra yeniden oluştursak. 
Sanırım aynı isimde component oluşturuluyor. ve isimleri çakışıyor. 
Index sıralamasını da 0'dan başlayalım. 
void ClearScrollChildren
Try
  {
    if (vScroll == nil)
    {
      Exit;
    }
    
  
    for (i = 0 to 99)
    {
      // Ana panel'i kaldır
      existingPanel = MainForm.FindComponent('OrdersPnl' + IntToStr(i)) as TclProPanel;
      if (existingPanel <> nil)
.
.
.
.
hepsini temizledikten sonra OrdersPnlV prosedürine  ClearScrollChildren çağrılaım.


https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">< defer="" ="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28on72PdrCzSjY4U6VaAw1EQ==" -cf-beacon=""version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"_timing":"name":"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true,"location_startswith":null" crossorigin="anonymous">


Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 07 Kasım 2025 Saat 16:14
Deneme sonrası dönüş yapar mısın? https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">


Mesajı Yazan: M-Guney
Mesaj Tarihi: 07 Kasım 2025 Saat 17:14
Teşşekkürler kaldırma işlemini nasıl yapmam gerekiyor o kısmı tam analayamadım. Kaldırmak için hangi fonksiyonu kullanmam gerekiyor. https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">



Mesajı Yazan: Emr.Erkmn
Mesaj Tarihi: 07 Kasım 2025 Saat 17:51
https://www.docs.clomosy.com/index.php?title=ClFindComponent" rel="nofollow - https://www.docs.clomosy.com/index.php?title=ClFindComponent kullanarak kaldırabilirsin
void ClearScrollBoxChildrenClomosy(scrollBox: TCLVertScrollBox; pattern: String; maxCount: Integer)
var
  i: Integer;
  comp: TCLComponent;
  compName: String;
{
  Try
    if (scrollBox == nil)
    {
      Exit;
    }
    
    for (i = 0 to (maxCount - 1))
    {
      Try
        compName = pattern + IntToStr(i);
        comp = scrollBox.clFindComponent(compName);
        
        if (comp <> nil)
        {
          comp.Free;
          comp = nil;
        }
      }
      except
      }
    }
  except
    ShowMessage('ClearScrollBoxChildrenClomosy hatası: ' + LastExceptionMessage);
  }

bu şekil de kaldırmayı deneyelim 
sonra tekrar oluşturalım 


https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"version":"2024.11.0","token":"439455f3e46c40b98dbd42a2f1a954d8","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}" crossorigin="anonymous">



Sayfayı Yazdır | Pencereyi Kapat

Forum Software by Web Wiz Forums® version 12.07 - https://www.webwizforums.com
Copyright ©2001-2024 Web Wiz Ltd. - https://www.webwiz.net