كد ذخيره اطلاعات روي form در ويژوال بيسيك

شروع موضوع توسط saeidpes ‏25 فوریه 2008 در انجمن منطق و الگوریتم برنامه‌نویسی

  1. saeidpes

    saeidpes New Member

    ارسال‌ها:
    22
    تشکر شده:
    2
    امتیاز دستاورد:
    1
    با سلام خدمت دوستا ن عزيز


    دكمه فرمان روي form ساخته شود كه با كليك روي آن بتوان تمام اطلاعات و داده ها را روي فرم ذخيره نمايد


    متشكرم
     
    نوشته شده توسط saeidpes در ‏25 فوریه 2008
    SajjadKhati از این پست تشکر کرده است.
  2. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    در این تاپیک:
    http://forum.majidonline.com/showthread.php?t=38567
    راجع به ذخیره در فایل گفته شده.

    ولی راجع به ذخیره تمام اطلاعات روی فرم مبهم است. یعنی نفهمیدم چه چیز باید ذخیره شود.

    اما مثلا اگر بخواهیم محتوای تکست باکس ها را ذخیره کنیم با روش زیر میشه اطلاعات یک تکست باکس را در یک متغیر ریخت تا بعدا در فایل ذخیره شود:
    کد (Text):
    Private Sub Command1_Click()
    mystring = Text1.Text
    End Sub
     
    نوشته شده توسط saalek110 در ‏25 فوریه 2008
    SajjadKhati، erfansajjadie و saeidpes از این ارسال تشکر کرده اند.
  3. the_king

    the_king مدیرکل انجمن

    ارسال‌ها:
    10,959
    تشکر شده:
    11,121
    امتیاز دستاورد:
    113
    من یک کلاسی (Class) ساختم که به بهترین و ساده ترین شکل ممکن تغییراتی که کاربر در محتویات فرم ایجاد می کنه
    را بصورت موقت در حافظه RAM و بصورت دائمی در درون یک فایل متنی ذخیره می کند.
    و هر زمانی که اراده کنید دوباره فرم را به وضعیتی که در هنگام ذخیره شدن فرم قرار داشت، باز می گرداند.

    نام این کلاس ClassFormBank است و تنها کدهایی که برای استفاده از آن لازم دارید اینها هستند :
    در قدم اول بایستی یک نمونه از کلاس مذکور را بصورت یک متغیر درون کد فرم تعریف کنید :
    کد (Text):

    Private FormBank As New ClassFormBank
     
    این متن بالا اولین سطر برنامه در کد فرم تان خواهد بود تا نمونه کلاس FormBank را ایجاد کند.
    اگر شما چندین فرم مختلف را در برنامه تان دارید، برای هر کدام از فرمها همین کد را در ابتدای آن اضافه خواهید کرد.

    این کلاس برای شما سه فرمان (متد) را معرفی می کند که می توانید از آنها برای کنترل محتویات فرم استفاده کنید.
    فرمان SaveForm :
    این فرمان محتویات فرمی که به آن معرفی می کنید را ذخیره می کند و دو پارامتر ورودی دارد که دومی اختیاری است.
    پارامتر اول فرمی است که باید ذخیره شود، مثلا Form1 یا Me که در واقع Me همواره نام فرمی خواهد بود که اکنون
    در کد آن قرار دارید و فعال است.
    پارامتر دوم که اختیاری است مسیر فایلی خواهد بود که یک نسخه از محتویات فرم در آن ذخیره می شود مثلا :
    C:\FileName.txt
    این یک فایل متنی است که این کلاس با ساختار آن بخوبی آشنا است و بعدا می تواند دوباره آنرا فراخوانی کند.
    اگر پارامتر دوم را اعلام نکنید، محتویات فرم فقط در حافظه موقتی RAM ذخیره می شوند و با پایان یافتن اجرای
    برنامه این اطلاعات پاک خواهند شد.

    مثال هایی از کاربرد این فرمان اینچنین است :
    کد (Text):

    FormBank.SaveForm Form1
    FormBank.SaveForm Me
    FormBank.SaveForm Me, "FileName.sav"
     
    فرمان LoadForm :
    این فرمان برعکس SaveForm عمل می کند و محتویات فرمی که قبلا ذخیره شده را بر روی فرم فعلی نمایش می دهد و
    همانند SaveForm دو پارامتر ورودی دارد که دومی اختیاری است.
    پارامتر اول فرمی است که باید اطلاعات در آن نمایش داده شود، مثلا Form1 یا Me که در واقع Me همواره نام فرمی خواهد بود
    که اکنون در کد آن قرار دارید و فعال است.
    پارامتر دوم که اختیاری است مسیر فایلی خواهد بود که محتویات فرم از داخل آن فراخوانی می شود مثلا :
    C:\FileName.txt
    اگر پارامتر دوم را اعلام نکنید، محتویات فرم از حافظه موقتی RAM فراخوانی می شوند.

    مثال هایی از کاربرد این فرمان اینچنین است :
    کد (Text):

    FormBank.LoadForm Form1
    FormBank.LoadForm Me
    FormBank.LoadForm Me, "FileName.sav"
     
    فرمان ClearForm :
    همانطور که از نام این فرمان پیداست، محتویات اطلاعاتی فرم را پاک می کند، مثلا داخل TextBox ها را خالی می کند
    و یا تیک CheckBox ها بر می دارد.

    مثال هایی از کاربرد این فرمان اینچنین است :
    کد (Text):

    FormBank.ClearForm Form1
    FormBank.ClearForm Me
     
    حالا برویم سراغ تشریح عملکرد این کلاس :
    در داخل این کلاس هیچ پیشفرضی از محتویات فرم شما وجود ندارد و برایش فرقی نمی کند که شما چند کنترل و به چه شکلی
    را در فرمتان بکار برده اید.
    تمام اطلاعاتی که این کلاس ذخیره و بازیابی می کند اینها هستند :
    محتویات TextBox ها
    تیک خوردگی CheckBox ها
    انتخاب شدن و انتخاب نشدن OptionButton ها
    آیتمی انتخاب شده در داخل ComboBox و ListBox ها

    توجه کنید که فرمان ClearForm آیتم داخل ComboBox و ListBox را حذف و یا غیر فعالی می کند و نه لیست آیتم ها را.
    دلیل این امر این است که طبق استدلال حقیر، قرار است اطلاعاتی ذخیره و یا پاک شوند که کاربر آنها را تغییر داده و
    نه برنامه نویس.

    چون این برنامه یک کلاس مستقل از فرم است، می تواند با بیش از یک نمونه و فرم بکار برود مثلا این کد پایین محتویات دو
    فرم Form1 و Form2 که از نظر شکل فرم یکسان هستند را به سادگی تعویض می کند، مثلا اگر هم در فرم Form1 و
    هم در فرم Form2 یک TextBox با نام Text1 داشته باشیم، این کد مقدار آندو را با هم عوض میکند.
    کد (Text):

        Dim A As New ClassFormBank
        Dim B As New ClassFormBank
        A.SaveForm Form1
        B.SaveForm Form2
        A.LoadForm Form2
        B.LoadForm Form1
     
    کاربرد این کلاس حقیقتا ساده است ولی کد داخل خود آن پیچیده و در سطح حرفه ای است.

    کد کامل کلاس به همراه یک فرم نمونه و فایل اجرایی EXE ضمیمه این پست می باشد.
     

    پیوست ها:

    • FormBank.zip
      اندازه فایل:
      کیلوبایت 12.3
      نمایش ها:
      328
    نوشته شده توسط the_king در ‏26 فوریه 2008
    SajjadKhati، mortezaninja، erfansajjadie و 2 نفر دیگر از این ارسال تشکر کرده اند.
  4. Majid 3D

    Majid 3D Member

    ارسال‌ها:
    44
    تشکر شده:
    1
    امتیاز دستاورد:
    6
    امکان ذخیره کردن اطلاعات یک برنامه توسط کاربر

    من یه برنامه درست کردم برای ثبت نام افراد ( مثلا در یک اردو ) ، ولی یه مشکلی هست ... فرض کنید کاربر بیست نفر رو برای اردو ثبت نام میکنه که در لیست باکس ذخیره شدن ولی اگه کاربر برنامه رو ببنده و دوباره بخواد اجرا کنه باید از اول اسامی بیست نفر رو وارد کنه !
    من میخوام مثلا اسم پنج نفر رو وارد کرده و بعد یه کاری براش پیش اومده و از برنامه خارج شده، ولی وقتی دوباره برنامه رو باز میکنه از ادامه بتونه اسامی رو وارد کنه، یعنی اسم اون پنج نفر باشه.
    همچین امکانی وجود داره ؟
     
    نوشته شده توسط Majid 3D در ‏10 مارس 2008
  5. saalek110

    saalek110 Well-Known Member

    ارسال‌ها:
    2,612
    تشکر شده:
    1,337
    امتیاز دستاورد:
    113
    سلام.
    شاید متدی داشته باشه ولی من فعلا پیدا نکردم.
    یک راهش این است که دونه دونه بخونی و در یک فایل بنویسی و موقع شروع برنامه هم با بررسی وجود فایل از فایل بخونی و لیست باکس را پر کنی.
     
    نوشته شده توسط saalek110 در ‏10 مارس 2008
  6. Majid 3D

    Majid 3D Member

    ارسال‌ها:
    44
    تشکر شده:
    1
    امتیاز دستاورد:
    6
    پست های the_king خیلی به دردم خورد،
    ولی من میخوام اطلاعات یک لیست باکس رو ذخیره کنم. هیچ راهی نیست ؟ مثلا یک لیست باکس که حداکثر 40 اسم توش نوشته.
     
    نوشته شده توسط Majid 3D در ‏10 مارس 2008
  7. the_king

    the_king مدیرکل انجمن

    ارسال‌ها:
    10,959
    تشکر شده:
    11,121
    امتیاز دستاورد:
    113
    کار مشکلی نیست. همانطور که saalek110 عزیز اشاره کردند بایستی آیتم های درون لیست باکس را یکی یکی
    ذخیره کنید و در هنگام خواندن هم دوباره یکی یکی به لیست اضافه کنید.

    فرض کنیم که شما یک لیست باکس به نام List1 دارید. کد زیر محتویات آنرا بصورت یک تک رشته String در می آورد :
    کد (Text):

        Dim Text As String
        Dim Index As Long
        Text = ""
        For Index = 0 To List1.ListCount - 1
            Text = Text & List1.List(Index) & vbCrLf
        Next
     
    پس از اجرا شدن این کد، محتویات متغیر Text معادل تمامی محتویات List1 است.

    برای بازگرداندن اطلاعات درون Text به داخل لیست باکس به کد زیر نیاز داریم :
    کد (Text):

        Dim List() As String
        Dim Index As Long
        List1.Clear
        If Len(Text) > 0 Then
            List = Split(Text, vbCrLf)
            For Index = 0 To UBound(List)
                If Len(List(Index)) > 0 Then List1.AddItem List(Index)
            Next
        End If
     
    حالا بایستی این متغیر رشته ای را به شکلی ذخیره و بازیابی کنید.
    مثلا با کد زیر آنرا در درون یک فایل ذخیره می کنیم :
    کد (Text):

        Open "file.txt" For Output As #1
        Print #1, Text
        Close #1
     
    موقع خواندن آن از فایل بایستی از کد زیر استفاده کنید :
    کد (Text):

        Open "file.txt" For Binary As #1
        Text = Space(LOF(1))
        Get #1, 1, Text
        Close #1
     
    یا با کد زیر آنرا در درون حافظه رجیستری ویندوز ذخیره می کنیم :
    کد (Text):

        SaveSetting App.Title, "Settings", "Text", Text
     
    یا با کد زیر آنرا از درون حافظه رجیستری ویندوز می خوانیم :
    کد (Text):

        Text = GetSetting(App.Title, "Settings", "Text", "")
     
    در برنامه نمونه ای که من نوشته ام از رجیستری ویندوز برای نگهداری محتویات لیست باکس استفاده شده است.

    [​IMG]

    کد کامل برنامه به همراه فایل اجرایی ضمیمه این پست می باشد.
     

    پیوست ها:

    • SaveListBox.zip
      اندازه فایل:
      کیلوبایت 7.6
      نمایش ها:
      166
    نوشته شده توسط the_king در ‏11 مارس 2008
    ari84، SajjadKhati و mortezaninja از این ارسال تشکر کرده اند.
  8. saeidpes

    saeidpes New Member

    ارسال‌ها:
    22
    تشکر شده:
    2
    امتیاز دستاورد:
    1
    ثبت form

    با سلام

    كد برنامه اي مي خواهم كه تمام كنترل هاي ايجاد شده روي فرم با تمام اطلاعاتي كه به آن داده شده است را بتواند ثبت و ذخيره نمايد به طوري كه هر وقت وارد فرم مي شويم بتواند آن اطلاعات را نشان دهد

    با تشكر
     
    نوشته شده توسط saeidpes در ‏14 مارس 2008
  9. saeidpes

    saeidpes New Member

    ارسال‌ها:
    22
    تشکر شده:
    2
    امتیاز دستاورد:
    1
    ثبت form

    باسلام

    كد برنامه اي مي خواهم كه تمام كنترل هاي ايجاد شده روي فرم با تمام اطلاعاتي كه به آن داده شده است را بتواند ثبت و ذخيره نمايد به طوري كه هر وقت وارد فرم مي شويم بتواند آن اطلاعات را نشان دهد

    با تشكر
     
    نوشته شده توسط saeidpes در ‏16 مارس 2008
  10. farhad110

    farhad110 Member

    ارسال‌ها:
    353
    تشکر شده:
    178
    امتیاز دستاورد:
    16
    تمام كنترل هاي روي فرم چند 3 خصوصيت كلي براي نمايش دارند: left , top , name اين خصوصيات رو در فايلهاي ini يا ديتابيس يا ... ذخيره كنيد و هنگام نمايش فرم بازيابي كنيد. اگر مقادير كنترلها هم مورد نياز هست (به عنوان مثال caption يك label) مي تونيد اونها رو هم با توجه به نياز ذخيره كنيد
     
    نوشته شده توسط farhad110 در ‏17 مارس 2008
  11. samangouei

    samangouei New Member

    ارسال‌ها:
    1
    تشکر شده:
    0
    امتیاز دستاورد:
    1
    با سلام و احترام
    من یک برنامه دارم که اطلاعات یک textbox را میخونه و کاری انجام میده
    یک دکمه گزاشتم که بشه اطلاعات تکست باکس را تغییر داد
    مشکلم اینه که بعد از اجرا این تغییرات در تکست باکس ذخیره نمیشه و همون اطلاعات قبلی می مونه
    لطفا راهنماییم کنین که یک دکمه به نام ذخیره تغییرات و وقتی روش کلییک می کنم اطلاعات تکست باکس در برنامه ( احتمالا باید در پروپرتیز تکست باکس ) ذخیره بشه
    ممنون
     
    نوشته شده توسط samangouei در ‏4 آگوست 2019
  12. the_king

    the_king مدیرکل انجمن

    ارسال‌ها:
    10,959
    تشکر شده:
    11,121
    امتیاز دستاورد:
    113
    منظورتون از اینکه ذخیره نمیشه چیه؟ همون لحظه مقداری که داخل TextBox قرار می دهید رو نشون نمیده؟ یا اون لحظه نشون میده ولی بعد اینکه برنامه رو بستید و مجددا باز کردید نشون نمیده؟
    تا کدی که برای تغییر مقدار بکار می برید نبینم نمیشه نظری بدم. کلا محتویات این پست قبلی رو اگه در برنامه تون پیاده سازی کنید برای اغلب کاربرد ها جواب میده : 3#
     
    نوشته شده توسط the_king در ‏4 آگوست 2019
    SajjadKhati از این پست تشکر کرده است.
  13. ari84

    ari84 New Member

    ارسال‌ها:
    3
    تشکر شده:
    0
    امتیاز دستاورد:
    1
    من خیلی دنبال این کد گشتم ولی یه راه بهتر پیداکردم که دیگهنیاز به برنامه نویسی نداره و ویژوال بیسیک براتون کد ش رو مینیویسه.
    خوب برای این کار فقت لازمه یه بانک اطلاعاتی درست کنید داخل برنامه. راهش داخل ادرس زیر گفته:ایجاد یک پایگاه داده در ویژوال بیسیک 6 در عرض چند ثانیه
    به همین راهتی من خودم امتحانش هنوز درست نکردم ولی به احتمال99 درصد وقتی برنامتون exe کنید .
     
    نوشته شده توسط ari84 در ‏12 آگوست 2019
  14. ari84

    ari84 New Member

    ارسال‌ها:
    3
    تشکر شده:
    0
    امتیاز دستاورد:
    1
    من ی برنامه ساختم که دو تا لیست باکس داره من میخام دوتاشون سیو بشه .
    بعدش اون بانک اطلاعتم که گفتم یاگیر میکنه یاکار نمیکنه .
    این کدیم که مدیرکل انجمن گفته من هرکاری میکنم بار لیست باکسم کارنمیکنه اومدم داخل همون برنامه ایکه ساخته بودن کنارش ی لیست باکس درست کردم کدارو نوشتم بازم اجرانمیشد. منظورم برنامه ایه که مدیرکل انجمن در سال 2008 نوشته.
    اگر کسی راه حل میدونه لطفا بگه چون خیلی واجبمه.
    با تشکر از انجمن و همه .:)
     
    آخرین ویرایش: ‏13 آگوست 2019
    نوشته شده توسط ari84 در ‏13 آگوست 2019
  15. the_king

    the_king مدیرکل انجمن

    ارسال‌ها:
    10,959
    تشکر شده:
    11,121
    امتیاز دستاورد:
    113
    لیست باکس رو که کاربر نمی تونه با مقدار پر کنه، چون داخلش قابل تایپ کردن نیست، برای همینه که اون کلاس آیتم های داخلش رو ذخیره نمی کنه، گزینه انتخاب شده رو ذخیره می کنه.
    شما خودتون با کد نویسی محتویاتی به لیست باکس اضافه می کنید. همون موقع که به لیست باکس موردی رو اضافه کردید باید جایی، در فایلی، پایگاه داده ای و ... ذخیره اش کنید.
    برای ذخیره کردن در فایل :
    کد (Text):
        Dim i As Integer
        Open "List1.txt" For Output As #1
        For i = 0 To List1.ListCount - 1
            Print #1, List1.List(i)
        Next
        Close #1
    و برای خواندن از فایل :
    کد (Text):
        Dim Text As String
        List1.Clear
        If Dir("List1.txt") = "" Then Exit Sub
        Open "List1.txt" For Input As #1
        Do Until EOF(1)
            Line Input #1, Text
            List1.AddItem Text
        Loop
        Close #1
     
    نوشته شده توسط the_king در ‏13 آگوست 2019

به اشتراک بگذارید