PDA

View Full Version : تغییر اندازه datasheet



bTajahmadi
چهارشنبه 24 بهمن 1386, 11:18 صبح
سلام
شاید این سوال بیش از اندازه پیش پا افتاده باشه :
اندازه ی فرمی که به صورت datasheet باز میشه مدام تغییر میکنه. هر بار که به حالت design میرم و یک تغییری توی طراحی می دم و ذخیر می کنم اندازه ی فرم تغییر می کنه؟
می خواهستم بدونم راهی برای کنترلش هست یا نه؟ مخصوصا توی حالت runtime.

o_panjeshahi
چهارشنبه 24 بهمن 1386, 14:50 عصر
در PROPERTES طراحی قسمت AUTOSIZE رافعال کنید

bTajahmadi
چهارشنبه 24 بهمن 1386, 16:48 عصر
Autoresize فعال بود اما تغییری ایجاد نمی کرد یعنی با تغییر انداره ستون ها در اندازه پنجره تغییری ایجاد نمی شد (بعد از باز و بسته کردن فرم).

فکر می کنم منطق عجیبش رو درک کردم.
وقتی یک control رو روی فرم می گذارید و فرم رو در حالت datasheet باز می کنید، مقدار columnwidth برای اون کنترل 1- تنظیم شده. بلافاصله که طول ستون رو تغییر بدید مقدار columnwidth به عددی که نشان دهنده عرض ستون هست تغییر می کنه. این مقدار بر اساس twip هست. فکر کنم هر 2650 تا twip یک اینچ باشه.
این مقدار تغییر نمی کنه مگر اینگه دوباره خودتون عرض ستون رو تغییر بدید. از همین property یعنی columnwidth استفاده کردم و مسئله رو حل کردم :


Private Sub Form_Open(Cancel As Integer)
Dim ctl As Control
Dim cmb As ComboBox
Dim intFormWidth As Integer
For Each ctl In Form.Controls
If (ctl.ControlType = acTextBox) Or (ctl.ControlType = acComboBox) Then
intFormWidth = intFormWidth + ctl.ColumnWidth
End If
Next
Me.InsideWidth = intFormWidth + 300
End Sub


می بینید که اول عرض ستون ها رو جمع زدم بعد این سر جمع را در property مربوطه یعنی insidewidth به متعلق به شیء Form هست قرار دادم.
اینطوری هر وقت عرض یک ستون رو تغییر میدید، دفعه بعد که فرم رو باز کردید عرض پنجره اتوماتیک درست میشه