PDA

View Full Version : اندازه کردن فرمها



davood110
دوشنبه 22 اسفند 1384, 11:39 صبح
سلام به همه دوستان من یه مشکلی دارم که نمی دونم راحت میشه حلش کرد یا نه؟ من میگم اگه تونستید جواب مرا بدید.
من می خوام کاری کنم که وقتی اندازه فرم را تغییر دهیم کنترلهای درون فرم هم به همون اندازه تغییر کنه مثلا اگه فرمی maximize نباشه و بعد هنگام اجرا کاربر آن را بزرگ کرد جایی از فرم خالی نمونه .
و هم این که وقتی فرمی را مثلا در دقت صفحه 600*800 طراحی کرده ایم اگر کاربر دقت صفحه را بیشتر کرد مثلا 768*1024 آنگاه فریمها و کنترلهای فرم همون اندازه قبل است و قسمتی از فرم خالی می ماند می خواستم ببینم کسی راه حلی برای این مشکلات داره یا نه؟
دمتون گرم اگه راهی بلدید حتما کمکم کنید.

Payman62
دوشنبه 22 اسفند 1384, 12:18 عصر
کی گفته اگه resulation رو تغییر بدی بخشی از فرم خالی میمونه؟

thief_cns
دوشنبه 22 اسفند 1384, 23:52 عصر
در مرحله اول بخ وسیله کدی که برات میفرستم resi را تشخیص بدی



'''''''''''''''''''''''''''''ماژول

Public Const SPI_GETWORKAREA = 48
Public Type RECT
left As Long
Top As Long
Right As Long
Bottom As Long
End Type

Declare Function SystemParametersInfo Lib "user32" _
Alias "SystemParametersInfoA" _
(ByVal uAction As Long, _
ByVal uParam As Long, _
lpvParam As Any, _
ByVal fuWinIni As Long) As Long

''''''''''''''''''''''''''''''''''''''''''''''
Public leftt As Integer



''''''''''''''''''''''''''''''''''''''''''''form load


'''''''''''''''''''''''''''''''''''''''برای تنظیم ابعاد تصوی
Dim lngRetVal As Long
Dim typArea As RECT

lngRetVal = SystemParametersInfo(SPI_GETWORKAREA, vbNull, typArea, 0)

'MsgBox "Left=" & typArea.left & " Top=" & typArea.Top & _
' " Bottom=" & typArea.Bottom & " Right=" & typArea.Right
leftt = typArea.Right
'MsgBox leftt
''''''''''''''''''''''''''''''''''''''''''''


حالا میتوانی با کد نویسی برای حالتهای مختلف برنامه ریزی کنی:چشمک:

davood110
سه شنبه 23 اسفند 1384, 07:44 صبح
ببین طریقه بدست آوردن resulation و اندازه صفحه مشکلی نیست یه راه حلی برای اندازه کردن صفحه می خواهم مثلا در رویداد resize فرم به چه نسبتی کنترلها را تغییر دهم که قرم مثل فرم قبلی باشه و با اندازه هایی بزرگتر.

S_VB.max
سه شنبه 23 اسفند 1384, 12:22 عصر
فکر کنم منظورت این باشد:


Private Sub Form_Resize()
On Error Resume Next
Text1.Move 50, 50, Me.ScaleWidth - 100, Me.ScaleHeight - 100
End Sub

اگر می خوای اندازه فرم مطابق با اندازه فرم دیگری باشد از این دستور استفاده کن

Private Sub Form_Resize()
On Error Resume Next
Me.Width = Form1.Width
Me.Height = Form1.Height
End Sub

yavari
سه شنبه 23 اسفند 1384, 19:49 عصر
سلام دوست عزیز
پیرو صحبت دوستمون S_VB.max
برا اینکه کارت راحت تر باشه و برا هر آبجکتی این کارو دون دون انجام ندی
ار TypeOf و یا ForEach استفاده کن

موفق باشی:تشویق:

vbhamed
سه شنبه 23 اسفند 1384, 23:19 عصر
سلام
از سری اکتیوایکس ComponentOne Studio استفاده کن، اکتیوایکس Sizer 8 در این مجموعه کاری که مورد نظر شماست رو به خوبی انجام می دهد

اکتیوایکس ResizeXtra هم خیلی خوب است اما من هنوز رجیسترش رو پیدا نکردم

hbi
سه شنبه 23 اسفند 1384, 23:23 عصر
با سلام
میبخشید TypeOf و یا ForEach چی
با تشکر فراوان

davood110
پنج شنبه 25 اسفند 1384, 09:36 صبح
با تشکر از همه دوستان
در مورد کدی که S_VB.max لطف کرده بود و فرستاده بود ببین تو این روش مثلا شما textbox را به اندازه فرم کرده بودی ولی فرض کن که یه فرم داری با ارتفاع مثلا 5000 و عرض 4000 بعد توی فرمت 5 تا textbox هم داری که ارتفاع هر کدوم مثلا 500 است که با فاصله های مساوی(از ارتفاع) در فرم قرار گرفتند حالا اگه در هنگام اجرا کاربر فرم را بزرگ کنه می خوام به نسبت بزرگ شدن فرم ارتفاع و عرض textbox ها هم تغییر کنه به صورتی کهفاصله بین آنها همون مقادیر قبلی باشه این موضوع توی ویندوز زیاد استفاده شده که یه فرم را شما maximize می کنی و تمام کنترلهای توی فرم تغییر می کنند و شکل فرم همون قبلی باقی می مونه

آقای VBhamed عزیز میشه درباره ComponentOne Studio درمورد کاربردش و طریقه بدست آوردنش بیشتر توضیح بدی

و همچنین اگه قرار شد برا تک تک کنترلها اندازه کردن را انجام دهیم کار معقولانه استفاده از typeOf و ّfor eah میباشد.

اگه می تونید حتما کمکم کنید.

دمتون گرم