PDA

View Full Version : مشکل با wheel موس



hamid_isf_1360
پنج شنبه 22 شهریور 1386, 23:43 عصر
سلام بچه ها
من یک imageBoxداخل scrollBoxگذاشت
ولی چرا چرخ (wheel) روی آن جواب نمی ده

لطفا اگر کسی می دونه راهنمایی کنید.ممنونم

Will_Smith
جمعه 23 شهریور 1386, 01:41 صبح
آره فکر کنم راهی هم نداره برای حلش
من برای این کار از یه کامپوننت دیگه به همراه کد نویسی استفاده کردم
اگه از این روش میخاید استفاده کنید پیغام بدید تا کامپوننت و کد رو بدم:چشمک:

manvaputra
جمعه 23 شهریور 1386, 02:25 صبح
با سلام دوست عزیز scrollbox دو تا رویداد داره به اسم های MouseWheelUp و MouseWheelِDown به ترتیب کدهای زیر رو توی هر کدوم بنویس. فکر می کنم جواب بده برای من که جواب داده البته.

توی MouseWheelUpبنویس:

Handled := true;
ScrollBox1.ScrollBy(0, -1);و توی MouseWheelDowan بنویس:

Handled := true;
ScrollBox1.ScrollBy(0, 1);

hamid_isf_1360
جمعه 23 شهریور 1386, 19:29 عصر
متاسفانه به من جواب نداد
کسی هست بتونه به من کمک کنه

manvaputra
جمعه 23 شهریور 1386, 20:16 عصر
جالبه الان تست کردم با بقیه عناصر جواب می ده ولی با Timage نه!

hamid_isf_1360
شنبه 24 شهریور 1386, 00:30 صبح
از شما ممنونم جناب manvaputra (http://barnamenevis.org/forum/member.php?u=45274)
کسی هست بتونه مشکلمو حل کنه؟

Will_Smith
شنبه 24 شهریور 1386, 08:35 صبح
با سلام دوست عزیز scrollbox دو تا رویداد داره به اسم های MouseWheelUp و MouseWheelِDown به ترتیب کدهای زیر رو توی هر کدوم بنویس. فکر می کنم جواب بده برای من که جواب داده البته.

توی MouseWheelUpبنویس:

Handled := true;
ScrollBox1.ScrollBy(0, -1);و توی MouseWheelDowan بنویس:

Handled := true;
ScrollBox1.ScrollBy(0, 1);
کدی که نوشتی اصلا Scroll انجام نمیده

Will_Smith
شنبه 24 شهریور 1386, 08:48 صبح
توی MouseWheelUpبنویس:


ScrollBox1.VertScrollBar.Position:=ScrollBox1.Vert ScrollBar.Position-10;

و توی MouseWheelDowan بنویس:


ScrollBox1.VertScrollBar.Position:=ScrollBox1.Vert ScrollBar.Position+10;
برای TImage هم جواب نمیده چون قابل Focus شدن نیست
راهش اینه که یه کنترل قابل فوکس شدن رو توی ScrollBox استفاده کنی مثل یه Button

amirrf
شنبه 24 شهریور 1386, 09:43 صبح
می‌توانید ویژگی TabStop کامپوننت ScrollBox را True کنید و در OnClick کامپوننت Image نیز تمرکز را به ScrollBox ببرید: ScrollBox1.SetFocus

یک راه دیگر این است که کد را روی رخداد فرم بنویسید:

procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
if ControlAtPos(ScreenToClient(MousePos), False, True) = ScrollBox1 then
begin
ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position - WheelDelta div 10;
Handled := True;
end;
end;

manvaputra
شنبه 24 شهریور 1386, 12:41 عصر
کدی که نوشتی اصلا Scroll انجام نمیده
دوست عزیز سلام این ضمیمه با همون کد نوشته شده به راحتی هم scroll می کنه من نمی دونم چطور شما به این نتیجه رسیدید یه نگاه به ضمیمه بندارید اگه جواب نداد یه راهنمایی هم بکنید
یا حق

Will_Smith
شنبه 24 شهریور 1386, 13:16 عصر
دوست عزیز سلام این ضمیمه با همون کد نوشته شده به راحتی هم scroll می کنه من نمی دونم چطور شما به این نتیجه رسیدید یه نگاه به ضمیمه بندارید اگه جواب نداد یه راهنمایی هم بکنید
یا حق
توی همین برنامه ای که گذاشتید خاصیت AutoScroll رو True کنید ببینید برای چی Scroll رو انجام نمیده

manvaputra
شنبه 24 شهریور 1386, 14:15 عصر
سلام دوست عزیز این کارو کردم بازم جواب داد! فایل رو مجددا گذاشتم لطفا یه چک بکنید