ورود

View Full Version : سوال: ذخیره تغییرات در گرافیک فرم بعد از بسته شدن



m_bargostavan_66
چهارشنبه 27 فروردین 1399, 20:07 عصر
سلام
میخوام ببینم چطوری میشه بعد از تغییرات در ظاهر فرم بعد از بستن ، اون تغییرات ذخیره بشه

مثلا من نمونه فایل گذاشتم که میتونم تصویر پس زمینه فرم رو تغییر بدم ولی بعد از خروج از فرم تغییرات ذخیره نمیشه
البته میخوام عکس به صورت Embedded تو خود برنامه باشه تا در صورت پاک شدن عکس یا جابه جایی اون از مسیر مشکلی پیش نیاد
توی فایل نمونه مشخصه
دوستان اگه راهنمایی کنن ممنون میشم

mazoolagh
پنج شنبه 28 فروردین 1399, 09:50 صبح
برای اینکه تغییرات در فرم بدین باید اون رو در design mode باز کنین

m_bargostavan_66
پنج شنبه 28 فروردین 1399, 12:49 عصر
برای اینکه تغییرات در فرم بدین باید اون رو در design mode باز کنین
نه میدونم تغییرات تو design mode هست
ولی من میخوام به کاربر این انتخاب رو بدم که خودش بتونه پس زمینه فرم رو تغییر بده ، بدون اینکه تو design mode بره

mosaArabi
جمعه 29 فروردین 1399, 18:36 عصر
سلام
دوست گرامی شما یه تیبل درست کنید و به فرم پیوست تصویر متصل کنید .انگاه ادرس عکس را در این ذخیره کنید.
حال اگر تمایل داشتین تصویر را در هر فرمی نمایش دهید ، آدرس عکس را با دیلوکاپ فراخوانی کنید و عکس را باکس ایمیج نمایش دهید .
موفق باشید

m_bargostavan_66
جمعه 29 فروردین 1399, 20:46 عصر
سلام
دوست گرامی شما یه تیبل درست کنید و به فرم پیوست تصویر متصل کنید .انگاه ادرس عکس را در این ذخیره کنید.
حال اگر تمایل داشتین تصویر را در هر فرمی نمایش دهید ، آدرس عکس را با دیلوکاپ فراخوانی کنید و عکس را باکس ایمیج نمایش دهید .
موفق باشید
سلام دوست عزیز
خب من میخوام که زمانی که عکس حذف شد و یا ... دیگه مشکلی پیش نیاد

الان مثلا ما تو فرمی عکسی رو پس زمینه میزاریم و رو حالت
Embedded ، دیگه اون عکس اصلی اگه حتی حذف هم بشه مشکلی پیش نمیاد
من میخوام این حالت بشه

mosaArabi
جمعه 29 فروردین 1399, 21:15 عصر
خطایی نمیده . وقتی عکس از محل خودش در سیستم حذف بشه و یاشما خودتون دستور حذف بدین خطایی نمیده .

m_bargostavan_66
شنبه 30 فروردین 1399, 13:18 عصر
خطایی نمیده . وقتی عکس از محل خودش در سیستم حذف بشه و یاشما خودتون دستور حذف بدین خطایی نمیده .
میشه تو اون نمونه ای که تو پست اول هست اعمال کنید و ویرایش کنید
ممنون میشم

mazoolagh
یک شنبه 31 فروردین 1399, 13:03 عصر
نه میدونم تغییرات تو design mode هست
ولی من میخوام به کاربر این انتخاب رو بدم که خودش بتونه پس زمینه فرم رو تغییر بده ، بدون اینکه تو design mode بره

لازم نیست کاربر به design mode بره،
شما باید خودتون با کد فرم رو در اینحالت باز کنین.

روش کار به این صورت هست:
1- فرم رو باید با کد و بصورت modal و در حالت normal باز کنین
2- قبل از باز کردن فرم، یک متغیر گلوبال یا tempvar باید داشته باشین که مقدار اون رو خالی میگذارین
3- در فرم، پس از انتخاب پس زمینه، آدرس اون رو در این متغیر میریزین.
4- وقتی فرم بسته شد، مقدار این متغییر رو چک میکنین. اگر خالی نبود دوباره فرم رو باز میکنین ولی این بار در design mode و در حالت hidden
5- تغییرات رو اعمال و فرم رو ذخیره میکنین.

اگر تنظیمات فرم درست باشه (picture type=embedded) که پیشفرض هم همین هست، تصویر بصورت خودکار در فرم ذخیره میشه.
و عملیات از نظر کاربر مخفی هست!

m_bargostavan_66
یک شنبه 31 فروردین 1399, 20:12 عصر
لازم نیست کاربر به design mode بره،
شما باید خودتون با کد فرم رو در اینحالت باز کنین.

روش کار به این صورت هست:
1- فرم رو باید با کد و بصورت modal و در حالت normal باز کنین
2- قبل از باز کردن فرم، یک متغیر گلوبال یا tempvar باید داشته باشین که مقدار اون رو خالی میگذارین
3- در فرم، پس از انتخاب پس زمینه، آدرس اون رو در این متغیر میریزین.
4- وقتی فرم بسته شد، مقدار این متغییر رو چک میکنین. اگر خالی نبود دوباره فرم رو باز میکنین ولی این بار در design mode و در حالت hidden
5- تغییرات رو اعمال و فرم رو ذخیره میکنین.

اگر تنظیمات فرم درست باشه (picture type=embedded) که پیشفرض هم همین هست، تصویر بصورت خودکار در فرم ذخیره میشه.
و عملیات از نظر کاربر مخفی هست!
ممنون بابت پاسخ
میشه رو نمونه، پست اول اعمال کنید ممنون میشم

mazoolagh
دوشنبه 01 اردیبهشت 1399, 09:28 صبح
روی اون نمونه که نه،
ولی نمونه میگذارم

mazoolagh
سه شنبه 02 اردیبهشت 1399, 09:38 صبح
Sub BTN1_Click()
TempVars("BCK") = ""
DoCmd.OpenForm "Form1", , , , , acDialog
If TempVars("BCK") <> "" Then
DoCmd.OpenForm "Form1", acDesign, , , , acHidden
Forms("Form1").Picture = TempVars("BCK")
DoCmd.Close acForm, "Form1", acSaveYes
End If
TempVars.Remove "BCK"
End Sub

mazoolagh
سه شنبه 02 اردیبهشت 1399, 09:40 صبح
Private Sub BTN1_Click()
Dim FD As FileDialog
Set FD = Application.FileDialog(msoFileDialogFilePicker)
With FD
.AllowMultiSelect = False
.Filters.Add "", "*.jpg ; *.jpeg ; *.bmp ; *.png"
If .Show = True Then
If .SelectedItems.Count = 1 Then
TempVars("BCK") = .SelectedItems(1)
Me.Picture = .SelectedItems(1)
End If
End If
End With
End Sub

mazoolagh
سه شنبه 02 اردیبهشت 1399, 09:42 صبح
برنامه نمونه

m_bargostavan_66
سه شنبه 02 اردیبهشت 1399, 23:14 عصر
برنامه نمونه
ممنون
من این کدها رو تو نمونه خودم گذاشتم فقط یه مشکلی دارم
عکس رو که تغییر میدم مشکلی نیست و انجام میشه وقتی دکمه خروج رو میزنم و دوباره وارد برنامه میشم تغییرات به همون حالت قبل تغییر عکس برمیگرده
وقتی کلید ویرایش برنامه رو میزنم و دوباره فرم رو باز میکنم همه چی اوکی هست
لطفا میشه نمونه زیر رو ببینید و مشکل رو بگید کجاست

mazoolagh
پنج شنبه 04 اردیبهشت 1399, 08:58 صبح
برنامه تون رو trace کنین و ببینین چه اتفاقی میفته

m_bargostavan_66
پنج شنبه 04 اردیبهشت 1399, 13:34 عصر
برنامه تون رو trace کنین و ببینین چه اتفاقی میفته

trace چیه؟
لطفا یکم راهنمایی کنید ببینم چیکار باید بکنم

mazoolagh
سه شنبه 09 اردیبهشت 1399, 11:58 صبح
در VBA editor ابتدای روتینی که میخواین Trace کنین یک Breakpoint میگذارین (از منوی debug یا زدن F9)
هر وقت این روتین اجرا بشه روی خطی که breakpoint گذاشتین میایسته و حالا میتونین با F8 خط به خط کد رو اجرا و نتایج رو بررسی کنین.

آدرس زیر رو هم ببینین:
https://www.myonlinetraininghub.com/debugging-vba-code