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

نام تاپیک: Component Programing

  1. #1
    کاربر دائمی آواتار MH2538
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    No Man Land
    پست
    537

    Component Programing

    سلام
    برای کنترل کلیه event های ماوس برای چند image در یک کامپننت چه راه حلی دارید ؟
    برای توضیح بیشتر . :
    فرض کنید روی یک کامپننت که از کلاس Panel به ارث برده شده است بخواهید 3 تا Imageقرار دهید . و نیاز به کنترل کردن کلیه event های ماوس روی آن image ها داشته باشید . برای حل این موضوع چه می کنید

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1383
    محل زندگی
    اصفهان
    پست
    50
    یک می نویسیم و کارهایی را که می خواهیم انجام دهد را در ان قرار می دهیم و سپس به eventهایی که می خواهیم یک کار انجام دهند این تابع را نسبت می دهیم. بطور مثال :

    ;procedure sayhello
    begin
    ;('showmessage('salam
    ; end
    حال این تابع را به تمام eventهای onmousedown نصبت می دهیم.
    البته نمی دانم این روش تا چه حد کار ساز است لطفا نقد کنید.

  3. #3
    کاربر دائمی آواتار MH2538
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    No Man Land
    پست
    537
    سلام دوست عزیز
    ببینید وقتی شما کامپننت می نویسید . در حالت عادی فقط event های self (خود کامپننت و نه اشیاء داخل آن) قابل دسترس است . د رمورد مثال شما مشکل این است که ما نمی دانیم چه event ای و از طرف چه object ای رخ داده است بنا براین نمی توانیم ان را فراخوانی نمائیم

  4. #4
    کاربر دائمی
    تاریخ عضویت
    دی 1382
    محل زندگی
    پشت كامپيوتر
    پست
    381
    با سلام
    یک نوع داده رویه ای با همان پارامترها در رویه مورد نظر بنویس سپس یک رویه با نام دلخواه بنویس بعد در Construct
    مثلا
    FImage1.onclick:=Proc;
    FImage2.onclick:=Proc
    ...

    فقط آرگومانهای تابع Proc با Onclick حتما باید یکی باشد
    موفق باشی
    end.

  5. #5
    کاربر دائمی آواتار MH2538
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    No Man Land
    پست
    537
    سلام دوست عزیز
    شاید من متوجه روش شما نشدم .
    اما تا آنجا که من می دانم و همانطور که گفتم شما فقط فراخوانی event های self را شاهد خواهید بود . به عبارتی (برای مثال ) شما اصلا متوجه کلیک شدن روی image ای که در پانل کامپننت خود قرار داده اید نمی شوید تا بخواهید آن را با نوع داده ای که شما فرموده بودید مدیریت کنیم .
    ضمنا اگر برای شما ممکن است یک نمونه کوچک را که عملا کار می کند در کنار پاسخ خود قرار دهید تا من و دیگران هم از آن بهره ببریم .
    بماند . پاسخ هر سئوال را 7 تا 10 روز بعد (در صورتی که جواب صحیحی داده نشده باشد ) همراه با یک فایل نمونه در همان بخش قرار می دهم .
    موفق باشید

  6. #6
    کاربر دائمی آواتار SReza1
    تاریخ عضویت
    تیر 1382
    محل زندگی
    کنار تعدادی تراریوم و کاکتوس!
    پست
    702

    جواب

    من این کد رو از برای یک Image نوشتم. میشه برای n تا Image نوشت. (کد رو از قسمتی از کامپوننتهای خودم تغییر دادم)
    کل Propertyها و رفتار این کامپوننتو ننوشتم(مثل Destructor و ... که معمولا همه دارند)
    در این کد با یاجاد یک Property بنام Image1 و ظاهر شدن Combo براس آون میشه یک Image رو انتخاب کرد و کارهای مربوطه رو انجام داد. :shock:
    من شبیه این کامپوننتو برای یک لیست باکس نوشتم

     TMyPanel = class(TPanel)
    private
    FImage : TImage;
    public
    { Public declarations }
    procedure ImageMouseDown(Sender: TObject; Button:TMouseButton;Shift: TShiftState;X, Y: Integer);
    procedure ImageMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState;X, Y: Integer);
    Procedure ImageMouseMove (Sender: TObject; Shift: TShiftState; X,Y: Integer);
    published
    { Published declarations }
    property Image1 : TImage Read FImage Write SetFImage;
    End;

    ///////////تعریف رویدادها اینجا انجام میشه////////////////
    procedure TMyPanel.ImageMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
    begin
    ////////////// Your Code For MouseDown/////////////
    end;

    procedure TMyPanel.ImageMouseUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
    begin
    ////////////// Your Code For MouseUp/////////////
    end;

    Procedure TMyPanel.ImageMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
    begin
    ////////////// Your Code For MouseMove/////////////
    end;

    ///////////ربط رویدادها اینجا انجام میشه////////////////
    procedure TMyPanel.SetFImage(MyImage,Value : TImage);
    Begin
    FImage := Value;
    FImage.OnMouseDown:= ImageMouseDown;
    FImage.OnMouseMove:= ImageMouseMove;
    FImage.OnMouseUp := ImageMouseUp;
    End;

  7. #7
    کاربر دائمی آواتار MH2538
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    No Man Land
    پست
    537
    So Good- really good
    سلام
    این دقیقا یکی از روش هاست.
    روش دومی هم می مونه که یه کم مشکل تره که اون رو هم چون مسئه حل شده خودم با اجازه تون فردا می ذارم در همین بخش.

  8. #8
    کاربر دائمی آواتار SReza1
    تاریخ عضویت
    تیر 1382
    محل زندگی
    کنار تعدادی تراریوم و کاکتوس!
    پست
    702
    روش دوم هم اجازه بده بگم
    اینکه شما Image رو بصورت دستی در Componnet بسازید(Create کنید). یعنی در Constructor این کار رو بکنید و در destructor اونو free کنید. که البته هر کدوم بستگی به جاش میشه استفاده کرد :shock:

  9. #9
    کاربر دائمی آواتار MH2538
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    No Man Land
    پست
    537
    سلام
    مسئله که حل شد
    فقط اگه فکر می کنین sample لازم داره بگین تا من یه نمونه کامل و کوچک رو بذارم وگرنه هم که تا سئوال بعد خداحافظ
    موفق باشین

  10. #10
    سلام و خسته نباشید :flower:
    اگه لطف کنید ممنون میشم من هم تازه کارم هم تازه وارد :oops:

  11. #11
    سلام
    اگه فکر می کنین sample لازم داره بگین تا من یه نمونه کامل و کوچک رو بذارم
    اگه ممکنه این کار رو بکنید.
    خیلی ممنون می شم.
    :flower:

  12. #12
    من یک سوال دارم
    چه توری به Image1 دو رویداد cm_mouselave و cm_mouseenter اضافه کنم؟

  13. #13
    کاربر دائمی آواتار MH2538
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    No Man Land
    پست
    537
    سلام من حدود یک ماهی دسترسی به اینترنت نداشتم .اگه جواب ندادم به حساب بدقولی نذارین
    ولی چشم من سریعا اون sample رو میذارم و به سئوال این دوستمون هم جواب میدم .
    فعلا خدانگهدار

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

  1. چند سوال در مورد socket programing
    نوشته شده توسط ARA در بخش WCF , Web Services , .Net Remoting
    پاسخ: 6
    آخرین پست: شنبه 17 فروردین 1392, 23:09 عصر
  2. دنبال چنتا API هستم (Programing Sysytem)
    نوشته شده توسط sunboy در بخش برنامه نویسی در 6 VB
    پاسخ: 16
    آخرین پست: سه شنبه 06 مرداد 1383, 17:55 عصر

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

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