PDA

View Full Version : مکان نما در جعبه متن



مسعود م
شنبه 19 مهر 1382, 00:05 صبح
با سلام.
چطور می توان Cursor را در یک TextBox کنترل کرد ؟
یعنی بجای اینکه وقتی یک جعبه متن GotFocus می شود بجای اینکه مکان نما به آخر متن منتقل شود کاری کرد که به انتهای متن منتقل شود ؟

با تشکر.

کم حوصله
شنبه 19 مهر 1382, 01:39 صبح
در رویداد got focus ان این را بنویس


sendkeys "{home}"

در صورتی هم که خواستی کل نوشته داخل جعبه مارک شود این را بنویس


sendkeys "{home} + {end}"

مسعود م
سه شنبه 22 مهر 1382, 21:12 عصر
ممنون .
همان روش بدون API یعنی خاصیت (TextName.SelStart) هم جواب داد . از راهنماییهای بیشتر شما ممنونم.
کوچیک شما .

( امّا پاسخ دوست دیگرمان را در مورد توابع API در مورد Caret امتحان کردم ( SetCaretPos ) ولی این تابع فقط ظاهر مکان نما را تغییر می دهد و وقتی کاربر شروع به نوشتن کند به محل اصلی برمی گردد و در آنجا شروع به نوشتن می کند )

ممنون از همه . :)

Voldemort
پنج شنبه 24 مهر 1382, 10:16 صبح
لطفا شما کد زیر را در یک فرمی قرار دهید که یک TextBox با نام Text1 روی آن و کلی متن درون آن قرار دارد و نتیجه را ببینید.


Option Explicit

Private Declare Function GetCaretPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function SetCaretPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long

Private Type POINTAPI
X As Long
Y As Long
End Type

Private Sub Text1_LostFocus()
Dim myPoint As POINTAPI

GetCaretPos myPoint
MsgBox CStr(myPoint.X) + "*" + CStr(myPoint.Y)
End Sub

Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
SetCaretPos 29, 1
End Sub

مسعود م
شنبه 26 مهر 1382, 18:08 عصر
جناب کنت باور کن باز هم نشد نه در 98 و نه در XP یا من منظورم را خوب نرساندم

یا من خبر ندارم
یا او نشان ندارد

باور ندارید با همین برنامه خودتان بعد از MouseMove روی Text1 کاراکتری را تایپ کنید
خواهید دید که کاراکتر مربوطه در مکان قبلی مکان نما ( و نه در محلی که مکان نما بعد از MouseMove به آنجا منتقل شده ) نوشته می شود .
قربان شما. :idea: