1 ضمیمه
چطور می تونم متن یک کادر جستجو رو در برنامه دیگه دستکاری کنم؟
سلام و خدا قوت
من یه برنامه دارم که تکه هایی از متن کتاب رو لیست می کنه و یک برنامه کاری هم به ما داند که با اون می تونیم متن رو جستجو بدیم و ببینیم متن در قرآن کریم اومده یا نه؟
می خوام به کامپوننتی از نوع CCSuperEdit !!! که جستجو رو انجام میده متن رو ارسال کنم با SendMessage و WM_SetText نتونستم متن داخل کادر جستجو رو عوض کنم چون ربطی به محتوای کادر جستجو نداره.
با WM_Char تونستم عمل BackSpace رو شبیه سازی کنم ولی برنامم ندونه چقدر باید حرف به حرف محتوای کادر جستجو رو پاک کنه چندان به درد نمی خوره.
حالا سوال من اینه که چطور می تونم به ترتیب فشار این کلیدها رو به کادر جستجوی برنامه قرآن ارسال کنم؟:
Home
Shift+End
Delete یا BackSpace
البته من که چشم آب نمی خوره بشه از WM_KeyDown استفاده کرد چون من سعی کردم 'A' رو بهش ارسال کنم اتفاقی نیفتاد.
چطور می تونم بفهمم که پیامهایی که در یونیت Messages لیست شده چطور استفاده کنم؟
اگه بشه من می خوام Position یک TrackBar رو هم تو یه برنامه دیگه دستکاری کنم.
(الآن با ارسال پیغام فشار کلید راست و یا چپ می تونم ولی روش خنده داریه!!)
اگه ممکنه یه نگاهی به این برنامه بیندارین:(اصل برنامه مال برادر مجتبی تاجیکه!)
ضمیمه 85540
نقل قول: چطور می تونم متن یک کادر جستجو رو در برنامه دیگه دستکاری کنم؟
سلام
بعد از کلی جستجو یه چنین کدی پیدا کردم:
keybd_event(VK_SHIFT, 0, 0, 0);
PostMessage(EditHand,WM_KeyDown,36,0);
PostMessage(EditHand,WM_KeyDown,46,0);
ولی کلید Shift رو در حال فشرده حساب می کنه که باید با این کد درست بشه:
keybd_event(VK_SHIFT, 0,KEYEVENTF_KEYUP, 0);
ولی با کمال تعجب وقتی این یک خط رو به سطرهای بالا اضافه می کنم، کدهای قبلی هم بی تاثیر می شند!!
نقل قول: چطور می تونم متن یک کادر جستجو رو در برنامه دیگه دستکاری کنم؟
این کد رو هم امتحان کردم باعث میشه تنها یک کارکتر حذف بشه!:
Var
XKeyState, XNewKeyState: TKeyboardState;
Begin
GetKeyboardState(XKeyState);
XNewKeyState := XKeyState;
XNewKeyState[VK_SHIFT] := $81;
SetKeyboardState(XNewKeyState);
PostMessage(EditHand,WM_KeyDown,36,0);
PostMessage(EditHand,WM_KeyDown,46,0);
SetKeyboardState(XKeyState);
end;
نقل قول: چطور می تونم متن یک کادر جستجو رو در برنامه دیگه دستکاری کنم؟
باز هم سلام
application.ProcessMessages;
رو اضافه کردم مشکل حل شد!