نمایش نتایج 1 تا 5 از 5

نام تاپیک: بدست آوردن موقعیت نشانگر ماوس بر روی کامپوننت

  1. #1
    کاربر دائمی آواتار persia_hrn
    تاریخ عضویت
    آذر 1390
    محل زندگی
    شیراز
    پست
    140

    بدست آوردن موقعیت نشانگر ماوس بر روی کامپوننت

    سلام به اساتید محترم
    میدونم که موقعیت نشانگر ماوس بر روی هر آبجکتی رو میشه در OnMouseMove اون و با متغیرهای X و Y به دست آورد.
    procedure TCustomControl.MouseMove(Sender: TObject; Shift: TShiftState; X,
    Y: Integer);
    begin
    Label1.Caption := IntToStr(x) + ' ' + IntToStr(y);
    end;


    من در حال نوشتن یه کامپوننت هستم که بدست آوردن موقعیت نشانگر ماوس بر روی کامپوننت برام مهم هست و نمیدونم چجور این کار رو انجام بدم .

    کسی میتونه کمکی بده ؟ ممنون از همه

  2. #2
    کاربر دائمی آواتار persia_hrn
    تاریخ عضویت
    آذر 1390
    محل زندگی
    شیراز
    پست
    140

    نقل قول: بدست آوردن موقعیت نشانگر ماوس بر روی کامپوننت

    سلام مجدد به همه عزیزان
    راهش رو پیدا کردم و با یه توضیح مختصر مینویسمش شاید یه جایی به درد کسی بخوره .
    در زمان نوشتن کامپوننت یه تایمر رو میسازیم و اجرای یه پروسیژر رو به رویداد OnTimer اون اختصاص میدیم .
    مثال :
    constructor T*****.Create(AOwner: TComponent);
    begin
    inherited Create(AOwner);
    FTimer := TTimer.Create(Self);
    with FTimer do begin
    Enabled := FALSE;
    Interval := 1;
    OnTimer := MousePositionControl;
    end;
    .
    .
    .


    بعد پروسیژر :

    procedure T*****.MousePositionControl(Sender:TObject);
    var
    P: TPoint;
    FMX, FMY: Word;
    begin
    P := Mouse.CursorPos;
    P := Self.ScreenToClient(P);
    FMX := P.x;
    FMY := P.y;
    .
    .
    .


    متغیرهای FMX , FMY موقعیت نشانگر ماوس روی کامپوننت در زمان اجرا رو برمیگردونن .

    ایشالا مفهوم بوده باشه توضیحاتم .

  3. #3

    نقل قول: بدست آوردن موقعیت نشانگر ماوس بر روی کامپوننت

    سلام. تایمر داخل کامپوننت فقط داره سرباره ایجاد می کنه، یک متد هست در کامپوننت های کنترل به نام MouseMove که می تونید اون رو اورراید کنید.
    بگردید دنبالش و اگه نبود حتما در کلاس بالاترش پیداش می کنید.
    اون رو در پروتکتد کلاس بنویسید و اوررایدش کنید.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  4. #4
    کاربر دائمی آواتار persia_hrn
    تاریخ عضویت
    آذر 1390
    محل زندگی
    شیراز
    پست
    140

    نقل قول: بدست آوردن موقعیت نشانگر ماوس بر روی کامپوننت

    با تشکر از شما جناب زالی
    اول بگم که این اولین کامپوننتی هست که دارم می نویسم و توی این زمینه خیلی مبتدیم .
    کامپوننتی که دارم مینویسم یک Image هست که از کلاس TGraphicControl مشتق شده و زمانی که در Protected کنترل MouseMove رو override میکنم ارور زیر نمایش داده میشه :
    Declaration of 'MouseMove' differs from previous declaration
    اگه اشتباه نکنم بخاطر اینه که توی کلاس TGraphicControl این کنترل تعریف نشده همچنین در کلاس بالاترش TControl هم تعریف نشده و در نهایت در کلاس بالاتر (TComponent) کنترل MouseMove به شکل زیر تعریف شده :
    procedure MouseMove(Shift: TShiftState; X, Y: Integer); dynamic;
    میخواستم ببینم راه صحیح تعریف کنترل MouseMove واسه کامپوننت من چیه ؟
    آیا اگه به شکل زیر تعریفش کنم صحیحه ؟
    procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE;
    ممنون میشم راهنماییم کنید ، مرسی


  5. #5

    نقل قول: بدست آوردن موقعیت نشانگر ماوس بر روی کامپوننت

    تقریبا هیچ وقت متدهای داینامیک یا ویرچوال رو دوباره تعریف نکنید.
    اروری هم که می ده مربوط به نبودن متد نیست، مربوط به اینه که چیزی که دارید تعریف می کنید با متد پایه ای که وجود داره فرق می کنه.
    تعریفتون رو درست انجام بدید.
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

تاپیک های مشابه

  1. مبتدی: بدست اوردن موقعیت یک توپ با بردن موس بر روی ان
    نوشته شده توسط sadeghmosavi539 در بخش C#‎‎
    پاسخ: 5
    آخرین پست: شنبه 17 آبان 1393, 23:11 عصر
  2. سوال: یه سوال پیش پا افتاده از موقعیت کامپوننت ها روی فرم
    نوشته شده توسط mbsmbsmbs در بخش C#‎‎
    پاسخ: 7
    آخرین پست: چهارشنبه 16 تیر 1389, 21:03 عصر
  3. سوال: پیدا کردن موقعیت مکانی موس بر روی فرم
    نوشته شده توسط MOR_MS در بخش Access
    پاسخ: 22
    آخرین پست: شنبه 14 آذر 1388, 14:06 عصر
  4. سوال: چطوری منوی راست کلیک ماوس برای کامپوننت فلش غیر فعال باشه؟
    نوشته شده توسط Mostafa_Sabeti در بخش کامپوننت های سایر شرکت ها، و توسعه کامپوننت
    پاسخ: 2
    آخرین پست: دوشنبه 11 آذر 1387, 10:23 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •