![]() |
|
مشاكل الكومبو بوكس - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15) +--- الموضوع : مشاكل الكومبو بوكس (/showthread.php?tid=2191) الصفحات:
1
2
|
مشاكل الكومبو بوكس - m_m_saad - 16-07-2010 استخدم 3 كمبو بوكس الاول به مصر - السودان - الجزائر - الخ الثاني به القاهرة - الخرطوم -طرابلس الثالث به اسماء احياء القاهرة والخرطوم لما اختار علي مصر يظهر لي في الثاني القاهرة و مدن مصر ولما اختار علي القاهرة تظهر لي احياء القاهرة فقط هذه كل المشكله هل يوجد طريقة غير معقدة لعمل ذلك الطريقة المعتادة اني اعمل كود : if combobox1.itemindex=0 then
Combobox2.items.Clear;
Combobox2.items.Add('القاهرةولكن هذا مرهق وذلك لان اعمل هذا في كل الاختيارات بالكامل احاول استخدمه لتحقيق نفس الهدف كود : procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if combobox1.itemindex=0 then
begin
if combobox2.itemindex=1 then
begin
combobox3.ItemIndex:=1
end;
end;
end;الغريب انه يعطيني رساله خطأ في سطر فارغ تماما و رساله الخطأ تقول declaration expected but end of file found مشاكل الكومبو بوكس - Lam.Abdeldjalil - 16-07-2010 السلام عليكم كما ذكر سابقا لا يمكن الفلترة في الكومبوبوكس لذا يجب عليك إنشاء قوائم لمعطياتك بالشكل التالي البلد 1 قائمة الولايات الولاية 1 قائمة الأحياء الولاية 2 قائمة الأحياء .. البلد 2 قائمة الولايات الولاية 2 قائمة الأحياء الولاية 2 قائمة الأحياء .. التطبيق بالكود تصريح عام كود : City1,City2,state1,state2 : TStringList ;إعطاء القيم ( الولايات ، الأحياء ) كود : procedure TForm1.Button1Click(Sender: TObject);
begin
City1 := TStringList.Create;
City2 := TStringList.Create;
state1 := TStringList.Create;
state2 := TStringList.Create;
city1.Add('State1City1_1') ;
city1.Add('State1City1_2') ;
city1.Add('State1City1_3') ;
city2.Add('State1City2_1') ;
city2.Add('State1City2_2') ;
city2.Add('State1City2_3') ;
state1.Add('County1state1') ;
state1.Add('County1state2') ;
state1.Add('County1state3') ;
state2.Add('County2state1') ;
state2.Add('County2state2') ;
state2.Add('County2state3') ;
end;تغيير الولايات حسب البلد في الكومبو 1 كود : procedure TForm1.ComboBox1Change(Sender: TObject);
begin
case ComboBox1.ItemIndex of
0:begin // البلد1
ComboBox2.Items.Clear ;
ComboBox2.Items.AddStrings(state1);
end;
1: begin // البلد2
ComboBox2.Items.Clear ;
ComboBox2.Items.AddStrings(state2);
end;
end;تغيير الأحياء حسب الولاية في الكمبو 2 كود : procedure TForm1.ComboBox2Change(Sender: TObject);
begin
case ComboBox2.ItemIndex of
0:begin // الولاية1
ComboBox3.Items.Clear ;
ComboBox3.Items.AddStrings(city1);
end;
1: begin // الولاية 2
ComboBox3.Items.Clear ;
ComboBox3.Items.AddStrings(city2);
end;
end;نتمنى أن يفيدك بالتوفيق و السلام عليكم مشاكل الكومبو بوكس - kachwahed - 16-07-2010 السلام عليكم طريقة أخرى... PHP كود : varمشاكل الكومبو بوكس - m_m_saad - 17-07-2010 شكرا جزيلا اخي lam.abdeljalil بارك الله فيك ولكن هذا الكود جربته يعمل جيدا علي المستوي الثاني أما علي مستوي التفرع الثالث لا يؤدي المطلوب وذلك للأتي اذا قلت الكومبو الاول country1 country2 الكومبو الثاني city1-country1 city2-country1 city1-country2 city2-ountry2 الكومبو الثالث state1-city1-country1 state2-city1-country1 state1-city2-country1 state2-city2-country1 state1-city1-country2 state2-city1-country2 state1-city2-country2 state2-city2-country2 هذا الكومبو الثالث لا يعمل جيدا بالتصنيف الهرمي وذلك لان الشرط الموجود بالكومبو 2 يتعلق ب itemindex 0,1 فقط وهذا يجعله يعطيني نفس state فهل من حل لهذا ولو انني اخطأت الفهم - ان لم يكن فيها حرج لو تعمل المثال و تبعت لي الملف .pas علي المنتدي او الايميل اكون شاكرا لك . وجزاك الله خيرا مشاكل الكومبو بوكس - Lam.Abdeldjalil - 17-07-2010 السلام عليكم العفو أخي m_m_saad أعطيتك مثال فقط لكي تكمل العمل مع الباقي بنفس الطريقة الملف المرفق و السلام عليكم مشاكل الكومبو بوكس - m_m_saad - 17-07-2010 جزاك الله خيرا بارك الله لك وزادك علما علي علم مشاكل الكومبو بوكس - m_m_saad - 18-07-2010 الاخ - عبد الجليل سؤال آخر لو اردنا تحسين نتيجه البرنامج عندما نختار الدوله في كومبو 1 تظهر المحافظات في كومبو 2 و عند اختيار محافظه من كومبو 2 بالتالي تظهر الاحياء في كومبو 3 ولكن اذا رجعنا الي كومبو 1 بعد اختيار احد ا لمحافظات والاحياء يظل الاختيار كما هو يعني نريد ان نعمل refresh للبرنامج لانه من يعمل عليه قد يخطأ بسبب ذلك هل هذا ممكن سؤال آخر لماذا يتم وضع end; ثلاث مرات متتاليات رغم ان begin مرة واحده مشاكل الكومبو بوكس - Lam.Abdeldjalil - 18-07-2010 السلام عليكم إقتباس :ولكن اذا رجعنا الي كومبو 1 بعد اختيار احد ا لمحافظات والاحياء يظل الاختيار كما هو ما عليك إلا إضافة السطرين للحدث ComboBox1Change كود : ComboBox2.Items.Clear ;
ComboBox3.Items.Clear ;الصيغة العامة للعمل بالـ Case كود : case Var of
0:begin
instructions
end;
1: begin
instructions
end;
else
end;و السلام عليكم مشاكل الكومبو بوكس - m_m_saad - 18-07-2010 عندما استخدمها في اول سطر في combo1 change تقوم بمسح القائمه كلها مشاكل الكومبو بوكس - Lam.Abdeldjalil - 18-07-2010 السلام عليكم خطأ فني ->قم مسح الكمبو 3 فقط يصبح الكود كود : procedure TForm1.ComboBox1Change(Sender: TObject);
begin
ComboBox3.Items.Clear ;
case ComboBox1.ItemIndex of
0:begin // البلد1
ComboBox2.Items.Clear ;
ComboBox2.Items.AddStrings(state1);
end;
1: begin // البلد2
ComboBox2.Items.Clear ;
ComboBox2.Items.AddStrings(state2);
end;
else ComboBox2.Items.Clear ;
end;
end; |