Sayfayı Yazdır | Pencereyi Kapat

Grid ekranı ve Filtreleme 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=1089
Tarih: 17 Temmuz 2025 Saat 01:12
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: Grid ekranı ve Filtreleme sorunu
Mesajı Yazan: Muammer
Konu: Grid ekranı ve Filtreleme sorunu
Mesaj Tarihi: 16 Temmuz 2025 Saat 10:05
Bu kod Dashboard ekranının kodu.Grid ekranı üzerinde  bulunan sqlden çekilen tabloda alt alta aynı satır var ve bu yüzden de sqldeki tablonun ilk satırı görünmüyor.
Filtreleme butonuna basarken de veriler filtrelenmiyor

var
  MyForm: TclForm;          
  MyGrid: TclStringGrid;    
  Lbl_Baslik: TClProLabel;  
  LblUyari: TClProLabel;    
  DtEdt1: TClProDateEdit;   
  Edt_StokKodu: TclProEdit; 
  Lbl_Tarih: TClProLabel;   
  Lbl_StokKodu: TClProLabel;
  Btn_Filtrele, Btn_TedarikciSiparisTakibi, Btn_QR, Btn_YeniUrunEkle, Btn_SatisFire: TClProButton;
  selectQuery: TClSqlQuery;
  Str_StokKodu: String;
  Str_DateEdit: String;
  Edt_QRText: TclProEdit;
  QRImage: TclProImage;
  qrUrl, fullQRText: String;
  Unit2: TclUnit;
  Unit3: TclUnit;
  Unit4, Unit5, Unit6: TclUnit;
  mainPnl: TclProPanel;
  leftPanel: TclProPanel;
  rightPanel: TclProPanel;
  Edt_FilterText: TclProEdit;  // Filtreleme için yeni metin kutusu
  Dt_FilterDate: TClProDateEdit;  // Filtreleme için tarih seçme alanı
  filterText, filterDate: String;

void GoToUnit2;
{
  MyForm.clShow;
  Unit2.UnitName = 'qrolustur';
  Unit2.CallerForm = MyForm;
  Unit2.Run;
}
void GoToUnit3;
{
  MyForm.clShow;
  Unit3.UnitName = 'UrunEkle';
  Unit3.CallerForm = MyForm;
  Unit3.Run;
}
void GoToUnit4;
{
  MyForm.clShow;
  Unit4.UnitName = 'SatisFire';
  Unit4.CallerForm = MyForm;
  Unit4.Run;
}
// Tedarikçi Sipariş Takibi sayfasına yönlendirecek fonksiyon
void GoToUnit5;
{
  MyForm.clShow;  
  Unit5.UnitName = 'TedarikciSiparisTakibi';  
  Unit5.CallerForm = MyForm;  
  Unit5.Run;  
}


void SetupGridColumns;
{
  MyGrid.Cells[0, 0] = 'Urun Kodu';
  MyGrid.Cells[1, 0] = 'Urun Adı';
  MyGrid.Cells[2, 0] = 'Stok Miktarı';
  MyGrid.Cells[3, 0] = 'Kritik Seviye';
  MyGrid.Cells[4, 0] = 'Depo Yeri ID';
  MyGrid.Cells[5, 0] = 'Birim Fiyat';
  MyGrid.Cells[6, 0] = 'Oluşturma Tarihi';

  MyGrid.Columns[0].Width = 100;
  MyGrid.Columns[1].Width = 150;
  MyGrid.Columns[2].Width = 100;
  MyGrid.Columns[3].Width = 100;
  MyGrid.Columns[4].Width = 100;
  MyGrid.Columns[5].Width = 100;
  MyGrid.Columns[6].Width = 120;
}

void AddDataToGrid;
{
  try
    selectQuery.SQL.Text = 'SELECT UrunKodu, UrunAdi, StokMiktari, KritikSeviye, DepoYeriID, BirimFiyat, OlusturmaTarihi FROM TBLSTOKSB';
    selectQuery.Open;
    
    if (selectQuery.Found)
    {
      MyForm.RemoveGridBinding('myLink');
      MyForm.AddNewGridBinding(MyGrid, selectQuery, 'myLink');
      SetupGridColumns;
    }
    else
    {
      ShowMessage('Kayıt bulunamadı!');
    }
  except
    ShowMessage('Hata oluştu: ' + LastExceptionMessage);
  }
}

void OnFilterClick;
{

  filterText = Edt_FilterText.Text;
  filterDate = DtEdt1.Text;

  try
    selectQuery.SQL.Text = 'SELECT UrunKodu, UrunAdi, StokMiktari, KritikSeviye, DepoYeriID, BirimFiyat, OlusturmaTarihi ' +
                           'FROM TBLSTOKSB WHERE 1=1 ';

    if (filterText <> '') 
    {
      selectQuery.SQL.Text = selectQuery.SQL.Text + ' AND UrunKodu LIKE ''%' + filterText + '%'' ';
    }

    if (filterDate <> '') 
    {
      selectQuery.SQL.Text = selectQuery.SQL.Text + ' AND CAST(OlusturmaTarihi AS DATE) = ''' + filterDate + ''' ';
    }

    selectQuery.Open;

    if selectQuery.Found 
    {
      MyForm.RemoveGridBinding('myLink');
      MyForm.AddNewGridBinding(MyGrid, selectQuery, 'myLink');
      SetupGridColumns;
    }
    else 
    {
      ShowMessage('Filtre sonucu bulunamadı!');
    }
  except
    ShowMessage('Filtreleme hatası: ' + LastExceptionMessage);
  }
}


void GenerateQRClick;
{
  fullQRText = 'StokKodu:' + Edt_StokKodu.Text + '+Tarih:' + DtEdt1.Text + '+Not:' + Edt_QRText.Text;
  qrUrl = ' https://api.qrserver.com/v1/create-qr-code/?size=300x300&data=" rel="nofollow - https://api.qrserver.com/v1/create-qr-code/?size=300x300&data= ' + fullQRText;
}

{
  // Ana formu oluşturur ve arka plan rengini ayarlar
  MyForm = TclForm.Create(Self);
  MyForm.SetFormColor('#c4c4c4', '#c4c4c4', clGVertical);
  Unit2=TclUnit.Create;
  Unit3=TclUnit.Create;
  Unit4=TclUnit.Create;
  Unit5=TclUnit.Create;
  Unit6=TclUnit.Create;

  // Dashboard başlığını oluşturur ve stil ayarlarını yapar
  Lbl_Baslik = MyForm.AddNewProLabel(MyForm, 'Lbl_Baslik', 'STOK YÖNETİM DASHBOARD');
  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);

  // Left Panel: Sol paneli oluşturuyoruz
  leftPanel = MyForm.AddNewProPanel(MyForm, 'leftPanel');
  leftPanel.Align = alLeft;
  leftPanel.Width = 200;  // Ekranın 4'te 1'ini kaplar
  leftPanel.Margins.Top = 20;
  leftPanel.Margins.Left = 20;
  leftPanel.Margins.Right = 20;

  // Right Panel: Sağ paneli oluşturuyoruz
  rightPanel = MyForm.AddNewProPanel(MyForm, 'rightPanel');
  rightPanel.Align = alClient;  // Sağ panel, kalan tüm alanı alacak
  rightPanel.Margins.Top = 20;
  rightPanel.Margins.Left = 20;
  rightPanel.Margins.Right = 20;

  // Sol paneldeki butonlar (alt alta)
  Btn_QR = MyForm.AddNewProButton(leftPanel, 'Btn_QR', 'QR OLUŞTUR');
  Btn_QR.Align = alTop;
  Btn_QR.Margins.Top = 10;
  Btn_QR.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#fc0000');
  Btn_QR.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  Btn_QR.clProSettings.FontSize = 16;
  Btn_QR.SetclProSettings(Btn_QR.clProSettings);
  MyForm.AddNewEvent(Btn_QR, tbeOnClick, 'GenerateQRClick');

  Btn_TedarikciSiparisTakibi = MyForm.AddNewProButton(leftPanel, 'Btn_TedarikciSiparisTakibi', 'Tedarikçi Sipariş Takibi');
  Btn_TedarikciSiparisTakibi.Align = alTop;
  Btn_TedarikciSiparisTakibi.Margins.Top = 10;
  Btn_TedarikciSiparisTakibi.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4CAF50');
  Btn_TedarikciSiparisTakibi.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  Btn_TedarikciSiparisTakibi.clProSettings.FontSize = 16;
  Btn_TedarikciSiparisTakibi.SetclProSettings(Btn_TedarikciSiparisTakibi.clProSettings);

  Btn_YeniUrunEkle = MyForm.AddNewProButton(leftPanel, 'Btn_YeniUrunEkle', 'Yeni Ürün Ekle');
  Btn_YeniUrunEkle.Align = alTop;
  Btn_YeniUrunEkle.Margins.Top = 10;
  Btn_YeniUrunEkle.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4CAF50');
  Btn_YeniUrunEkle.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  Btn_YeniUrunEkle.clProSettings.FontSize = 16;
  Btn_YeniUrunEkle.SetclProSettings(Btn_YeniUrunEkle.clProSettings);

  Btn_SatisFire = MyForm.AddNewProButton(leftPanel, 'Btn_SatisFire', 'Satış ve Fire İşlemleri');
  Btn_SatisFire.Align = alTop;
  Btn_SatisFire.Margins.Top = 10;
  Btn_SatisFire.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#4CAF50');
  Btn_SatisFire.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  Btn_SatisFire.clProSettings.FontSize = 16;
  Btn_SatisFire.SetclProSettings(Btn_SatisFire.clProSettings);


  // Sağ paneldeki filtreleme butonu ve grid
  Edt_FilterText = MyForm.AddNewProEdit(rightPanel, 'Edt_FilterText', '');
  Edt_FilterText.Align = alTop;
  Edt_FilterText.Height = 30;
  Edt_FilterText.Width = 150;
  Edt_FilterText.Margins.Top = 10;
  Edt_FilterText.SetclProSettings(Edt_FilterText.clProSettings);

  Lbl_Tarih = MyForm.AddNewProLabel(rightPanel, 'Lbl_Tarih', 'Tarih Seç');
  Lbl_Tarih.Align = alTop;
  Lbl_Tarih.Height = 30;
  Lbl_Tarih.clProSettings.FontSize = 12;
  Lbl_Tarih.clProSettings.FontColor = clAlphaColor.clHexToColor('#080808');
  Lbl_Tarih.SetclProSettings(Lbl_Tarih.clProSettings);

  DtEdt1 = MyForm.AddNewProDateEdit(rightPanel, 'DtEdt1');
  DtEdt1.Align = alTop;
  DtEdt1.Height = 30;
  DtEdt1.Width = 150;
  DtEdt1.Margins.Top = 10;
  DtEdt1.SetclProSettings(DtEdt1.clProSettings);

  Btn_Filtrele = MyForm.AddNewProButton(rightPanel, 'Btn_Filtrele', 'Filtrele');
  Btn_Filtrele.Align = alTop;
  Btn_Filtrele.Height = 50;
  Btn_Filtrele.Width = 150;
  Btn_Filtrele.Margins.Top = 10;
  Btn_Filtrele.clProSettings.RoundHeight = 10;
  Btn_Filtrele.clProSettings.RoundWidth = 10;
  Btn_Filtrele.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#fc0000');
  Btn_Filtrele.clProSettings.FontColor = clAlphaColor.clHexToColor('#ffffff');
  Btn_Filtrele.clProSettings.FontSize = 12;
  Btn_Filtrele.clProSettings.BorderWidth = 2;
  Btn_Filtrele.SetclProSettings(Btn_Filtrele.clProSettings);
  MyForm.AddNewEvent(Btn_Filtrele, tbeOnClick, 'OnFilterClick');

  MyGrid = MyForm.AddNewStringGrid(rightPanel, 'MyGrid');
  MyGrid.Align = alClient;
  MyGrid.ReadOnly = True;

  // SQL bağlantısı
  selectQuery = TClSqlQuery.Create(nil);
  Clomosy.DBSQLServerConnect('SQL Server', 'DESKTOP-E2HF8JM\SQLEXPRESS', 'sa', '1', 'StokYonetim', 1433);
  selectQuery.Connection = Clomosy.DBSQLServerConnection;

  // Verileri çek
  AddDataToGrid;
  MyForm.AddNewEvent(Btn_QR, tbeOnClick, 'GoToUnit2');
  MyForm.AddNewEvent(Btn_YeniUrunEkle, tbeOnClick, 'GoToUnit3');
  MyForm.AddNewEvent(Btn_SatisFire, tbeOnClick, 'GoToUnit4');
  MyForm.AddNewEvent(Btn_TedarikciSiparisTakibi, tbeOnClick, 'GoToUnit5');
  
  MyForm.clSetWindowState(fwsMaximized);

  MyForm.Run;
}




Cevaplar:
Mesajı Yazan: yalperen
Mesaj Tarihi: 16 Temmuz 2025 Saat 10:46
Merhaba,
Grid üzerinde iki adet aynı satır olmaması için SetupGridColumns void'ini   
  MyGrid.Columns[0].Header = 'Urun Kodu';
  MyGrid.Columns[1].Header = 'Urun Adı';
  MyGrid.Columns[2].Header = 'Stok Miktarı';
  MyGrid.Columns[3].Header = 'Kritik Seviye';
  MyGrid.Columns[4].Header = 'Depo Yeri ID';
  MyGrid.Columns[5].Header = 'Birim Fiyat';
  MyGrid.Columns[6].Header = 'Oluşturma Tarihi';
bu şekilde düzeltirsen çalışacaktır. Sütundaki başlıkları değiştirmek için MyGrid.Columns.Header kullanılıyor.
İyi Çalışmalar



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