Gönderen Konu: listbox DbClick  (Okunma sayısı 733 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

bymerag

  • Kıdemli Üye
  • *****
  • Rep: +1/-1
  • Çevrimdışı Çevrimdışı
  • Cinsiyet: Bay
  • İleti: 285
listbox DbClick
« : 06 Mayıs 2009 21:47:33 »

Kod: (delphi) [Seç]
procedure TfrMain.ListBox1DblClick(Sender: TObject);
var SelectedFile : string;
    Rec          : TSearchRec;

begin
SelectedFile := ListBox1.Items.Strings[ListBox1.ItemIndex];
if FindFirst(SelectedFile, faAnyFile, Rec) = 0 then
 begin
 
  try
    lblFile.Caption:=SelectedFile;
    lblName.Caption:=rec.Name;
    lblSize.Caption:=Format('%d bytes',[rec.Size]);
    lblModified.Caption:=DateToStr(FileDateToDateTime(rec.Time));
    lblShortName.Caption:=rec.FindData.cAlternateFileName;
   
  finally
   
  end;
  FindClose(Rec)
 end;
end;


yukaridaki Kod listbox'un DbClick olayı ile çalışıyor görüldüğü gibi
Benimi stediğim bu kodu bir butona göre uyarlamak butonun oncilck olayına kodu kopyaladığımda hata veriyor.Bunun sebebide listbox ta herhangi bir satirin seçilmemiş olması
sebebi belli ama çözümü bulamadım.
Sözün özü  bu kodu buton'un  click olayında çalışması için deÄŸiÅŸtirmem lazım.

Yardımlarınızı bekliyorum..
Kayıtlı

barutali

  • Global Moderatör
  • *****
  • Rep: +34/-0
  • Çevrimdışı Çevrimdışı
  • Cinsiyet: Bay
  • İleti: 1.152
  • Arkandan Bir Sigara Daha Yaktım ...
    • HerÅŸeyi bilen ÅŸey
Ynt: listbox DbClick
« Yanıtla #1 : 27 Haziran 2009 22:03:42 »

Kod: (delphi) [Seç]
SelectedFile := ListBox1.Items.Strings[ListBox1.ItemIndex];

yukarıda dediğin şeyi açıklayayım sana : selectedfile değişkenim listboxda hangi item seçiliyse onun değerini alsın
ama sen hiç bişey seçmediğin için selectedfile neyi alacak ?

*******************************************************
Kod: (delphi) [Seç]
SelectedFile := ListBox1.Items.Strings[0];

bende diyorumki selectedfile listbox da 1. sırada ne varsa onun deÄŸerini alsın... (0 1 2 3... die listeler ..  0 = 1. oluyor)

***************************************************************

aşağıdaki gibi düzenlersen sorun ortadan kalkıcaktır ....

Kod: (delphi) [Seç]

procedure TForm1.Button1Click(Sender: TObject);
var SelectedFile : string;
    Rec          : TSearchRec;

begin
SelectedFile := ListBox1.Items.Strings[0]; /// değişen satır...
if FindFirst(SelectedFile, faAnyFile, Rec) = 0 then
 begin

  try
    lblFile.Caption:=SelectedFile;
    lblName.Caption:=rec.Name;
    lblSize.Caption:=Format('%d bytes',[rec.Size]);
    lblModified.Caption:=DateToStr(FileDateToDateTime(rec.Time));
    lblShortName.Caption:=rec.FindData.cAlternateFileName;

  finally

  end;
  FindClose(Rec)
 end;

end;




Kayıtlı
En İyi Öğrenme Metodu Yaparak Ve Yaşayaraktır. M.K.Atatürk.

Kocaturk

  • Administrator
  • *****
  • Rep: +55/-4
  • Çevrimdışı Çevrimdışı
  • Cinsiyet: Bay
  • İleti: 2.390
    • Delphi Dünyası
Ynt: listbox DbClick
« Yanıtla #2 : 27 Haziran 2009 22:35:58 »

Yada ListBox ta bir Item i seçime zorla,

Kod: (delphi) [Seç]
...
...
var SelectedFile : string;
    Rec          : TSearchRec;

begin

if listbox1.ItemIndex < 0 then listbox1.ItemIndex := 0;

SelectedFile := ListBox1.Items.Strings[ListBox1.ItemIndex];
if FindFirst(SelectedFile, faAnyFile, Rec) = 0 then
 begin
...
...

yada ListBox ın bulunduğu Form un OnShow olay işleyicisinde ListBox ın ItemIndex özelliğini sıfır a eşitleyerek formun her açılışında ListBox ta ilk ögenin seçili olmasını sağlayabilirsin.
Veya ListBox ı kod ile dolduruyorsan doldurma işleminin sonunda ItemIndex i sıfıra eşitleyebilirsin, böylece Button a basınca problem olmaz.
Kayıtlı

barutali

  • Global Moderatör
  • *****
  • Rep: +34/-0
  • Çevrimdışı Çevrimdışı
  • Cinsiyet: Bay
  • İleti: 1.152
  • Arkandan Bir Sigara Daha Yaktım ...
    • HerÅŸeyi bilen ÅŸey
Ynt: listbox DbClick
« Yanıtla #3 : 27 Haziran 2009 22:37:34 »

Yada ListBox ta bir Item i seçime zorla,

Kod: (delphi) [Seç]
...
...
var SelectedFile : string;
    Rec          : TSearchRec;

begin

if listbox1.ItemIndex < 0 then listbox1.ItemIndex := 0;

SelectedFile := ListBox1.Items.Strings[ListBox1.ItemIndex];
if FindFirst(SelectedFile, faAnyFile, Rec) = 0 then
 begin
...
...

yada ListBox ın bulunduğu Form un OnShow olay işleyicisinde ListBox ın ItemIndex özelliğini sıfır a eşitleyerek formun her açılışında ListBox ta ilk ögenin seçili olmasını sağlayabilirsin.
Veya ListBox ı kod ile dolduruyorsan doldurma işleminin sonunda ItemIndex i sıfıra eşitleyebilirsin, böylece Button a basınca problem olmaz.


@kocatürk hocam işte bu yüzden program yazmayı seviyorum her programcının hayal gücü farklı :)
Kayıtlı
En İyi Öğrenme Metodu Yaparak Ve Yaşayaraktır. M.K.Atatürk.

Kocaturk

  • Administrator
  • *****
  • Rep: +55/-4
  • Çevrimdışı Çevrimdışı
  • Cinsiyet: Bay
  • İleti: 2.390
    • Delphi Dünyası
Ynt: listbox DbClick
« Yanıtla #4 : 27 Haziran 2009 22:41:44 »

barutali haklısın, daha bir çok alternatif cevap olabilir. Bu arada cevaplar için teşekkürler.
Kayıtlı