Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Create ListBoxItem
#1
Selam.

Combobox içindeki ListBoxItem kullanarak databasedeki kullanıcı adlarını çekmek için aşağıdaki kodları kullanıyorum.
Fakat sıkıntı ise databasede kaç kullanıcı olduğunu bilmediğim için ListBoxItem Create yöntemiyle bunu nasıl çözebilirim?

Örnek:
ListBoxItem+ ekle.Text:= FieldByName('USERNAME').AsString  // ListBoxItem1.Text
ListBoxItem+ ekle.Text:= FieldByName('USERNAME').AsString  // ListBoxItem2.Text
ListBoxItem+ ekle.Text:=  FieldByName('USERNAME').AsString // ListBoxItem3.Text

procedure TForm1.UserComboBoxListele(Sender: TObject);
var
  Ekle: Integer;
  ListBoxItem: TListBoxItem;
begin
  try
    With QUser do
    begin
      Active := False;
      Connection := Connection;
      Close;
      SQL.Clear;
      SQL.Add('Select * From USERS');
      Prepared := True;
      Open;
      if Not IsEmpty then 
      begin
        Ekle := 0;
        ListBoxItem := TListBoxItem.Create(ListBoxItem);
        while Not QUser.Eof do
        begin
          Ekle := +1;
          ListBoxItem + Ekle.Text := FieldByName('USERNAME').AsString;
          // Kadi.Text := FieldByName('USERNAME').AsString;
          // ComboBox1.Items.Add(FieldByName('USERNAME').AsString);
          Next;
        end;
      end;
    end;
  finally
    QUser.Close;

  end;
end;
Hayat bazen güzel olabiliyor.
Cevapla
#2
Query'nin RecordCount özelliği satır sayısını dolayısıyla da kullanıcı sayısını verir.
Bizi Toprağa Gömdüler Fakat Tohum Olduğumuzu Bilmiyorlardı.
Cevapla
#3
Merhaba,

if not IsEmpty kontrolünüz ve while not EOF döngünüz yerine;

Savaş Bey'in söylediği gibi, QUser.RecordCount değerinin 0 (sıfır)dan büyük olması durumunda for döngüsü ile bu işlemleri kolaylıkla yapabilirsiniz.

if QUser.RecordCount > 0 then
...
{ talk is cheap show me the code. }
Cevapla
#4
Sanrım sorum yanlış anlaşıldı. Sorun kullanıcıları listelemede değil.

Databasede kullanıcı sayısını bilmediğim için ListBoxItem1.Text, ListBoxItem2.Text , ListBoxItem3.Text diye Create etmek istiyorum.
sadece ListBoxItem1.Text varsa u seferde databasedeki bir kullanıcının adı listeleniyor diğerleri listelenmiyor.
Hayat bazen güzel olabiliyor.
Cevapla
#5
(15-01-2018, Saat: 11:45)Dostk Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlSanrım sorum yanlış anlaşıldı. Sorun kullanıcıları listelemede değil.

Databasede kullanıcı sayısını bilmediğim için ListBoxItem1.Text, ListBoxItem2.Text , ListBoxItem3.Text diye Create etmek istiyorum.
sadece ListBoxItem1.Text varsa u seferde databasedeki bir kullanıcının adı listeleniyor diğerleri listelenmiyor.

procedure TForm1.UserComboBoxListele(Sender: TObject);
var
 Ekle: Integer;
 ListBoxItem: TListBoxItem;
begin
 try
   With QUser do
   begin
     Active := False;
     Connection := Connection;
     Close;
     SQL.Clear;
     SQL.Add('Select * From USERS');
     Prepared := True;
     Open;

for i := 0 to QUser.RecordCount-1 do 
begin

      ListBoxItem := TListBoxItem.Create(ListBox1);
      ListBoxItem.Parent := ListBox1;
      ListBoxItem.Text := QUser.FieldByName('USERNAME').AsString  + (i+1).ToString; // kaçıncı bilgisi burada tutulabilir?
      QUser.Next;
       end; //for
     end; //withdo
   end; //try
 finally
   QUser.Close;

 end;
end;
{ talk is cheap show me the code. }
Cevapla
#6
(15-01-2018, Saat: 11:45)Dostk Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlSanrım sorum yanlış anlaşıldı. Sorun kullanıcıları listelemede değil.

Databasede kullanıcı sayısını bilmediğim için ListBoxItem1.Text, ListBoxItem2.Text , ListBoxItem3.Text diye Create etmek istiyorum.
sadece ListBoxItem1.Text varsa u seferde databasedeki bir kullanıcının adı listeleniyor diğerleri listelenmiyor.

Kodunuzda TListBoxItem.Create'i kullanmışsınız. Parametre olarak da ListBoxItem'ı geçmişsiniz. Bu parametre ne işi yarar, neden kullandınız?
There's no place like 127.0.0.1
WWW
Cevapla
#7
Merhaba,
Abdullah Bey'in vermiş olduğu kod sanırım işinizi görecektir. 
İlle de oluşturduğum her Item'a bir isim vermek istiyorum (Daha sonraki işlemlerde Item adı kullanılabilir) derseniz;
Ekle := +1;
satırından hemen sonraki iki satırı aşağıdaki şekilde değiştirmeniz yeterli olacaktır.    
ListBoxItem.Name := 'ListBoxItem' + Ekle.ToString;
ListBoxItem.Text := FieldByName('USERNAME').AsString;
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#8
İlgilenen herkese teşekkür ederim,

Fakat sorunu halen çözemedim. Create(ListBox1); hata alıyorum foruma ListBox1 eklersem sorun yok, ama bu seferde istediğim gibi combobox'a kullanıcıları listeleyemiyorum.

procedureTForm1.UserComboBoxListele(Sender: TObject);
var
  Ekle: Integer;
  ListBoxItem: TListBoxItem;
begin
  try
    With QUser do
    begin
      Active := False;
      Connection := Connection;
      Close;
      SQL.Clear;
      SQL.Add('Select * From USERS');
      Prepared := True;
      Open;
      for I := 0 to QUser.RecordCount - 1 do
      begin
        Ekle := +1;

        ListBoxItem := TListBoxItem.Create(ListBox1);
        ListBoxItem.Parent := ListBox1;

        ListBoxItem.Name := 'ListBoxItem' + Ekle.ToString;
        ListBoxItem.Text := FieldByName('USERNAME').AsString;

        // ListBoxItem.Text := QUser.FieldByName('USERNAME').AsString + (I + 1)
        // .ToString; // kaçıncı bilgisi burada tutulabilir?
        QUser.Next;
      end; // for
    end; // withdo
  finally
    QUser.Close;
  end;


Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Hayat bazen güzel olabiliyor.
Cevapla
#9
Listbox'ı değil Listbox'ın itemini oluşturuyorsunuz,dolayısıyla hata almanız normal.Listbox'ı oluşturmak için
Listbox1 := TListBox.Create(self);
Listbox1.Parent := self;
kodunu yazmalısınız ama combobox için neden ListBoxItem kullanmanız gerekiyor anlaymadım.ComboBox'a item eklemek için şu kodu kullanabilirsiz:
ComboBox1.Items.Add('');
yada benim kaçırdığım bir şeyler var.
Bizi Toprağa Gömdüler Fakat Tohum Olduğumuzu Bilmiyorlardı.
Cevapla
#10
Merhaba.. Listbox Neden kullandığınızı anlamadım fakat bu tür işleri genel de Combobox ile yapıyorum ben..


q1:='Select username from Kullanicilar';
q1.open;
q1.first;
while Not q1.eof do
begin
  Combobox1.Items.Add(Q1.FieldByName('username').asstring); 
  q1.next;
end;
Q1.Close;
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Create edilen resiin detayları Dostk 1 20 2 saat önce
Son Yorum: klavye
  TButton.Create(VertScrollBox1) içerisinden TRectangle.Create(VertScrollBox1) ulaşmak webprog 5 124 16-01-2018, Saat: 15:18
Son Yorum: Fesih ARSLAN



Konuyu Okuyanlar: 1 Ziyaretçi