PDA

View Full Version : سوال: ذخیره مکان نما در dbgrid



accpascal
پنج شنبه 08 اسفند 1387, 15:01 عصر
یک مشکل که من دارم وقتی یک کلاینت دیتاست از طرف سرور آپدیت میشود محل مکان نما در dbgrid طرف کلاینت نسبت به فرم (نه recNo) تغییر می کند
چگونه می توانم این مشکل را حل کنم؟

Batman
پنج شنبه 08 اسفند 1387, 17:07 عصر
ado.Locate('primery key',primery key value,[]);
مثلا

ado.locate('Factor',FactorNumber,[]);
موفق باشيد

accpascal
پنج شنبه 08 اسفند 1387, 17:56 عصر
منظور من این نبود من می خواهم مکان نما نسبت به فرم تغییر نکند نه اینکه روی آن رکورد که بود بماند

Batman
پنج شنبه 08 اسفند 1387, 21:29 عصر
يعني چي كه نسبت به فرم تغيير نكنه؟لطفا بيشتر توضيح بديد

accpascal
پنج شنبه 08 اسفند 1387, 23:08 عصر
شاید درست توضیح ندادم
فرض کنید من یک گرید دارم و مکان نما در گرید در جایی مثلا رکورد شماره 5 فوکوس دارد ونسبت به فرم اصلی در بالای فرم قراردارد
خیلی وقتها اتفاق می افتد که پس از رفرش کردن دیتا ست و سپس انتقال رکورد به همان رکورد قبلی(شماره 5) با استفاده از همان دستور که شما هم اشاره کردید مکان نما مثلا در وسط فرم قرار می گیرد
نمی دانم خوب توضیح دادم یا خیر؟

Batman
جمعه 09 اسفند 1387, 10:29 صبح
شاید درست توضیح ندادم
فرض کنید من یک گرید دارم و مکان نما در گرید در جایی مثلا رکورد شماره 5 فوکوس دارد ونسبت به فرم اصلی در بالای فرم قراردارد
خیلی وقتها اتفاق می افتد که پس از رفرش کردن دیتا ست و سپس انتقال رکورد به همان رکورد قبلی(شماره 5) با استفاده از همان دستور که شما هم اشاره کردید مکان نما مثلا در وسط فرم قرار می گیرد
نمی دانم خوب توضیح دادم یا خیر؟
ببين دوست عزيز من كه نميدونم منظور شما از "نسبت به فرم اصلي در بالاي فرم قرار داره" يعني چي.ولي كدي كه من گذاشتم دقيقا مكان نما رو به محل قبلي روي grid برميگردونه.
موفق باشيد

accpascal
شنبه 10 اسفند 1387, 21:59 عصر
ببين دوست عزيز من كه نميدونم منظور شما از "نسبت به فرم اصلي در بالاي فرم قرار داره" يعني چي.ولي كدي كه من گذاشتم دقيقا مكان نما رو به محل قبلي روي grid برميگردونه.
موفق باشيد
کد شما مکان نما را به رکوردی که بود منتقل می کنه نه جایی در فرم که بود
بازهم توضیح می دم فرض کن مکان نما مثلا 2 سانت از بالای صفحه قرار داره حالا وقتی دیتاست را رفرش کنیم و به رکوردی که قبلا بود منتقل کنیم ممکنه حالا جاش جای قبلی(2 سانت از بالای صفحه ) نباشه چیزی مثل یک پرش صفحه اتفاق میفته
انشاءاله درست توضیح داده باشم

merced
یک شنبه 11 اسفند 1387, 11:12 صبح
اين تابع مشكلت رو حل مي كنه



type
THackDBGrid = class(TDBGrid);


procedure Refresh_PreservePosition;
var
rowDelta: Integer;
row: integer;
recNo: integer;
ds : TDataSet;
begin
ds := THackDBGrid(Form1.DBGrid1).DataSource.DataSet;

rowDelta := -1 + THackDBGrid(Form1.DBGrid1).Row;
row := ds.RecNo;

ds.Refresh;

with ds do
begin
DisableControls;
RecNo := row;
MoveBy(-rowDelta) ;
MoveBy(rowDelta) ;
EnableControls;
end;
end;