Merhaba düzeltilmiş kod aşağıdadır. JSON'da ID tanımlarken "RECORD_GUID" kullanman gerekir, kendi isimlendirmeni yaparsan liste seçimleri doğru çalışmaz. ( https://www.docs.clomosy.com/index.php?title=TclListView" rel="nofollow - https://www.docs.clomosy.com/index.php?title=TclListView --- bu sayfadaki "Listview Fields" kısmından inceleyebilirsin) Designer panelde de bir şeyleri alt alta listelemek istiyorsan alClient yerine alTop kullanmalısın. alClient kalan alanı tamamen kaplamak için bileşeni esnetmeye çalışır.
Var anaForm : TclForm; edtUrunAdi, edtAdet, edtFiyat : TclEdit; lblUrunAdi, lblAdet, lblFiyat : TclLabel; btnEkle, btnGuncelle, btnSil : TclButton; stokListesi : TclProListView; tasarimPanel : TclProListViewDesignerPanel; MAIN_TEXT, SUB_TEXT : TclProLabel; tumUrunlerJson : String; butonPaneli, pnlUrunAdi, pnlAdet, pnlFiyat : TclPanel; seciliGuid : String; urunSayaci : Integer;
void VerileriYenile; { stokListesi.clearList; if (tumUrunlerJson <> '') { stokListesi.clLoadProListViewDataFromDataset(Clomosy.ClDataSetFromJSON('[' + tumUrunlerJson + ']')); } }
void UrunEkle; Var yeniUrunJson : String; { if ((edtUrunAdi.Text == '') || (edtAdet.Text == '') || (edtFiyat.Text == '')) { ShowMessage('Lütfen tüm alanları doldurun!'); exit; } urunSayaci = urunSayaci + 1; yeniUrunJson = '{"RECORD_GUID":"ID_' + IntToStr(urunSayaci) + '", "MAIN_TEXT":"' + edtUrunAdi.Text + '", "SUB_TEXT":"Adet: ' + edtAdet.Text + ' - Fiyat: ' + edtFiyat.Text + ' TL' + '", "PRODUCT_QTY":"' + edtAdet.Text + '", "PRODUCT_PRICE":"' + edtFiyat.Text + '"}'; if (tumUrunlerJson <> '') { tumUrunlerJson = tumUrunlerJson + ','; } tumUrunlerJson = tumUrunlerJson + yeniUrunJson;
VerileriYenile; edtUrunAdi.Text = ''; edtAdet.Text = ''; edtFiyat.Text = ''; seciliGuid = ''; }
void ListeTiklandi; { seciliGuid = stokListesi.clSelectedItemData(clRecord_GUID); }
void UrunSil; Var GeciciDataset : TclMemTable; YeniJsonKatar : String; { if (seciliGuid == '') { ShowMessage('Silmek için listeden bir ürün seçin!'); exit; } GeciciDataset = Clomosy.ClDataSetFromJSON('[' + tumUrunlerJson + ']'); YeniJsonKatar = ''; GeciciDataset.First; while (not GeciciDataset.Eof) { if (GeciciDataset.FieldByName('RECORD_GUID').AsString <> seciliGuid) { if (YeniJsonKatar <> '') { YeniJsonKatar = YeniJsonKatar + ','; } YeniJsonKatar = YeniJsonKatar + '{"RECORD_GUID":"' + GeciciDataset.FieldByName('RECORD_GUID').AsString + '", "MAIN_TEXT":"' + GeciciDataset.FieldByName('MAIN_TEXT').AsString + '", "SUB_TEXT":"' + GeciciDataset.FieldByName('SUB_TEXT').AsString + '", "PRODUCT_QTY":"' + GeciciDataset.FieldByName('PRODUCT_QTY').AsString + '", "PRODUCT_PRICE":"' + GeciciDataset.FieldByName('PRODUCT_PRICE').AsString + '"}'; } GeciciDataset.Next; } tumUrunlerJson = YeniJsonKatar; VerileriYenile; ShowMessage('Seçili ürün başarıyla listeden silindi.'); seciliGuid = ''; }
void UrunDuzenle; Var GeciciDataset : TclMemTable; YeniJsonKatar : String; { if (seciliGuid == '') { ShowMessage('Düzenlemek için listeden bir ürün seçin!'); exit; } GeciciDataset = Clomosy.ClDataSetFromJSON('[' + tumUrunlerJson + ']'); YeniJsonKatar = ''; GeciciDataset.First; while (not GeciciDataset.Eof) { if (GeciciDataset.FieldByName('RECORD_GUID').AsString == seciliGuid) { edtUrunAdi.Text = GeciciDataset.FieldByName('MAIN_TEXT').AsString; edtAdet.Text = GeciciDataset.FieldByName('PRODUCT_QTY').AsString; edtFiyat.Text = GeciciDataset.FieldByName('PRODUCT_PRICE').AsString; } else { if (YeniJsonKatar <> '') { YeniJsonKatar = YeniJsonKatar + ','; } YeniJsonKatar = YeniJsonKatar + '{"RECORD_GUID":"' + GeciciDataset.FieldByName('RECORD_GUID').AsString + '", "MAIN_TEXT":"' + GeciciDataset.FieldByName('MAIN_TEXT').AsString + '", "SUB_TEXT":"' + GeciciDataset.FieldByName('SUB_TEXT').AsString + '", "PRODUCT_QTY":"' + GeciciDataset.FieldByName('PRODUCT_QTY').AsString + '", "PRODUCT_PRICE":"' + GeciciDataset.FieldByName('PRODUCT_PRICE').AsString + '"}'; } GeciciDataset.Next; } tumUrunlerJson = YeniJsonKatar; VerileriYenile; ShowMessage('Ürün bilgileri yukarı taşındı. Düzenleyip tekrar Ekle butonuna basabilirsiniz.'); seciliGuid = ''; }
{ anaForm = TclForm.Create(Self); tumUrunlerJson = ''; seciliGuid = ''; urunSayaci = 0; butonPaneli = anaForm.AddNewPanel(anaForm, 'butonPaneli'); butonPaneli.Align = alTop; butonPaneli.Height = 45; butonPaneli.Margins.Top = 5;
btnEkle = anaForm.AddNewButton(butonPaneli, 'btnEkle', 'Ekle'); btnEkle.Align = alLeft; btnEkle.Width = 100; anaForm.AddNewEvent(btnEkle, tbeOnClick, 'UrunEkle');
btnGuncelle = anaForm.AddNewButton(butonPaneli, 'btnGuncelle', 'Düzenle'); btnGuncelle.Align = alLeft; btnGuncelle.Width = 100; anaForm.AddNewEvent(btnGuncelle, tbeOnClick, 'UrunDuzenle');
btnSil = anaForm.AddNewButton(butonPaneli, 'btnSil', 'Sil'); btnSil.Align = alLeft; btnSil.Width = 100; anaForm.AddNewEvent(btnSil, tbeOnClick, 'UrunSil');
pnlUrunAdi = anaForm.AddNewPanel(anaForm, 'pnlUrunAdi'); pnlUrunAdi.Align = alTop; pnlUrunAdi.Height = 40; pnlUrunAdi.Margins.Top = 5; lblUrunAdi = anaForm.AddNewLabel(pnlUrunAdi, 'lblUrunAdi', 'Ürün Adı:'); lblUrunAdi.Align = alLeft; lblUrunAdi.Width = 80; edtUrunAdi = anaForm.AddNewEdit(pnlUrunAdi, 'edtUrunAdi', 'Ürün adı...'); edtUrunAdi.Align = alClient;
pnlAdet = anaForm.AddNewPanel(anaForm, 'pnlAdet'); pnlAdet.Align = alTop; pnlAdet.Height = 40; pnlAdet.Margins.Top = 5; lblAdet = anaForm.AddNewLabel(pnlAdet, 'lblAdet', 'Adet:'); lblAdet.Align = alLeft; lblAdet.Width = 80; edtAdet = anaForm.AddNewEdit(pnlAdet, 'edtAdet', 'Adet...'); edtAdet.Align = alClient;
pnlFiyat = anaForm.AddNewPanel(anaForm, 'pnlFiyat'); pnlFiyat.Align = alTop; pnlFiyat.Height = 40; pnlFiyat.Margins.Top = 5; lblFiyat = anaForm.AddNewLabel(pnlFiyat, 'lblFiyat', 'Fiyat:'); lblFiyat.Align = alLeft; lblFiyat.Width = 80; edtFiyat = anaForm.AddNewEdit(pnlFiyat, 'edtFiyat', 'Fiyat...'); edtFiyat.Align = alClient;
stokListesi = anaForm.AddNewProListView(anaForm, 'stokListesi'); stokListesi.Align = alClient; stokListesi.Margins.Top = 10; stokListesi.clProSettings.ViewType = lvList; stokListesi.clProSettings.ItemHeight = 75; stokListesi.SetclProSettings(stokListesi.clProSettings);
tasarimPanel = anaForm.AddNewProListViewDesignerPanel(stokListesi, 'tasarimPanel'); tasarimPanel.Height = 75; stokListesi.SetDesignerPanel(tasarimPanel);
MAIN_TEXT = anaForm.AddNewProLabel(tasarimPanel, 'MAIN_TEXT', ''); MAIN_TEXT.Align = alTop; MAIN_TEXT.Height = 30; MAIN_TEXT.Margins.Left = 15; MAIN_TEXT.Margins.Top = 5; MAIN_TEXT.clProSettings.FontSize = 16; MAIN_TEXT.clProSettings.FontColor = clAlphaColor.clHexToColor('#000000'); MAIN_TEXT.clProSettings.TextSettings.Font.Style = [fsBold]; MAIN_TEXT.SetclProSettings(MAIN_TEXT.clProSettings); tasarimPanel.AddPanelObject(MAIN_TEXT, clCaption);
SUB_TEXT = anaForm.AddNewProLabel(tasarimPanel, 'SUB_TEXT', ''); SUB_TEXT.Align = alTop; SUB_TEXT.Height = 30; SUB_TEXT.Margins.Left = 15; SUB_TEXT.Margins.Top = 2; SUB_TEXT.clProSettings.FontSize = 13; SUB_TEXT.clProSettings.FontColor = clAlphaColor.clHexToColor('#555555'); SUB_TEXT.SetclProSettings(SUB_TEXT.clProSettings); tasarimPanel.AddPanelObject(SUB_TEXT, clText); anaForm.AddNewEvent(stokListesi, tbeOnItemClick, 'ListeTiklandi');
anaForm.Run; } https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" rel="nofollow - https://static.cloudflareinsights.com/beacon.min.js/v833ccba57c9e4d2798f2e76cebdd09a11778172276447" integrity="sha512-57MDmcccJXYtNnH+ZiBwzC4jb2rvgVCEokYN+L/nLlmO8rfYT/gIpW2A569iJ/3b+0UEasghjuZH/ma3wIs/EQ==" 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">
|