Mahmood_N
08-03-2008, 16:23
با سلام
حتما تا به حال از ActiveX فلش در دلفی استفاده کردید ، همونطور که میدونید این کامپوننت PopUp منوی مربوط به فلش رو حذف نمی کنه ، البته میشه از کامپوننتهای دیگه ای در این زمینه استفاده کرد این محدودیت رو از بین می برند اما روش ساده ای هست که این مشکل رو حل می کنه ...
...
حذف راست كليك از كامپوننت ShockWaveFlash :
هنگامي كه كليك راست موس در برنامه زده مي شود ، پيغام WM_RBUTTONDOWN به برنامه ارسال ميشود براي اين كه اين پيغام را خنثي نماييم ، از كامپوننت ApplicationEvents استفاده مي نماييم ...
اين كامپوننت رويدادي به نام OnMessage دارد كه در زمان ارسال پيغامي به برنامه اجرا مي شود ، در اين رويداد مي توانيم پيغامهاي ارسال شده را مديريت نماييم ...
هر پيغامي در برنامه به يكي از اشياء درون برنامه ارسال ميشود ، يعني گيرنده پيغام داراي يك Handle مشخص است ، پس براي اينكه پيغام راست كليك براي كامپوننت Flash را خنثي كنيم ، بايد چك كنيم كه آيا پيغام ارسال شده از نوع WM_RBUTTONDOWN است و همنطور آيا Handle گيرنده پيغام ارسال شده ، هندل كامپوننت Flash است يا نه و اگر جواب مثبت بود ، سپس پيغام را خنثي نماييم ...
اما خنثي كردن پيغام يعني چي ؟ و چگونه انجام مي شود ؟!
كامپوننت ApplicationEvents يك متد به نام CancelDispatch در اختيار دارد ، اگر اين متد فراخواني شود ، اجازه ي ارسال Message وارد شده به ساير اشياء در برنامه داده نمي شود ، پس بايد آن را فراخواني كنيم و در نهايت هم Handled مربوط به اين رويداد را True مينماييم :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در كد بالا ، Msg.Message مشخص كننده مقدار پيغام و Msg.Hwnd مشخص كننده Handle اي است كه پيغام به آن ارسال شده ، توجه كنيد كه نام كامپوننت Flash را در كد بالا " Flash " انتخاب كرديم ...
اين كد را در رويداد OnMessage يك ApplicationEvents قرار دهيد ...
امیدوارم مفید بوده باشه ...
موفق باشید ...
حتما تا به حال از ActiveX فلش در دلفی استفاده کردید ، همونطور که میدونید این کامپوننت PopUp منوی مربوط به فلش رو حذف نمی کنه ، البته میشه از کامپوننتهای دیگه ای در این زمینه استفاده کرد این محدودیت رو از بین می برند اما روش ساده ای هست که این مشکل رو حل می کنه ...
...
حذف راست كليك از كامپوننت ShockWaveFlash :
هنگامي كه كليك راست موس در برنامه زده مي شود ، پيغام WM_RBUTTONDOWN به برنامه ارسال ميشود براي اين كه اين پيغام را خنثي نماييم ، از كامپوننت ApplicationEvents استفاده مي نماييم ...
اين كامپوننت رويدادي به نام OnMessage دارد كه در زمان ارسال پيغامي به برنامه اجرا مي شود ، در اين رويداد مي توانيم پيغامهاي ارسال شده را مديريت نماييم ...
هر پيغامي در برنامه به يكي از اشياء درون برنامه ارسال ميشود ، يعني گيرنده پيغام داراي يك Handle مشخص است ، پس براي اينكه پيغام راست كليك براي كامپوننت Flash را خنثي كنيم ، بايد چك كنيم كه آيا پيغام ارسال شده از نوع WM_RBUTTONDOWN است و همنطور آيا Handle گيرنده پيغام ارسال شده ، هندل كامپوننت Flash است يا نه و اگر جواب مثبت بود ، سپس پيغام را خنثي نماييم ...
اما خنثي كردن پيغام يعني چي ؟ و چگونه انجام مي شود ؟!
كامپوننت ApplicationEvents يك متد به نام CancelDispatch در اختيار دارد ، اگر اين متد فراخواني شود ، اجازه ي ارسال Message وارد شده به ساير اشياء در برنامه داده نمي شود ، پس بايد آن را فراخواني كنيم و در نهايت هم Handled مربوط به اين رويداد را True مينماييم :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در كد بالا ، Msg.Message مشخص كننده مقدار پيغام و Msg.Hwnd مشخص كننده Handle اي است كه پيغام به آن ارسال شده ، توجه كنيد كه نام كامپوننت Flash را در كد بالا " Flash " انتخاب كرديم ...
اين كد را در رويداد OnMessage يك ApplicationEvents قرار دهيد ...
امیدوارم مفید بوده باشه ...
موفق باشید ...