Sayfayı Yazdır | Pencereyi Kapat

Grid ekranı sorunu

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=1080
Tarih: 13 Temmuz 2025 Saat 04:07
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Grid ekranı sorunu
Mesajı Yazan: Muammer
Konu: Grid ekranı sorunu
Mesaj Tarihi: 11 Temmuz 2025 Saat 15:10
Aşağıdaki kod sipariş sayfası.Bu sayfada grid ekranına verileri ekleyemiyorum.Bilgileri girerken sürekli hata alıyorum


var
  TedarikciForm: TclForm; 
  Lbl_TedarikciAdi, Lbl_TedarikciTelefon, Lbl_SiparisMiktari, Lbl_SiparisTarihi, Lbl_TeslimatTarihi, Lbl_UrunAdi: TClProLabel;
  Edt_TedarikciAdi, Edt_TedarikciTelefon, Edt_SiparisMiktari, Edt_UrunAdi: TclProEdit;
  Dt_SiparisTarihi, Dt_TeslimatTarihi: TClProDateEdit;
  Btn_SiparisEkle: TClProButton;
  Lbl_Baslik:TClProLabel;
  mainPnl,leftPanel,rightPanel:TclProPanel;
  
  MyGrid: TclStringGrid;    // Grid for displaying added order data
  SiparisMiktari: Integer;
  SiparisTarihi, TeslimatTarihi, TedarikciAdi, TedarikciTelefon, UrunAdi: String;

  // Setup Grid Columns (headers and widths)
void SetupGridColumns;
{
  MyGrid.Cells[0, 0] = 'Tedarikçi Adı';
  MyGrid.Cells[1, 0] = 'Tedarikçi Telefon';
  MyGrid.Cells[2, 0] = 'Ürün Adı';
  MyGrid.Cells[3, 0] = 'Sipariş Miktarı';
  MyGrid.Cells[4, 0] = 'Sipariş Tarihi';
  MyGrid.Cells[5, 0] = 'Teslimat Tarihi';
  
  MyGrid.Columns[0].Width = 150;
  MyGrid.Columns[1].Width = 120;
  MyGrid.Columns[2].Width = 150;
  MyGrid.Columns[3].Width = 120;
  MyGrid.Columns[4].Width = 120;
  MyGrid.Columns[5].Width = 120;
}

// Add data to grid
void AddDataToGrid;
{
  // Adding the new order to the grid
  MyGrid.RowCount = MyGrid.RowCount + 1;  // Adding a new row
  MyGrid.Cells[0, MyGrid.RowCount - 1] = TedarikciAdi;
  MyGrid.Cells[1, MyGrid.RowCount - 1] = TedarikciTelefon;
  MyGrid.Cells[2, MyGrid.RowCount - 1] = UrunAdi;
  MyGrid.Cells[3, MyGrid.RowCount - 1] = IntToStr(SiparisMiktari);
  MyGrid.Cells[4, MyGrid.RowCount - 1] = SiparisTarihi;
  MyGrid.Cells[5, MyGrid.RowCount - 1] = TeslimatTarihi;
}

void SiparisEkleButtonClick;
{
  // Get user inputs for the new order
  TedarikciAdi = Edt_TedarikciAdi.Text;
  TedarikciTelefon = Edt_TedarikciTelefon.Text;
  UrunAdi = Edt_UrunAdi.Text;
  SiparisMiktari = StrToInt(Edt_SiparisMiktari.Text);  // Convert to integer
  SiparisTarihi = Dt_SiparisTarihi.Text;
  TeslimatTarihi = Dt_TeslimatTarihi.Text;

  ShowMessage('Sipariş başarıyla eklendi!');  // Success message
  
  // Add the new order data to the grid
  AddDataToGrid;
}

{
  TedarikciForm = TclForm.Create(Self);
  TedarikciForm.SetFormColor('#c4c4c4', '#c4c4c4', clGVertical);

  // Form Title
  Lbl_Baslik = TedarikciForm.AddNewProLabel(TedarikciForm, 'Lbl_Baslik', 'Tedarikçi Sipariş Ekleme');
  Lbl_Baslik.Align = alTop;
  Lbl_Baslik.Height = 60;
  Lbl_Baslik.Margins.Top = 30;
  Lbl_Baslik.clProSettings.FontSize = 26;
  Lbl_Baslik.clProSettings.FontColor = clAlphaColor.clHexToColor('#fc0000');
  Lbl_Baslik.clProSettings.FontVertAlign = palCenter;
  Lbl_Baslik.clProSettings.FontHorzAlign = palCenter;
  Lbl_Baslik.SetclProSettings(Lbl_Baslik.clProSettings);

  // Create main panel to split left and right panels
  mainPnl = TedarikciForm.AddNewProPanel(TedarikciForm, 'mainPnl');
  mainPnl.Align = alClient;  // Use full client area
  mainPnl.Margins.Left = 10;
  mainPnl.Margins.Right = 10;
  mainPnl.Margins.Top = 10;
  mainPnl.Margins.Bottom = 10;

  // Left Panel (For inputs)
  leftPanel = TedarikciForm.AddNewProPanel(mainPnl, 'leftPanel');
  leftPanel.Align = alLeft;
  leftPanel.Width = mainPnl.Width div 2;  // Half width for left panel
  leftPanel.Margins.Top = 20;
  leftPanel.Margins.Left = 20;
  leftPanel.Margins.Right = 20;

  // Right Panel (For Grid)
  rightPanel = TedarikciForm.AddNewProPanel(mainPnl, 'rightPanel');
  rightPanel.Align = alClient;  // Takes remaining space
  rightPanel.Margins.Top = 20;
  rightPanel.Margins.Left = 20;
  rightPanel.Margins.Right = 20;

  // Left Panel Widgets (For Tedarikçi and Order Info)
  Lbl_TedarikciAdi = TedarikciForm.AddNewProLabel(leftPanel, 'Lbl_TedarikciAdi', 'Tedarikçi Adı');
  Lbl_TedarikciAdi.Align = alTop;
  Lbl_TedarikciAdi.Height = 30;
  Lbl_TedarikciAdi.clProSettings.FontSize = 12;
  Lbl_TedarikciAdi.clProSettings.FontColor = clAlphaColor.clHexToColor('#080808');
  Lbl_TedarikciAdi.SetclProSettings(Lbl_TedarikciAdi.clProSettings);

  Edt_TedarikciAdi = TedarikciForm.AddNewProEdit(leftPanel, 'Edt_TedarikciAdi', '');
  Edt_TedarikciAdi.Align = alTop;
  Edt_TedarikciAdi.Height = 30;
  Edt_TedarikciAdi.Width = 220;
  Edt_TedarikciAdi.Margins.Top = 10;
  Edt_TedarikciAdi.SetclProSettings(Edt_TedarikciAdi.clProSettings);

  // Tedarikçi Telefon Label and Input
  Lbl_TedarikciTelefon = TedarikciForm.AddNewProLabel(leftPanel, 'Lbl_TedarikciTelefon', 'Tedarikçi Telefon');
  Lbl_TedarikciTelefon.Align = alTop;
  Lbl_TedarikciTelefon.Height = 30;
  Lbl_TedarikciTelefon.clProSettings.FontSize = 12;
  Lbl_TedarikciTelefon.clProSettings.FontColor = clAlphaColor.clHexToColor('#080808');
  Lbl_TedarikciTelefon.SetclProSettings(Lbl_TedarikciTelefon.clProSettings);

  Edt_TedarikciTelefon = TedarikciForm.AddNewProEdit(leftPanel, 'Edt_TedarikciTelefon', '');
  Edt_TedarikciTelefon.Align = alTop;
  Edt_TedarikciTelefon.Height = 30;
  Edt_TedarikciTelefon.Width = 220;
  Edt_TedarikciTelefon.Margins.Top = 10;
  Edt_TedarikciTelefon.SetclProSettings(Edt_TedarikciTelefon.clProSettings);

  // Product Name Label and Input
  Lbl_UrunAdi = TedarikciForm.AddNewProLabel(leftPanel, 'Lbl_UrunAdi', 'Ürün Adı');
  Lbl_UrunAdi.Align = alTop;
  Lbl_UrunAdi.Height = 30;
  Lbl_UrunAdi.clProSettings.FontSize = 12;
  Lbl_UrunAdi.clProSettings.FontColor = clAlphaColor.clHexToColor('#080808');
  Lbl_UrunAdi.SetclProSettings(Lbl_UrunAdi.clProSettings);

  Edt_UrunAdi = TedarikciForm.AddNewProEdit(leftPanel, 'Edt_UrunAdi', '');
  Edt_UrunAdi.Align = alTop;
  Edt_UrunAdi.Height = 30;
  Edt_UrunAdi.Width = 220;
  Edt_UrunAdi.Margins.Top = 10;
  Edt_UrunAdi.SetclProSettings(Edt_UrunAdi.clProSettings);

  // Sipariş Miktarı Label and Input
  Lbl_SiparisMiktari = TedarikciForm.AddNewProLabel(leftPanel, 'Lbl_SiparisMiktari', 'Sipariş Miktarı');
  Lbl_SiparisMiktari.Align = alTop;
  Lbl_SiparisMiktari.Height = 30;
  Lbl_SiparisMiktari.clProSettings.FontSize = 12;
  Lbl_SiparisMiktari.clProSettings.FontColor = clAlphaColor.clHexToColor('#080808');
  Lbl_SiparisMiktari.SetclProSettings(Lbl_SiparisMiktari.clProSettings);

  Edt_SiparisMiktari = TedarikciForm.AddNewProEdit(leftPanel, 'Edt_SiparisMiktari', '');
  Edt_SiparisMiktari.Align = alTop;
  Edt_SiparisMiktari.Height = 30;
  Edt_SiparisMiktari.Width = 220;
  Edt_SiparisMiktari.Margins.Top = 10;
  Edt_SiparisMiktari.SetclProSettings(Edt_SiparisMiktari.clProSettings);

  // Sipariş Tarihi Label and Input
  Lbl_SiparisTarihi = TedarikciForm.AddNewProLabel(leftPanel, 'Lbl_SiparisTarihi', 'Sipariş Tarihi');
  Lbl_SiparisTarihi.Align = alTop;
  Lbl_SiparisTarihi.Height = 30;
  Lbl_SiparisTarihi.clProSettings.FontSize = 12;
  Lbl_SiparisTarihi.clProSettings.FontColor = clAlphaColor.clHexToColor('#080808');
  Lbl_SiparisTarihi.SetclProSettings(Lbl_SiparisTarihi.clProSettings);

  Dt_SiparisTarihi = TedarikciForm.AddNewProDateEdit(leftPanel, 'Dt_SiparisTarihi');
  Dt_SiparisTarihi.Align = alTop;
  Dt_SiparisTarihi.Height = 30;
  Dt_SiparisTarihi.Width = 220;
  Dt_SiparisTarihi.Margins.Top = 10;
  Dt_SiparisTarihi.SetclProSettings(Dt_SiparisTarihi.clProSettings);

  // Teslimat Tarihi Label and Input
  Lbl_TeslimatTarihi = TedarikciForm.AddNewProLabel(leftPanel, 'Lbl_TeslimatTarihi', 'Teslimat Tarihi');
  Lbl_TeslimatTarihi.Align = alTop;
  Lbl_TeslimatTarihi.Height = 30;
  Lbl_TeslimatTarihi.clProSettings.FontSize = 12;
  Lbl_TeslimatTarihi.clProSettings.FontColor = clAlphaColor.clHexToColor('#080808');
  Lbl_TeslimatTarihi.SetclProSettings(Lbl_TeslimatTarihi.clProSettings);

  Dt_TeslimatTarihi = TedarikciForm.AddNewProDateEdit(leftPanel, 'Dt_TeslimatTarihi');
  Dt_TeslimatTarihi.Align = alTop;
  Dt_TeslimatTarihi.Height = 30;
  Dt_TeslimatTarihi.Width = 220;
  Dt_TeslimatTarihi.Margins.Top = 10;
  Dt_TeslimatTarihi.SetclProSettings(Dt_TeslimatTarihi.clProSettings);

  // Sipariş Ekleme Button
  Btn_SiparisEkle = TedarikciForm.AddNewProButton(leftPanel, 'Btn_SiparisEkle', 'Sipariş Ekle');
  Btn_SiparisEkle.Align = alTop;
  Btn_SiparisEkle.Height = 50;
  Btn_SiparisEkle.Width = 200;
  Btn_SiparisEkle.Margins.Top = 20;
  Btn_SiparisEkle.Margins.Left = 20;
  Btn_SiparisEkle.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4CAF50');
  Btn_SiparisEkle.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  Btn_SiparisEkle.clProSettings.FontSize = 16;
  Btn_SiparisEkle.SetclProSettings(Btn_SiparisEkle.clProSettings);

  TedarikciForm.AddNewEvent(Btn_SiparisEkle, tbeOnClick, 'SiparisEkleButtonClick');  // Event for button click
  
  // Right Panel: Grid for displaying orders
  MyGrid = TedarikciForm.AddNewStringGrid(rightPanel, 'MyGrid');
  MyGrid.Align = alClient;
  MyGrid.ReadOnly = True;
  
  TedarikciForm.clSetWindowState(fwsMaximized);

  // Run the form
  TedarikciForm.Run;
}




Cevaplar:
Mesajı Yazan: haletr
Mesaj Tarihi: 11 Temmuz 2025 Saat 16:50

Merhaba Muammer,

Kodunu inceledim. Şu anda herhangi bir veri çekme işlemi yok gibi görünüyor, sadece StringGrid'e manuel veri eklenmiş. StringGrid veri görüntülemek için kullanılıyor ancak arka planda bir veri bağlaması (data binding) olmadığında düzgün çalışmayabilir.

Ben kodunu incelerken, StringGrid 'i JSON verisiyle bir Dataset'e bağladığımda sorunsuz çalıştı. Aşağıdaki örneği inceleyebilir misin? Umarım yardımcı olur, iyi çalışmalar.



var

  TedarikciForm: TclForm;

  Lbl_Baslik: TClProLabel;

  mainPnl, leftPanel, rightPanel: TclProPanel;

  Edt_TedarikciAdi, Edt_TedarikciTelefon, Edt_SiparisMiktari, Edt_UrunAdi: TclProEdit;

  Dt_SiparisTarihi, Dt_TeslimatTarihi: TClProDateEdit;

  Btn_SiparisEkle: TClProButton;

  MyGrid: TclStringGrid;

  jsonStr: String;

  MyDataSet: TClJSonQuery;


  TedarikciAdi, TedarikciTelefon, UrunAdi, SiparisTarihi, TeslimatTarihi: String;

  SiparisMiktari: Integer;


void SetupGridColumns;

{

  //MyGrid.RowCount = 1;


  MyGrid.Columns[0].Header = 'Tedarikçi Adı';

  MyGrid.Columns[1].Header = 'Telefon';

  MyGrid.Columns[2].Header = 'Ürün';

  MyGrid.Columns[3].Header = 'Miktar';

  MyGrid.Columns[4].Header = 'Sipariş Tarihi';

  MyGrid.Columns[5].Header = 'Teslimat Tarihi';


  MyGrid.Columns[0].Width = 150;

  MyGrid.Columns[1].Width = 120;

  MyGrid.Columns[2].Width = 150;

  MyGrid.Columns[3].Width = 120;

  MyGrid.Columns[4].Width = 120;

  MyGrid.Columns[5].Width = 120;

}


void SiparisEkleButtonClick;

var row: Integer;

{

  TedarikciAdi = Edt_TedarikciAdi.Text;

  TedarikciTelefon = Edt_TedarikciTelefon.Text;

  UrunAdi = Edt_UrunAdi.Text;

  SiparisTarihi = Dt_SiparisTarihi.Text;

  TeslimatTarihi = Dt_TeslimatTarihi.Text;


  try

    SiparisMiktari = StrToInt(Edt_SiparisMiktari.Text);

  except

    ShowMessage('Sipariş miktarı geçerli bir sayı olmalıdır.');

  }


  // Grid’e satır ekle

  MyGrid.RowCount = MyGrid.RowCount + 1;

  row = MyGrid.RowCount - 1;


  MyGrid.Cells[0, row] = TedarikciAdi;

  MyGrid.Cells[1, row] = TedarikciTelefon;

  MyGrid.Cells[2, row] = UrunAdi;

  MyGrid.Cells[3, row] = IntToStr(SiparisMiktari);

  MyGrid.Cells[4, row] = SiparisTarihi;

  MyGrid.Cells[5, row] = TeslimatTarihi;


  // Temizle

  Edt_TedarikciAdi.Text = '';

  Edt_TedarikciTelefon.Text = '';

  Edt_UrunAdi.Text = '';

  Edt_SiparisMiktari.Text = '';


  ShowMessage('Sipariş başarıyla eklendi.');

}


{

  TedarikciForm = TclForm.Create(Self);

  TedarikciForm.clSetWindowState(fwsMaximized);

  TedarikciForm.SetFormColor('#f5f5f5', '', clGNone);

  

  jsonStr = '[' +

    '{"TedarikciAdi":"ABC Ticaret","Telefon":"0555 123 45 67","UrunAdi":"Kalem","SiparisMiktari":100,"SiparisTarihi":"2025-07-11","TeslimatTarihi":"2025-07-20"},' +

    '{"TedarikciAdi":"XYZ Ltd.","Telefon":"0532 987 65 43","UrunAdi":"Defter","SiparisMiktari":50,"SiparisTarihi":"2025-07-12","TeslimatTarihi":"2025-07-22"}' +

  ']';


  Lbl_Baslik = TedarikciForm.AddNewProLabel(TedarikciForm, 'Lbl_Baslik', 'Tedarikçi Sipariş Ekleme');

  Lbl_Baslik.Align = alTop;

  Lbl_Baslik.Height = 60;

  Lbl_Baslik.Margins.Top = 20;

  Lbl_Baslik.clProSettings.FontSize = 26;

  Lbl_Baslik.clProSettings.FontVertAlign = palCenter;

  Lbl_Baslik.clProSettings.FontHorzAlign = palCenter;

  Lbl_Baslik.SetclProSettings(Lbl_Baslik.clProSettings);


  mainPnl = TedarikciForm.AddNewProPanel(TedarikciForm, 'mainPnl');

  mainPnl.Align = alClient;


  leftPanel = TedarikciForm.AddNewProPanel(mainPnl, 'leftPanel');

  leftPanel.Align = alLeft;

  leftPanel.Width = 400;

  leftPanel.Margins.Left = 20;

  leftPanel.Margins.Top = 20;


  rightPanel = TedarikciForm.AddNewProPanel(mainPnl, 'rightPanel');

  rightPanel.Align = alClient;

  rightPanel.Margins.Left = 20;

  rightPanel.Margins.Top = 20;


  Edt_TedarikciAdi = TedarikciForm.AddNewProEdit(leftPanel, 'Edt_TedarikciAdi', 'Tedarikçi Adı');

  Edt_TedarikciAdi.Align = alTop;

  Edt_TedarikciAdi.Margins.Top = 10;


  Edt_TedarikciTelefon = TedarikciForm.AddNewProEdit(leftPanel, 'Edt_TedarikciTelefon', 'Telefon');

  Edt_TedarikciTelefon.Align = alTop;

  Edt_TedarikciTelefon.Margins.Top = 10;


  Edt_UrunAdi = TedarikciForm.AddNewProEdit(leftPanel, 'Edt_UrunAdi', 'Ürün Adı');

  Edt_UrunAdi.Align = alTop;

  Edt_UrunAdi.Margins.Top = 10;


  Edt_SiparisMiktari = TedarikciForm.AddNewProEdit(leftPanel, 'Edt_SiparisMiktari', 'Sipariş Miktarı');

  Edt_SiparisMiktari.Align = alTop;

  Edt_SiparisMiktari.Margins.Top = 10;


  Dt_SiparisTarihi = TedarikciForm.AddNewProDateEdit(leftPanel, 'Dt_SiparisTarihi');

  Dt_SiparisTarihi.Align = alTop;

  Dt_SiparisTarihi.Margins.Top = 10;


  Dt_TeslimatTarihi = TedarikciForm.AddNewProDateEdit(leftPanel, 'Dt_TeslimatTarihi');

  Dt_TeslimatTarihi.Align = alTop;

  Dt_TeslimatTarihi.Margins.Top = 10;


  Btn_SiparisEkle = TedarikciForm.AddNewProButton(leftPanel, 'Btn_SiparisEkle', 'Ekle');

  Btn_SiparisEkle.Align = alTop;

  Btn_SiparisEkle.Margins.Top = 15;

  Btn_SiparisEkle.Height = 40;

  Btn_SiparisEkle.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4CAF50');

  Btn_SiparisEkle.clProSettings.FontColor = clAlphaColor.clWhite;

  Btn_SiparisEkle.clProSettings.FontSize = 16;

  Btn_SiparisEkle.SetclProSettings(Btn_SiparisEkle.clProSettings);

  TedarikciForm.AddNewEvent(Btn_SiparisEkle, tbeOnClick, 'SiparisEkleButtonClick');


  MyGrid = TedarikciForm.AddNewStringGrid(rightPanel, 'MyGrid');

  MyGrid.Align = alClient;

  MyGrid.ReadOnly = True;

  

  MyDataSet = Clomosy.ClDataSetFromJSON(jsonStr);


  TedarikciForm.AddNewGridBinding(MyGrid, MyDataSet, 'mylink');

  

  SetupGridColumns;


  TedarikciForm.Run;

}





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