ورود

View Full Version : مشکل در Scoroll Listbox



DAMAVAND
پنج شنبه 29 آذر 1386, 19:19 عصر
با سلام
دوستان من یه برنامه نوشتم که از یه Listbox استفاده کردم که یک سری اطلاعات مرتبا با فاصله یک ثانیه توسط یک تایمر تو اون Refresh میشه.
خوب حالا مشکلم کجاست ???????????
اگه کاربر بخواد Listbox رو scroll کنه یعنی لیست رو بالا پایین کنه Listbox نمیزاره کاربر Scroll کنه چون تایمر داره لیست رو Refresh میکنه !
حالا من باید کاری کنم یا بتونم scroll کردن لیست رو تشخیص بدم و در اون وقت تایمر رو از کار بندازم,
یا اگه دقت کرده باشید مثل برنامه Task manager حتی زمانی که دارید لیست Process ها رو Scrollمیکنید بازم تایمر برنامه لیست رو Refresh میکنه و List Box هم گیر نمیکنه !!!!
چیکار کنم ????? :گیج:

منتظر راهنمایی دوستان هستم.
با تشکر

mrm0101
پنج شنبه 29 آذر 1386, 21:42 عصر
سلام
اگر می شه دقیق تر بگید مشکل شما چی است . من امتحان کردم وقتی روی یک ایتم کلیک می کنید هر چقدر هم rfresh بشه بازم اون ایتم ثابت می مونه . یعنی مشکل شما رو مشاهده نکردم
در ضمن اگر بخواهید تایمر رو از کار بیاندازید برنامه شما به مشکل بر می خوره . لطف کنید دقیق تر بگید چه مشکلی هست

من این مثال رو تست کردم که تایمر در هر ثانیه ، یک عدد (ثانیه ) رو ار سال می کنه به listbox و مشکل شما رو نداشتم




procedure TForm1.Timer1Timer(Sender: TObject);
begin
ListBox1.Items.Add(IntToStr(SecondOfTheHour(Now))) ;
end;

SYNDROME
پنج شنبه 29 آذر 1386, 22:15 عصر
به نظر من می توانید در لحظه ای که می خواهید اطلاعات را ببینید یک Mode درست کنید و کاربر با رفتن به Mode مورد نظر بتواند اطلاعات را ببیند و در همین لحظه اطلاعات در یک ListBox دیگر اطلاعات را اضافه کنید و بعد از پایان View اطلاعات مورد نظر را برگردانید.
حالا این کار را به نمایش یک فرم دیگر می توانید انجام دهید.
یا به وسیله یک CheckBox و یا هر روش دیگری.
موفق باشید

DAMAVAND
جمعه 30 آذر 1386, 06:58 صبح
به نظر من می توانید در لحظه ای که می خواهید اطلاعات را ببینید یک Mode درست کنید و کاربر با رفتن به Mode مورد نظر بتواند اطلاعات را ببیند و در همین لحظه اطلاعات در یک ListBox دیگر اطلاعات را اضافه کنید و بعد از پایان View اطلاعات مورد نظر را برگردانید.
حالا این کار را به نمایش یک فرم دیگر می توانید انجام دهید.
یا به وسیله یک CheckBox و یا هر روش دیگری.
موفق باشید

با تشکر
ولی من میخوام که این کار رو نکنم !!
باید یه راهی باشه که هم لیست رو Refesh کرد هم Scroll کرد !!

SYNDROME
جمعه 30 آذر 1386, 14:25 عصر
با تشکر
ولی من میخوام که این کار رو نکنم !!
باید یه راهی باشه که هم لیست رو Refesh کرد هم Scroll کرد !!
شما می توانید با نگه داشتن ItemIndex هم به جای قبلی برگردید ولی اگر تعداد به روز رسانی ها بالا باشد آن وقت دچار مشکل می شود.
موفق باشید

DAMAVAND
جمعه 30 آذر 1386, 19:47 عصر
تعداد ایتم هایی که در هر بار رفرش تغییر میکنهزیاد نیست, شاید یکی دوتا , ولی باز هم وقتی میخوام لیست رو بالا و پایین کنم باز هم Listbox قفل میکنه .
همون طوری که گفتم میخوام یه چیزی مثل Task Manager ویندوز باشه کهشما میتونی لیست ها رو بالا و پایین کنی در ضمن تایمر لیست رو رفرش میکنه و برنامه هم هنگ نمیکنه !

SYNDROME
جمعه 30 آذر 1386, 21:32 عصر
ببین با thread ها کارت راه می افتد.
یعنی اضافه کردن به لیست را در Thread انجام بده تا پنجره مورد نظر قفل نکنه.
موفق باشید

DAMAVAND
شنبه 01 دی 1386, 08:41 صبح
مهندس یه کم در این باب بیشتر توضیح بده !!!
اگه کدی , مثالی داری ممنون میشم.
با تشکر

vcldeveloper
شنبه 01 دی 1386, 11:05 صبح
میخوام یه چیزی مثل Task Manager ویندوز باشه کهشما میتونی لیست ها رو بالا و پایین کنی در ضمن تایمر لیست رو رفرش میکنه و برنامه هم هنگ نمیکنه !
Task Manager از ListView استفاده میکنه، نه ListBox. شما هم اگر از ListView استفاده کنید، می بینید که مشکلتون برطرف شده.