کمک ساده وی بی

دایی محسن

Active Member
با سلام خدمت دوستان و اساتيد وي بي کار
يه چند تا مشکل کوچيک داشتم که اگه دوستان کمک کنن واقعاً ممنون مي شم

1- چطوري مي تونم يه عکسي رو که مي خوام به عنوان بکگراند فرمم باشه تکرار بشه يعني يه عکس با سايز کوچيک رو بندازم بعد تکرار بشه تا کل فرم رو بگيره الان فقط يه دونه مياد بقيش همون رنگ قبلي مي مونه

2- من يه فرم درست کردم که borderstyle رو به صورت نون يعني خالي قرار دادم حالا مي خوام بدونم چه طوري مي تونم يه نوار بالاي فرمم داشته باشم که با کليک و درگ کردن فرم جابه جا بشه يعني مثل فرم که معمولي که جابه جا مي شه

3- من يه فرم اصلي دارم با چند تا فرم کوچکتر که مي خوام وقتي فرم اصلي باز شد فرم هاي کوچکتر هم باز بشه من از دستور لود استفاده کردم اما وقتي برنامه اجرا مي شه فرم هاي کوچکتر زير فرم هاي بزرگتر مي ره مي خوام ببينم چطوري مي شه فرم هاي کوچتر رو باشه يعني مثل فتوشاپ يا همين وي بي که پنجر هاي مختلف تو خود قسمت اصلي وجود داره

با تشکر منتظر جواب هاتون هستم
 

EMIRATES

Active Member
جواب سوال 1 و 2 رو باید فکر کنم بگم ولی 3 رو میدونم

شما باید یه دونه فرم مادر (MDI FORM) بسازی تا موقع form_load بیان روی فرم اصلی.

با تشکر.
 

the_king

مدیرکل انجمن
سوال اول :
چطوري مي تونم يه عکسي رو که مي خوام به عنوان بکگراند فرمم باشه تکرار بشه يعني يه عکس با سايز کوچيک رو بندازم
بعد تکرار بشه تا کل فرم رو بگيره الان فقط يه دونه مياد بقيش همون رنگ قبلي مي مونه.
پاسخ سوال اول :
کد زیر را در رخداد Form_Paint اضافه کنید، تصویر را بصورت عادی در مشخصه Picture داخل Form قرار دهید :

کد:
Private Sub [B]Form_Paint[/B]()
    Dim X As Single, Y As Single
    Dim PatternWidth As Long, PatternHeight As Long
    PatternWidth = ScaleX(Picture.Width, vbHimetric, vbTwips)
    PatternHeight = ScaleY(Picture.Height, vbHimetric, vbTwips)
    For Y = 0 To Height Step PatternHeight
        For X = 0 To Width Step PatternWidth
            PaintPicture Picture, X, Y, PatternWidth, PatternHeight
        Next
    Next
End Sub

نمونه کد چنین برنامه ای ضمیمه این پست می باشد.

سوال دوم :
من يه فرم درست کردم که borderstyle رو به صورت نون يعني خالي قرار دادم حالا مي خوام بدونم چه طوري مي تونم يه نوار
بالاي فرمم داشته باشم که با کليک و درگ کردن فرم جابه جا بشه يعني مثل فرم که معمولي که جابه جا مي شه.
پاسخ سوال دوم :
در گفتگوی زیر نمونه ای از چنین فرمی ایجاد شده :

فرم با گوشه های گرد در Vb6

اما اگر قصد دارید از یک PictureBox یا Label یا Image یا هر کنترل دیگری برای ایجاد کردن آن ناحیه TitleBar فرم تان
استفاده کنید، کافیست کد زیر را در رخداد MouseDown آن کنترل اضافه کنید، مثلا :

کد:
Private Const HTCAPTION As Long = &H2
Private Const WM_NCLBUTTONDOWN As Long = &HA1

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

Private Sub [B]Picture1_MouseDown[/B](Button As Integer, Shift As Integer, X As Single, Y As Single)
    ReleaseCapture
    SendMessage Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
End Sub

کد کامل برنامه مربوط به سوال اول که یک Pattern در آن قرار داده شده به همراه فایل اجرایی exe ضمیمه این پست می باشد.
 

پیوست ها

  • Form Pattern.zip
    22.2 کیلوبایت · بازدیدها: 3

saalek110

Well-Known Member
من هم پاسخی برای سئوال یک پیدا کردم.

منبع:
http://patorjk.com/programming/tutorials/vb6codebank.htm
در قسمت:
Tile a Picture in the Background

یک picture به فرم بیافزایید. عکسی به آن نسبت دهید.
و کد:
کد:
Dim i As Integer, j As Integer
Private Sub Form_Load()
Me.AutoRedraw = True
Picture1.AutoSize = True
Picture1.BorderStyle = 0
Picture1.Visible = False ' we probably don't want this visible, right?
On Error Resume Next
For i = 0 To Me.ScaleWidth Step Picture1.ScaleWidth
    For j = 0 To Me.ScaleHeight Step Picture1.ScaleHeight
        Me.PaintPicture Picture1.Picture, i, j
    Next
Next
End Sub

در فرم لود کدها را داریم و یک خط کد هم در قسمت جنرال.

شاید بهتر باشد 3 تاپیک باز کنید برای 3 سئوال. دائی محسن اگر صلاح دونستید 3 تاپیک با عنوان مناسب باز کنید(همراه کلمه وی بی) بعد جناب the_king لطف کنند جوابها را تقسیم کنند. من هم این تاپیک را دیلت می کنم و لینک 3 تاپیک را در تاپیکهای سنجاق شده می زنم.
 

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

بالا