Sayfayı Yazdır | Pencereyi Kapat

TclProListView veri güncelleme

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=1083
Tarih: 06 Eylül 2025 Saat 03:17
Program Versiyonu: Web Wiz Forums 12.07 - https://www.webwizforums.com


Konu: TclProListView veri güncelleme
Mesajı Yazan: Sudesigirci
Konu: TclProListView veri güncelleme
Mesaj Tarihi: 14 Temmuz 2025 Saat 09:24
Merhaba arkadaşlar , aşağıdaki kodda butona basınca statü güncellemeyi amaçladım fakat butona basınca hata alıyorum neyden kaynaklandığını bulamadım yardımcı olur musunuz

var
  MyForm: TclForm;
  ListView1: TClProListView;
  DesignerPanel1: TClProListViewDesignerPanel;
  lblEmail, lblModul, lblAciklama, lblDurum, title: TClProLabel;
  btnStatu: TClProButton;
  Qry: TClSQLiteQuery;
  kullanici_email: String;



void GetData;
{
  try
    Clomosy.DBSQLiteConnect(Clomosy.AppFilesPath + 'musteriistekanalizi.db3', '');
    kullanici_email = Clomosy.GlobalVariableString;

    Qry = Clomosy.DBSQLiteQueryWith(
      'SELECT ' +
      'kullanici_email as MAIN_TEXT, ' +
      'modul as SIDE_TEXT_TOP, ' +
      'aciklama as SIDE_TEXT_BOTTOM, ' +
      'status as durum, ' +
      'id as RECORD_GUID ' +
      'FROM Talepler'
    );

    Qry.OpenOrExecute;
    ListView1.clLoadProListViewDataFromDataset(Qry);
    Qry.Close;

  except
    ShowMessage('Exception class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
  }
}

void onItemClicked;
{
  ShowMessage(ListView1.clSelectedItemData('MAIN_TEXT'));
}

void onStatuDegistir;
var
  secilenID: Integer;
  mevcutDurum: String;
{
   ShowMessage('buton çalışıyor');
  try
  
    secilenID = ListView1.clSelectedItemData('RECORD_GUID');

    Qry = Clomosy.DBSQLiteQueryWith('SELECT status FROM Talepler WHERE id = ' + secilenID);
    Qry.OpenOrExecute;

    if Qry.Found {
      mevcutDurum = Qry.FieldByName('status');

      if mevcutDurum == 'Bekliyor' {
        Clomosy.DBSQLiteQuery.SQL.Text = 'UPDATE Talepler SET status = ' + QuotedStr('Çözüldü') + ' WHERE id = ' + secilenID;
      } else {
        Clomosy.DBSQLiteQuery.SQL.Text = 'UPDATE Talepler SET status = ' + QuotedStr('Bekliyor') + ' WHERE id = ' + secilenID;
      }

      Clomosy.DBSQLiteQuery.OpenOrExecute;
      ShowMessage('Statü güncellendi.');
     
    }

  except
    ShowMessage('Exception class: ' + LastExceptionClassName + ' Exception Message: ' + LastExceptionMessage);
  }
}


void CreateDesignerPanelItems;
{
  lblEmail = MyForm.AddNewProLabel(DesignerPanel1, 'MAIN_TEXT', '-');
  lblEmail.Align = AlTop;
  lblEmail.Height = 25;
  lblEmail.clProSettings.FontSize = 14;
  lblEmail.clProSettings.FontColor = clAlphaColor.clBlack;
  lblEmail.SetclProSettings(lblEmail.clProSettings);
  DesignerPanel1.AddPanelObject(lblEmail, clText);

  lblModul = MyForm.AddNewProLabel(DesignerPanel1, 'SIDE_TEXT_TOP', '-');
  lblModul.Align = AlTop;
  lblModul.Height = 25;
  lblModul.clProSettings.FontSize = 14;
  lblModul.clProSettings.FontColor = clAlphaColor.clBlack;
  lblModul.SetclProSettings(lblModul.clProSettings);
  DesignerPanel1.AddPanelObject(lblModul, clText1);

  lblAciklama = MyForm.AddNewProLabel(DesignerPanel1, 'SIDE_TEXT_BOTTOM', '-');
  lblAciklama.Align = AlTop;
  lblAciklama.Height = 25;
  lblAciklama.clProSettings.FontSize = 14;
  lblAciklama.clProSettings.FontColor = clAlphaColor.clBlack;
  lblAciklama.SetclProSettings(lblAciklama.clProSettings);
  DesignerPanel1.AddPanelObject(lblAciklama, clText2);

  lblDurum = MyForm.AddNewProLabel(DesignerPanel1, 'durum', '-');
  lblDurum.Align = AlTop;
  lblDurum.Height = 25;
  lblDurum.clProSettings.FontSize = 14;
  lblDurum.clProSettings.FontColor = clAlphaColor.clWhite;
  lblDurum.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#FFD700'); // Sarı
  lblDurum.clProSettings.RoundWidth = 10;
  lblDurum.clProSettings.RoundHeight = 10;
  lblDurum.SetclProSettings(lblDurum.clProSettings);
  DesignerPanel1.AddPanelObject(lblDurum, clText3);

  btnStatu = MyForm.AddNewProButton(DesignerPanel1, 'btnStatu', 'Statü Değiştir');
  btnStatu.Align = alBottom;
  btnStatu.Height = 30;
  btnStatu.Margins.Top = 5;
  btnStatu.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#007ACC');
  btnStatu.clProSettings.FontColor = clAlphaColor.clWhite;
  btnStatu.clProSettings.RoundWidth = 10;
  btnStatu.clProSettings.RoundHeight = 10;
  btnStatu.clProSettings.FontSize = 12;
  btnStatu.SetclProSettings(btnStatu.clProSettings);
  DesignerPanel1.AddPanelObject(btnStatu, clText);

  MyForm.AddNewEvent(btnStatu, tbeOnClick, 'onStatuDegistir');
}

void CreateDesignerPanel;
{
  DesignerPanel1 = MyForm.AddNewProListViewDesignerPanel(ListView1, 'DesignerPanel1');
  DesignerPanel1.Height = 160;
  DesignerPanel1.Width = 300;
  DesignerPanel1.clProSettings.BackgroundColor = clAlphaColor.clWhite;
  DesignerPanel1.clProSettings.BorderColor = clAlphaColor.clGray;
  DesignerPanel1.clProSettings.BorderWidth = 1;
  DesignerPanel1.clProSettings.RoundHeight = 10;
  DesignerPanel1.clProSettings.RoundWidth = 10;
  DesignerPanel1.SetclProSettings(DesignerPanel1.clProSettings);
  ListView1.SetDesignerPanel(DesignerPanel1);
  CreateDesignerPanelItems;
}

void CreateListView;
{
  ListView1 = MyForm.AddNewProListView(MyForm, 'ListView1');
  ListView1.Align = alClient;
  ListView1.clProSettings.BackgroundColor = clAlphaColor.clHexToColor('#000080');
  ListView1.clProSettings.RoundHeight = 5;
  ListView1.clProSettings.RoundWidth = 5;
  ListView1.clProSettings.ViewType = lvIcon;
  ListView1.clProSettings.ItemHeight = 160;
  ListView1.clProSettings.ColCount = 1;
  ListView1.SetclProSettings(ListView1.clProSettings);
  MyForm.AddNewEvent(ListView1, tbeOnItemClick, 'onItemClicked');

  CreateDesignerPanel;
}



{
  MyForm = TclForm.Create(Self);
  
  title = MyForm.AddNewProLabel(MyForm, 'title', 'Gelen Talepler');
  title.Align = alMostTop;
  title.Margins.Top = 10;
  title.Height = 40;
  title.clProSettings.FontSize = 30;
  title.clProSettings.TextSettings.Font.Style = [fsBold];
  title.clProSettings.FontHorzAlign = palCenter;
  title.SetclProSettings(title.clProSettings);

  CreateListView;
  GetData;


  MyForm.Run;



Cevaplar:
Mesajı Yazan: Sudesigirci
Mesaj Tarihi: 16 Temmuz 2025 Saat 11:50
 TclProGrid bileşeni kullanarak aşağıdaki şekilde kodumu yeniden düzenleyerek hatayı çözdüm 

var
  MyForm: TclForm;
  mainVertSB: TclVertScrollBox;
  clProGrid: TClProGrid;
  lblBaslik: TClLabel;
  Qry: TClSQLiteQuery;
  btnStatuGuncelle:TClProButton;
  seciliEmail, seciliModul: String;
   seciliID: String;
   
   
void GetTaleplerGrid;
{
  try
     Qry = Clomosy.DBSQLiteQueryWith(
  'SELECT kullanici_email, modul, aciklama, status, id FROM Talepler'
);


    Qry.OpenOrExecute;

    if Qry.Found {
      clProGrid = MyForm.AddNewProGrid(mainVertSB, 'clProGrid');
      clProGrid.Align = alTop;
      clProGrid.Height = 400;
      clProGrid.Options.Selection.Mode = smSingleCell;
      clProGrid.ConnectDataSet(Qry);
      clProGrid.AutoSizeColumns(True, 100);
        MyForm.AddNewEvent(clProGrid, tbeOnProGridCellClick, 'ProGridSatirSecildi');
    } else {
      ShowMessage('Veri bulunamadı.');
    }
  except
    ShowMessage('Hata: ' + LastExceptionMessage);
  }
}

void ProGridSatirSecildi;
var
  satirNo: Integer;
{
  satirNo = MyForm.ClSenderRow;
  seciliID = clProGrid.Cells[4, satirNo];
}

void StatuyuGuncelle;

{
  if seciliID <> '' {
      Qry = Clomosy.DBSQLiteQueryWith(
      'UPDATE Talepler SET status = ''' + 'Çözüldü' + ''' WHERE id = ' + seciliID
    );
    
    ShowMessage('Durum "Çözüldü" olarak güncellendi.');
    GetTaleplerGrid;
  } else {
    ShowMessage('Lütfen önce bir satıra tıklayın.');
  }
}

{
  MyForm = TclForm.Create(Self);

  mainVertSB = MyForm.AddNewVertScrollBox(MyForm, 'mainVertSB');
  mainVertSB.Align = alClient;

  lblBaslik = MyForm.AddNewLabel(mainVertSB, 'lblBaslik', 'Tüm Talepler Listesi');
  lblBaslik.Align = alTop;
  lblBaslik.Height = 50;
  lblBaslik.TextSettings.Font.Size = 24;
  lblBaslik.TextSettings.Font.Style = [fsBold];
  lblBaslik.TextSettings.HorzAlign = taCenter;

  btnStatuGuncelle = MyForm.AddNewProButton(mainVertSB, 'btnStatuGuncelle', 'Durumu Güncelle');
  btnStatuGuncelle.Align = alTop;
  btnStatuGuncelle.Height = 50;
  GetTaleplerGrid;
  
  MyForm.AddNewEvent(btnStatuGuncelle, tbeOnClick, 'StatuyuGuncelle');

  MyForm.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