ورود

View Full Version : حرکت بین عناصر بانک با حرکت نوار لغزنده



as13851365
سه شنبه 01 مرداد 1387, 10:24 صبح
من در یک فرم یک جدول DBGrid قرار دادم که این جدول شامل چندین رکورد است .

یک منوی جستجو هم برای جدول قرار دادم که کاربر با استفاده از این منو داده ها رو فیلتر می کنه .

وقتی که داده ها در جدول قرار دارند و جدول هم دارای Scrol است حالا اگر کاربر بخواهد از اول جدول تا آخر جدول را ببینه باید با کلید های جهتی و یا کلید Page Up و Page Down و یا Home و End بین داده ها حرکت کند

در صورتی که DBGrid دارای نوارلغزنده Scrol می باشد وقتی که کاربر بخواهد از این نوار (Scrol) استفاده کند نتیجه ای نمی گیرد یعنی وقتی که کاربر Scrol مربوط به DBGrid را کلیک کرده و پایین و بالا می کشد نمی تونه بین رکورد ها جابه جا بشه صفحه ثابت است و وقتی که کاربر کلیک موس را رها کرد رکورد های مربوط به آن قسمت نمایش داده می شود


http://i38.tinypic.com/dfk0sh.png


در کل می خوم کاربر با استفاده از نوار لغزنده جدول بین رکورد های جدول جابه جا بشه

در ضمن چطوری می تونم با Mouse Button ( چرخ وسط موس ) هم بین رکورد ها جابه جا شم

Hsimple11
سه شنبه 01 مرداد 1387, 12:12 عصر
چطوری می تونم کاری کنم که وقتی که کاربر در DBGrad نوار لغزنده را کلیک کرده و بالا پایین می برده رکورد ها هم حرکت کنند یعنی جابه جا بشن
یعنی وقتی که کاربر نوار لغزنده را می گیره و می گشه پایین رکورد های موجود در جدول DBGrad هم حرکت کنند و به آخر برند ؟

منظورتون اینه که تمام رکوردها در DBGRID به پایین بیایند؟ یعنی رکوردهای بعد از اونا رو ما هیچ وقت نمیبینیم؟

as13851365
چهارشنبه 02 مرداد 1387, 07:58 صبح
منظورتون اینه که تمام رکوردها در DBGRID به پایین بیایند؟ یعنی رکوردهای بعد از اونا رو ما هیچ وقت نمیبینیم؟

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

Hsimple11
چهارشنبه 02 مرداد 1387, 11:15 صبح
در ضمن چطوری می تونم با Mouse Button ( چرخ وسط موس ) هم بین رکورد ها جابه جا شم

سایت Delphi.About : یک کنترل ApplicationEvents از نب Additional بر روی فرم خود قرار دهید و در رویداد OnMessage آن بنویسید :


var
i: SmallInt;
begin
if Msg.message = WM_MOUSEWHEEL then
begin
Msg.message := WM_KEYDOWN;
Msg.lParam := 0;
i := HiWord(Msg.wParam) ;
if i > 0 then
Msg.wParam := VK_UP
else
Msg.wParam := VK_DOWN;

Handled := False;
end;
end;

as13851365
پنج شنبه 03 مرداد 1387, 09:44 صبح
خوب مشکل Mouse wheel حل شد

برای مشکل درک کردن نوار Scrol مربوط به جدول DBGrid چه پیشنهادی دارید ؟

یعنی
در صورتی که DBGrid دارای نوارلغزنده Scrol می باشد وقتی که کاربر بخواهد از این نوار (Scrol) استفاده کند نتیجه ای نمی گیرد یعنی وقتی که کاربر Scrol مربوط به DBGrid را کلیک کرده و پایین و بالا می کشد نمی تونه بین رکورد ها جابه جا بشه برای حل این مشکل چه راه حلی را پیشنهاد می کند ؟

as13851365
جمعه 04 مرداد 1387, 08:25 صبح
کسی کدی کامپوننتی چیزی در این باره نداره؟

as13851365
سه شنبه 08 مرداد 1387, 09:19 صبح
دوست خوبم آقا فرهاد در لینک زیر جواب رو دادند
http://forum.p30world.com/showthread.php?p=2717249

گفتم جواب رو در این جا هم قرار بدم شاید یکی بعد ما هم دنبال یه همچین چیزی بود
اين هم راه حل مشكل شما:
در قسمت private:


OldGridProc: TWndMethod;
procedure GridWindowProc(var Message: TMessage);





procedure TForm1.FormCreate(Sender: TObject);
begin
OldGridProc := DBGrid1.WindowProc;
DBGrid1.WindowProc := GridWindowProc;
end;

procedure TForm1.GridWindowProc(var Message: TMessage);
var
Pos: SmallInt;
begin
OldGridProc(Message);
if Message.Msg = WM_VSCROLL then
begin
Pos := Message.WParamHi;
Table1.RecNo := Pos;
end;
end;