کدی برای اتوماتیک کردن مولتی لاین

kemiaonline

Banned
سلام
من یه کد برای کامند یک میخوام وقتی روی کامند یک کلیک میکنم اون دستگیره ی تکست یک به طور اتوماتیک بره پایین
دستگیره:
مثلا" وقتی بیش از ده خط تو یه تکست تایپ میکنیم با استفاده از اون دستگیره ی ابی رنگ میتونیم متن قسمت بالا و پایین روببینیم
 

kemiaonline

Banned
اسم علمی اون دستگیره هم فکر کنم اسکرول هست
اگه فهمیدین کدوم دستگیره رو میگم جوابمو بدین
ممنون
 

the_king

مدیرکل انجمن
با استفاده از مشخصه SelStart می توانید موقعیت ScrollBar را هم تعیین کنید :
کد:
    Text1.[B]SelStart[/B] = Len(Text1.Text)
 

kemiaonline

Banned
اما متااسفانه کدی که شما نوشتید یک ایراد داره
اونم اینکه دستگیره رو به اخرین خط میبره درصورتی که من میخوام از خط اول اروم اروم رو به پایین بره
راستش من از طریق حلقه ی for....next یه برنامه نوشتم وقتی روی کامند یک کلیک میکنم حدود صد تا حرف l مینویسه
و اگه این دستگیره اتوماتیک پایین بره ( نه اینکه یه دفعه بره خط اخر ) ادم فکر میکنه توی تکست یک داره بارون میباره
ممنون میشم جواب بدین
 

the_king

مدیرکل انجمن
برای جابجا کردن موقعیت ScrollBar بدون توجه به موقعیت مکان نمای (Cursor) داخل TextBox بایستی
پیغام EM_SCROLL را به آن ارسال کنید.

تابع SendMessage که در API ویندوز قرار دارد پیغام را به کنترل TextBox ارسال خواهد کرد.
کد زیر مشخصات تابع SendMessage و مقدار پارامترهای EM_SCROLL را تعریف می کند :
کد:
Private Const EM_SCROLL As Long = &HB5
Private Const SB_LINEDOWN As Long = 1
Private Const SB_LINEUP As Long = 0
Private Const SB_PAGEDOWN As Long = 3
Private Const SB_PAGEUP As Long = 2

Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long

با اضافه کردن کد بالا در ابتدای کد های فرم، آنرا برای بکارگیری تابع مورد نظر آماده کنید.
اکنون فرض کنیم که دکمه ای به نام Command1 روی فرم قرار دارد که با کلیک کردن روی آن قرار است ScrollBar درون
Text1 به اندازه یک سطر به سمت پایین حرکت کند. کد زیر این عمل را انجام می دهد :
کد:
Private Sub Command1_Click()
    SendMessage Text1.hWnd, EM_SCROLL, [B]SB_LINEDOWN[/B], ByVal 0&
End Sub
اگر SB_LINEDOWN را با SB_LINEUP تعویض کنید، حرکت ScrollBar به سمت بالا (یک سطر) خواهد بود.
بطور مشابه مقادیر SB_PAGEDOWN و SB_PAGEUP برای حرکت به اندازه یک صفحه (نه یک سطر) کاربرد دارند.
 

saalek110

Well-Known Member
هیچ خطایی نمی دهد. دقت کنید.
-------------------------------------

یک باتون و تکست باکس به فرم بیافزایید.
کد بالا را اضافه کنید.
صفت مولتی لاین تکست باکس را روشن کنید و صفت اسکرول بارز تکست باکس را هم ورتیکال بگیرید.

نتیجه اجرا : با هر بار زدن باتون یک ردیف تکست باکس اسکرول می شود.
 

kemiaonline

Banned
بله امتحان کردم
و درسته خطا نداد
اما بازم مشکل داشت
اونم اینه که من خواستم وقتی کاربر روی کامند یک یکبار کلیک کرد یه شکل بارانی رو در تکست باکس ببینه
اما این برانه به اینصورتته که کاربر باید به تعداد دفعات خیلی زیاد روی کامند کلیک کنه
تازه تیکه ایکه اسکرول بار پایین میره و روان نیست
خواهشن کد رو درست کنید
 

kemiaonline

Banned
ببینید تا من بهتر توضیح بدم
یه باتون درست کنید و یک تکست البته خاصیت مولتی لاین و اسکرول بار رو هم فعال کنید
اسکرول بار رو روی ورتیکال بزارید
روی باتون یک کد زیر رو بنویسید
For i = 0 To 100 Step 1
Text1.Text = Text1.Text + " l " l "
Next i

حالا چندیدن بار روی باتون یک کلیک کن که تکست یک پر از حرف L بشه به شکل زیر

2rwaqde.gif
 

جدیدترین ارسال ها

بالا