delphi4arab منتديات دلفي للعرب

نسخة كاملة : اضآفة عنآصر Listbox الى combobox بدون تكرار؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

أبحث عن طريقة معينة لاضافة جميع عناصر ListBox الى ComboBox بدون تكرار ...لا أتكلم هنا عن مجال

قواعد البيانات و بدون استعلام
السلام عليكم ورحمة الله

اخي الكريم

بما ان ال ComboBox.items هو من نوع ال TStrings وال Listbox.Items من النوع ذآته فيمكن فعل هذا بسهولة وبدون تكرار,

تفضل:
PHP كود :
form1.ComboBox1.Items := form1.ListBox1.Items; 

بارك الله لكم والسلام عليكم
وعليكم السلام ورحمة الله
يمكن نقل عناصر TListBox إلى TStringList ثم إلى TComboBox،حيث هناك خاصية في TStringList تسمح باختيار العناصر غير المكررة، للاستفادة منها يجب ترتيب العناصر أولا. مثال:
PHP كود :
var
  List: 
TStringList;
begin
  
List := TStringList.Create;
  try
    List.
Sorted := True;//Sort items first.
    
List.Duplicates := dupIgnore;//Ignore duplicate Items.
    
List.Assign(ListBox1.Items);
    
ComboBox1.Items.Assign(List);
  finally
    
FreeAndNil(List);
  
end; 
بالتوفيق.
اها, جزآك الله خيرا اخي الكريم كاش واحد على الشرح, لم اكن اعلم هذا,

إقتباس :بدون تكرار

فهمت بكلمة الأخ لكلمة تكرار انه يقصد بدون استخدام loop لكن ربما كنت مخطئ,

على كل حال, جزآكم الله خيرا,
بارك الله فيكم اخواني الكرام لكن المقصود هو ايجاد خوارزمية لفعل دلك دون الاعتماد على خاصية أو اجراء...

يعني اعتمد على نفسك
أدخل إلى سورس TStringList وتقصي أمر:
PHP كود :
List.Duplicates := dupIgnore 
بعبارة أخرى:
إقتباس :يعني اعتمد على نفسك
Wink بالتوفيق.
بارك الله فيك كانت غايتي من طرح الموضوع ايجاد خوارزمية ...و أنا لازلت أبحث
محاولة:
PHP كود :
var
  
I: Integer;
begin
  cbx
.Items.BeginUpdate;
  for 
I:= 0 to lbx.Count - 1 do
    if 
cbx.Items.IndexOf(lbx.Items[I]) < 0 then
      cbx
.Items.Add(lbx.Items[I])
  
cbx.Items.EndUpdate;
end; 
لم أفهم هذا السطر:
كود :
cbx.Items.IndexOf(lbx.Items[I]) < 0

لماذا 0>