Delphi Can

Orjinalini görmek için tıklayınız: Mobilede Listviewden Seçilen Kayıtı düzeltme silme vs.
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhaba arkadaşlar,
FMX te Listeview ile listelenen verileri seçerek düzeltme silme gibi işlemleri kısa bir örnek gerekiyor. 
Bir türlü beceremedim.
Kod:
CREATE TABLE dbo.BANKA_KASA_HRK (
 OID INT NOT NULL
,LISANSLI_FIRMA_OID INT NOT NULL
,ISLEM_TIPI SMALLINT NOT NULL DEFAULT (1)
,GONDEREN_BANKA_KASA_OID INT NOT NULL
,ALICI_BANKA_KASA_OID INT NULL
,MUSTERI_OID INT NULL
,TUR SMALLINT NULL
,ILISKILI_FAT_SIP INT NULL
,PROJE_OID INT NULL
,DEPARTMAN_OID INT NULL
,MASRAF_YERI_OID INT NULL
,TARIH DATE NOT NULL
,DEKONT_NO VARCHAR(16) NULL
,LINK VARCHAR(16) NULL
,LINK_OID INT NULL
,TAHSILAT DECIMAL(18, 2) NOT NULL DEFAULT (0)
,TAHSILAT_DOVIZ VARCHAR(5) NULL
,ODEME DECIMAL(18, 2) NOT NULL DEFAULT (0)
,ODEME_DOVIZ VARCHAR(5) NULL
,KUR FLOAT NULL
,ACIKLAMA VARCHAR(250) NULL
,SILINDI SMALLINT NOT NULL DEFAULT (1));
Bu sql server table listeleyip duzeltme yapacak.
GONDEREN_BANKA_KASA_OID,ALICI_BANKA_KASA_OID,MUSTERI_OID ,TUR ,ISLEM_TIPI,PROJE_OID ,DEPARTMAN_OID ,MASRAF_YERI_OID ,TAHSILAT_DOVIZ ,ODEME_DOVIZ gibi alanlar ilgili tablolardan geliyor ve combobox içinde gösteriyorum. 
Combobox içine (OID,ACIKLAMA) ikilisyle gösterip seçildiğinde DB deki ID sini alabilmek iyi olur.

OrangeUI bileşenlerinde sadece listeleme komponentindemi kısıtlama var yoksa cobobox vs. componentlerde kayıt sınırı gösterme sınırı ile alakalı kısıtlama varmıdır.

Konyu anlatabilmişimdir umarım.
Saygılar
(17-12-2020, Saat: 14:55)ilhanim Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba arkadaşlar,
FMX te Listeview ile listelenen verileri seçerek düzeltme silme gibi işlemleri kısa bir örnek gerekiyor. 
Bir türlü beceremedim.
Kod:
CREATE TABLE dbo.BANKA_KASA_HRK (
 OID INT NOT NULL
,LISANSLI_FIRMA_OID INT NOT NULL
,ISLEM_TIPI SMALLINT NOT NULL DEFAULT (1)
,GONDEREN_BANKA_KASA_OID INT NOT NULL
,ALICI_BANKA_KASA_OID INT NULL
,MUSTERI_OID INT NULL
,TUR SMALLINT NULL
,ILISKILI_FAT_SIP INT NULL
,PROJE_OID INT NULL
,DEPARTMAN_OID INT NULL
,MASRAF_YERI_OID INT NULL
,TARIH DATE NOT NULL
,DEKONT_NO VARCHAR(16) NULL
,LINK VARCHAR(16) NULL
,LINK_OID INT NULL
,TAHSILAT DECIMAL(18, 2) NOT NULL DEFAULT (0)
,TAHSILAT_DOVIZ VARCHAR(5) NULL
,ODEME DECIMAL(18, 2) NOT NULL DEFAULT (0)
,ODEME_DOVIZ VARCHAR(5) NULL
,KUR FLOAT NULL
,ACIKLAMA VARCHAR(250) NULL
,SILINDI SMALLINT NOT NULL DEFAULT (1));
Bu sql server table listeleyip duzeltme yapacak.
GONDEREN_BANKA_KASA_OID,ALICI_BANKA_KASA_OID,MUSTERI_OID ,TUR ,ISLEM_TIPI,PROJE_OID ,DEPARTMAN_OID ,MASRAF_YERI_OID ,TAHSILAT_DOVIZ ,ODEME_DOVIZ gibi alanlar ilgili tablolardan geliyor ve combobox içinde gösteriyorum. 
Combobox içine (OID,ACIKLAMA) ikilisyle gösterip seçildiğinde DB deki ID sini alabilmek iyi olur.

OrangeUI bileşenlerinde sadece listeleme komponentindemi kısıtlama var yoksa cobobox vs. componentlerde kayıt sınırı gösterme sınırı ile alakalı kısıtlama varmıdır.

Konyu anlatabilmişimdir umarım.
Saygılar

Yaptığım ekran görüntüsü ekledim.
Soldan Tıkladığında Sağdaki kutularda detaylarını görüp düzelteceğim veya sileceğim
(17-12-2020, Saat: 14:55)ilhanim Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba arkadaşlar,
FMX te Listeview ile listelenen verileri seçerek düzeltme silme gibi işlemleri kısa bir örnek gerekiyor. 
Bir türlü beceremedim.
Kod:
CREATE TABLE dbo.BANKA_KASA_HRK (
 OID INT NOT NULL
,LISANSLI_FIRMA_OID INT NOT NULL
,ISLEM_TIPI SMALLINT NOT NULL DEFAULT (1)
,GONDEREN_BANKA_KASA_OID INT NOT NULL
,ALICI_BANKA_KASA_OID INT NULL
,MUSTERI_OID INT NULL
,TUR SMALLINT NULL
,ILISKILI_FAT_SIP INT NULL
,PROJE_OID INT NULL
,DEPARTMAN_OID INT NULL
,MASRAF_YERI_OID INT NULL
,TARIH DATE NOT NULL
,DEKONT_NO VARCHAR(16) NULL
,LINK VARCHAR(16) NULL
,LINK_OID INT NULL
,TAHSILAT DECIMAL(18, 2) NOT NULL DEFAULT (0)
,TAHSILAT_DOVIZ VARCHAR(5) NULL
,ODEME DECIMAL(18, 2) NOT NULL DEFAULT (0)
,ODEME_DOVIZ VARCHAR(5) NULL
,KUR FLOAT NULL
,ACIKLAMA VARCHAR(250) NULL
,SILINDI SMALLINT NOT NULL DEFAULT (1));
Bu sql server table listeleyip duzeltme yapacak.
GONDEREN_BANKA_KASA_OID,ALICI_BANKA_KASA_OID,MUSTERI_OID ,TUR ,ISLEM_TIPI,PROJE_OID ,DEPARTMAN_OID ,MASRAF_YERI_OID ,TAHSILAT_DOVIZ ,ODEME_DOVIZ gibi alanlar ilgili tablolardan geliyor ve combobox içinde gösteriyorum. 
Combobox içine (OID,ACIKLAMA) ikilisyle gösterip seçildiğinde DB deki ID sini alabilmek iyi olur.

OrangeUI bileşenlerinde sadece listeleme komponentindemi kısıtlama var yoksa cobobox vs. componentlerde kayıt sınırı gösterme sınırı ile alakalı kısıtlama varmıdır.

Konyu anlatabilmişimdir umarım.
Saygılar

(17-12-2020, Saat: 16:59)ilhanim Adlı Kullanıcıdan Alıntı: [ -> ]
(17-12-2020, Saat: 14:55)ilhanim Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba arkadaşlar,
FMX te Listeview ile listelenen verileri seçerek düzeltme silme gibi işlemleri kısa bir örnek gerekiyor. 
Bir türlü beceremedim.
Kod:
CREATE TABLE dbo.BANKA_KASA_HRK (
 OID INT NOT NULL
,LISANSLI_FIRMA_OID INT NOT NULL
,ISLEM_TIPI SMALLINT NOT NULL DEFAULT (1)
,GONDEREN_BANKA_KASA_OID INT NOT NULL
,ALICI_BANKA_KASA_OID INT NULL
,MUSTERI_OID INT NULL
,TUR SMALLINT NULL
,ILISKILI_FAT_SIP INT NULL
,PROJE_OID INT NULL
,DEPARTMAN_OID INT NULL
,MASRAF_YERI_OID INT NULL
,TARIH DATE NOT NULL
,DEKONT_NO VARCHAR(16) NULL
,LINK VARCHAR(16) NULL
,LINK_OID INT NULL
,TAHSILAT DECIMAL(18, 2) NOT NULL DEFAULT (0)
,TAHSILAT_DOVIZ VARCHAR(5) NULL
,ODEME DECIMAL(18, 2) NOT NULL DEFAULT (0)
,ODEME_DOVIZ VARCHAR(5) NULL
,KUR FLOAT NULL
,ACIKLAMA VARCHAR(250) NULL
,SILINDI SMALLINT NOT NULL DEFAULT (1));
Bu sql server table listeleyip duzeltme yapacak.
GONDEREN_BANKA_KASA_OID,ALICI_BANKA_KASA_OID,MUSTERI_OID ,TUR ,ISLEM_TIPI,PROJE_OID ,DEPARTMAN_OID ,MASRAF_YERI_OID ,TAHSILAT_DOVIZ ,ODEME_DOVIZ gibi alanlar ilgili tablolardan geliyor ve combobox içinde gösteriyorum. 
Combobox içine (OID,ACIKLAMA) ikilisyle gösterip seçildiğinde DB deki ID sini alabilmek iyi olur.

OrangeUI bileşenlerinde sadece listeleme komponentindemi kısıtlama var yoksa cobobox vs. componentlerde kayıt sınırı gösterme sınırı ile alakalı kısıtlama varmıdır.

Konyu anlatabilmişimdir umarım.
Saygılar

Yaptığım ekran görüntüsü ekledim.
Soldan Tıkladığında Sağdaki kutularda detaylarını görüp düzelteceğim veya sileceğim


Sana 2 faklı yöntem ile silme örneği veriyorum. kendine göre uyarlayasın sen başarılar dilerim.


Tüm seçili olanların tümünü sil:
procedure TFormMain.BtnPGDeleteClick(Sender: TObject);
var
  I: Integer;
  FDQ: TFDQuery;
begin
  FDQ := TFDQuery.Create(Nil);
  ListViewPG.BeginUpdate;
  try
    if ListViewPG.Selected = Nil then // Seçili değilse çık
      Exit;
    for I := Pred(ListViewPG.ItemCount) downto 0 do
    begin
      if ListViewPG.Items[I].Data['Select'].AsInteger = 2 then // seçili kayıtlar burada da ben özel olarak ListViewde image nesnesi kullanıyorum
      begin
        FDQ.Connection := FDConnection;
        FDQ.Active := False;
        FDQ.Close;
        FDQ.SQL.Clear;
        FDQ.SQL.Add('Delete From ALLPROGRAM Where ID=:ID');
        FDQ.ParamByName('ID').AsInteger := ListViewPG.Items[I].Data['Id'].AsInteger;
        FDQ.ExecSQL;
        ListViewPG.Items.Delete(ListViewPG.Items[I].Index);
      end;
    end;
  finally
    ListViewPG.EndUpdate;
    FDQ.Free;
  end;
end;


Seçili olanı sil:
procedure TFormMain.BtnSettingDeleteClick(Sender: TObject);
var
  FDQ: TFDQuery;
  SelectId: Integer;
begin
  FDQ := TFDQuery.Create(Nil);
  ListViewUserSetting.BeginUpdate;
  try
    if ListViewUserSetting.Selected = Nil then // Seçili değilse çık
      Exit;
      SelectId := StrToInt(TListViewItem(ListViewUserSetting.Selected).Data['UserId'].ToString);
      FDQ.Connection := FDConnection;
      FDQ.Active := False;
      FDQ.Close;
      FDQ.SQL.Clear;
      FDQ.SQL.Add('Delete From USERS Where ID=:ID');
      FDQ.ParamByName('ID').AsInteger := SelectId;
      FDQ.ExecSQL;
      EditUserName.Text := EmptyStr;
      EditUserPass.Text := EmptyStr;
    end;
  finally
    ListViewUserSetting.EndUpdate;
    FDQ.Free;
  end;
end;
Tamamdır teşekkürler
Listviewden tıkladığında sağ tarafındaki kutucukların dolmasını nasıl sağlayabilirim.
(18-12-2020, Saat: 08:05)ilhanim Adlı Kullanıcıdan Alıntı: [ -> ]Tamamdır teşekkürler
Listviewden tıkladığında sağ tarafındaki kutucukların dolmasını nasıl sağlayabilirim.



Idea
procedure TFormMain.ListViewUserSettingItemClick(const Sender: TObject; const AItem: TListViewItem);
begin
  if ListViewUserSetting.Selected = Nil then // Seçili değilse çık
    Exit;
  EditUserName.Text := ListViewUserSetting.Items[ListViewUserSetting.Selected.Index].Data['User'].AsString;
  EditUserPass.Text := ListViewUserSetting.Items[ListViewUserSetting.Selected.Index].Data['Pass'].AsString;
end;
Teşekkürler Wink
Comboları doldururken TListBoxItem ile doldurup tag ID attım ama nasıl geri alıp comboya atarım onu bulamadım  Big Grin

var
  aItem: TListBoxItem;
begin
 aItem := TListBoxItem.Create(Self);
     aItem.Text := Tbl.FieldByName(AciklamaFld).AsString;
     aItem.Tag := Tbl.FieldByName(idFld).AsInteger;
     aItem.Parent := Combo;
end;