Müdavim Girişi

E-Posta
Parola

Ücretsiz Kayıt Ol


Online Müdavimler (0 Kişi)
  • Online Kişi Bulunmadı

Yazar Hakkında
x
İsmail Kocacan
İsmail Kocacan is experienced on many development platforms and continues to learn technologies. Since the age of 16-17, dealing with software technologies. And continuous learning, teaching, research, continues to develop.
Listview Nesnesi Kullanımı

Merhaba Insanlar diyerek en genel sekliyle basliyorum.

 Bu yazida sizlere Delphideki Listview Nesnesinin kullanimi hakkinda bilgiler vericem. Daha öncede diger dillerde örnekler vermistim.
 
Aslinda amacim size Listview Nesnesi hakkinda kullanisli bir örnek vermekti. Daha önce C# ile ilgi bir örnek vermistim. C# ile ilgili örnegi verirken bazi kod bloklarinda For Each Döngüsü kullanmistim. Acaba Delphi de For Each yapisina benzer bir yapi varmidir tilkisi kafamda dolasirken. CTRL+J Tus birlesimini kullanarak intellicense den Forin döngüsünü gördüm.

Çalisma prensibi olarak C# daki gibi. in den Sonra Tarayacaginiz Koleksiyonu yaziyorsunuz. ident kismina ise Koleksiyon içindeki her bir elemanin tipini veriyorsunuz. Biliyorum anlatamatim.  Söyle bir örnek vereyim. Listview1.items (TListItems)bir koleksiyondur. TlistItem ise bu koleksiyon içindeki her bir elemanin tipidir. Yani Classdir(Nesnedir).Delphide Classlar T harfi ile baslar. T ile baslamasi bir kural degildir.Sadece aliskanliktir.
 
Forin döngüsünün kullanimina iliskin örnekler uygulama içersinde mevcuttur. Uygulamamiza ait kod blogu asagidaki gibidir
 
UMain. pas
unit UMain;
 
interface
 
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls;
 
type
 TForm1 = class(TForm)
    btnEkle: TButton;
    btnSil: TButton;
    btnDegistir: TButton;
    edtAD: TEdit;
    edtRID: TEdit;
    edtSOYAD: TEdit;
    ListView1: TListView;
    btnSeciliSil: TButton;
    ListBox1: TListBox;
    ListBox2: TListBox;
    ListBox3: TListBox;
    btnListeyiOku: TButton;
    CmbGorunum: TComboBox;
    ChkTumu: TCheckBox;
    procedure FormCreate(Sender: TObject);
    procedure btnEkleClick(Sender: TObject);
    procedure btnSilClick(Sender: TObject);
    procedure btnDegistirClick(Sender: TObject);
    procedure ListView1DblClick(Sender: TObject);
    procedure btnListeyiOkuClick(Sender: TObject);
    procedure btnSeciliSilClick(Sender: TObject);
    procedure CmbGorunumChange(Sender: TObject);
    procedure Tekrar;
    procedure ChkTumuClick(Sender: TObject);
 private
    { Private declarations }
 public
    { Public declarations }
 end;
 
var
 Form1: TForm1;
   I:Integer;
implementation
 
{$R *.dfm}
 
procedure TForm1.btnDegistirClick(Sender: TObject);
begin
 // seçili satirdaki degerler degistiriliyor
 if ListView1.ItemIndex<>-1 then
 begin
    ListView1.Selected.Caption:=edtRID.Text;
    ListView1.Selected.SubItems.Strings[0]:=edtAD.Text;
    ListView1.Selected.SubItems.Strings[1]:=edtSOYAD.Text;
 end;
end;
 
 
 
procedure TForm1.btnEkleClick(Sender: TObject);
var
 listeEleman:TListItem;
begin
 //Listview1 içersinde olustur
 listeEleman:=TListItem.Create(ListView1.Items);
 listeEleman.SubItems.Add(edtAD.Text);
 listeEleman.SubItems.Add(edtSOYAD.Text);
 ListView1.Items.AddItem(listeEleman,0);
 ListView1.Items[0].Caption:=edtRID.Text;
 
 edtRID.Clear;
 edtAD.Clear;
 edtSOYAD.Clear;
 edtRID.SetFocus;
end;
 
 
 
procedure TForm1.btnListeyiOkuClick(Sender: TObject);
var
 eleman:TListItem;
begin
 //Listview Parçalari üzerinde geziliyor
 for eleman in ListView1.Items do
 begin
      ListBox1.Items.Add(eleman.Caption); // RID      
      ListBox2.Items.Add(eleman.SubItems.Strings[0]); //ADI
      ListBox3.Items.Add(eleman.SubItems.Strings[1]); // SOYADI
 end;
end;
 
 
procedure TForm1.btnSeciliSilClick(Sender: TObject);
begin
   if ListView1.Items.Count>0 then
   begin
       for I := 0 to ListView1.Items.Count - 1 do
       begin
        if (ListView1.Items[I].Checked) then
         begin
            { Bir eleman silindiginde dizi yeniden boyutlanir
             index numaralari degisir}
            ListView1.Items.Delete(I);
            Tekrar;
         end;
       end;
   end;
end;
 
 
 
procedure TForm1.Tekrar;
begin
      I:=-1;
end;
 
 
 
procedure TForm1.btnSilClick(Sender: TObject);
begin
   if (ListView1.Items.Count>0) then
    begin
      if (ListView1.ItemIndex<>-1) then
      ListView1.Items.Delete(ListView1.ItemIndex)
       else
      Application.MessageBox('silinecek satiri seçin','dikkat!',MB_ICONWARNING);
    end else
    begin
      Application.MessageBox('silinebilecek kayit yok','dikkat!',MB_ICONWARNING);
    end;
end;
 
 
 
procedure TForm1.ChkTumuClick(Sender: TObject);
var
 listeEleman:TListItem;
begin
     if ChkTumu.Checked then
     begin
         ChkTumu.Caption:='Seçimleri Kaldir';
         for listeEleman in ListView1.Items do
              listeEleman.Checked:=True;
     end else
     begin
         ChkTumu.Caption:='Tümünü Seç';
         for listeEleman in ListView1.Items do
              listeEleman.Checked:=False;
     end;
end;
 
 
 
 
procedure TForm1.CmbGorunumChange(Sender: TObject);
begin
 case CmbGorunum.ItemIndex of
    0:ListView1.ViewStyle:=vsIcon;
    1:ListView1.ViewStyle:=vsSmallIcon;
    2:ListView1.ViewStyle:=vsList;
    3:ListView1.ViewStyle:=vsReport;
 end;
end;
 
 
 
 
procedure TForm1.FormCreate(Sender: TObject);
var
 listeKolon:TListColumn;
begin
   // Kolonlar olusturuluyor
 listeKolon:=ListView1.Columns.Add;
 listeKolon.Caption:='RID';
 listeKolon.Width:=110;
 
 listeKolon:=ListView1.Columns.Add;
 listeKolon.Caption:='AD';
 listeKolon.Width:=130;
 
 listeKolon:=ListView1.Columns.Add;
 listeKolon.Caption:='SOYAD';
 listeKolon.Width:=120;
end;
 
 
 
 
procedure TForm1.ListView1DblClick(Sender: TObject);
begin
 // Seçili satirdaki degerler okunuyor
 if (ListView1.ItemIndex<>-1) then
   begin
    edtRID.Text:=ListView1.Selected.Caption; // RID
    edtAD.Text:=ListView1.Selected.SubItems.Strings[0];//ADI
    edtSOYAD.Text:=ListView1.Selected.SubItems.Strings[1]; //SOYADI
  end;
end;
end.
 
Uygulamayi çalistirdiginizda sonuç asagidaki gibi olacaktir.

 Uygulamaya ait Kaynak Kodlari Buradan indirebilirsiniz. Bu uygulamayi Delphi 2007 ile gelistirdim. Alt versiyonlarda sorun çikarabilir(!).Delphi 2007 ve üzeri sorunsuz çalisacaktir diye umuyorum.

Herkese iyi Çalismalar
 
ismailkocacan@gmail.com
Ismail Kocacan

Kategori : Delphi | 03.11.2010 12:44:00  | 1475 defa okundu  | 0 Yorum |

Yazara Ait Diğer Makaleler(51) Makaleye Yapılan Yorumlar İlk yorum yazan siz olun
Ara
 
Anket
Hangi VeriTabanı Yönetim Sistemini Kullanıyorsunuz ?