PDA

View Full Version : سوال: listbox



ALINAMAZI
شنبه 22 تیر 1387, 10:59 صبح
من یک لیست را تویlistboxمثل لیست چند هزار شماره تلفن دارم میخواهم لیست را فیلتر کنم شماره های خاصی (مثلا انهائی که اولشان 0 داردند)پیدا کنم سپس تعداد انها را در یک label نشان دهدکمکم کنید چگونه انجام دهم
با تشکر

Hsimple11
شنبه 22 تیر 1387, 16:03 عصر
برای رکوردهایی به این تعداد بهتر است از دیتابیس و فیلتر استفاده کنید.
اما
میتوانید از تابع Pos استفاده کنید که اگر در Item های شما رقم یا حرف وارد شده در یک Edit اولین حرف باشد آن را به یک Label یا ListBox دیگر اضافه کند. مثلا :


var I:Integer;
begin
ListBox2.Clear;
for i:=0 to ListBox1.Items.Count-1 do begin
if Pos((Trim(Edit1.Text)),ListBox1.Items.Strings[i])=1 then
ListBox2.Items.Add(ListBox1.Items.Strings[i]);
end;
end;

ALINAMAZI
دوشنبه 24 تیر 1387, 10:02 صبح
از پاسخی که داده اید بی نهایت سپاسگزارم انجام دادم ولی نتیجه نگرفتم فکر میکنم از بیسوادی خودم هست من این لیست را که به صورت text است به لیست باکس اضافه نموده ام اگر میسر است بیشتر راهنمائیم کنید مجددا تشکر میکنم

Hsimple11
دوشنبه 24 تیر 1387, 14:50 عصر
ببینید همانظور که گفتم برای رکوردهایی مثل 1000 تا و ... بهتر است از دیتابیس استفاده کنید تا هر بار یک فایل را در یک Listbox بریزید.

هر آیتم لیست شما یک شماره تلفن است و میخواهید یک Edit داشته باشید که هر رقمی را در آن وارد کردید هر شماره ای که رقم اولش آن عدد بود فیلتر شود. یکی از راه ها این است که موقعیت عدد وارد شده را در Edit در رکوردهای Listbox چک کنید و اگر قرار داشت رکورد را به یک Listbox دیگر یا .. بریزید. این کار را با یک حلقه برای تمام رکوردها انجام می توان داد.

اصغر (پآچ)
سه شنبه 25 تیر 1387, 01:00 صبح
سلام دوست من

همونطور که دوستمون اشاره کرد لیست رو توی یک جدول در دیتابیسی قرار دهید و سپس با استفاده از کوئری جدول مورد نظر رو فیلتر کنید سپس فیلد های فیلتر شده رو به ListBox خودتون اضافه کنید.

موفق و موید باشی

ALINAMAZI
سه شنبه 25 تیر 1387, 12:45 عصر
سلام دوست من

همونطور که دوستمون اشاره کرد لیست رو توی یک جدول در دیتابیسی قرار دهید و سپس با استفاده از کوئری جدول مورد نظر رو فیلتر کنید سپس فیلد های فیلتر شده رو به ListBox خودتون اضافه کنید.

موفق و موید باشی


اصغر آقا واقعا از شما متشکرم
لطفا بفرمائید چگونه یک فایل text را توی یک table قرار دهم که بتوانم از فیلتر گیری و ... انجام دهم

Hsimple11
سه شنبه 25 تیر 1387, 12:51 عصر
یک دیتابیس ساده با یک فیلد بسازید و بعد آنرا فیلتر کنید. در مورد بانکهای اطلاعاتی زیرتالاری به همین نام وجود دارد. اگر مشکلی بود بفرمایید.

ALINAMAZI
چهارشنبه 26 تیر 1387, 12:23 عصر
یک دیتابیس ساده با یک فیلد بسازید و بعد آنرا فیلتر کنید. در مورد بانکهای اطلاعاتی زیرتالاری به همین نام وجود دارد. اگر مشکلی بود بفرمایید.

ضمن تشکر گشتم ولی چیزی که مشکل مرا حل کند پیدا نکردم
لطف کنید دستور ایجاد بانک از طریق یک فایل متنی که بتوان آنرا فیلتر و یا دستورات دیگری مثل گزارش گیری و غیره در محیط دلفی 7 انجام داد راهنمائی کن خیلی ضروری است با تشکر

Hsimple11
چهارشنبه 26 تیر 1387, 13:14 عصر
با چه نوع دیتابیسی میخواهید کار کنید؟ بهتر است کمی در مورد بانکهای اطلاعاتی در همین سایت یا جاهای دیگر اطلاعات بدست بیاورید. من ساخت یک دیتابیس Paradox ساده را میگویم. یک Alias با BDE Administrator همراه دلفی بسازید و با Database Desktop یک Table جدید ایجاد کنید. یک فیلد بنام شماره تلفن از نوع عددی در آن ایجاد کرده و در Alias مورد نظر ذخیره کنید. در دلفی از تب BDE و DataAccess کامپوننتهای Table و DataSource را به فرم خود اضافه کرده و خواص TableName و DataBaseName و DataSet آنها را Set کنید و table خود را active کنید. حالا میتوانید رکوردها را از ListBox به فیلد مربوطه انتقال دهید. در مورد انجام فیلتر هم میتوانید از دستور Filter استفاده کنید. در سایت جستجو کنید جزئیات این مطالب وجود دارد. البته بهتر است از بانکهای اطلاعاتی اکسس و Sql استفاده کنید بدلیل سرعت بالاتر و امکان گنجایش رکوردهای بهتر. ولی همین Paradox هم نیاز شما را برطرف خواهد کرد.

ALINAMAZI
چهارشنبه 26 تیر 1387, 13:37 عصر
با تشکر از شما که زود جوابم دادید من همه ان چیزهای که فرمودید من قبلا انجام داده ام مشکل من در این قسمت پرانتز است(رکوردها را از ListBox به فیلد مربوطه انتقال دهید);کدی میخواهم که با نوشتن ان در رویداد کلید به فیلد جدول اضافه شود ودر ان بای همیشه ذخیره گردد
با تشکر مجدد

Hsimple11
چهارشنبه 26 تیر 1387, 13:48 عصر
راههای مختلفی وجود دارد میتوانید به تعداد ListBox.Items.Count یک حلقه ایجاد کنید و مقادیر را با


Table1.FieldByname('MyField').AsInteger:=StrtoInt( Listbox1.Items.Strings[i]);

به فیلد مورد نظر انتقال دهید یا کد های مشابه آن.

ALINAMAZI
پنج شنبه 27 تیر 1387, 07:41 صبح
ضمن سلام
انجام دادم ولی این پیام را مید هد is not a valid integer value'096358541'
با تشکر

SYNDROME
پنج شنبه 27 تیر 1387, 08:12 صبح
ضمن سلام
انجام دادم ولی این پیام را مید هد is not a valid integer value'096358541'
با تشکر
پیغام مورد نظر مشخص است.
مقدار Item مربوط به ListBox مقدار Integer نیست.
فیلد خود را از نوع Float بگیرید و سپس به جای asinteger از AsFloat و StrtoFloat استفاده کنید.
موفق باشید

ALINAMAZI
پنج شنبه 27 تیر 1387, 10:31 صبح
از اینکه اینقدر حوصله به خرج میدهید و جوابم را بی پاسخ نمگذارید متشکرم تاحدی مشکلم حل شد لطفا دستور قرار دادن جدول در حالت edit را بفرمائید
با تشکر

Hsimple11
پنج شنبه 27 تیر 1387, 12:26 عصر
زمانی فیلد خود را با AsIneger مقداردهی میکنید مسلما آنطرف هم باید مقداری Integer داشته باشید.

جدول خود را open کنید و آن را در حالت edit قرار دهید.


MyTable.Edit;