View Full Version : چی کار کنیم کلید های Ctrl + V در یک Edit کار نکنه
محسن شمس
سه شنبه 10 آبان 1384, 13:36 عصر
منظورم اینه که کاربر چیزی نتونه Paste کنه در آن
Touska
سه شنبه 10 آبان 1384, 14:56 عصر
اگه می خواهی که توش نتونه تایپ کنه خوب readonly رو true کن.
محسن شمس
سه شنبه 10 آبان 1384, 22:27 عصر
ن من کادر متن را کاری کردم که فقط کاربر می توانه عدد وارد کنه حالا اگر یه رشته را از یه جا کپی کنه و بیاد C^+V
تو کادر متن بزنه
برای برنامه مشگل پیش میاد
اصلا ضایع میشه
Dolphin
چهارشنبه 11 آبان 1384, 09:56 صبح
دوست من بهتر از یک action list استفاده کنی و این کلید توش تعریف کنی
محسن شمس
چهارشنبه 11 آبان 1384, 12:26 عصر
دوست من بهتر از یک action list استفاده کنی و این کلید توش تعریف کنی
این چه کنترلی است ؟
oghab
چهارشنبه 11 آبان 1384, 17:04 عصر
ن من کادر متن را کاری کردم که فقط کاربر می توانه عدد وارد کنه حالا اگر یه رشته را از یه جا کپی کنه و بیاد C^+V
تو کادر متن بزنه
برای برنامه مشگل پیش میاد
اصلا ضایع میشه
سلام
به مورد جالبی اشاره کردی که تا بحال فکرشو نکرده بودم.
actionlist آخرین ابزار در palette استاندار است که وقتی روی فرم میذاری و روش دابل کلیک می کنی. در صفحه جدید کنار فلش new که راست کلیک کنی و گزینه new standard action میتونی action هایی که می خواهی واسه tedit کار بده را انتخاب کنی! که توش paste یا همون ctr+v هست که میشه انتخابش نکرد.
ولی بعد هر چی گشتم و فکر کردم نفهمیدم حالا این actionlist اینم action ها چطوری ربطش بدیم به edit مورد نظرمون، منم نفهمیدم!!!
mehdi_moosavi
چهارشنبه 11 آبان 1384, 17:50 عصر
یک فانکشن بنویسید که یه رشته رو بگیره و کاراکترهای غیر از 0 تا 9 رو از اون حذف کرده و حاصل رو برگردونه مثلا بنام A1
حالا هر جایی که میخواهید از Edit1.text استفاده کنید به جای اون از A1(Edit1.text)
استفاده کنید مثلا hf342 رو بگیره و 342 رو برگردونه
Hamid_PaK
پنج شنبه 12 آبان 1384, 05:57 صبح
براحتی می تونی Ctrl+V رو از کار بندازی ولی با کلیک راست و گزینه Paste چیکار می کنی ، بهتر هست تو کد نویسی از Val استفاده کنی و اطمینان پیدا کنی که ورودی عدد هست ...
یا حق !
محسن شمس
جمعه 13 آبان 1384, 11:36 صبح
براحتی می تونی Ctrl+V رو از کار بندازی ولی با کلیک راست و گزینه Paste چیکار می کنی ، بهتر هست تو کد نویسی از Val استفاده کنی و اطمینان پیدا کنی که ورودی عدد هست ...
کلیک راست را با کنترل popup menu کنترل می کنم و نمی ذارم اجرا بشه
محسن شمس
شنبه 28 آبان 1384, 11:31 صبح
به این مثال نگاه کنید
Developer Programmer
شنبه 28 آبان 1384, 12:55 عصر
از اینکه می بینم داری جستجو میکنی تا به هدفت برسی ، خوشحالم ... آفرین ...ادامه بده
در مورد کدی که گذاشتی ...
اول) طبق راهنمای دلفی ، رویداد OnKeyDown زمانی اتفاق می افته که هر کلیدی حتی کلیدهای Insert و F12 فشرده شوند. پس زمانی که می خواهید دو کلید Ctrl+v را چک کنید نمی توانید فقط با یک AND هر دو کلید رو همزمان چک کنید بلکه اول باید مثلا ctrl رو چک کنید و در رویداد بعدی اگر قبلا ctrl فشرده شده باشه و حال v فشرده شد است کاربر قصد Paste دارد...
دوم) کدی که گذاشتی فقط V را چک می کند و حالت v را در نظر نگرفته است
سوم) کلیدهای Shift+Insert هم کار Paste رو انجام می دن پس با key = vk_Insert باید insert رو هم تشخیص بدی.
چهارم) هیچوقت به خودت این اجازه رو نده که اطلاعات موجود در کلیپ بورد کاربر رو حذف کنی! بلکه می تونی در صورت تشخیص اینکه اطلاعات کلیپ بورد از نوع رشته است ، Key را برابر صفر کنی ...!
پنجم) می تونی فقط در صورتی که ctrl یا Insert فشرده شده باشدمحتوای کلیپ بورد را چک کنی و در نهایت Key را صفر کنی یعنی لزومی به Ctrl+V یا Shift+Insert نباشد.
ششم) به جای چک کردن همه این حالات می تونی قبل از پاس دادن رشته با دیتابیس ، رشته رو با یک حلقه for به راحتی پردازش کنی و کراکترهای غیرمجاز رو شناسایی کنی و به کاربر هشدار بدی... اینطوری CPU هم نفسی میکشه.
خوش باشی
mzjahromi
شنبه 28 آبان 1384, 13:17 عصر
می تونی هم برای کنترل محتوای Edit از onchange استفاده کنی اینجوری اگه به هر طریقی (حتی یه برنامه دیگه) مقدار Edit عوض بشه محتوای اون تصحیح می شه. فکر می کنم اینجوری کارت حتما راه بیفته.
Naficy
شنبه 28 آبان 1384, 21:12 عصر
اول) طبق راهنمای دلفی ، رویداد OnKeyDown زمانی اتفاق می افته که هر کلیدی حتی کلیدهای Insert و F12 فشرده شوند. پس زمانی که می خواهید دو کلید Ctrl+v را چک کنید نمی توانید فقط با یک AND هر دو کلید رو همزمان چک کنید بلکه اول باید مثلا ctrl رو چک کنید و در رویداد بعدی اگر قبلا ctrl فشرده شده باشه و حال v فشرده شد است کاربر قصد Paste دارد...
دوم) کدی که گذاشتی فقط V را چک می کند و حالت v را در نظر نگرفته است
با احترام،
اول) در پارامتر Shift وضعیت فعلی کلیدهای کنترل و شیفت و... برگردانده می شوند، بنابراین نیازی به چنین کاری نیست. (همون کد برنامه داده شده کار می کنه)
دوم) در این مورد هم لازم به ذکره که در OnKeyDown چیزی که در پارامتر Key ارسال می شود، Virtual Code کلید زده شده توسط کاربره. و اگر کلید "v" زده بشه بازهم همون "V" بزرگ برگردونده می شه.
babak869
یک شنبه 29 آبان 1384, 22:20 عصر
جالب بود آفرین اما با راست کلیک میشه درش کپی پیست کرد به فکر اونم باش که نزاری کاربر با راست کلیک کپی کنه
موفق باشید
ماریا وکیلی
دوشنبه 30 آبان 1384, 00:07 صبح
خوب اونم میشه دور زد
میدونی باید چی کار کرد
یه PopupMenu روی فرم قرار میدهی
بعد خاصیت PopupMenu ، کادرمتن Edit1 را قرار میدهی PopupMenu1
OK
این جوری راست کلیک هم نمی تواند بکند
محمد علی رنجبر
یک شنبه 09 بهمن 1384, 03:29 صبح
می تونی از این دستور نیز استفاده کنی ، البته در رویداد مربوط به صفحه کلید
;if (key='v') then key:='0
در این صورت هر وقت کاربر کلید v را بزند ، حرف صفر و یا هر حرف دیگری جایگزین آن می شود و عمل copy یا paste اتفاق نمی افتد
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.