ورود

View Full Version : سوال: مرتب سازی اطلاعات GRID



ali2010
دوشنبه 24 اسفند 1388, 13:03 عصر
با سلام ،
من کلید F9 رو برای مرتب سازی اطلاعاتم در نظر گرفتم ، که با زدن F9 پنجره ای برای انتخاب ترتیب بر اساس ....... در چند خط و بر اساس فیلدهای دلخواهم به نمایش در می آید.که با انتخاب هر کدوم ORDER مربوط به اون فیلد فعال می شه . ولی بعد از عوض شدن ORDER رکورد فعالم عوض می شه . چطور می تونم این مشکل رو حل کنم ؟

mehran_337
دوشنبه 24 اسفند 1388, 13:57 عصر
قبل از مرتب سازی شماره رکورد را در متغیری ذخیره کنید
پس از مرتب سازی با دستور go به شماره رکورد بروید


a= recno()
index on ...
go a

ali2010
دوشنبه 24 اسفند 1388, 19:42 عصر
با تشکر از عنایت جنابعالی .
این کار رو کردم ولی جواب نمی ده ، وقتی روی GRID تغییر ORDER میدم اولین رکوردی که در وضعیت فعلی GRID نمایش داده میشه ، ثابت می مونه و با تغییر در ORDER بقیه رکوردها عوض می شن .
توضیح بدم که روش من بشکل زیره :
در GOT FOCUS فرم مربوطم پروسیجر ()SETDEFKEY= رو صدا می زنم و در برنامه اصلیم این پروسیجر رو تعریف می کنم

ON KEY
ON KEY LABEL F9 DO SORTDBF.PRG
.
.
.

بعد در پروسیجر SORTDBF.PRG با استفاده از دستور PROMPT @ یک منوی پنجرهای ایجاد میکنم که بعد از انتخاب نوع مرتب سازی از طرف کاربر اقدام به تغییر ORDER جدول می کنم . ولی با مشکل فوق مواجه می شم .
تحت داس همیشه با این روش کار کردم ، اگر در VF9 روشم اشکال دارد ، لطفا به من گوشزد کنید .

mehran_337
سه شنبه 25 اسفند 1388, 08:11 صبح
البته که باید در ویژوال روشهای داس را تغییر دهید . مثلا استفاده از کلیدهای تابعی آنچنان در ویژوال مرسوم نیست . به تاپیک "کلاسهای بی نیاز " بروید در آنجا جناب حسین زاده (مدیریت محترم این بخش) کلاس گریدی را طراحی کردند که امکانات بسیار خوبی را دارد که یکی از این امکانات این است که وقتی بر روی هدر هر ستون در گرید کلیک کنید بر اساس همان ستون مرتب سازی انجام می شود این دقیقا همان کاریست که در ویندوز می بینیم .