جستجو

hamzehh67

New Member
سلام دوستان
من برای سرچ بار به مشکل خوردم
من میخوام از دوتا منوی کشویی استفاده کنم که بوسیله ی این منوها
از لیست باکسی که جداگانه طراحی کردم
جستجو کنم
ولی میخوام منوی کشویی دومم
بر اساس گزینه ای که در منوی کشویی اول انتخاب میکنم متفاوت باشه
و بهمین ترتیب
لیست باکس هر مورد هم جداگونه باشه
مثلا :
منوی کشویی اول اسم چند تا کشور مختلف باشه
میخوام اگه در این منو اسم یه کشور رو انتخاب کردم
در منوی کشویی دومی اسم استانهای اون کشور نشون داده بشه
و همین ترتیب وقتی یکی از استان ها رو انتخاب کردم
در لیست باکس پائین اسم شهرهای اون استان نمایش داده بشه
و وقتی روی یکی از شهر ها در لیست باکس کلیک میکنم میخوام به فایل مورد نظرم متصل بشم
ممنون میشم راهنمایی کنید کارم خیلی فوریه
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام
از آرایه ی چند بعدی استفاده کنید . آموزشش توی انجمن هست.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممنون میشم اگه توضیح بیشتری بدید
یا راهنمایی کنید
ممنون میشم

توی همونجا آموزشش داده شد .
شما آموزش ببینین ، کد بنویسین ، جایی مشکل داشتین ، مطرح کنید .

این کد را در global function بنویسید :

کد:
function GetIndexOfArrayValue(yourArray, comboboxSelectedName)
    local arrayCount = Table.Count(yourArray);
    for indexArray = 1, arrayCount do
        for index,value in pairs(yourArray[indexArray]) do
            if (comboboxSelectedName == value) then
            return index;
            end
        end
    end
end

اینو در کمبوباکس اول :
کد:
if (e_Selection > 0) then
    --delete combo
    cmbCount = ComboBox.GetCount("ComboBox2");
    for i = 1, cmbCount do
    ComboBox.DeleteItem("ComboBox2", -1);
    end
   
        --delete list box
    lstboxCount = ListBox.GetCount("ListBox1");
    for i = 1, lstboxCount do
    ListBox.DeleteItem("ListBox1", -1);
    end
   
    for index,value in pairs(globalArray.state[e_Selection]) do
    ComboBox.AddItem("ComboBox2", value, "");
    end
end

اینو در کمبوباکس دوم :

کد:
if (e_Selection > 0) then
    --delete list box
    lstboxCount = ListBox.GetCount("ListBox1");
    for i = 1, lstboxCount do
    ListBox.DeleteItem("ListBox1", -1);
    end
   
    --get index of value in globalArray.state
    selectedValueName = ComboBox.GetText("ComboBox2");
    indexStateArray = GetIndexOfArrayValue(globalArray.state, selectedValueName);

    for index,value in pairs(globalArray.city[indexStateArray]) do
    ListBox.AddItem("ListBox1", value, "");
    end
end

اشیاء لازم هم دو کمبوباکس و یک لیست باکس هست .
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
این کد را هم در رویداد on show اون صفحه بنویسید (فراموش کردم) :

کد:
globalArray = {country = {"iran", "yaman"} , state = {{[1] ="tehran", [2] = "khozestan"} , {[3] = "sana", [4] = "alhadideh"}} , city = { {"eslam shahr", "robat karim", "ghods"} , {"abadan", "khorramshahr", "hoveizeh", "fakkeh"} , {"sian" , "sana"} , {"bora", "salif"} }};

for index,value in pairs(globalArray.country) do
ComboBox.AddItem("ComboBox1", value, "");
end

البته بهتره اون آرایه ی globalArray را توی رویداد global function یا رویداد on startup بنویسید تا در هر صورتی ،این آرایه ، فقط یکبار اجرا بشه .
 

reza-safary

Member
سلام و وقت بخیر
ممنون میشم راهنمایی بفرمایید
*با AMS یه پیج جستجو درست کردم و جستجوش درست کار میکنه و بر اساس حرفی که تایپ میکنم عبارتی که اون حرف داخلش هست رو میاره
قبل از جستجو داخل لیست باکس لینکی رو که به عبارت دادم کار میکنه (( بهش یه فایل پی دی اف لینک دادم که بازش میکنه و مشکلی نیست ))
*ولی وقتی جستجو میکنم و اون عباراتی که حرف مورد نظر توش بوده رو میاره و میخوام کلیک کنم که فایل (پی دی اف) رو باز کنه بجاش پوشه آدرس فایل رو باز میکنه
درصورتی که میخوام وقتی هم با جستجو عبارت رو آورد و کلیک کردم بجای آدرس فایل خود فایل رو برام باز کنه

کدهایی که استفاده کردم اینا هستن

Page تب On show
all_items = ListBox.GetCount("ListBox1");
item_text_tbl = {};
item_data_tbl = {};
for a=1, all_items do
item_text = ListBox.GetItemText("ListBox1", a);
item_data = ListBox.GetItemData("ListBox1", a);
item_text_tbl[a] = item_text;
item_data_tbl[a] = item_data;
end

Input تب On key
text_tosearch = Input.GetText("Input1");
idx = 1;
finded_text_tbl = {};
finded_data_tbl = {};
for i,v in pairs(item_text_tbl) do
finded_result = String.Find(v, text_tosearch, 1, false);
if finded_result ~= -1 then
finded_text_tbl[idx] = v;
finded_data_tbl[idx] = item_data_tbl;
idx = idx+1;
end
end
ListBox.DeleteItem("ListBox1", -1);
for i,v in pairs(finded_text_tbl) do
ListBox.AddItem("ListBox1", finded_text_tbl,"");
End


Listbox تب On Double-click
linenumber = ListBox.GetSelected("ListBox1");
FilePath = ListBox.GetItemData("ListBox1", linenumber[1]);
File.Open(FilePath, "", SW_SHOWNORMAL);
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام و وقت بخیر
ممنون میشم راهنمایی بفرمایید
*با AMS یه پیج جستجو درست کردم و جستجوش درست کار میکنه و بر اساس حرفی که تایپ میکنم عبارتی که اون حرف داخلش هست رو میاره
قبل از جستجو داخل لیست باکس لینکی رو که به عبارت دادم کار میکنه (( بهش یه فایل پی دی اف لینک دادم که بازش میکنه و مشکلی نیست ))
*ولی وقتی جستجو میکنم و اون عباراتی که حرف مورد نظر توش بوده رو میاره و میخوام کلیک کنم که فایل (پی دی اف) رو باز کنه بجاش پوشه آدرس فایل رو باز میکنه
درصورتی که میخوام وقتی هم با جستجو عبارت رو آورد و کلیک کردم بجای آدرس فایل خود فایل رو برام باز کنه

کدهایی که استفاده کردم اینا هستن

Page تب On show
all_items = ListBox.GetCount("ListBox1");
item_text_tbl = {};
item_data_tbl = {};
for a=1, all_items do
item_text = ListBox.GetItemText("ListBox1", a);
item_data = ListBox.GetItemData("ListBox1", a);
item_text_tbl[a] = item_text;
item_data_tbl[a] = item_data;
end

Input تب On key
text_tosearch = Input.GetText("Input1");
idx = 1;
finded_text_tbl = {};
finded_data_tbl = {};
for i,v in pairs(item_text_tbl) do
finded_result = String.Find(v, text_tosearch, 1, false);
if finded_result ~= -1 then
finded_text_tbl[idx] = v;
finded_data_tbl[idx] = item_data_tbl;
idx = idx+1;
end
end
ListBox.DeleteItem("ListBox1", -1);
for i,v in pairs(finded_text_tbl) do
ListBox.AddItem("ListBox1", finded_text_tbl,"");
End


Listbox تب On Double-click
linenumber = ListBox.GetSelected("ListBox1");
FilePath = ListBox.GetItemData("ListBox1", linenumber[1]);
File.Open(FilePath, "", SW_SHOWNORMAL);

سلام
در رویداد On Key شی input ، بجای اینکه داخل آرایه ، جستجوتون را انجام بدین ، درون خود شی لیست باکس (از طریق تابع ListBox.FindItem) ، جستجوی تون را انجام بدین . از طریق جستجو در آرایه هم برین ، باز هم باید از این تابع استفاده کنین مگر اینکه کار و الگوریتم تون را بیخودی بخاین پیچیده تر کنین. بنابراین در رویداد On Show در page ، اصلا نیازی به کدنویسی نخواهید داشت (البته نیاز به آرایه هایی شبیه item_text_tbl و item_data_tbl در رویداد On Key شی input خواهید داشت که وقتی کاربر ، اینپوت را پاک کرد ، دوباره توسط این اطلاعات ، لیست باکس مجدا پر بشه)
بعد توی کد نویسی تون دقت کنید . توی رویداد On Key شی input ، در خط :

کد:
finded_data_tbl[idx] = item_data_tbl;
یک آرایه را توی یک متغییری که حاوی رشته باید باشه ، ریختین.
توی خط :

کد:
ListBox.AddItem("ListBox1", finded_text_tbl,"");
در آرگومان دوم تابع ، که باید یک رشته میدادین ، یک آرایه دادین که باعث ارور هم شد .
اینا را تصحیح کنید.
کدها را هم در تگ کد بنویسین.
 

reza-safary

Member
سلام
در رویداد On Key شی input ، بجای اینکه داخل آرایه ، جستجوتون را انجام بدین ، درون خود شی لیست باکس (از طریق تابع ListBox.FindItem) ، جستجوی تون را انجام بدین . از طریق جستجو در آرایه هم برین ، باز هم باید از این تابع استفاده کنین مگر اینکه کار و الگوریتم تون را بیخودی بخاین پیچیده تر کنین. بنابراین در رویداد On Show در page ، اصلا نیازی به کدنویسی نخواهید داشت (البته نیاز به آرایه هایی شبیه item_text_tbl و item_data_tbl در رویداد On Key شی input خواهید داشت که وقتی کاربر ، اینپوت را پاک کرد ، دوباره توسط این اطلاعات ، لیست باکس مجدا پر بشه)
بعد توی کد نویسی تون دقت کنید . توی رویداد On Key شی input ، در خط :

کد:
finded_data_tbl[idx] = item_data_tbl;
یک آرایه را توی یک متغییری که حاوی رشته باید باشه ، ریختین.
توی خط :

کد:
ListBox.AddItem("ListBox1", finded_text_tbl,"");
در آرگومان دوم تابع ، که باید یک رشته میدادین ، یک آرایه دادین که باعث ارور هم شد .
اینا را تصحیح کنید.
کدها را هم در تگ کد بنویسین.
ممنون از لطفی که کردی و وقت گذاشتی ولی متاسفانه من برنامه نویسیم خوب نیست و متوجه نشدم باید چکار کنم
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممنون از لطفی که کردی و وقت گذاشتی ولی متاسفانه من برنامه نویسیم خوب نیست و متوجه نشدم باید چکار کنم

سلام
آموزش برنامه نویسی (اتوپلی) ، بصورت مجزا و کامل (که لینکش در امضا ام هست) ، گذاشته شده.
 

reza-safary

Member
کدهای جستجو رو از همین کتابی که شما معرفی کردی کپی کردم خودم ننوشتم
نمیخوام بشینم همشو بخونم اگه زحمتت نیست شسته رفته تر و خلاصه راهکار عملی بده
اگر هم امکان نداره برات که بازم ممنون
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
کدهای جستجو رو از همین کتابی که شما معرفی کردی کپی کردم خودم ننوشتم
نمیخوام بشینم همشو بخونم اگه زحمتت نیست شسته رفته تر و خلاصه راهکار عملی بده
اگر هم امکان نداره برات که بازم ممنون

دوست عزیز ، وقتی میخواین برنامه ای بنویسین ، باید قبل اش کد نویسی یاد بگیرین . نمیشه بدون یادگیری کدنویسی که برنامه نوشت .
راهکار را در پست 7 دادم دیگه.
 

جدیدترین ارسال ها

بالا