واضح آرشیو وب فارسی:سایت ریسک: كد ذخيره اطلاعات روي form در ويژوال بيسيك saeidpes 06 اسفند 1386, 21:31با سلام خدمت دوستا ن عزيز دكمه فرمان روي form ساخته شود كه با كليك روي آن بتوان تمام اطلاعات و داده ها را روي فرم ذخيره نمايد متشكرم saalek110 06 اسفند 1386, 21:49در این تاپیک: راجع به ذخیره در فایل گفته شده. ولی راجع به ذخیره تمام اطلاعات روی فرم مبهم است. یعنی نفهمیدم چه چیز باید ذخیره شود. اما مثلا اگر بخواهیم محتوای تکست باکس ها را ذخیره کنیم با روش زیر میشه اطلاعات یک تکست باکس را در یک متغیر ریخت تا بعدا در فایل ذخیره شود: Private Sub Command 1_Click() mystring = Text1.Text End Sub the_king 07 اسفند 1386, 19:54من یک کلاسی (Class) ساختم که به بهترین و ساده ترین شکل ممکن تغییراتی که کاربر در محتویات فرم ایجاد می کنه را بصورت موقت در حافظه RAM و بصورت دائمی در درون یک فایل متنی ذخیره می کند. و هر زمانی که اراده کنید دوباره فرم را به وضعیتی که در هنگام ذخیره شدن فرم قرار داشت، باز می گرداند. نام این کلاس ClassFormBank است و تنها کدهایی که برای استفاده از آن لازم دارید اینها هستند : در قدم اول بایستی یک نمونه از کلاس مذکور را بصورت یک متغیر درون کد فرم تعریف کنید : Private FormBank As New ClassFormBank این متن بالا اولین سطر برنامه در کد فرم تان خواهد بود تا نمونه کلاس FormBank را ایجاد کند. اگر شما چندین فرم مختلف را در برنامه تان دارید، برای هر کدام از فرمها همین کد را در ابتدای آن اضافه خواهید کرد. این کلاس برای شما سه فرمان (متد) را معرفی می کند که می توانید از آنها برای کنترل محتویات فرم استفاده کنید. فرمان SaveForm : این فرمان محتویات فرمی که به آن معرفی می کنید را ذخیره می کند و دو پارامتر ورودی دارد که دومی اختیاری است. پارامتر اول فرمی است که باید ذخیره شود، مثلا Form1 یا Me که در واقع Me همواره نام فرمی خواهد بود که اکنون در کد آن قرار دارید و فعال است. پارامتر دوم که اختیاری است مسیر فایلی خواهد بود که یک نسخه از محتویات فرم در آن ذخیره می شود مثلا : C:FileName.txt این یک فایل متنی است که این کلاس با ساختار آن بخوبی آشنا است و بعدا می تواند دوباره آنرا فراخوانی کند. اگر پارامتر دوم را اعلام نکنید، محتویات فرم فقط در حافظه موقتی RAM ذخیره می شوند و با پایان یافتن اجرای برنامه این اطلاعات پاک خواهند شد. مثال هایی از کاربرد این فرمان اینچنین است : FormBank.SaveForm Form1 FormBank.SaveForm Me FormBank.SaveForm Me, "FileName.sav" فرمان LoadForm : این فرمان برعکس SaveForm عمل می کند و محتویات فرمی که قبلا ذخیره شده را بر روی فرم فعلی نمایش می دهد و همانند SaveForm دو پارامتر ورودی دارد که دومی اختیاری است. پارامتر اول فرمی است که باید اطلاعات در آن نمایش داده شود، مثلا Form1 یا Me که در واقع Me همواره نام فرمی خواهد بود که اکنون در کد آن قرار دارید و فعال است. پارامتر دوم که اختیاری است مسیر فایلی خواهد بود که محتویات فرم از داخل آن فراخوانی می شود مثلا : C:FileName.txt اگر پارامتر دوم را اعلام نکنید، محتویات فرم از حافظه موقتی RAM فراخوانی می شوند. مثال هایی از کاربرد این فرمان اینچنین است : FormBank.LoadForm Form1 FormBank.LoadForm Me FormBank.LoadForm Me, "FileName.sav" فرمان ClearForm : همانطور که از نام این فرمان پیداست، محتویات اطلاعاتی فرم را پاک می کند، مثلا داخل TextBox ها را خالی می کند و یا تیک CheckBox ها بر می دارد. مثال هایی از کاربرد این فرمان اینچنین است : FormBank.ClearForm Form1 FormBank.ClearForm Me حالا برویم سراغ تشریح عملکرد این کلاس : در داخل این کلاس هیچ پیشفرضی از محتویات فرم شما وجود ندارد و برایش فرقی نمی کند که شما چند کنترل و به چه شکلی را در فرمتان بکار برده اید. تمام اطلاعاتی که این کلاس ذخیره و بازیابی می کند اینها هستند : محتویات TextBox ها تیک خوردگی CheckBox ها انتخاب شدن و انتخاب نشدن OptionButton ها آیتمی انتخاب شده در داخل ComboBox و ListBox ها توجه کنید که فرمان ClearForm آیتم داخل ComboBox و ListBox را حذف و یا غیر فعالی می کند و نه لیست آیتم ها را. دلیل این امر این است که طبق استدلال حقیر، قرار است اطلاعاتی ذخیره و یا پاک شوند که کاربر آنها را تغییر داده و نه برنامه نویس. چون این برنامه یک کلاس مستقل از فرم است، می تواند با بیش از یک نمونه و فرم بکار برود مثلا این کد پایین محتویات دو فرم Form1 و Form2 که از نظر شکل فرم یکسان هستند را به سادگی تعویض می کند، مثلا اگر هم در فرم Form1 و هم در فرم Form2 یک TextBox با نام Text1 داشته باشیم، این کد مقدار آندو را با هم عوض میکند. Dim A As New ClassFormBank Dim B As New ClassFormBank A.SaveForm Form1 B.SaveForm Form2 A.LoadForm Form2 B.LoadForm Form1 کاربرد این کلاس حقیقتا ساده است ولی کد داخل خود آن پیچیده و در سطح حرفه ای است. کد کامل کلاس به همراه یک فرم نمونه و فایل اجرایی EXE ضمیمه این پست می باشد. Majid 3D 20 اسفند 1386, 16:34من یه برنامه درست کردم برای ثبت نام افراد ( مثلا در یک اردو ) ، ولی یه مشکلی هست ... فرض کنید کاربر بیست نفر رو برای اردو ثبت نام میکنه که در لیست باکس ذخیره شدن ولی اگه کاربر برنامه رو ببنده و دوباره بخواد اجرا کنه باید از اول اسامی بیست نفر رو وارد کنه ! من میخوام مثلا اسم پنج نفر رو وارد کرده و بعد یه کاری براش پیش اومده و از برنامه خارج شده، ولی وقتی دوباره برنامه رو باز میکنه از ادامه بتونه اسامی رو وارد کنه، یعنی اسم اون پنج نفر باشه. همچین امکانی وجود داره ؟ saalek110 20 اسفند 1386, 17:55سلام. شاید متدی داشته باشه ولی من فعلا پیدا نکردم. یک راهش این است که دونه دونه بخونی و در یک فایل بنویسی و موقع شروع برنامه هم با بررسی وجود فایل از فایل بخونی و لیست باکس را پر کنی. Majid 3D 20 اسفند 1386, 21:41پست های the_king خیلی به دردم خورد، ولی من میخوام اطلاعات یک لیست باکس رو ذخیره کنم. هیچ راهی نیست ؟ مثلا یک لیست باکس که حداکثر 40 اسم توش نوشته. the_king 21 اسفند 1386, 00:29کار مشکلی نیست. همانطور که saalek110 عزیز اشاره کردند بایستی آیتم های درون لیست باکس را یکی یکی ذخیره کنید و در هنگام خواندن هم دوباره یکی یکی به لیست اضافه کنید. فرض کنیم که شما یک لیست باکس به نام List1 دارید. کد زیر محتویات آنرا بصورت یک تک رشته String در می آورد : 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 به داخل لیست باکس به کد زیر نیاز داریم : 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 حالا بایستی این متغیر رشته ای را به شکلی ذخیره و بازیابی کنید. مثلا با کد زیر آنرا در درون یک فایل ذخیره می کنیم : Open "file.txt" For Output As #1 Print #1, Text Close #1 موقع خواندن آن از فایل بایستی از کد زیر استفاده کنید : Open "file.txt" For Binary As #1 Text = Space(LOF(1)) Get #1, 1, Text Close #1 یا با کد زیر آنرا در درون حافظه رجیستری ویندوز ذخیره می کنیم : SaveSetting App.Title, "Settings", "Text", Text یا با کد زیر آنرا از درون حافظه رجیستری ویندوز می خوانیم : Text = GetSetting(App.Title, "Settings", "Text", "") در برنامه نمونه ای که من نوشته ام از رجیستری ویندوز برای نگهداری محتویات لیست باکس استفاده شده است. () کد کامل برنامه به همراه فایل اجرایی ضمیمه این پست می باشد. saeidpes 24 اسفند 1386, 14:59با سلام كد برنامه اي مي خواهم كه تمام كنترل هاي ايجاد شده روي فرم با تمام اطلاعاتي كه به آن داده شده است را بتواند ثبت و ذخيره نمايد به طوري كه هر وقت وارد فرم مي شويم بتواند آن اطلاعات را نشان دهد با تشكر saeidpes 26 اسفند 1386, 19:56باسلام كد برنامه اي مي خواهم كه تمام كنترل هاي ايجاد شده روي فرم با تمام اطلاعاتي كه به آن داده شده است را بتواند ثبت و ذخيره نمايد به طوري كه هر وقت وارد فرم مي شويم بتواند آن اطلاعات را نشان دهد با تشكر farhad 110 27 اسفند 1386, 07:41تمام كنترل هاي روي فرم چند 3 خصوصيت كلي براي نمايش دارند: left , top , name اين خصوصيات رو در فايلهاي ini يا ديتابيس يا ... ذخيره كنيد و هنگام نمايش فرم بازيابي كنيد. اگر مقادير كنترلها هم مورد نياز هست (به عنوان مثال caption يك label) مي تونيد اونها رو هم با توجه به نياز ذخيره كنيد
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 6145]