PDA

نسخه کامل مشاهده نسخه کامل : مشکل با سیو اطلاعات



rezapassword
28-11-2008, 16:49
سلام دوستان
من الان یه مشکلی با سیو اطلاعات فرم دارم
نمیتونم زبان برنامه رو سیو کنم ؟
یه سمپل گذاشتم ببنید چشه
ممنون
یا حق

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

_H2_
29-11-2008, 02:48
سلام
پیشنهاد میکنم از دستورات قدیمی VB6 استفاده نکنید و سعی کنید کلاً فراموششان کنید.
فرمان منویی زیر را پیگیری کنید:
Project->Properties->Settings

حال یک تنظیم جدید مثلاً با نام Language و نوع String اضافه کنید و پنجره را ببندید.
حالا میتوانید با دستور My.Settings.Language مقدار این تنظیم را بخوانید و یا بنویسید.
... = My.Settings.Language
My.Settings.Language = ...

با دستور My.Settings.Save هم متوانید Save اجباری انجام دهید و با My.Settings.Reload لود اجباری که البته معمولاً نیاز نمیشود.

موفق باشید.

rezapassword
29-11-2008, 11:09
سلام اچی جان
ممنون بابت پاسخ
اما از این دستور چه طور میشه برای زبان استفاده کرد
همون طور که میدونید فرم پرپرتی به نام زبان نداره ولی اگه داشت می شد اینو براش نوشت مثلا :
My.Settings.BColor = Me.BackColor
Me.BackColor = My.Settings.BColor
ولی فرم که چینین چیزی نداره
ممنون میشم راهنمایی کنید و یا اگه وقت دارید اون سمپل منو کامل کنید
ممنون

_H2_
29-11-2008, 23:57
سلام

اما از این دستور چه طور میشه برای زبان استفاده کرد
همیشه معیار مناسب و نظیری برای ذخیره با ساختارهای استاندارد میتوان پیدا کرد.
خود شما در کد قبلیتان چه کرده بودید؟ آیا کل شی System.Globalization.CultureInfo را ذخیره کرده بودید؟
خود ما دو string خاص با مقدارد "Persian" و "English" را ذخیره کرده بودید.

اما راه کاملتر و بهتر هم وجود دارد چرا "fa-IR" و یا "en-US" را ذخیره نمیکنید؟ در زمان نوشتن و خواندن هم نیاز به iF و یا Select Case ندارید، ضمن آنکه اگر تعداد زبان ها هم بیشتر شود کنتر ساده تری خواهید داشت.

و بهتر از مقدار Name مقدار عددی lcid است
مثلاً lcid زبان فارسی 1065 است و lcid زبان انگلیسی 1033 است.


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

rezapassword
01-12-2008, 19:15
قضاوت با خودتون اچی جان

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

_H2_
01-12-2008, 23:58
سلام

قضاوت با خودتون اچی جان
اتفاقاً نام لغت قبلی Language را مخصوصاً Int32Language گذاشتم (وگرنه نام که مهم نیست) تا متوجه شوید آیتمی را که در بخش Settings میسازید دیگر نباید از نوع String باشد بلکه در کامپو مربوطه باید نوعش را Int32 یا Integer قرار دهید.

چون فکر کردم متوجه میشود دیگر تاکیدی نکردم.
موفق باشید.

rezapassword
02-12-2008, 10:58
شرمنده اصلا هواسم نبود
خیلی ممنون

rezapassword
04-12-2008, 12:29
اچی جان اینو ببین
برای هی فرمی سیو میشه اما فرم اصلی تغیر نمیکنه
ممنون اگه حلش کنی
یا حق

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

rezapassword
05-12-2008, 17:44
دوستان یه کمکی بفرمائید
والا ما گیر اینیم:40::11:

_H2_
05-12-2008, 21:08
سلام

اچی جان اینو ببین
برای هی فرمی سیو میشه اما فرم اصلی تغیر نمیکنه
ممنون اگه حلش کنی

دلیلش مشخص است شما بارگذاری تنظیم را در form_load انجام داده اید، جایی که برای خود فرم اصلی بارگذاری اتمام شده و کار از کار گذشته!

شما باید روال loaddd را قبل از بارگذاری فرم اولیه اجرا کنید.
مثلاً در sub main یا sub new

مثلاً form_load را حذف کنید و کد زیر را اضافه کنید:
(البته sub main منطقی تر است ولی کد زیر هم کار میکند.)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

=====

ضمناً دستوراتی شبیه about.show و یا other.show صحیح نیستند و مغایرت اساسی با موازین oop دارند و صرفاً برای هماهنگی و آپگراید راحت تر کدها از vb6 قرار داده شده اند.

از دستورات زیر استفاده کنید:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

=====

موفق باشید.

rezapassword
06-12-2008, 13:23
اچی جان من با این کد شما مشکل دارم راه بهتری نیست ؟
مثلا لود اطلاعات در اسپلش ؟

_H2_
07-12-2008, 00:25
سلام
نباید به مشکلی بربخورید!!!

از sub main استفاده کنید.
راه قطعی و بهترین راه.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

و البته با تنظیم زیر:
Project->Properties->Application
آیتم Enabled Appilication framework را از انتخاب خارج کنید و از کامبو Startup گزینه Sub Main را انتخاب کنید.

rezapassword
07-12-2008, 10:58
سلام اچی جان
بله قبول دارم راه قطعی هست اما این طور ما فرام ورک رو از برنامه میگیریم درسته ؟
یعنی استایل و ستینگ و .... اسپلش
که این اصلا به درد نمیخوره
شما راهی بهتر سراغ نداری ؟

_H2_
07-12-2008, 22:54
سلام

بله قبول دارم راه قطعی هست اما این طور ما فرام ورک رو از برنامه میگیریم درسته ؟
یعنی استایل و ستینگ و .... اسپلش
که این اصلا به درد نمیخوره

بجز مورد splash بقیه موارد که ذکر کردید اشتباه هستند.
اگر توانستید framework را از vb.net و c#.net بگیرید، خبرم کنید!

در واقع این Enabled Appilication framework اصلاً ارزشی ندارد!
اصلاً C#.Net و Vc++.Net آنرا برای برنامه نویسانشان ندارند، همه برنامه های C#.Net و VC++.Net مستقیماً با subMain شروع میشوند.
من شخصاً استفاده از sub main را به vb کارها هم توسیه میکنم.

برای splash هم به سادگی میتوانید آنرا قبل از فرم اصلی و به مدت مشخصی نمایش دهید، همش 4 یا 5 خط کد میشود.

rezapassword
08-12-2008, 08:36
اچی جان یعنی راهی نداره به جز این ؟:41:

rezapassword
09-12-2008, 12:47
ایا نمیشه اطلاعات رو در اسپلش که قبلا از فرم هست لود کرد

_H2_
09-12-2008, 21:57
سلام

اچی جان یعنی راهی نداره به جز این ؟
من واقعاً ناراحتی و مشکل شما درک و احساس نمیکنم!!!!؟؟؟؟
شما به راحتی میتوانید کد را در sub main یا sub new قرار دهید و هیچ کدام مشکل و عیبی ندارند!!!
اگر هر یک ایرادی دارند، خوشحال میشوم من هم بدانم.


ایا نمیشه اطلاعات رو در اسپلش که قبلا از فرم هست لود کرد
بله باید بشود، تست کنید.
در قبل از load هر فرمی دستور شما اجرا شود، فرم هایی که بعد از ان load خواهند شد متاثر خواهند شد.
حال این کد میتوانید هر کجا اجرا شود.

(
البته این تا حدودی روش منطقی و خوبی هم است.
یعنی در یک برنامه کامل، معمولاً از sub main استفاده میشود و فرم splash نشان داده شده و اعمال بارگذاری آغاز میشود.
)

=====

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

rezapassword
10-12-2008, 17:55
سلام اچی جون
همین که جواب ما فقیر فقرا رو میدی دمت گرم
ببین من یه فرم درست کردم با اسم اسپلش و اون رو لود قرار دادم
بعد در یک تایمر با اینترنئال 1 کد زبان رو نوشتم و در یک تایمر دیگه با اینتروال 100 کد مخفی کردن فرم و نمایش فرم 1
ولی بازم کار نمیکنه ؟
مشکل چیه ؟

_H2_
10-12-2008, 22:22
سلام

ولی بازم کار نمیکنه ؟
مشکل چیه ؟

اگر کد را بگذارید شاید بتوانم ایرادش را پیدا کنم ولی الآن تئوری ندارم!

=====

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

حلقه while اخر هم تضمین میکند که اگر فرآیند بارگذاری کمتر از 3 ثانیه طول کشیده باشد، حتماً فرم Splach سه ثانیه نمایش داده شده باشد.
(البته خود من به شخصه اصلاً از این کار خوشم نمی آید و هیچگاه صبر اجباری را تحمیل نمیکنم)

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

rezapassword
11-12-2008, 12:09
بفرما اچی جان


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

_H2_
14-12-2008, 08:25
سلام

ببین من یه فرم درست کردم با اسم اسپلش و اون رو لود قرار دادم
بعد در یک تایمر با اینترنئال 1 کد زبان رو نوشتم و در یک تایمر دیگه با اینتروال 100 کد مخفی کردن فرم و نمایش فرم 1
ولی بازم کار نمیکنه ؟
مشکل چیه ؟

درست است، حق با شما است.
من چون از امکانات غیر sub main استفاده نکرده بودم، اطلاع نداشتم.

وقتی در خود تنظیمات vb فرم splash را معین میکنید، روند کار اینطور نیست که صبر کند تا splash کامل بسته شود و سپس فرم اصلی را بارگذاری کند (که البته صحیح است) و این مسئله باعث میشود کد داخل splash عملاً بعد از بارگذاری فرم اصلی فراخانی شود.

متاسفم، همان sub main را به شما پیشنهاد میکنم با کد مشخص زیر برای برنامه ای که فرستاده بودید.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
- پروزه را برایتان اصلاح نکردم، چون من با 2008 کار میکنم و با اصلاح من، پروژه را در 2005 شما باز نمیشود.
- مقدار عدد 3 را میتوانید بسته به دلخواه خود برای نمایش اجباری splash تنظیم کنید.
- البته Int32Language کد قبلیتان هم برروی String تنظیم شده که باید Integer اش کنید.
- شما کد فوق را با تنظیم زیر استفاده کنید، مطمئن باشید مشکلی برای حال و آینده نخواهد داشت، چون اگر مشکلی میداشت پیش از شما برنامه نویسان دیگر زبانهای دات نتی آن را درک میکردند.
[QUOTE=_H2_ته با تنظیم زیر:
Project->Properties->Application
آیتم Enabled Appilication framework را از انتخاب خارج کنید و از کامبو Startup گزینه Sub Main را انتخاب کنید.
[/QUOTE]

موفق باشید.

rezapassword
14-12-2008, 09:01
خیلی ممنون اچی جان
چشم ما هم مطیع اوامر شمائیم
موفق باشی ( بیشتر )
یا حق

rezapassword
14-12-2008, 18:19
سلام اچی جان
یه مشکلی هست بعد از استفاده از این کد تکست ها رد برنامه وقتی رو انگلیسی هست به اون حالت تکس رندر ( text render ) میره چیش کنم ؟

_H2_
15-12-2008, 00:49
سلام

یه مشکلی هست بعد از استفاده از این کد تکست ها رد برنامه وقتی رو انگلیسی هست به اون حالت تکس رندر ( text render ) میره چیش کنم ؟
درست متوجه نشدم.
مشکلتان با چپ چین و راست چین در TextBox ها و Label ها است؟

rezapassword
15-12-2008, 18:24
سلام
نه اچی جان
برو رو یه لیبل کلیک کن و در قسمت پرو پرتیس دنبال یه چیزی تو این مایه ها بگرد
text render در اون اخر ها هست
ببین لیبل چه شکلی میشه !
الان برا من تمام فرم و کنترل ها این طور شدن
چه طور درستش کنم؟
ممنون:11:

_H2_
16-12-2008, 08:41
سلام
متاسفام واقعاً میخواهم کمک کنم ولی مشکلی ندیدم.:11:
منظورتان UseCompatibleTextRendering است؟
خوب به راحتی True و False میشود و تنظیم هم سرجایش میماند! (تغییری نمیکند)

اگر میخواهید مقدار پیشفرضی را برای UseCompatibleTextRendering مشخص کنید، میتوانید در Sub Main کد زیر را اضافه کنید:
(System.Windows.Forms.Application.SetCompatibleTex tRenderingDefault(False/True

اگر ایراد تابلو و مشخص است، یک تصویر بگذارید شاید متوجه شوم!:11:
=====

یک مشکل دیگر هم گاهاً در برنامه های چند زبانه این تیپی پیش می آید مشکل چپ چین و راست چین Label ها است که به علت ابعاد مختلف متن در زبانهای مختلف Label های زیر هم را از تراز با هم خارج میکند.
در این حالت میتوانید AutoSize را غیر فعال کنید و سایز Label را دستی به سایز بزرگتر و مناسبی ست کنید.

=====

موفق باشید.

rezapassword
16-12-2008, 10:27
سلام اچی
با کد شما مشکل حل شد
اما برای بیان منظورم دو عکس اماده کردم که مطلب را شما به درستی درک کنید :
سپاسگدارم
موفق باشی

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]