Delphi Can

Orjinalini görmek için tıklayınız: Create ListBoxItem
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
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;
Query'nin RecordCount özelliği satır sayısını dolayısıyla da kullanıcı sayısını verir.
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
...
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.
(15-01-2018, Saat: 11:45)Dostk Adlı Kullanıcıdan Alıntı: [ -> ]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.

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;
(15-01-2018, Saat: 11:45)Dostk Adlı Kullanıcıdan Alıntı: [ -> ]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.

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?
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;
İ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;


9m9OL3.png
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.
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;
Sayfalar: 1 2