PDA

View Full Version : سوال در مورد برخی خصوصیات picturebox



modirmasool
یک شنبه 10 مرداد 1389, 22:11 عصر
سلام خسته نباشین.
اگه میشه خواص زیر که برای picturebox هست رو یه توضیحی بدین. ممنون.
1-Negotiate
2-CausesValidation
3-ClipControls
4-PaintPicture
5- font (مگه تو پیکچرباکس نوشته میشه گذاشت؟)
6-HasDC
7-LinkItem

وای چی همه شد!!!:خجالت:
بقیش رو بعدا می پرسم.:لبخند:

بازم پیشاپیش ممنون.

vbnovin
دوشنبه 11 مرداد 1389, 09:01 صبح
بله در pictuerbox نوشته که هیچی انمیشن و انواع کارها صورت پذیر است . شما با دستکاری پیکسلها به این منظور خواهید رسید حتی میتونیددر تصویرتان مانند افکتهای فتوشاپ تغییرات ایجاد کنید . و همچنین با همین روش نقشه سه بعدی رسم کنید ..
در ضمن همین فتوشاپ با سورس vb نوشته شده البته بنده سورسش را هم دارم ولی نمی دونم که کجا ست ......

modirmasool
دوشنبه 11 مرداد 1389, 12:42 عصر
بله در pictuerbox نوشته که هیچی انمیشن و انواع کارها صورت پذیر است . شما با دستکاری پیکسلها به این منظور خواهید رسید حتی میتونیددر تصویرتان مانند افکتهای فتوشاپ تغییرات ایجاد کنید . و همچنین با همین روش نقشه سه بعدی رسم کنید ..
در ضمن همین فتوشاپ با سورس vb نوشته شده البته بنده سورسش را هم دارم ولی نمی دونم که کجا ست ......

میشه نحوه ی قرار دادن تکست رو توضیح بدین؟

راستی ببخشین ها ولی به نظرم در مورد فتوشاپ اشتباه میکنین. بله با ویبی میشه برنامه ی ترسیم و... درست کرد ولی نه دیگه فتوشاپ اونم با سورسش!

shedayat
دوشنبه 11 مرداد 1389, 14:09 عصر
بله در pictuerbox
در ضمن همین فتوشاپ با سورس vb نوشته شده البته بنده سورسش را هم دارم ولی نمی دونم که کجا ست ......

:متعجب::متعجب::متعجب::متعجب:: تعجب::متعجب::متعجب::متعجب::م عجب:
جااااااااااااان!!!!

فتوشاپ با وی بی نوشته شد!!!!؟؟؟
وی بی هم عجب قدرتی داشت ها ما خبر نداشتیم!!! :لبخند:

modirmasool
دوشنبه 11 مرداد 1389, 21:05 عصر
:گریه:حالا از بحث خارج نشین. خواهشا یکی جواب سوالات ما رو بده دیگه.

skh1300
سه شنبه 12 مرداد 1389, 12:09 عصر
در ضمن همین فتوشاپ با سورس vb نوشته شده البته بنده سورسش را هم دارم ولی نمی دونم که کجا ست ......
یه چیز بگو با عقل جور در بیاد (یه سری به سایت adobe بزن):قهقهه:

vbhamed
سه شنبه 12 مرداد 1389, 12:22 عصر
سلام
لطفا هر سؤال رو تو يك تاپيك بپرسيد
من هم تو هر پست يك مورد رو جواب مي دم

CausesValidation

بعضي ابزارها مانند TextBox متدي به نام Validate دارند كه خيلي مفيده و ميشه قبل از خروج از TextBox هر چيزي رو چك كرد مثلا اينكه مقدار وارد شده در اون صحيح است يا خير

فرض كنيد در قسمتي از برنامه، كاربر بايد عددي بين 1 تا 10 رو وارد كنه

يك TextBox روي صفحه بزاريد
اين دستورات رو بنويسيد

Private Sub Text1_Validate(Cancel As Boolean)

If Val(Text1) < 1 Or Val(Text1) > 10 Then
Cancel = True
MsgBox "Error : Enter 1...10"
End If

End Sub


حالا اگر كاربري چيزي يا عددي غير از محدوده 1 تا 10 وارد كنه نمي تونه از TextBox خارج بشه و روي كنترل ديگه اي بره !
اما اگر خاصيت CausesValidation مثلا يك دكمه رو False كنيم فقط روي اون دكمه خاص مي تونه بره
البته نمي تونيد كلك بزنيد و از اون دكمه روي جايي ديگه بريد چون برمي گرده روي TextBox !!!

vbhamed
سه شنبه 12 مرداد 1389, 12:23 عصر
ClipControls

اين دستورات رو بنويسيد

Private Sub Form_Paint()

BackColor = &HFFFFFF * Rnd

End Sub

وقتي فرم از صفحه خارج ميشه، بزرگ و كوچك ميشه يا فرمي روي فرم ما مياد و بعد ميره، رويداد Paint اتفاق ميفته
حالا برنامه رو اجرا و با ماوس فرمتون رو از صفحه مانيتور خارج و وارد كنيد يا اينكه اون رو Maximize و Normal كنيد

اين بار خاصيت ClipControl رو False و همون كار رو تكرار كنيد

خودتون همه چي رو مي بينيد

در حقيقت اين دستور تعيين مي كنه وقتي روي فرم به هر دليل پوشانده شد يا قسمتي يا كل فرم مخفي شد و بعد ظاهر شد تمام فرم دوباره رسم بشه يا همون قسمت
در مورد همه كنترلهاي داراي اين خاصيت همينطوره

vbhamed
سه شنبه 12 مرداد 1389, 12:23 عصر
PaintPicture

با اين دستور مي تونيد تصوير درون يك پيكچرباكس يا فرم رو روي همون پيكچر باكس يا فرم يا پيكچر و فرم ديگه رسم كنيد، ضمن اينكه ميشه سايزش رو هم به دلخواه تغيير داد
روي يك فرم يك عكس به اندازه تمام صفحه بزاريد و دو تا پيكچر باكس با سايز 4500 * 3000 هم بزاريد و خاصيت AutoRedraw اونها رو True كنيد بعد دستورات زير بنويسيد


Private Sub Form_Load()

Picture1.PaintPicture Me.Image, 0, 0, 4000, 2000, 0, 0, 16000, 8000
Picture2.PaintPicture Me.Image, 0, 0, 4000, 2000, 0, 0, 2000, 1000

End Sub

vbhamed
سه شنبه 12 مرداد 1389, 12:25 عصر
Font

اين خاصيت فونت PictureBox رو تعيين مي كنه
بله ميشه هم تو پيكچر هم تو فرم نوشته گذاشت
يك پيكچر بزاريد و خاصيت AutoRedraw رو True كنيد


Private Sub Form_Load()

Picture1.DrawWidth = 4
Picture1.Line (1000, 1000)-(2000, 200), vbMagenta
Picture1.PaintPicture Me.Image, 0, 0, 4000, 2000, 0, 0, 16000, 8000
Picture2.PaintPicture Me.Image, 0, 0, 4000, 2000, 0, 0, 2000, 1000
Picture1.ForeColor = vbRed
Picture1.Font.Name = "tahoma"
Picture1.Font.Size = 30
Picture1.CurrentX = 800
Picture1.CurrentY = 100
Picture1.Print "This is a test"

Picture1.DrawWidth = 4
Picture1.Circle (1000, 1000), 600, vbYellow

Picture1.DrawWidth = 4
Picture1.Line (1000, 1000)-(2000, 200), vbMagenta

End Sub

vbhamed
سه شنبه 12 مرداد 1389, 12:25 عصر
HasDC

كاربرد اين خاصيت يك مقدار تخصصي است
تعيين مي كند كه آيا ويندوز به اين پيكچر باكس يك زمينه منحصر به فرد اختصاص دهد تا با توابع API بتوان روي اين پيكچر چيزي رسم كرد يا خير
زمينه هم يعني فضايي است در حافظه مشابه مستطيلي به اندازه پيكچر باكس مورد نظر كه اطلاعات مربوط به چيزهاي رسم شده درون پيكچر توسط توابع API رو در خودش نگه مي داره

vbhamed
سه شنبه 12 مرداد 1389, 12:26 عصر
LinkItem

براي برقراري ارتباط بين دو برنامه مختلف استفاد ميشه
يك TextBox و يك دكمه روي فرم بزاريد
دستورات زير رو بنويسيد


Private Sub Command1_Click()

Dim CurRow As String

Static Row ' Worksheet row number.

Row = Row + 1 ' Increment Row.

If Row = 1 Then ' First time only.

' Make sure the link isn't active.
Text1.LinkMode = 0
' Set the application name and topic name.
Text1.LinkTopic = "Excel|Sheet1"
Text1.LinkItem = "R1C1" ' Set LinkItem.
Text1.LinkMode = 1 ' Set LinkMode to Automatic.

Else

' Update the row in the data item.
CurRow = "R" & Row & "C1"
Text1.LinkItem = CurRow ' Set LinkItem.

End If


End Sub


نرم افزار اكسل رو اجرا كنيد و در ستون اول سطر اول تا مثلا دهم هر چي دلتون خواست بنويسيد
برنامه رو اجرا كنيد و به طور مداوم روي دكمه كليك كنيد و TextBox رو ببينيد


تو دستورات بالا منظور از R1 سطر يكم و منظور از C1 ستون يكم در شيت اكسل مي باشد
در كدهاي بالا برنامه با اولين شيت از فايل باز شده در نرم افزار اكسل مرتبط شده و اطلاعات ستون اول رو به ترتيب نمايش ميده

modirmasool
سه شنبه 12 مرداد 1389, 14:15 عصر
ClipControls

اين دستورات رو بنويسيد

Private Sub Form_Paint()

BackColor = &HFFFFFF * Rnd

End Sub

وقتي فرم از صفحه خارج ميشه، بزرگ و كوچك ميشه يا فرمي روي فرم ما مياد و بعد ميره، رويداد Paint اتفاق ميفته
حالا برنامه رو اجرا و با ماوس فرمتون رو از صفحه مانيتور خارج و وارد كنيد يا اينكه اون رو Maximize و Normal كنيد

اين بار خاصيت ClipControl رو False و همون كار رو تكرار كنيد

خودتون همه چي رو مي بينيد

در حقيقت اين دستور تعيين مي كنه وقتي روي فرم به هر دليل پوشانده شد يا قسمتي يا كل فرم مخفي شد و بعد ظاهر شد تمام فرم دوباره رسم بشه يا همون قسمت
در مورد همه كنترلهاي داراي اين خاصيت همينطوره


این &HFFFFFF چیه؟

modirmasool
سه شنبه 12 مرداد 1389, 14:23 عصر
PaintPicture

با اين دستور مي تونيد تصوير درون يك پيكچرباكس يا فرم رو روي همون پيكچر باكس يا فرم يا پيكچر و فرم ديگه رسم كنيد، ضمن اينكه ميشه سايزش رو هم به دلخواه تغيير داد
روي يك فرم يك عكس به اندازه تمام صفحه بزاريد و دو تا پيكچر باكس با سايز 4500 * 3000 هم بزاريد و خاصيت AutoRedraw اونها رو True كنيد بعد دستورات زير بنويسيد


Private Sub Form_Load()

Picture1.PaintPicture Me.Image, 0, 0, 4000, 2000, 0, 0, 16000, 8000
Picture2.PaintPicture Me.Image, 0, 0, 4000, 2000, 0, 0, 2000, 1000

End Sub




میشه آرگوماناشو توضیح بدین و اینکه خاصیت picture فرم با image اش فرقی داره؟

modirmasool
سه شنبه 12 مرداد 1389, 14:35 عصر
LinkItem

براي برقراري ارتباط بين دو برنامه مختلف استفاد ميشه
يك TextBox و يك دكمه روي فرم بزاريد
دستورات زير رو بنويسيد


Private Sub Command1_Click()

Dim CurRow As String

Static Row ' Worksheet row number.

Row = Row + 1 ' Increment Row.

If Row = 1 Then ' First time only.

' Make sure the link isn't active.
Text1.LinkMode = 0
' Set the application name and topic name.
Text1.LinkTopic = "Excel|Sheet1"
Text1.LinkItem = "R1C1" ' Set LinkItem.
Text1.LinkMode = 1 ' Set LinkMode to Automatic.

Else

' Update the row in the data item.
CurRow = "R" & Row & "C1"
Text1.LinkItem = CurRow ' Set LinkItem.

End If


End Sub


نرم افزار اكسل رو اجرا كنيد و در ستون اول سطر اول تا مثلا دهم هر چي دلتون خواست بنويسيد
برنامه رو اجرا كنيد و به طور مداوم روي دكمه كليك كنيد و TextBox رو ببينيد


تو دستورات بالا منظور از R1 سطر يكم و منظور از C1 ستون يكم در شيت اكسل مي باشد
در كدهاي بالا برنامه با اولين شيت از فايل باز شده در نرم افزار اكسل مرتبط شده و اطلاعات ستون اول رو به ترتيب نمايش ميده


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

راستی در مورد HasDC میشه مثال بزنین.:خجالت:
بی نهایت ممنون.:تشویق:

vbhamed
سه شنبه 12 مرداد 1389, 16:52 عصر
ممنون.
این &HFFFFFF چیه؟

سلام

شماره رنگ سفيد هست كه ضربدر يك عدد تصادفي اعشاري كمتر از 1 ميشه (در حقيقت داره تقسيم ميشه) تا رنگهاي ديگه بدست بياد

vbhamed
سه شنبه 12 مرداد 1389, 17:00 عصر
میشه آرگوماناشو توضیح بدین و اینکه خاصیت picture فرم با image اش فرقی داره؟

Picture1.PaintPicture Me.Image, 0, 0, 4000, 2000, 0, 0, 16000, 8000

اين دستور ميگه از سطر 0 و ستون 0 تصوير فرم جاري به عرض 16000 و ارتفاع 8000 تصوير رو برداره اون رو در سطر 0 و ستون صفر Picture1 به عرض 4000 و ارتفاع 2000 رسم كنه
با اين كار چون عرض اوليه 16000 بوده پس تصوير كوچك ميشه

منظور از Picture تصويري هست كه تو خاصيت Picture انتخاب كرديم يا اينكه از حافظه تو فرم كپي كرديم ولي Image غير از اون شامل تصاوير و متوني كه با دستورات Line و Circle و Print روي فرم اومده هم ميشه

vbhamed
سه شنبه 12 مرداد 1389, 17:06 عصر
من اینکارو کردم و درسته اما به غیر از چیزی که توی سلول ها هستش، همیشه یه چیزه دیگه هم بهشون اضافه میشه.(تصویر ضمیمه رو مگاه کنین.)

راستی در مورد HasDC میشه مثال بزنین.:خجالت:
بی نهایت ممنون.:تشویق:

اون نشونه كاراكتر Enter هست
اين دستور رو قبل از End Sub بزاريد


If Right$(Text1, 2) = vbCrLf Then Text1 = Left$(Text1, Len(Text1) - 2)