MessengerCache den smiley,avatar yürüten program.

__kadıköyRAP__

Müdavim
Müdavim
Katılım
3 Mart 2007
Mesajlar
29,201
Reaksiyon puanı
2,148
Puanları
7,358
Çok gerekli bişey değildi ama oyalanmak açısından yaptım belki işine yarayan olur :)

Sadece exesi
http://www.4shared.com/file/7l5jrzWp/calisma.html

Proje Dosyası (Visual Studio 2005 | C#)
http://www.4shared.com/file/eXB74XSz/calisma.html

rizs46.jpg


Eksiklerimi yanlışlarımı söylerseniz sevinirim :)
 

__kadıköyRAP__

Müdavim
Müdavim
Katılım
3 Mart 2007
Mesajlar
29,201
Reaksiyon puanı
2,148
Puanları
7,358
Merhaba arkadaşlar,
filelistbox un aldığı öğeleri ada göre değilde değiştirme tarihine göre alması için bi yol var mı, kendi yaptığım algoritmayla program yavaşladı biraz, tek bir kodla yapılabiliyor mu ?
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,608
Reaksiyon puanı
144
Puanları
243
Malesef FileListBox komponentinin böyle bir özelliği yok. DirectoryInfo ve FileInfo sınıflarını kullanarak kendi algoritmanı yapabilirsin.

Ama tavsiyem ListView kullanman yönünde. Kullanıcı bu şekilde nasıl kullanmak istediğini kendi belirler. İster ada göre ister tarihe göre...
 

__kadıköyRAP__

Müdavim
Müdavim
Katılım
3 Mart 2007
Mesajlar
29,201
Reaksiyon puanı
2,148
Puanları
7,358
Listview hiç kullanmadım, biraz araştırayım teşekkürler :)

---------- saat 16:06 eklendi ---------- önceki mesaj saat 15:28 eklenmişti ----------

Necati kardeşim, listview in kullanımı da sanırım stringlerden oluşuyor, direk olarak bir dosya ekleyip tarihe göre sıralama yapabilirim sanmıştım, yine ayrıca bi algoritma mı yazmam gerekiyor?
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,608
Reaksiyon puanı
144
Puanları
243
ListView kullanırken FileInfo sınıfını kullanarak doldurman gerekir. Yani FileInfo sınıfında özellikleri olan Name, FullName, LastWriteTime, LastAccessTime, CreationTime gibi özelliklerini ListView 'de göstereceksin. Kullanıcı hangi alana göre sıralama yapmak istiyorsa kolon adına tıkladığı zaman kendisi otomatik sıralama yapıyor.

Yani sıralama yapmak için senin algoritma oluşturmana gerek yok.
 

__kadıköyRAP__

Müdavim
Müdavim
Katılım
3 Mart 2007
Mesajlar
29,201
Reaksiyon puanı
2,148
Puanları
7,358
Tamam onları kullanmam gerekiyor ama listview içine string kabul ediyor..
Uğraşayım ben biraz daha.

---------- saat 17:37 eklendi ---------- önceki mesaj saat 16:43 eklenmişti ----------

Hocam ben bunun içinden çıkamadım malesef :)

listView1.Items.Add("Dosya adı").SubItems.AddRange("Dosya tarihi");

olarak ekliyorum her dosyayı ama tarihe göre nasıl sıralayacak ki? Eklediğimiz şeyleri de zaten mecbur stringe çevirip ekliyoruz.

şuna bir bak istersen hocam filelistbox a dosyaları alıp oradan listview e atıyorum
http://www.4shared.com/file/vLOiUtp3/WindowsApplication1.html
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,608
Reaksiyon puanı
144
Puanları
243
Kusura bakma ben DataGridView gibi ListView'de de otomatik sıralama özelliği var sanıyordum. Ayrı bir sınıf ile kullanmak icab ediyormuş.

Burdan indirebilirsin: http://ul.to/hbzag5

Visual Studio 2010 projesi şeklinde. Eğer vs2010 yüklü değilse boş bir windows form projesi oluştur ve Form1.cs ve ListViewColumnSorter.cs dosyalarını ekle.
 

__kadıköyRAP__

Müdavim
Müdavim
Katılım
3 Mart 2007
Mesajlar
29,201
Reaksiyon puanı
2,148
Puanları
7,358
Teşekkür ederim bakacağım sorum olursa yine yazarım :)
 

__kadıköyRAP__

Müdavim
Müdavim
Katılım
3 Mart 2007
Mesajlar
29,201
Reaksiyon puanı
2,148
Puanları
7,358
ListViewColumnSorter.cs çok şükela bi şeymiş sen mi yazdın hazırmıydı hocam :) bir de e.Column ve lvwColumnSorter.SortColumn nedir bunları kısaca söyleyebilir misin? Programın geri kalanını anladım zaten gerisinde bişey kalmıyor :) ListViewColumnSorter.cs'ye girmedim bile o daha karışık.
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,608
Reaksiyon puanı
144
Puanları
243
Yok ben yazmadım :) Daha önceden de dediğim gibi ben ListView 'de varsayılan olarak sıralama özelliği var sanıyordum. Olmadığını görünce kısa bir araştırma yaptım.

Yararlandığım kaynak: http://support.microsoft.com/kb/319401

Sorularına gelince. e.Column tıklanan kolonun indexini verir. ListViewColumnSorter.SortColumn ile sıralama yapılacak kolon indexi belirtilir veya en son hangi kolon sıralanmış öğrenilebilir.
 

__kadıköyRAP__

Müdavim
Müdavim
Katılım
3 Mart 2007
Mesajlar
29,201
Reaksiyon puanı
2,148
Puanları
7,358
Tamam teşekkürler :) şimdi de şöyle bi sorum var, bir de resim silme butonu ekledim şu şekilde

Kod:
pictureBox1.Image = null; // resim kullanılmasın ki silinebilsin diye null yapıyorum
silinecek = listView1.SelectedItems[0].Text;
listView1.SelectedItems[0].Selected = false; // yine kullanılmasın diye listview1 de hiç birşey seçtirmiyorum
try
{
        File.Delete(MessengerCache + silinecek);
}
catch(Exception ex)
{
        MessageBox.Show(ex.Message);
}

Dosya kullanılıyor hatası veriyor.
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,608
Reaksiyon puanı
144
Puanları
243
Resmi gösterirken ki kullandığın kodları da ekleyebilir misin?
 

__kadıköyRAP__

Müdavim
Müdavim
Katılım
3 Mart 2007
Mesajlar
29,201
Reaksiyon puanı
2,148
Puanları
7,358
Tabi :)

Kod:
if (listView1.SelectedItems.Count != 0)
            {
                pictureBox1.Image = Image.FromFile(MessengerCache + listView1.SelectedItems[0].Text);
                if (pictureBox1.Image.Size.Width > pictureBox1.Size.Width || pictureBox1.Image.Size.Height > pictureBox1.Size.Height)
                    pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
                else
                    pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
            }

Hocam ben sana en iyisi tüm projeyi de atayım :)
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,608
Reaksiyon puanı
144
Puanları
243
pictureBox1.Image=null; yerine pictureBox1.Image.Dispose(); yapmalısın. Ayrıca listView1.SelectedItems[0].Selected = false; satırını da sil. Hem gerek yok hem de hata verdiyor.
 

__kadıköyRAP__

Müdavim
Müdavim
Katılım
3 Mart 2007
Mesajlar
29,201
Reaksiyon puanı
2,148
Puanları
7,358
Teşekkür ederim dediğini yaptım, ama bazen siliyor bazen tekrar sıralarken hata veriyor, onunla uğraşmaya çalışıyorum şimdi, beceremezsem yine burdayım :)
 

__kadıköyRAP__

Müdavim
Müdavim
Katılım
3 Mart 2007
Mesajlar
29,201
Reaksiyon puanı
2,148
Puanları
7,358
Kardeş kusura bakma sürekli her hatada burdayım gibi gözüküyor ama aslında öyle değil kendim az önce bi kaç sorunla karşılaştım uğraştım çözdüm ama şu anki çok saçma nedenini hiçbirşekilde anlayamadığım bir hata.

Programı açıyorum, bi resim seçip sil diyorum siliyor, buraya kadar normal ama eğer bir resmi bi kere gösterdiğimde silmezsem başka bi resim seçip tekrar eski resime döndüğümde onu silemiyorum kullanılıyor diyor.
Yani şöyleki programı açtım resim1 e baktım sonra resim2 yi seçip ona baktım, sonra dedim resim1 i sileyim geri döndüm resim1 i seçtim sil dediğimde silemezsin kullanılıyor diyor olay bu.

Gerçekten hiçbir fikir yürütemeyecek durumdayım şu an.
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,608
Reaksiyon puanı
144
Puanları
243
Her resim değiştirmede dispose metodu çağrılmadığı için garbage collector temizleyene kadar hafızada kalıyor sanırım. Bu yüzden garbage collectorü resim değiştirmeden önce çağırmakla iş çözülür. Yani:

Kod:
if (pictureBox1.Image != null)
                    pictureBox1.Image.Dispose();

satırlarını
Kod:
pictureBox1.Image = Image.FromFile(MessengerCache + listView1.SelectedItems[0].Text);

satırından önce eklemen gerekir. Bu şekilde çözülmesi gerekir.
 

__kadıköyRAP__

Müdavim
Müdavim
Katılım
3 Mart 2007
Mesajlar
29,201
Reaksiyon puanı
2,148
Puanları
7,358
Çözüldü teşekkürler :)
Daha da dokunmayayım ben buna :D
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,608
Reaksiyon puanı
144
Puanları
243
Dokun dokun :) Boza boza öğrenebilirsin çoğu şeyi :D
 

__kadıköyRAP__

Müdavim
Müdavim
Katılım
3 Mart 2007
Mesajlar
29,201
Reaksiyon puanı
2,148
Puanları
7,358
Aslında aklımda başka şeyler var, mesela avatarlar, smileyler ve diğerleri diye listeletebilmek için bi combobox koymak. Avatarın çözümü basit 96x96 oluyorlar zaten, smileyler sanırım hep gif oluyor bunun için de gif olup olmadığını anlamak için dosya headerlarına bakmam lazım işte orada kayış kopuyor zaten. Dikkat edersen kaydederken hiç ayırmıyorum hepsini ne var ne yok .gif diye kaydediyorum :D Ama aralarında png jpg olanlar var işte ayıramadım.
 

N3CAT1

Dekan
Emektar
Katılım
20 Nisan 2008
Mesajlar
6,608
Reaksiyon puanı
144
Puanları
243
Evet farkettim gif olarak kaydediyor hepsini. Ama herşey yavaş yavaş. Sadece sabır gerekiyor işte :)

Bir de bir program bittiği zaman verdiği haz inanılmaz :D
 

__kadıköyRAP__

Müdavim
Müdavim
Katılım
3 Mart 2007
Mesajlar
29,201
Reaksiyon puanı
2,148
Puanları
7,358
Evet çok şükela birşey :D

Şimdi de dedim ki bi resim silinince gözükmeye devam etmesin picturebox1.visible=false olsun yeni bi resim seçilince de true olsun. Hata verdi dedim sabır başka bi yol deniyim, bu sefer genişlik yükseklik 0,0 olsun dedim, resim seçince yine eski halini alsın, yine hata verdi. Çıldırcam :lol:

Neyse onu da hallettik :)
 
Üst