مشاهده نسخه کامل
: سوال هایی از Vb2008
بچه ها کسی هست که نسخه ی 2008 ویژوال بیسیک رو بلد باشه ؟
من سوالایی که دارم بپرسم.
mobilebaz
09-10-2008, 18:13
سلام دوست عزبز
نمی دونم منظور شما از این جمله چیه :
بچه ها کسی هست که نسخه ی 2008 ویژوال بیسیک رو بلد باشه ؟
اما شما می تونستید سوال هاتون رو بپرسید و منتظر جواب دوستان بمونید...
موفق باشید.
moslem_pc
09-10-2008, 18:32
سلام دوست عزیز.
من هم مدتی است که از ویژوال بیسیک 6 به 2008 مهاجرت کرده ام و به خوبی خودم رو باهاش جفت کرده ام!
امیدوارم بتونم کمکت کنم!!!
میتونی سوالاتت رو بیان کنی مطمئن باش کسانی برای پاسخ دادن بهت هستند!!!
سلام!
به انجمن NET Framework. مراجعه شود.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
موفق باشید :11:
لطفا یکی به این سوال جواب بده ...
نمیدونم کسی با create graphic کار کرده یا نه.
تو قطعه کد زیر کاربر میتونه با حرکت موس و نگه داشتن دکمه ی چپ روی کنترل مورد نظر مثل براش فتوشاپ نقاشی کنه ولی مشکل من رنگشه ... میخوام رنگ رو کاربر خودش با استفاده از color dialog انتخاب کنه ولی چه جوری ؟
colordialog1.color رو قبول نمیکنه تا به عنوان رنگ بشناسه.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سلام
به انجمن NET Framework. مراجعه شودنظر بدی نیست.
تو قطعه کد زیر کاربر میتونه با حرکت موس و نگه داشتن دکمه ی چپ روی کنترل مورد نظر مثل براش فتوشاپ نقاشی کنه ولی مشکل من رنگشه ... میخوام رنگ رو کاربر خودش با استفاده از color dialog انتخاب کنه ولی چه جوری ؟
colordialog یک Color بر میگرداند که یک رنگ است در حالی که برای پرکردن یک ناحیه شما نیاز به یک Brush دارید که با یک الگوی قلم مویی خاص ناحیه ای را پر کند، مثلاً تکرار یک عکس کوچک یا با نوعی هاشور یا با یک رنگ خالص و....
در مورد قلم مویی با رنگ خالص میتوانید از SolidBrush استفاده کنید.
و ضمناً بهتر است از کدی مثل این استفاده کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دوست عزیز دستت درد نکنه ...
مشکلم حل شد و اون چیزی که مد نظرم بود رو ساختم.
همیشه به این فکر میکردم که soild brush با brush چه فرقی داره که فکر کنم الان فهمیدم.
میشه در مورد دستور using_ یه توضیحی بدی ؟ ... ممنون میشم
سلام
میشه در مورد دستور using_ یه توضیحی بدی ؟
forum.p30world.com/showthread.php?p=1556644#post1556644
من توی وی بی 6 یه برنامه واسه ساخت کنترل ساخته بودم ... مثلا کاربر رو یه دکمه که کلیک میکرد یه label ساخته میشد و میتونست تنظیمات اون رو تغییر بده ولی تو VB2008 نمیدونم کد ساخت کنترل چیه ... شما میدونی ؟
و سوال دوم ... آیا میتونم کاری کنم که وقتی کاربر با استفاده از DrawEllipse یه بیضی میکشه بعدش این بیضی توسط withevent تو لیست رویداد ها بیاد ؟
سلام
من توی وی بی 6 یه برنامه واسه ساخت کنترل ساخته بودم ... مثلا کاربر رو یه دکمه که کلیک میکرد یه label ساخته میشد و میتونست تنظیمات اون رو تغییر بده ولی تو VB2008 نمیدونم کد ساخت کنترل چیه ... شما میدونی ؟
بگذارید یک چیز را شفاف برایتان روشن کنم.
در VB9 هر کاری که در زمان طراحی انجام میشود در runtime هم ممکن است و اصولاً فرقی با هم ندارد، درست برعکس VB6!
دیگه از کامپایل کد که بالاتر نداریم؟؟؟
شما با VB9 میتوانید کد VB9 داخل یک String را کامپایل کنید و به صورت dll یا exe در هارد ذخیره کنید یا بدون ذخیره در هارد و بعد از کامپایل اجرا کنید، منظورم Script نویسی و VBScript نیست. این در دسترس بودن خود هسته مرکزی کامپایلر IL است که خود VS از آن استفاده میکند.
(در واقع VS9 بر خلاف VS6 ابزار حیاتی نیست و بلکه یک لایه کمکی است، شما اگر فقط Framework را نصب کنید و یا در Vista باشید با یک Notapad هم میتوانید برنامه VB9 نوشته کامپایل کنید و خروجی exe را بدون نصب VS تحویل بگیرید.)
=====
وقتی شما در VB6 کنترلری را روی فرمتان قرار میدهید، مختصات و مشخصات کنترلر در فایل frm قرار میگیرد تا بعداً کامپایلر به صورت خاص خدمتش برسد!
ولی وقتی شما در VB9 کنترلری را روی فرم میدهید، در واقع VS به شما کمک میکند و کد runtime ساخت کنترلر و اضافه شدن آن به فرم را به جای شما در فایل Designer.vb تایپ میکند، یعنی اگر شما بروید و کدهای VB9 موجود در Designer.vb را تغییر دهید، خواهید دید کنترلر شما در زمان طراحی هم تغییر میکند.
به بیان دیگر کنترلرهای فرمهای VB9 مختصات و خواصشان به صورت خاص و ویژه ذخیره نمیشود، بلکه کد VB9 است و تنظیم خواص تایپ میشود و بعد کامپایلر مثل مابقی کدها این کد را هم کامپایل میکند.
امیدوارم متوجه منظورم شده باشید.
در VB9 همه کدها طبق قوانین شی گرایی (OOP) کار میکنند و اصولی ثابت و مشخص بر برنامه نویسی desktop و web و... حکم فرما است.
اگر یک Label جدید میخواهید، کافی است شی مورد نظر را با دستور New و به مجموعه Controls فرم مورد نظر Add کنید، خواص این شی جدید را هم میتوانید قبل/بعد از Add به دلخواه تنظیم کنید.
کد اضافه کردن یک دکمه + هندلر رویداد کلیکش...
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر اصول شی گرایی و پلیمورفیزم را درک کرده باشید، VB9 و #C برایتان بسیار راحت خواهد بود.
(حتی وقتی به یک Point برای تخصیص به Location نیاز داریم، آنرا New میکنیم، درست مثل خود Button ! یعنی طریقه استفاده از یک Button با یک Point فرقی ندارد!)
=====
آیا میتونم کاری کنم که وقتی کاربر با استفاده از DrawEllipse یه بیضی میکشه بعدش این بیضی توسط withevent تو لیست رویداد ها بیاد ؟
این هم باز به همان تفکر شی گرایی مربوط میشود.
ترسیم یک دایره فقط یک ترسیم است یک تغییر رنگ چند پیکسل، همچین چیزی نمیتواند رویداد داشته باشد ولی اگر یک کنترلر مخصوص ترسیمتان داشته باشید و ترسیم را در محدود کنترلر خودتان انجام دهید، آنگاه رویداد هم خواهید داشت.
forum.p30world.com/showthread.php?p=2565004#post2565004
واقعا ازتون ممنونم ... خیلی خوب راهنمایی میکنید.
و یه سوال دیگه در مورد این برنامه نویسی :
- برنامه ی من یه برنامه ی ساده س که مخلوطی از notepad و paint هست، میخوام قابلیت save کردن پروژه رو به کاربر بدم با پسوند مخصوص خود برنامم.
مثلا کاربر روی دکمه ی save کلیک کنه و پروژه رو با پسوند *.majid ذخیره کنه و بعد بتونه اون رو لود کنه تا بقیه ی کارش رو انجام بده.
مطمئنم که میشه ولی نمیدونم چه جوری ...
سلام
بله مشکل خاصی ندارد...
ولی باید بدانم اطلاعات شما چی است که باید ذخیره شود...
یک متن است؟ یک لیستی از نقاط است؟ یک آرایه عددی است؟ یک تصویر است؟ مخلوطی از اینها است؟ و...
در یک برنامه اصولی شما باید یک Class داشته باشید که مثل بانک اطلاعاتی برنامه در RAM باشد و همه دیتا ها از آن خوانده شود و در آن نوشته شود، بعد برای Save و Load از یک فایل کافی است فقط این Class را Serialize و Deserialize کنید.
این سریالی کردن میتواند
1) دستی و با فرمت خاصی صورت بگیرد
2) طبق رسم مرسوم و جدید اغلب برنامه ها و با حصول شرایط به فرمت XML و با کمک کلاسس System.Xml.Serialization.XmlSerializer و نمونه های مشابه صورت بگیرد.
3) میتوانید به صورت باینری و با حصول شرایط با کلاسس System.Runtime.Serialization.Formatters.Binary.Bin aryFormatter صورت بگیرد.
و...
داده های لحظه ای برنامه را شرح دهید؟ (چه چیزهایی باید ذخیره شود؟)
توی این برنامه ی خیلی ساده که ساختم کاربر میتونه با یه براش خیلی ساده مثل paint عمل کنه، و با استفاده از دستور Draw میتونه rectangle یا ellipse رسم کنه و امکان رسم خط هم با استفاده از drawline داره.
کاربر همه این کارها رو میتونه روی richbox انجام بده. (منظورم اینه که من این دستورات رو روی ریچ باکس گزاشتم)
در نتیجه محتویات نوشته شده توی یه richbox و شکل های کشیده شده به وسیله ی brush و draw باید ذخیره بشن.
سلام
اگر برای سادگی و کمی کد روش 3) را انجام دهیم، چیزی شبیه این خواهد شد...
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
اگر برای سادگی و کمی کد روش 3) را انجام دهیم، چیزی شبیه این خواهد شد...
ببخشید منظورتون رو متوجه نشدم.
سلام
اگر برای سادگی و کمی کد روش 3) را انجام دهیم...
ببخشید منظورتون رو متوجه نشدم
منظورم ارجاع به پست قبلی ام بود (پست 12)
1) دستی و با فرمت خاصی صورت بگیرد
2) طبق رسم مرسوم و جدید اغلب برنامه ها و با حصول شرایط به فرمت XML و با کمک کلاسس System.Xml.Serialization.XmlSerializer و نمونه های مشابه صورت بگیرد.
3) میتوانید به صورت باینری و با حصول شرایط با کلاسس System.Runtime.Serialization.Formatters.Binary.Bin aryFormatter صورت بگیرد.
و...
فکر نکنم با کد که مشکلی داشته باشید.
از راهنماییتون خیلی ممنونم،
میشه در مورد کد بیشتر توضیح بدید ؟
من چیز زیادی ازش نفهمیدم.
اگه میتونید وقتی کد رو مینویسید به همراه کامنت باشه، اگه به زبان انگلیسی هم بنویسید مشکلی نیست.
خیلی خیلی ممنونم.
امیدوارم که بتونم جبران کنم.
از این که وقتتون رو میگیرم خیلی عذر میخوام.
به هر حال ما هم دوست داریم از وی بی چیزی یاد بگیریم.
سلام
آخه جوان رشید، دو خط کد که کامنت نداره !.... :31:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
یک کلاسس با قابلیت سریالی تعریف کردیم که دو مقدار را نگه داری میکند
اولی به نام Rtf یک String است که برای نگه داری متن فرمت دار و مخصوص RichTextBox استفاده میشود.
دومی با نام Img یک Image یا Bitmap (عکس) است که کلیه نقاشی ها و خطوط ترسیمی شما را در خود دارد.
دو متد هم داری.
اولی با نام Save وظیفه سریالی کردن کلاسس عزیزمان را بر عهده دارد!
شی BinaryFormatter را میسازد،
فایل مورد نظر را برای نوشتن باز میکند،
کلاسس جاری که کد در آن اجرا میشود (Me) به همراه stream فایل باز شده تحویل BinaryFormatter میدهد تا کلاس را سریالی کند و در فایل ذخیره کند.
دومی با نام Load است و وظیفه ضد سریالی کلاسس را بر عهده دارد.
شی BinaryFormatter را میسازد،
فایل مورد نظر را برای خواندن باز میکند،
stream فایل باز شده را تحویل BinaryFormatter تا اطلاعات را خوانده و مقدار جدید از کلاسس Data را پس دهد
در نهایت چون خروجی BinaryFormatter از نوع Object است (و مطمئن هستیم که داخلش کلاسس Data خودمان قرار دارد) با دستور TryCast اشره گر Object را به Data قالب ریزی میکنیم.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در کدهای برنامه برای ذخیره...
با کمک New نمونه جدیدی از کلاسس Data میسازیم و محتویات RichTextBox و تصویر نقاشی شده را در ان میریزیم و متد Save را اجرا میکنیم.
(معمولاً این کلاسس در یک برنامه از قبل وجود دارد و دیتا هم در ان قرار دارد)
برای open هم...
دستور Load را اجرا میکنیم و نسخه جدید و کاملی از Data را پس میگیریم
این بار به صورت عکس محتویات Data را به RichTextBox و تصویرمان باز میگردانیم.
اگر کدخاصی را متوجه نشدید، بگویید تا همان را بیشتر توضیح دهم.
=====
فقط بدیهی است که ترسیمات شما نباید یک راست در روی پرده نمایش مونیتور انجام شود و باید آنها را در bmp داخل ram تان ترسیم کنید و بعد bmp را روی مونیتور ترسیم کنید، اینطوری بعداً با save و load تصویر هم مشکلی نخواهید داشت.
البته در کل ترسیم تصویر روی RichTextBox یکم عجیب و غریب است!! و اگر RichTextBox کوچک باشد و نیاز به Scroll پیدا کنید...
خیلی خیلی متشکر.
در مورد شی object اگه میشه توضیح مختصری بدید و بگید که مجاها میشه ازش استفاده کرد.
سلام
برای VB6 کارها میتوان گفت Object جایگزنی بر Variant است.
ولی Variant یک ساختار COM است و اصول کاملاً متفاوتی دارد و همه انواع دیتاها را نمیتوان در آن ریخت.
ولی Object در VB9 یک ساختار پایه با اصول OOP است و کلیه ساختارهای موجود به صورت مستقیم و غیر مستقیم وراثتی از Object هستند ... (انواع Class و Structure و Delegate و Enum و...)
در نتیجه هر اطلاعاتی را میتوان در Object ریخت، حتی اشاره گرهای توابع... و ساختارهایی که خودمان کدش را نوشتیم، (مثل همین کلاسس درپیت Data در مثال فوق)
در واقع هر کلاسی که تعریف میکنید باید طبق اصول سخت گیرانه OOP دات نت از یک کلاسس دیگر مشتق شده باشد و وقتی در تعریف یک کلاس ما صراحتاً کلاسس پایه را مشخص نمیکنیم در واقع از Object وراثت میگیریم.
دو کد زیر برابر هستند
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اگر احیاناً، احتمالاً (و یک درصد) متوجه مطالب فوق نشدید، زیاد مهم نیست، بعداً که پایه کاریتان قوی تر و شفاقت بیشتری با oop پیدا کردید لذت خواهید برد!
فعلاً شاید دانستن این نکته کافی باشد که ره چیزی را میتوانید در Object و برای تبدیل اشاره گر Object به دیتای اولیه (قالب ریزی) میتوانید از DirectCast و Trycast استفاده کنید، ضمن آنکه CType بجز قالب ریزی وظیفه تبدیل را هم انجام میدهد.
(این مطالب در خصوص کل سلسه مراتب وراثتی مصداق دارد و صحیح است)
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ضمناً برای نوع داده های اصلی و پرکاربرد مثل Integer و String و UInteger و Short و UShort و... معادل CType کوتاه تر و با کد کمتری هم وجود دارد، مثل CInt و CStr و...
طریقه ی ساخت یک setup توی vb چه جوریه ؟
منظورم از لحاظ کده ... من مشابهش رو درست کردم.
کد کپی کردن یه فایل چیه ؟
چه جوری میشه یک progress bar رو به یه عملیاتی از برنامه مثل کپی کردن یا لود شدن نسبت داد ؟
طریقه ی ساخت یک setup توی vb چه جوریه ؟
منظورم از لحاظ کده ... من مشابهش رو درست کردم.
کد کپی کردن یه فایل چیه ؟
چه جوری میشه یک progress bar رو به یه عملیاتی از برنامه مثل کپی کردن یا لود شدن نسبت داد ؟
دست گلت درد نکنه،
ببخشید زحمت میدم :31:
:11::11::11::11::11::11::11:
سلام
طریقه ی ساخت یک setup توی vb چه جوریه ؟
خود VS امکان ساخت پروژه msi را دارد ...
کد کپی کردن یه فایل چیه ؟
دستور عادی کپی فایل این است:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ولی کپی را یکسره و بدون هیچ دیالوگی انجام میدهد.
(البته با api میتوانید در زمان کپی دیالوگ استاندارد همان سیستم عامل را هم نمایش دهید.)
چه جوری میشه یک progress bar رو به یه عملیاتی از برنامه مثل کپی کردن یا لود شدن نسبت داد ؟
چیز پیچیده ای نیست و سوالتان هم برایم کمی عجیب است، چون دقیقاً نمیتوانم متوجه شوم چه مشکلی در سر راهتان وجود دارد.
شما باید یک معیاری در کدتان داشته باشید، یک عدد که مشخص کننده Max مقدار و مقدار پیشرفت جاری باشد.
مثلاً در کپی 5 فایل، میتوانید معیار را تعداد فایل در نظر بگیرید،
آنگاه عدد Max را 5 در نظر بگیرید و با اتمام کپی هر فایل، شمارنده را یک واحد افزایش دهید
یا میتوانید معیار را حجم بایتی فایل در نظر بگیرید،
آنگاه عدد Max جمع بایتی کل فایلها خواهد بود و با اتمام کپی هر فایل، شمارنده را به اندازه حجم همان فایل افزایش میدهید.
حتی میتوانید عمل کپی هر فایل را خودتان دستی انجام دهید تا در هر لحظه بدانید چقدر از فایل کپی شده
(مثلاً تابع زیر میتواند فایل sourceFileName را در destFileName کپی کنید و اینکار را در بلوک های 16Kb انجام میدهد.)
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حجم کل دیتایی که باید کپی شود strmsource.Length است) و حجم اطلاعاتی کپی شده تا همان لحظه strmdestin.Position است.)
اینقدر راحت بود و من نمیدونستم ؟!!!!!!! :18:
منو باش گفتم الان یه عالمه باید کد بنویسم .
از راهنماییتون ممنونم ... اما چند تا سوال :
خود VS امکان ساخت پروژه msi را دارد ...
ایکه گفتی یعنی چه ؟
(البته با api میتوانید در زمان کپی دیالوگ استاندارد همان سیستم عامل را هم نمایش دهید.)
چه جوری ؟
راستی یه سوال دیگه ... یادم رفت بپرسم :
آیا امکان این وجود داره که چیزی که من میخوام کپی کنم رو توی خود برنامم embedded کنم ؟
اگه این کار رو کنم path رو چه جوری باید بهش بدم ؟
یه سوال دیگه ... چه جوری میشه به وسیله ی وی بی سیستم کاربر رو چک کرد ؟
مثلا میخوام بگم اگه ویندوز کاربر ویستا ... فلان کار رو کن ... یعنی تو ایکس پی این کار رو نکنه
سلام
ایکه گفتی یعنی چه ؟
forum.p30world.com/showthread.php?p=1282316#post1282316
forum.p30world.com/showthread.php?p=1321023#post1321023
اگر سرچ کنید یک تاپیک دیگر هم جناب hamidreza_buddy دارند.
==============
چه جوری ؟
Project->Add Class
فایل جدید که ساخته شد همه چیز را پاک کنید و کد زیر را وارد کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
(این کد با مسیرهای unicode ای و نام فایلهای و پوشه های فارسی هم مشکلی ندارد.-برعکس VB6!)
حالا باید بتوانید با دستوری شبیه این از دیالوگ مخصوص کپی کردن فایلها در خودر سیستم عامل استفاده کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
پارامتر آخر را برای پنجره مالک دیالوگ گذاشته ام، اگر دارید تک خط فوق را از داخل یک form اجرا میکنید میتوانید به جای Nothing اشاره گر Me را ارسال کنید.
==============
آیا امکان این وجود داره که چیزی که من میخوام کپی کنم رو توی خود برنامم embedded کنم ؟
اگه این کار رو کنم path رو چه جوری باید بهش بدم ؟
forum.p30world.com/showthread.php?p=1192806#post1192806
یا
میتوانید فایل را در MyComputer کپی کنید و در VS و SolutionExplorer با راست کلیک Paste کنید.
برای برخی فایلها مثل mdb و mdf و... به محض paste دیالوگی ظاهر میشود که مهم نیست و باید Cancel شود.
سپس فایل را در SolutionExplorer انتخاب کنید. (select) و به پالت properties بروید:
Build Action->Embedded Resource
Copy to Output Directory->Do not copy
تمام شد!
میتوانید در همان solutionexplorer با راست کلیک یک newfolder به نام دلخواهی بسازید و همه این قبیل فایلهایی که باید در داخل exe یا dll شما قرار بگیرند را در آن پوشه ی خاص قرار دهید.
برای Extract هم میتوانید از یکی از دو کد زیر استفاده کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
برای استفاده هم باید کدی شبیه این را اجرا کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
فرق دو نمونه در این است که اولی این ذخیره را در بلوک های کوچک 16K انجام میدهد و در نتیجه برای فایلهای کوچک و بزرگ با اطمینان قابل استفاده است.
ولی دومی یک فایل را در یک مرحله خوانده و ذخیره میکند و فقط برای فایلهایی با حجم کم و معقول قابل استفاده است.
اگر فکر میکنید که کد اول یک کم شبیه کد دستی پست قبلیم شده، احتمالاً حق با شما است!!!!
Stream مفهوم ساده ای در حد یک نوارنقاله اطلاعات را دارد و کاربرد وسیعی بسیار در دات نت دارد...
دانلود و اپلود asp.net در طراحی صفحات وب و وسایتها بر اساس همین اصول است و همچین برخی قابلیت های شبکه و یا فشرده سازی اطلاعات و بافرینگ برخی دیتاها و خواندن و نوشتن فایلها و... و همانطور هم که در این دو پست دیدید چندان مشکل نیست.
==============
مثلا میخوام بگم اگه ویندوز کاربر ویستا ... فلان کار رو کن ... یعنی تو ایکس پی این کار رو نکنه
... If (System.Environment.OSVersion.Version.Major>=6) Then ... Else
forum.p30world.com/showthread.php?p=2856795
MrJamshidy
26-10-2008, 17:11
فكر ميكنم اين بحث رو به قسمت مربوطه منتقل كنيد بهتر باشه
فكر ميكنم اين بحث رو به قسمت مربوطه منتقل كنيد بهتر باشه
البته فکر نکنم زیاد هم ضروری باشه ... ولی منتقل کردنش که کار مدیراس ... اگه خیلی واجبه این تاپیک رو منتقل کنن ولی نکنه به جای منتقل کردن حذف کنن !!!
میتوانید فایل را در MyComputer کپی کنید و در VS و SolutionExplorer با راست کلیک Paste کنید.
برای برخی فایلها مثل mdb و mdf و... به محض paste دیالوگی ظاهر میشود که مهم نیست و باید Cancel شود.
سپس فایل را در SolutionExplorer انتخاب کنید. (select) و به پالت properties بروید:
Build Action->Embedded Resource
Copy to Output Directory->Do not copy
خیلی خیلی ممنون. خوب حالا که فایل رو embedded کردم نحوه ی آدرس دهیش چه جوریه ؟
من میخوام فایلی که embedded شده رو کپی کنم روی یه درایو.
چه جوری باید بهش آدرس بدم ؟
یک سوال دیگه ... هرچی سعی کردم بنویسم نتونستم ... البته تونستم ولی نصفه کاره شد.
من روی فرم یه rich box دارم که کاربر آزادانه روش تایپ میکنه.
میخوام اگه کاربر یه موقع کلمه ی majid رو تایپ کرد،
رنگ کلمه ی مجید عوض بشه !
یعنی اگه سیاهه بشه قرمر.
مثل همین vb که تا یه کد وارد میکنیم رنگش رو عوض میکنه.
سلام
خیلی خیلی ممنون. خوب حالا که فایل رو embedded کردم نحوه ی آدرس دهیش چه جوریه ؟
من میخوام فایلی که embedded شده رو کپی کنم روی یه درایو.
چه جوری باید بهش آدرس بدم ؟
گمان میکنم شما پست 27 را چندان با دقت نخوانده اید !!!!!!!!!!!!!!!!!!!!!!!!!!!
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
من روی فرم یه rich box دارم که کاربر آزادانه روش تایپ میکنه.
میخوام اگه کاربر یه موقع کلمه ی majid رو تایپ کرد،
رنگ کلمه ی مجید عوض بشه !
یعنی اگه سیاهه بشه قرمر.
مثل همین vb که تا یه کد وارد میکنیم رنگش رو عوض میکنه
در این مورد بهتر است از چند رسمانی استاده کنید و البته VS از RichTextBox استفاده نمیکند.
باید وقت کنم و تستی انجام دهم تا بتوانم جواب دقیق تری بدهم.
گمان میکنم شما پست 27 را چندان با دقت نخوانده اید !!!!!!!!!!!!!!!!!!!!!!!!!!!
بله ... حواسم نبود ... خیلی ممنون.
در این مورد بهتر است از چند رسمانی استاده کنید و البته VS از RichTextBox استفاده نمیکند.
باید وقت کنم و تستی انجام دهم تا بتوانم جواب دقیق تری بدهم.
خیلی ممنون.
راستی اون کدی که گذاشتید واسه چک کردن ویندوز بود ؟
یعنی عدد 6 نمایانگر ویندوز ایکس پی هست ؟
واسه ویندوز دیگه ... مثلا ویستا چه کدی رو باید وارد کرد ؟
سلام
راستی اون کدی که گذاشتید واسه چک کردن ویندوز بود ؟
یعنی عدد 6 نمایانگر ویندوز ایکس پی هست ؟
واسه ویندوز دیگه ... مثلا ویستا چه کدی رو باید وارد کرد ؟
من در این خصوص توضیح بیشتری ندادم چون لینک یک تاپیک را داده بودم.
عدد 6 نسخه vista است، برای لیست کاملتر به تاپیک زیر مراجعه کنید:
forum.p30world.com/showthread.php?p=2856795
اگر بعد از دیدن تاپیک همچنان مشکلی داشتید، میتوانید بپرسید.
=====
متاسفانه و با عرض شرمندگی چند روز اخیر کمی بیشتر سرم شلوغ شده، که با عث تاخیر در ارسال پاسخ شد.
ببخشید ... این سوال چی شد ... تونستید جوابش رو پیدا کنید ؟
یک سوال دیگه ... هرچی سعی کردم بنویسم نتونستم ... البته تونستم ولی نصفه کاره شد.
من روی فرم یه rich box دارم که کاربر آزادانه روش تایپ میکنه.
میخوام اگه کاربر یه موقع کلمه ی majid رو تایپ کرد،
رنگ کلمه ی مجید عوض بشه !
یعنی اگه سیاهه بشه قرمر.
مثل همین vb که تا یه کد وارد میکنیم رنگش رو عوض میکنه.
سلام
در خصوص آن متن رنگی و richtextbox،
من مدت ها قبل یک کنترلر خیلی قوی دیده بودم و دانلود کرده بودم و بالاخره با جستجویی کافی (!) توانستم پیدایش کنم.
قویاً پیشنهاد میکنم به جای RichTextBox از این کنترلر استفاده کنید.
این کنترلر مخصوص همین کار طراحی شده و امکانات وسیعی در حد برابری با امکانات ویرایشگر متنی خود VS دارد.
نمونه کد ساده به همراه dll را میتوانید از زیر دانلود کنید:
cid-9b2bdd1b12ce8c7d.skydrive.live.com/self.aspx/H2FX.Net/TextEditor.zip
واااااااااااااااااااااااا ااااااااااااااااااااااااا ااااااااااااااااااای ...
دوست عزیز دستت درد نکنه ... این دیگه چه کنترل باهالیه ... خیلی خیلی ممنون.
این که خود برنامه نویسیه !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!
الان به راحتی میتونم اون چیزی که مد نظرمه رو درست کنم ...
البته هنوز کار کردن باهاش رو یاد نگرفتم،
میشه توضیح بدید چه جوریه ؟
من هرچی به مشخصه هاش ور رفتم نتونستم اون چی که میخوام بسازم ...
لطفا یه راهنمایی بکن،
مثلا همین رو چه طوری بسازم ؟
میخوام اگه کاربر یه موقع کلمه ی majid رو تایپ کرد،
رنگ کلمه ی مجید عوض بشه !
من هیچ جایی ندیدم که کلمه هایی که میخوام بهش معرفی کنم تا رنگش رو عوض کنه !
لطفا یه راهنمایی بکن.
سلام
در واقع این کنترلر از یک نرم افزار است که به نوعی مشابه و رقیب VS است،
این کنترلر میتوانید تمام امکانات کنترلر مشابه خود را در VS پیاده سازی کند...
قابلیت غلط املایی و خط stop زمان دیباگ و نمایش bookmark و تورفتگی دستورات و به احتمال 95 درصد نمایش گروه های جمع و بازشو (+ و - که در VS برای دستورات گروهی نشان میدهد) و... را دارد.
برای رنگ بندی لغات و یکسری خواص حیاتی دیگر این کنترلر یک فایل اطلاعاتی xml را قبول میکند و خودش به ذات یک سری xml برای پسوندهای vb و cs و htm و... دارد.
البته من خودم هیچگاه زمان کار کردن با این کنترلر را پیدا نکردم و نمیتوانم فوراً جواب سوالات شما را در این خصوص بدهم ولی قابلیت هایش را سالها قبل دیده ام !!! و حداقل میدانم که امکان پیاده سازی کامل را دارد.
این نمونه فایل xshd با فرمت xml خودش است که سینتکس VB را به کنترلر میفهماند.
شما این فایل را به دلخواه خود ویرایش کنید تا من وقتی پیدا کنم و ببینم چطور باید فایل مورد نظر را تحویلش داد.
cid-9b2bdd1b12ce8c7d.skydrive.live.com/self.aspx/H2FX.Net/TextEditor.VB.xshd.zip
برای مشاده راحت تر فایل میتوانید از مرور گر IE خودتان (کارد زرد بالا را ok کنید.) استفاده کنید.
یا خود VS هم فایلهای xml را خیلی خوب نمایش میدهد.
یا XMLNotepad
یا دست خر با خود برناه Notepad هم میتوانید فایل را مشاهده و ویرایش کنید.
از این که اینقدر زحمت میکشید خیلی خیلی ممنونم ... من منتظر کمک شما هستم، امیدوارم وقت کنید تا هرچه سریع تر بهم کمک کنید.
alireza_h27
02-11-2008, 18:14
من به یه مشکل خوردم
وقتی داخل وی بی بصورت فارسی تایپ میکنم شکلک های عجیبی مینویسه
کسی نمودونه باید چیکار کنم تا این برطرف بشه و بتونم فارسی تایپ کنم بر روی فرم ها
با تشکر
سلام
من به یه مشکل خوردم
وقتی داخل وی بی بصورت فارسی تایپ میکنم شکلک های عجیبی مینویسه
کسی نمودونه باید چیکار کنم تا این برطرف بشه و بتونم فارسی تایپ کنم بر روی فرم ها
با تشکر
بهتر بود سوالتان را در تاپیک مجزایی مطرح میکردید...
از سال 2003 و نسخه VB7 کدیینگ String به Unicode تغییر کرد و فایلهای متنی و دستوری و کامپایلر هم امکانات unicode را پیدا کردند و تا قبل از نسخه VB8-SP1 پیش فرض فایلهای روی ascii باقی بود.
نتیجتاً خودتان باید دستی کدینگ فایلهای vb تان را به Unicode-1200 و یا UTF8-65001 تغییر دهید.
VS->SolutionExplorer->ShowAllFiles
را فعال کنید، سپس تک تک فایلهاییی که به پسوند vb ختم میشوند (و design.vb و...) را باز کنید و فرمان زیر را برای هر کدام بدهید.
(File->AdvancedSaveOptions->Encoding:(UTF8|Unicode
سلام
... من هیچ جایی ندیدم که کلمه هایی که میخوام بهش معرفی کنم تا رنگش رو عوض کنه !
... شما این فایل را به دلخواه خود ویرایش کنید تا من وقتی پیدا کنم و ببینم چطور باید فایل مورد نظر را تحویلش داد.
... من منتظر کمک شما هستم، امیدوارم وقت کنید تا هرچه سریع تر بهم کمک کنید
من تستی کردم و خوشبختانه به جواب هم رسید.
شما میتوانید واسط TextEditor.Document.IHighlightingStrategy را به دلخواه پیاده سازی کنید تا کنترلر هر کلمه را به شما تحویل دهد و رنگ دلخواه تان را استعلام کند.
ولی راه xml که گفتم ساده تر و راحت تر است، فایل را میتوانید داخل خود exe هم قرار دهید.
از همان لینک قبلی، مجدداً دانلود کنید ... من چند لغت مثل Mahdi و Ali و... را به xml اضافه کرده ام و نتیجه اش را هم میتوانید ببینید.
کافی است فایل TextEditorFile.xshd.xml موجود در پروژه را به دلخواه ویرایش کنید.
cid-9b2bdd1b12ce8c7d.skydrive.live.com/self.aspx/H2FX.Net/TextEditor.zip
ببخشید ... مثل این که فایلی که zip شده خرابه ... من وقتی روش کلیک میکنم خطا میده و میگه که فایل زیپ شده بی اعتباره !
نمیتونه باز کنه !
شما میتوانید واسط TextEditor.Document.IHighlightingStrategy را به دلخواه پیاده سازی کنید تا کنترلر هر کلمه را به شما تحویل دهد و رنگ دلخواه تان را استعلام کند
چه جوری این کار رو بکنم ... میشه بیشتر توضیح بدید ؟
سلام
ببخشید ... مثل این که فایلی که zip شده خرابه ... من وقتی روش کلیک میکنم خطا میده و میگه که فایل زیپ شده بی اعتباره !
نمیتونه باز کنه !
من دانلود کردم و به مشکلی برنخوردم با این وجود مجدداً آپلود کردم... مجدداً و با صبر بیشتری دانلود کنید.
چه جوری این کار رو بکنم ... میشه بیشتر توضیح بدید ؟
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مشکل حل شد و فایل دانلود شد.
Public Class Class1
Implements TextEditor.Document.IHighlightingStrategy
این رو میدونستم ولی متوجه نشدم که چه جوری باید نوشته و رنگ دلخواه رو از این روش معرفی کنم.
امیدوارم با دیدن این فایلی که برام گذاشتید بفهمم.
خیلی ممنون.
به نظر میرسه این چیزی که من میخوام یاد بگیرم خیلی پیچیدس ... من چیز زیادی از این پروژه نفهمیدم ...
البته بهتره بگم هیچ چی نفهمیدم.
عزیز دل برادر! آخه این که کدی نداشت که متوجه نشوید!
سر و ته کدش همین چند خط است...
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
همانطور که گفتم رنگ بندی متون در این کنترلر توسط واسط IHighlightingStrategy مدیریت میشود.
کلاسس DefaultHighlightingStrategy کلاسس پیش فرض این کنترلر است که از واسط فوق پشتیبانی میکند.
1- تعریف متغییر میکنیم.
2- GetManifestResourceStream را هم که حتماً قبلاً دیده اید، دستوری است که اجازه دسترسی stream به فایلی داخل exe یا dll خودتان جای داده اید را میدهد. (مثلاً اگر بخواهید تصویری را که فایلش داخل Exe تان است را هم نمایش دهید از همین دستور استفاده میکنید.)
3- یک کلاسس XmlTextReader خواننده فرمت xml میسازید، چون فایل اصلی داخل Exe ما هم xml بوده، پس مشکلی ندارد.
4- تابع HighlightingDefinitionParser.Parse که جز خود برنامه های کنترلر است، میتوانید از یک فایل xml که سازنده فرمتش را مشخص کرده (همان شکل و شمایلی که در فایل TextEditorFile.xshd.xml میبینید) و حاوی لغات و رنگها است، یک نمونه کلاسس DefaultHighlightingStrategy بسازد (همان کلاسی که واسط رنگ بندی IHighlightingStrategy را پشتیبانی میکند.)
5- دستور ResolveReferences که سازنده مشخص کرده، کلاسس را آماده کار میکند.
6- آخرین دستور هم نمونه کلاسس DefaultHighlightingStrategy (که حاوی IHighlightingStrategy است) را به کنترلر تحویل میدهد تا از این نمونه جدید برای کنترلر رنگ بندی استفاده کند.
=====
به نظر میرسه این چیزی که من میخوام یاد بگیرم خیلی پیچیدس
چندان پیچیده نیست، یعنی این کنترلر کار را خیلی ساده میکند، نمیدانم چرا همچین چیزی میگوید، در حالی که فقط با چند خط کد فوق الذکر که بسیار بسیار ناچیز است، کار تمام شده و نتیجه را مشاده کردید ... !
کلمات قبلی موجود در TextEditorFile.xshd.xml را حذف کنید و کلمات و رنگ های دلخواه خود را واردش کنید .!
=====
این رو میدونستم ولی متوجه نشدم که چه جوری باید نوشته و رنگ دلخواه رو از این روش معرفی کنم
نمونه مشخص تر کلاسس این است:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
شما باید برای شرایط خالی مشخص شده کدنویسی کنید.
همانطور که گفتم این کنترلر قوی و کاملی است که در اینترنت موجود است ولی من با آن کار نکرده ام، نتیجتاً نمیدانم هر کدام از این متدها مشخص کننده چه هستند...
گرچه برخی موارد واضح است...
- مثلاً شما در Name باید یک نام برای این فرمت را برگردانید.
- یا در Extensions باید لیست پسوند فایل هایی که کنترلر باید به صورت خودکار برای آن فایلها از فرمت شما استفاده کند را برگردانید.
- یا در GetColor باید رنگ و bold و italic و... کلمه داده شده را برگردانید.
- و در GetColorFor هم باید مشابه متد قبل عمل کنید ولی این بار در داخل جریان تایپ متون
و...
ولی چیز پیچیده و سختی نیست و اگر کمی وقت صرف شود متوجه نحوه کار کرد میشوید.
همانطور که من به راحتی و در مدت کوتاهی صرف زمان توانستم با چند کد فایل xml حاوی کلمات و رنگبندی را خوراک کنترلر کنم.
=====
موفق باشید.
اینقدر آسون بود و من نمیدونستم ... البته این جمله تون من رو زیاد راهنمایی کرد :
کلمات قبلی موجود در TextEditorFile.xshd.xml را حذف کنید و کلمات و رنگ های دلخواه خود را واردش کنید .!
پس سورس کلمات ما این باید باشه.
امشب کار میکنم تا ببینم چی میشه.
فکر کنم مشکلم با تعریف کلمه های خاص و رنگ حل شد !
از راهنماییتون ممنون.
و حالا یک سوال دیگه، آیا امکان ساخت این هست که مثلا اگر کاربر کلمه ی State رو نوشت، خود برنامه به طور اتوماتیک یه :
اضافه کنه. یعنی اگه کاربر نوشت state برنامه بنویسه state:
سلام
و حالا یک سوال دیگه، آیا امکان ساخت این هست که مثلا اگر کاربر کلمه ی State رو نوشت، خود برنامه به طور اتوماتیک یه :
اضافه کنه. یعنی اگه کاربر نوشت state برنامه بنویسه state:
مطمئن هستم که با این کنترلر انجام این کارها هم ساده است (همانطور که در خصوص رنگ گفتم) ولی من کار نکرده ام و بلد نیستم و فوقش باید مثل همان جریان رنگ کمی منتظر بمانید تا وقت خالی مناسبی پیدا کنم و راهش را در آورم.
لطفا سریع کمکم کنید ... یه سوال در مورد همون TextEditor که بهم معرفی کردید،
با چه دستوری میشه یه تکست رو به تکست ادیتور اضافه کرد ؟
با دستور texteditor.text=string تمامی محتوای تکست ادیتور رو مساوی با این استرینگ میکنه ولی من میخوام بهش اضافه کنه، مثلا اگه توی تکست ادیتور نوشته شده 3D و بعد با زدن یه باتن بخوایم Majid رو بهش اضافه کنیم، بشه 3DMajid و کل محتوا مساوی Majid نشه.
لطفا من رو راهنمایی کنید که کارم لنگ مونده.
خودم فهمیدم ... یه کم فکر کردم به عقلم رسید.
خواهشا من رو کمک کنید ... هیچ کی نیست به دادم برسه !
سلام
لطفا سریع کمکم کنید ...
خیلی میبخشید، جمعه هم به شدت کار داشتم و نتوانستم کاری کنم، ولی امشب یک نگاهی انداختم و فقط تا اینجا فهمیدم که وظیفه فرمت متنی (مثل نوشتن If و تایپ خود کار End If) بر عهده واسط IFormattingStrategy است و کنترلر سیستم auocomplete (پنجره کوچکی و تکمیل کننده کمکی) هم با واسط ICompletionDataProvider و ICompletionData است.
همانطور که گفتم مشکل اصلی اینجا است که من با این کنترلر کار نکرده ام و نتیجتاً باید آزمایش و خطا و پیگری که روشی زمان بر است به جواب برسم.
سعی میکنم چگونه استفاده از واسط IFormattingStrategy را پیدا کنم ....
:11::11::11::11::11:
خودم فهمیدم ... یه کم فکر کردم به عقلم رسید...
خوشحالم از این بابت که چیزی که خودتان جوابش را پیدا کنید، انرا فراموش نخواهید کرد.
ولی کمی شرمنده هم که ...
در کل راه حل الحاق لغت جدید چزی شبیه این سه دستور است:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
و حالا یک سوال دیگه، آیا امکان ساخت این هست که مثلا اگر کاربر کلمه ی State رو نوشت، خود برنامه به طور اتوماتیک یه :
اضافه کنه. یعنی اگه کاربر نوشت state برنامه بنویسه state:
خوشبختانه، مشکل این مورد هم حل شد.
Class1 به برنامه به عنوان IFormattingStrategy اضافه شد و تحویل texteditor شد.
حالا در هر کجای متن کلمه mahdi ویرایش شود، به هر نحوی که باشد اگر آخرش دو نقطه نداشته باشد، یک دو نقطه به اخر آن اضافه شده و بزرگی و کوچکی حروف هم اصلاح میشود، بدون مکس و به محض تشکیل لغت خالص mahdi در متن، یعنی مثلاً xmahdi شامل این بحث نمیشود، و اگر هم در زمان تایپ مکان نما روی حرف اخر (i) بوده باشد به بعد از دو نقطه میرود تا روند عادی تایپ به راحتی ادامه یابد، دقیقاً مثل ادیتور اصلی VS.
ضمناً آخرین نسخه این dll را هم گیر آوردم و به همان پروژه با لینک قبلی اضافه کردم.
لینک دانلود همان است:
cid-9b2bdd1b12ce8c7d.skydrive.live.com/self.aspx/H2FX.Net/TextEditor.zip
موفق باشید.
بابت تمام لطفا هایی که میکنید خیلی خیلی ممنونم، نمیدونم چه جوری جواب این همه محبت هاتون رو بدم.
من این سوال هارو توی انجمن اصلی MSDN پرسیدم ولی متاسفانه اون جا هیچ کی نبود که به سوالهای من جواب بده !!!!
یعنی هیچ کی بلد نبود !!!!
چون قبلا چندتا سوال دیگه پرسیدم خیلی خوب جواب میدادن.
خوشحالم از این بابت که چیزی که خودتان جوابش را پیدا کنید، انرا فراموش نخواهید کرد.
ولی کمی شرمنده هم که ...
اگه میشه بگید برای چی شرمنده اید ... کنجکاو شدم بدونم.
Me.TextEditorControl1.Document.Insert(25, "Word")
Me.TextEditorControl1.Document.Insert(Me.TextEdito rControl1.Document.TextLength, "Word")
Me.TextEditorControl1.Document.TextContent &= "Word"
من این کد رو روی یک باتن گذاشتم ولی کار نکرد !
وقتی روی باتن کلیک میکنم خطا میده.
خوشبختانه، مشکل این مورد هم حل شد.
Class1 به برنامه به عنوان IFormattingStrategy اضافه شد و تحویل texteditor شد.
حالا در هر کجای متن کلمه mahdi ویرایش شود، به هر نحوی که باشد اگر آخرش دو نقطه نداشته باشد، یک دو نقطه به اخر آن اضافه شده و بزرگی و کوچکی حروف هم اصلاح میشود، بدون مکس و به محض تشکیل لغت خالص mahdi در متن، یعنی مثلاً xmahdi شامل این بحث نمیشود، و اگر هم در زمان تایپ مکان نما روی حرف اخر (i) بوده باشد به بعد از دو نقطه میرود تا روند عادی تایپ به راحتی ادامه یابد، دقیقاً مثل ادیتور اصلی VS.
ضمناً آخرین نسخه این dll را هم گیر آوردم و به همان پروژه با لینک قبلی اضافه کردم.
لینک دانلود همان است:
cid-9b2bdd1b12ce8c7d.skydrive.live.com/self.aspx/H2FX.Net/TextEditor.zip
موفق باشید.
شما دقیقا چیزی رو ساختید که من مد نظرم بود ... ولی چه جوری این کار رو کردید نمیدونم !
لطفا توضیح بدید. من سعی میکنم تا حدی بفهمم ولی شما هم لطف کنید یه توضیحی بدید.
با کمک شما تا حالا 40% از پروژه م رو ساختم ... اگه این هم اضافه کنم میشه 60% ... این خیلی خوب میشه.
من توی پروژه م دقیقا یه کلاس ساختم و کدهای کلاس شما رو کپی کردم، ولی وقتی توی پروژه ی خودم mahdi رو میزنم کد رو اجرا نمیکنه ! مشکل از کجاس ؟
کدهایی که برای این کار نوشتید دیدم، به نظر میرسید برای یه کلمه زیاد بود.
من اگه بخوام همچین کاری رو برای 70 یا 80 کلمه یا شاید هم بیشتر به کار ببرم آیا راهی برای خلاصه تر شدن این کد هست ؟
سوال بعدی این که چه جوری میشه به کاربر امکان کپی، کات و پیست کردن نوشته های درون تکست ادیتور رو داد ؟
یک سوال دیگه ...
آیا امکان داره وقتی کاربر روی این کنترل داره کدها رو تایپ میکنه یه لیست هم زیر کد ظاهر بشه که تمام کد های مورد نظر رو در بر بگیره و کاربر بتونه آسون تر کد خودش رو بنویسه ؟
درست مثل vb که وقتی مثلا میزنیم form1.w یک لیست باز شده که میره روی تمام گزینه هایی که اولشون w داره و ما میتونیم راحت تر کار کنیم.
سلام
اگه میشه بگید برای چی شرمنده اید ... کنجکاو شدم بدونم
تاخیر در جواب!
من این کد رو روی یک باتن گذاشتم ولی کار نکرد !
وقتی روی باتن کلیک میکنم خطا میده.
شاید 25 کاراکتری که من الکی نوشتم در TextBox شما وجود نداشته!
شما دقیقا چیزی رو ساختید که من مد نظرم بود ... ولی چه جوری این کار رو کردید نمیدونم !
لطفا توضیح بدید. من سعی میکنم تا حدی بفهمم ولی شما هم لطف کنید یه توضیحی بدید
کدش که بود و خیلی هم کوتاه بود!!!
کد اصلی در خط 18 فایل Class1 قرار دارد.
این TextEditor لطف میکند و کلمه مورد نظر را استخراج میکند، اگر خودتان میخواستید این کار را انجام دهید، خودش کلی کد میطلبید.
(باید متن را از محل مشخص به عثب و جلو جستجو میکردید تا به یک کاراکتر غیر عدد-حرف برسید و اگر متن داخل تهی نبود ...)
اول word را با s1 مقایسه میکنیم، اگر برابر باشد یعنی لغت Mahdi به وجود آمده.
بعد (wordindex += 1) کلمه یا بلوک بعدی را به دست آورده و چک میکنیم و اگر ":" نباشد، پس آن را اضافه میکنیم.
طریقه اضافه کردن و تصحیح بزرگی و کوچکی هم با Replace است، یعنی mahdi را با توجه به محل شروع با :Mahdi تعویض میکنیم.
چند کد بعدی هم برسی میکند و اگر مکان نما در آخر کلمه بوده باشد، آن را یک واحد به جلو میبرد.
من توی پروژه م دقیقا یه کلاس ساختم و کدهای کلاس شما رو کپی کردم، ولی وقتی توی پروژه ی خودم mahdi رو میزنم کد رو اجرا نمیکنه ! مشکل از کجاس ؟
ساخت یک کلاسس که به ذات کاری انجام نمیدهد؟؟؟ مثل این است که یک وسیله برای خانه بخرید ولی از کارتون بازش نکنید!!!
شما باید کلاسس را New کنید و به TextEditor تحویل دهید
Me.txtEditor.Document.FormattingStrategy = New Class1
کدهایی که برای این کار نوشتید دیدم، به نظر میرسید برای یه کلمه زیاد بود.
به نظر من که خیلی هم کم بود و بدون این کنترلر بسیار بیشتر میشد، اصلاً رویداد TextChange یک TextBox در صورت اشتباه کوچکی در تغییر Text میتواند مدام فراخانی شود و در یک دور گرفتار شود و...
من اگه بخوام همچین کاری رو برای 70 یا 80 کلمه یا شاید هم بیشتر به کار ببرم آیا راهی برای خلاصه تر شدن این کد هست ؟
واضح است! کسی نمی آید 70 دستور If قرار دهد!
ره حل حلقه For است. (در بحث رنگ بندی هم رد پایش مشهود است.)
یعنی شما باید یک قانون مشخص برای نیازهایتان پیدا کنید و یک کد مشخصی برای نیازتان بنویسید.
بعدت تمام حالات مختلف را در یک فایل xml یا آرایه ذخیره کنید تا بعداً کد شما بتواند در یک حلقه for همه موارد را چک کنید.
سوال بعدی این که چه جوری میشه به کاربر امکان کپی، کات و پیست کردن نوشته های درون تکست ادیتور رو داد ؟
Ctrl+C/V کار میکند فقط منو ندارد، منو مورد نیاز و دلخواه را هم که خودتان به راحتی میتوانید اضافه کنید.
آیا امکان داره وقتی کاربر روی این کنترل داره کدها رو تایپ میکنه یه لیست هم زیر کد ظاهر بشه که تمام کد های مورد نظر رو در بر بگیره و کاربر بتونه آسون تر کد خودش رو بنویسه ؟
کنترلر سیستم auocomplete (پنجره کوچکی و تکمیل کننده کمکی) هم با واسط ICompletionDataProvider و ICompletionData است
من الان تو برنامم یه لیست گذاشتم که توش کدهای مورد استفاده رو گذاشتم و کاربر با کلیک کردن روی هر کدی میتونه اون رو به TextEditor اضافه کنه.
ولی الان میخوام حالت Drag & Drop برای کدنویسی بسازم.
یعنی کاربر کد مورد نظرش رو با موس بکشه روی هر جایی از TextEditor که میخواد بزاره.
آیا همچین امکانی وجود داره ؟
کنترلر سیستم auocomplete (پنجره کوچکی و تکمیل کننده کمکی) هم با واسط ICompletionDataProvider و ICompletionData است
در این مورد میشه توضیح بدید ؟
چه جوری بسازم ؟
یه سوال دیگه ...
من پروژه م رو روی فایلی که شما واسه دانلود گذاشته بودید درست کردم، یعنی همون فایل رو ویرایش کردم چون وقتی یه پروژه ی جدید میسازم و کدهای فایل دانلود شده رو کپی میکنم توی پروژه ی جدیدم و فایل TextEditorFile.xshd.xml رو هم انتقال میدم به اون جا کار نمیکنه !!!!!!!!!!!!!!
دلیلش چیه ؟
چرا تو پروژه هایی که من میسازم کار نمیکنه ؟
یعنی نوشته رو High Light نمیکنه.
ای خدااااااااااااااااااااااا ....
همش مشکل پشت مشکل ... ضد حال پشت ضد حال.
آخه چرا تو این برنامه که دارم میسازم نمیشه از OpenFileDialog1.ShowDialog استفاده کرد ؟ !!!!!!!!!!!!!!!!!!
ولی وقتی این کار رو روی یه پروژه ی جدید انجام میدم به راحتی کار میکنه !!!!!!!!!!!!!!!!!!
ولی تو اون پروژه که من میخوام میرسه به این خط خطا میده !!!!!!!!!!!!!!!!!!!!
سلام
ولی الان میخوام حالت Drag & Drop برای کدنویسی بسازم
کنترلر سیستم auocomplete (پنجره کوچکی و تکمیل کننده کمکی) هم با واسط ICompletionDataProvider و ICompletionData است
در این مورد میشه توضیح بدید ؟
باید بررسی کنم، مثل موارد قبلی.
من پروژه م رو روی فایلی که شما واسه دانلود گذاشته بودید درست کردم، یعنی همون فایل رو ویرایش کردم چون وقتی یه پروژه ی جدید میسازم و کدهای فایل دانلود شده رو کپی میکنم توی پروژه ی جدیدم و فایل TextEditorFile.xshd.xml رو هم انتقال میدم به اون جا کار نمیکنه !!!!!!!!!!!!!!
دلیلش چیه ؟
بی دقتی!
فکر کنم در تاپیک دیگری برایتان یا توضیح داده بودم یا لینک داه بودم که چطور میتوان یک فایل را داخل exe یا dll جا داد یا اصطلاحاً embedded کرد)
برای این کار بعد از اضافه کردن فایل به solutionExplorer باید آن را انتخاب کرد و در پنجره کمکی Properties مقدار BuildAction را EmbeddedResource قرار دارد.
(تا کامپایلر متوجه شود باید از این فایل چشم پوشی کند، آنرا مثل فایلهای دستورف کامپایل کند و یا آن را در داخل برناتمه نهایی embedded کند و...)
و بعد باید در دستور مربوطه هم به این فرمت متنی ارجاع داده شود "نام پروژه"+"نقطه"+"نام کامل فایل با پسوند"
اگر این نکته ها را به دقت انجام دهید، نباید مشکلی وجود داشته باشد.
آخه چرا تو این برنامه که دارم میسازم نمیشه از OpenFileDialog1.ShowDialog استفاده کرد ؟ !!!!!!!!!!!!!!!!!!
مجدداً یک جایی را حواستان نبوده و دستور اشتباهی داده اید.
متن خط؟ کد محل خط؟ کد نمایش دیالوگ؟؟؟
بی دقتی!
فکر کنم در تاپیک دیگری برایتان یا توضیح داده بودم یا لینک داه بودم که چطور میتوان یک فایل را داخل exe یا dll جا داد یا اصطلاحاً embedded کرد)
برای این کار بعد از اضافه کردن فایل به solutionExplorer باید آن را انتخاب کرد و در پنجره کمکی Properties مقدار BuildAction را EmbeddedResource قرار دارد.
(تا کامپایلر متوجه شود باید از این فایل چشم پوشی کند، آنرا مثل فایلهای دستورف کامپایل کند و یا آن را در داخل برناتمه نهایی embedded کند و...)
و بعد باید در دستور مربوطه هم به این فرمت متنی ارجاع داده شود "نام پروژه"+"نقطه"+"نام کامل فایل با پسوند"
اگر این نکته ها را به دقت انجام دهید، نباید مشکلی وجود داشته باشد.
من هم همین کار رو میکنم ولی نمیشه !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
مجدداً یک جایی را حواستان نبوده و دستور اشتباهی داده اید.
متن خط؟ کد محل خط؟ کد نمایش دیالوگ؟؟؟
من توی کارام خیلی از این دیالوگ ها استفاده میکنم و مطمئنم کدش رو اشتباه نمیکنم ... اینم عکس :
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سلام
من توی کارام خیلی از این دیالوگ ها استفاده میکنم و مطمئنم کدش رو اشتباه نمیکنم ... اینم عکس :
وضعیت apartment ریسمانی که دیالوگ را اجرا میکند باید single باشد.
احتمال خیلی زیاد شما از Sub Main استفاده کرده اید، شما باید خصیصه STAThread را به روال مورد نظر اضافه کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
میشه یه کم بهتر توضیح بدید ؟
من این رو باید کجا اضافه کنم ؟
computer.eng
23-11-2008, 16:54
سلام
من مي خوام يک سايت با asp.net طراحي کنم. حالا مي خوان بدونم واسه اينکه اون رو روي کامپيوتر ديگه اي اجرا کنم چي لازمه؟ اين چيزارو مي دونم ولي ممکنه کامل ندونم. ممنون ميشم بهم کمک کنيد. در ضمن vs2008.
IIS بايد نصب باشه، بعدش بايد .net framework 2 و 3 و 3.5 رو نصب کنم.
براي Sql server همون ورژن express کافيه؟ بعد بايد ديتابيسم رو بهش attach کنم؟
چيز ديگه اي هم مي خواد؟
راهنمايي شما موجب امتنان است.
راستي اگه از شناسايي کاربران مبتني بر فرم استفاده کنم بايد db اون رو هم add کنم ديگه نه؟ واضحه نمي دونم چرا سوال مي کنم؟!!!!!!!
سلام
میشه یه کم بهتر توضیح بدید ؟
من این رو باید کجا اضافه کنم ؟
شما خودتان در پروژه تان Sub Main را اضافه کرده اید یا نه؟ آیا از مباحث چند ریسمانی استفاده کرده اید؟
- میتوانید پروژه را برای یافتن Sub Main سرچ کنید و صفت STAThread را به آن اضافه کنید.
- یا اگر از چند ریسمانی استفاده کرده اید، بعد از تولید ریسمان جدید فرمان زیر را بدهید:
(thread1.SetApartmentState(Systm.Threading.Apartme ntState.STA
سلام
IIS بايد نصب باشه، بعدش بايد .net framework 2 و 3 و 3.5 رو نصب کنم.
بدون نصب IIS هم با کمک exe و dll های کمکی میتوان یک پروزه asp.net را برای تست و مشاهده موقت و رفع اشکال و... اجرا کرد.
بجز framework2 ورژنی از framework باید نصب شود که شما آن را در پروژه خود استفاده کرده اید و اگر از امکانات framework3/3.5 استفاده نکرده اید، نیازی به نصب آنها نیست.
براي Sql server همون ورژن express کافيه؟ بعد بايد ديتابيسم رو بهش attach کنم؟
برای تست موقت و مشاهده موقث نسخه express کافی است.
میتوانید دیتابیس را attach کنید و یا نکنید.
اگر (به صورت موقت و آزمایشی) نخواستید عمل attach را انجام دهید، میتواند فایلهای دیتابیس در پوشه ای با نام App_Data در rot سایت کپی کنید و ConnectionString را چنین اصلاح کنید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
راستي اگه از شناسايي کاربران مبتني بر فرم استفاده کنم بايد db اون رو هم add کنم ديگه نه؟
طبیعتاً از هز دیتابیسی که استفاده کرده اید باید آن را هم کپی کنید، البته عرف چنین است که از دیتابیس واحدی برای مدیریت کاربران و نیاز عادی سایت استفاده میکنند.
(البته بهتر می بود سوال را در تاپیک مجزایی میپرسیدید.)
موفق باشید.
computer.eng
24-11-2008, 07:02
سلام
.....
(البته بهتر می بود سوال را در تاپیک مجزایی میپرسیدید.)
موفق باشید.
سلام.
ممنون از جوابتون. تشکر نداشتم که ازتون تشکر کنم.
من مي خوام روي يک شبکه محلي اين برنامه دائمي باشه. يعني يکي از کامپيوترهارو بکنم سرور. حالا احتياجات اون سرور رو مي خوام. من با vs2008 مينويسم و توي web.config خودش 3.5 رو اضافه مي کنه. يعني مي شه اونو عوض کنم به 2؟ از کجا بايد بفهمم که به امکانات 3.5 احتياج دارم يا نه؟
حالا با اين تفاسير iis و framework هاي لازم و sql express کفايت مي کنن؟
دسترسي بقيه سيستم ها به اين سيستم تنظيمات خاصي لازم داره؟
وقتي از مبتني بر فرم براي تاييد هويت کاربران استفاده مي کنيم خودش db جدايي مي سازه. از اين روش استفاده کردم چون همه چيزرو راحت خودش مديريت مي کنه. مثل پسورد کد شده و user تکراري و تعريف role و بقيه مسائل. مي شد خودم دستي با يک table اينکارو بکنم ولي به نظرم رسيد اين روش مطمئن تره.
شما خودتان در پروژه تان Sub Main را اضافه کرده اید یا نه؟ آیا از مباحث چند ریسمانی استفاده کرده اید؟
- میتوانید پروژه را برای یافتن Sub Main سرچ کنید و صفت STAThread را به آن اضافه کنید.
- یا اگر از چند ریسمانی استفاده کرده اید، بعد از تولید ریسمان جدید فرمان زیر را بدهید:
(thread1.SetApartmentState(Systm.Threading.Apartme ntState.STA
خیلی ببخشید ... ولی من نفهمیدم باید چی کار کنم.
من sub main رو گشتم و دیدم که اولش عبارت STAThread هم وجود داره.
سلام
من sub main رو گشتم و دیدم که اولش عبارت stathread هم وجود داره
!!!!!!!!!!!!!!!!!!!
یک راهی به نظرم میرسد ولی باید چک کنم و بعد هم باید مشکل را از ریشه حل کرد نه این راه حلی که الان در ذهنم است.
میتوانید سورسی برایم آپلود کنید؟
سلام
من با vs2008 مينويسم و توي web.config خودش 3.5 رو اضافه مي کنه. يعني مي شه اونو عوض کنم به 2؟ از کجا بايد بفهمم که به امکانات 3.5 احتياج دارم يا نه؟
امکاناتی مثل Ajax و WCF و LINQ و Silverlight+WPF و... جز نسخه Framework3 است و اگر برنامه شما شامل این عناصر نباشد به راحتی میتوانید برنامه را با framework2 و بدون مشکل اجرا کنید.
. يعني يکي از کامپيوترهارو بکنم سرور. حالا احتياجات اون سرور رو مي خوام
حالا با اين تفاسير iis و framework هاي لازم و sql express کفايت مي کنن؟
خوب شرایط فرق کرد، دیگر شما باید آخرین نسخه IIS را نصب کنید و چه بهتر که سیستم عامل شما یا Vista و یا Server2008 باشد.
(که شامل نسخه هایی از Framework هم میشود)
در خصوص SqlServer هم باید دیتابیس را حتماً Attach کنید و بهتر است از نسخه های کاملتر sqlserver استفاده کنید و برنامه ssms را هم نصب کنید و فقط در صورتی میتوانید از نسخه express استفاده کنید که تعداد کلاینت ها و درخواستها کم باشد (و حجم دیتابیس نهایی هم زیر 4G باشد)
وقتي از مبتني بر فرم براي تاييد هويت کاربران استفاده مي کنيم خودش db جدايي مي سازه. از اين روش استفاده کردم چون همه چيزرو راحت خودش مديريت مي کنه. مثل پسورد کد شده و user تکراري و تعريف role و بقيه مسائل. مي شد خودم دستي با يک table اينکارو بکنم ولي به نظرم رسيد اين روش مطمئن تره.
البته با این شرایط شما محدودیت دیتابیس ندارید و میتوانید هر چند تا که مورد نیازتان باشد را بسازید.
اون db آماده امکانات بسیار زیاد و گسترده ای دارد ولی اگر بلد باشید، خودتان هم میتوانید چیز مناسبی طراحی کنید ولی شاید نیاز هم نباشد.
اما یک دیتابیس مشترک این مزیت را دارد که به راحتی میتوانید سیستم سایت را یکپارچه کنید، مثلاً اگر بخواهید برای کاربرانتان قابل "پیغام خصوصی PM" قرار دهید یا یک نوع "صفحه کاربری خاصی" و... میتوانید از مقادیر موجود در جداول اصلی عضویت و اعتبار سنجی به همراه Join برای کارهای خود استفاده کنید.
بهرحال چون سرور در اختیار خودتان است، به راحتی میتوانید هر زمان نیازی احساس، تغییرات را اعمال کنید و یک دیتابیس بزرگ را بشکنید و یا چند دیتابیس را یک تکه کنید و... با کمترین میزان تغییر کد.
یک راهی به نظرم میرسد ولی باید چک کنم و بعد هم باید مشکل را از ریشه حل کرد نه این راه حلی که الان در ذهنم است.
میتوانید سورسی برایم آپلود کنید؟
من پروژم رو آپلود کردم ... البته برای این که حجمش کم شه استیل برنامه م رو که bitmap کرده بودم و پشت فرممم گذاشته بودم رو برداشتم ... هر موقع وقت داشتید دانلود کنید و ببینید میتونید مشکل رو حل کنید یا نه :
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
یک راهی به نظرم میرسد ولی باید چک کنم و بعد هم باید مشکل را از ریشه حل کرد نه این راه حلی که الان در ذهنم است
بررسی کوتاهی کردم، متاسفانه راهی بجز همین مورد فوق پیدا نکردم!
به جای رویه Sub Main کد زیر را قرار دهید (قبلی را پاک کنید و این را قرار دهید.)
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
مشکل حل خواهد شد.
موفق باشید.
مشکل لود شدن فایل حل شده ولی یه مشکل دیگه ای داره، وقتی فایل رو باز میکنی لود میشه ولی keyword ها دیگه به رنگ تعیین شده در نمیان و همه مشکی میشن !!!!!!!!!!!!
آیا میدونید مشکل از چیه ؟
سلام
مشکل لود شدن فایل حل شده ولی یه مشکل دیگه ای داره، وقتی فایل رو باز میکنی لود میشه ولی keyword ها دیگه به رنگ تعیین شده در نمیان و همه مشکی میشن !!!!!!!!!!!!
آیا میدونید مشکل از چیه ؟
دلیل واضح است.
این کنترلر با پسوند و فرمتهای مختلف متنی کار میکند و وقتی دستور بارگذاری فایلی را میدهید با توجه به پسوند فایل سعی میکند واسط IHighlightingStrategy مناسب را برای نمایش آن پسوند پیدا کند.
درست عین خود VS که با توجه به پسوندی که باز شده فرمت نمایش رنگ را تغییر میدهد.
- یا باید بعد از هر باز کردن فایل فرمت را مجدداً تنظم کنید.
- یا خودتان دستی فایل را بخوانیدگ
- و بهتر از همه انکه پسوند دلخواه خود را رجیستر کنید تا کنترلر بدانید از این پس برای نمایش این پسوند خاص از این فرمت رنگی استفاده کند.
1)
به دستورات form_load دستور زیر را اضافه کنید.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
2) 3) پسوند در حال حاضر که من الکی نوشته ام abc است، شما باید به جای abc در کد Form_Load و فایل TextEditorFile.xshd.xml پسوند دلخواه خود را قرار دهید.
سلام
من يه مشكل با ويژال استوديو 2008 دارم اونم اينه كه وقتي توي برنامه كد زير رو مينويسم ميگه اشتباهه
کد:
Private Sub txtCelsius_KeyUp (KeyCode As Integer, shift As Integer)
txtFahrenheit = (Val (txtCelsius)*9/5) + 32
End Sub
و زيرش خط ميكشه كسي ميتونه كمك كنه
اون جور که از error معلومه فکر کنم توی تبدیل کردن مقدار تکست باکس به اعشار مشکل داره ... البته مطمئن نیستم.
راستی در مورد کدت یه کم توضیح بده که چی کار میکنه شاید بتونم بهتر کمکت کنم.
البته افراد خیلی خیلی حرفه ای هم هستند مثل _h2_ که فکر کنم ایشون بتونن جوابت رو بدن.
سلام
سلام
من يه مشكل با ويژال استوديو 2008 دارم اونم اينه كه وقتي توي برنامه كد زير رو مينويسم ميگه اشتباهه
کد:
Private Sub txtCelsius_KeyUp (KeyCode As Integer, shift As Integer)
txtFahrenheit = (Val (txtCelsius)*9/5) + 32
End Sub
و زيرش خط ميكشه كسي ميتونه كمك كنه
forum.p30world.com/showthread.php?p=3221961#post3221961
=====
البته افراد خیلی خیلی حرفه ای هم هستند
میگم یه چهارتا دیگه "خیلی" اضافه میکردی! ضرر نداشت! :11:
به نظر شخصی من آماتور ها ارزش بالاتری از حرفه ای ها دارند.
برعکس برداشت غلط مردم که حرفه ای و آماتور را به باسواد و بیسواد ترجمه میکنند.
حرفه ای کسی است که به خاطر حرفه و شغل و پول کاری را انجام میدهد
آماتور کسی است که طمعی به پول و مقام ندارد و برای علاقه خودش کاری را انجام میدهد
و مشخص است کار کدام گروه ارزش بیشتری دارد.
=====
ولی الان میخوام حالت Drag & Drop برای کدنویسی بسازم
کنترلر سیستم auocomplete (پنجره کوچکی و تکمیل کننده کمکی) هم با واسط ICompletionDataProvider و ICompletionData است
در این مورد میشه توضیح بدید ؟
باید بررسی کنم، مثل موارد قبلی.
دو ممطلب فوق را فراموش نکرده ام ولی متاسفانه و با شرمندگی هنوز وقت نکردم تست کنم.
میبخشید و موفق باشید.
دو ممطلب فوق را فراموش نکرده ام ولی متاسفانه و با شرمندگی هنوز وقت نکردم تست کنم.
میبخشید و موفق باشید.
خیلی ممنون ... این چند روزه اینقدر گرفتاری و بدبختیم به خاطر این درس ها زیاد شده که دیگه فکر ساختن اون برنامه از سرم زده بیرون !!!!!!!!!!!!!!!!!!!!!
یک سوال ... کد Left() و Right()در وی بی 6 توی این نسخه به چی تغییر کرده ؟
این نسخه هم این دو کد رو داره ولی انگار که روند کدها عوض شده !!!
من میخوام توسط این کد ها از سمت چپ و راست به مقدار لازم حروف رو جدا کنم.
البته میدونم با mid هم میشه ولی این دو کد توی این نسخه چه جورین ؟
Arshia001
30-11-2008, 21:27
سلام
من يه مشكل با ويژال استوديو 2008 دارم اونم اينه كه وقتي توي برنامه كد زير رو مينويسم ميگه اشتباهه
کد:
Private Sub txtCelsius_KeyUp (KeyCode As Integer, shift As Integer)
txtFahrenheit = (Val (txtCelsius)*9/5) + 32
End Sub
و زيرش خط ميكشه كسي ميتونه كمك كنه
اگه دارم فضولی میکنم ببخشید(این خیلی خیلی هه رو دیدم ترسیدم!) ولی تو جوابی که _H2_ به این سوال دادن از CInt و CStr استفاده شده.در حالی که به نظر من برای برنامه نویسی OO استفاده از توابعی که توی خود کلاس ها در نظر گرفته شدن بهتره و خوندن کد هم راحت تر میشه.من اگه باشم اینو اینجوری مینویسم:
String2 = (Integer.Parse(String1)).ToString
بازم اگه فضولی کردم ببخشید.:11:
یک سوال ... کد Left() و Right()در وی بی 6 توی این نسخه به چی تغییر کرده ؟
این نسخه هم این دو کد رو داره ولی انگار که روند کدها عوض شده !!!
من میخوام توسط این کد ها از سمت چپ و راست به مقدار لازم حروف رو جدا کنم.
البته میدونم با mid هم میشه ولی این دو کد توی این نسخه چه جورین ؟
توی VB.Net چون تمام پنجره ها Left و Right دارن موقع کد زدن برای فرم این دوتا موقعیت پنجره ها رو مشخص میکنن.بجاش از این دو تا استفاده کن:
Microsoft.VisualBasic.Left
Microsoft.VisualBasic.Right
سلام
سوال ... کد Left() و Right()در وی بی 6 توی این نسخه به چی تغییر کرده ؟
این نسخه هم این دو کد رو داره ولی انگار که روند کدها عوض شده !!!
من میخوام توسط این کد ها از سمت چپ و راست به مقدار لازم حروف رو جدا کنم.
البته میدونم با mid هم میشه ولی این دو کد توی این نسخه چه جورین ؟
دوستمان جناب Arshia001 توضیح خوبی دادند.
اگر سعی کنید از توابع قدیمی که برای هماهنگی بیشتر با نسخه 6 بوده کمتر استفاده کنید بهتر است.
مثلاً از تابع عضو Substring استفاده کنید
=====
به این سوال دادن از CInt و CStr استفاده شده.در حالی که به نظر من برای برنامه نویسی OO استفاده از توابعی که توی خود کلاس ها در نظر گرفته شدن بهتره و خوندن کد هم راحت تر میشه.من اگه باشم اینو اینجوری مینویسم:
String2 = (Integer.Parse(String1)).ToString
البته من مقایرت در استفاده از CInt با موازین OOP احساسا نمیکنم. (یعنی مقایرت تابلویی احساس نمیکنم.)
ولی در کل نظر شما صحیح است و استفاده از Parse برای تبدیل از String صحیح تر و منطقی تر و با Performance بالاتر و احتمالاً با مطابقت بیشتری با OOP است
خیلی ها معتقد هستند که VB.Net و C#.Net برای شروع یادگیری برنامه نویسی از صفر مشکل هستند.
ولی من به شدت مخالف هستم، چون این زبانها هم دستورات ساده دارند و هم پیچیده،
به نظر من خیلی بهتر است که به یک نفر در شروع کار، دستورات ساده VB.Net و C#.Net را یاد دهیم، به جای اینکه طرف را تشویق کنیم برود برای شروع کار دستورات ساده و زنگ زنده Pascal یا VB6 و... را یاد بگیرد.!
=====
من خودم شخصاً اصلاً دستوری شبیه این هم در کد خودم نمی نویسم If (str1 = str2) Then ولی نمیتوانم برای کسی که تازه وارد VB.Net (یا C#.Net) شده دستوررات زیر را استفاده کنم.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
طرف همینطوری قیافه دستور را ببیند وحشت برش میدارد و به جای برنامه نویسی ترجیح میدهد برود ....
تازه اگر بخواهم توضیح دهم که برای چه شرایطی کدام کد بهتر و بهینه تر است که دیگر ...
اولین چیزی که طرف مقابل خواهد پرسید این است که
"چرا در زبان های دیگر به راحتی میتوانم بنویسم If str1 = str2 ولی در دات نت باید برای شرایط و وضعیت های خاص همچین دستوراتی بنویسم؟"
"اگر هم از VB6 آماده باشد فوراً میپرسد، چرا VB.Net اینقدر فرق کرده و سخت شده؟"
چی میخواهم جواب بدهم؟ برایش از OOP بگویم یا هماهنگی و قدرت و Performance بالاتر ؟
نتیجتاً برایش همان دستورات عادی ساده را خواهم نوشت (و حداقل مخالف قوانین برنامه نویسی هم نباشد) تا سادگی و هماهنگی بیشتر با نسخه های قبل را هم احساس کند...
بعد اگر طرف خودش کار کرد و پیشرفت کرد به محیط عادت کرد دستورات مناسب تر و بهینه تر را یادخواهد گرفت و تازه اینجا است که به جای دلزده شدن لذت خواهد برد و قدرت و انعطاف پذیری فوق العاده دات نت را حس خواهد کرد.
=====
بهرحال استفاده از CInt که از کلمات کلیدی VB.Net است (و کامپایلر میتواند روی آن بهینه سازی انجام دهد) بهتر از استفاده از تابع قدیم Val است، نه سیخ میسوزد و نه کباب!
من فقط بتوانم این توابع قدیمی VB6 را از ذهن VB6کار ها در دات نت پاک کنم، شاهکار کرده ام!
=====
ممنونو و موفق باشید.
Arshia001
02-12-2008, 16:01
در راستای همین قضیه ی Left و Substring ، من هم قبول دارم که این تابع های قدیمی رو نباید استفاده کرد،ولی به هر شکل کار تابع Right خودکار تر از Substring هست و نباید براش StartIndex هم در نظر گرفت.این یکی از معدود توابع قدیمیه که معادل کامل تو .Net براش پیدا نکردم.
سلام
ولی الان میخوام حالت Drag & Drop برای کدنویسی بسازم
من امشب فرصتی پیدا کردم و تستی کردم.
منظورتان همین گرفتن بخشی از متن با ماوس و انتقال آن به خطوط و جاهی دیگر است؟؟؟
من هیچ کاری نکردم ولی این قابلیت وجود دارد و دارد کار میکند!
یا من منظورتان را درست متوجه نشدم یا شاید احتمال دارد از آخرین نسخه dll (ورژن 4) که آخرین بار آپلود کردم استفاده نمیکنید.
سلام
يه مشكل:چطوري ميشه توي visual studio 2008 از ocx هايي كه در vb6 داشتيم استفاده كرد و همچنين كسي ابزاري چيزي براي ساخت گراف(يه چيزي شبيه اوني كه توي تب performance برنامه task manager ويندوزه )سراغ نداره و يه در خواست ديگه چطوري ميشه cpu usage رو بدست اورد؟؟؟؟
از راهنماییتون خیلی ممنون.
این چند روزه خیلی گرفتار بودم وقت برای کار با vb زیاد نداشتم.
کار با پروژه های MDI رو خیلی خوب یاد گرفتم ... همون که قبلا برام توضیح دادید.
باز هم ممنون.
یه سوال ... فرق این که یه متغیر با new تعریف میشه با این که بدون new تعریف بشه چیه ؟
Arshia001
05-12-2008, 20:30
از راهنماییتون خیلی ممنون.
این چند روزه خیلی گرفتار بودم وقت برای کار با vb زیاد نداشتم.
کار با پروژه های MDI رو خیلی خوب یاد گرفتم ... همون که قبلا برام توضیح دادید.
باز هم ممنون.
یه سوال ... فرق این که یه متغیر با new تعریف میشه با این که بدون new تعریف بشه چیه ؟
فرقش اینه که متغیری که با New تعریف نمیشه (اگه از Type های خود سیستم نباشه) صرفا یه اسمه و هیچ موجودیتی نداره!اگه بخوای ازش استفاده کنی Null Reference میگیری.ولی New اول فضای حافظه رو میگیره و بعد اونو به متغیر اختصاص میده.تعریف بدون New برای وقتی خوبه که مثلا تو یه پروژه ی Direct Draw میخوای یه Surface گلوبال داشته باشی ولی باید یه متغیر دیگه رو به عنوان SurfaceDescription بهش بدی.اونوقت جفتشونو بدون New تعریف میکنی بعد اول کدت مینویسی:
SurfaceDescription1=new DirectDraw.SurfaceDescription
with SurfaceDescription1
...
End With
Surface1 = New DirectDraw.Surface(SurfaceDescription1,...)
اینجوری متغیر ها گلوبال میشن.البته اگه بنویسی :
Dim Int2 as New Integer= Int1
اونوقت دومی میشه پوینتر اولی،ولی دقیقا نمیدونم سیستمش چجوریه.:31:
سلام
يه مشكل:چطوري ميشه توي visual studio 2008 از ocx هايي كه در vb6 داشتيم استفاده كرد
قابل استفاده است ولی پینهاد میکنم فراموشش کنید، چون به احتمال زیاد راه ساده تری از استفاده از یک ocx قدیمکی وجود دارد!
همچنين كسي ابزاري چيزي براي ساخت گراف(يه چيزي شبيه اوني كه توي تب performance برنامه task manager ويندوزه سراغ نداره
به راحتی و با وراثت و کمی دستور +GDI در رویداد Paint میتوانید همچین چیزی را بسازید.
Dim Int2 as New Integer= Int1
بعید میدانم زیاد صحیح باشد.
دستور print توی 2008 عوض شده ؟!!
سلام
اگر منظورتان آن دستور Print قدیمی است که روی فرم جاری نوشته ای را ترسیم میکرد، این دستور دیگر پشتسبانی نمیشود و اگر کنترلرهای TextBox و ListBox و Label کارتان را راه نمی اندازد و واقعاً نیاز به ترسیم دارید، باید از توابع +GDI در رویداد Paint استفاده کنید.
و یا از تابع دست ساز نه چندان جالبی مثل این استفاده کنید.
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
=====
اگر هم منظورتان دستورات Printer و چاپگر بوده که کلاً باید جداگانه بحث شود و بهتر است دقیقاً مشخص کنید چه چیزی قرار است چاپ شود تا ساده ترین راه حل را پیشنهاد بدهم.
سلامی دوباره، من به کمک شما دوستان عزیز نیاز دارم.
میخوام با vb2008 همچین امکانی رو به کاربر بدم که روی فرم، دایره، بیضی یا مربع و مستطیل هایی رو بکشه. درست مثل برنامه ی paint. میخوام به اون حالت در بیارم. یعنی طبق حرکت موس کاربر با اندازه و محل دلخواه خودش رسم کنه.
لطفا چگونگی این کار رو به صورت استاندارد به من بگید.
سلام
میخوام با vb2008 همچین امکانی رو به کاربر بدم که روی فرم، دایره، بیضی یا مربع و مستطیل هایی رو بکشه. درست مثل برنامه ی paint. میخوام به اون حالت در بیارم. یعنی طبق حرکت موس کاربر با اندازه و محل دلخواه خودش رسم کنه.
معمولاً در نهایت به فائیده مادی خاصی منجر نخواهد شد ولی کارهای جالب و جذابی است و نتیجه کار زود مشخص میشود.
برای انجام اینکارها باید به دستورات +GDI مسلط باشید و با کمک رویدادهای ماوس عمل مورد نظر را انجام دهید.
شما باید یک شی System.Drawing.Bitmap به اندازه کاغذ سفید مورد نظر داشته باشید و همه ترسیمات نهایی را روی این bmp ترسیم کنید، تا هم ماندگار باشد و هم قابل load و save .
- کاربر از ToolBox برنامه شما ابزارمورد نظر را انتخاب میکند (رسم خط و مربع و دایره و...)
- در صورت نیاز آیکون کرسر ماوس را با توجه به ابزار انتخابی تغییر میدهید و متغییری عمومی در سطح کلاسس را به ابزار مرود نیاز ست میکنید.
در مبنای ساده این متغییر میتوانید یک Integer ساده باشد (یا Enum) که عددی حاوی عمل مورد نظر در آن قرار گیرد
مثلاً 1 = رسم مربع
2 = رسم دایره
و...
و در مبنای پیشرفته میتوانید یک interface حاوی کد مدیریت کنند مورد نظر این فرمان باشد.
- در MouseDown با کلیک چپ شما باید نقطه x , y را در سطح کلاس ذخیره کنید.
چون عموماً تمام این فرامین گرافیکی با دو نقطه شروع فشردن ماوس و پایان رها کردن آن معنی میدهد.
- در MouseUp نقطه پایانی را هم به دست می آورید.
- حال میتوانید با داشتن نقطه ابتدایی و نقطه پایانی و نوع فرمان عمل مورد نظر را روی bmp انجام داده و نهایی کنید.
- در این بین در MouseMove میتوانید همان کد نهایی یا نمونه ای مشابه و سریعتر را اجرا کنید ولی به جای انکه روی خود bmp تغییرات را اعمال کنید، تغییرات را روی پرده ترسیم خود form انجام میدهید تا نهایی هم نشود و با حرکت ماوس کاربر ببیند که با رها کردن ماوس چه اتفاقی خواهد افتاد و ماوس را در محل مورد نظر خود رها کند.
درسته ... من هم این چیزایی که شما گفتی میدونستم ولی منظور من چگونگی ساخت اون بود.
من توی تعیین اندازه ی دایره طبق حرکت موس مشکل دارم.
سلام
شرمنده، سرم شلوغ بود و نتوانستم زودتر جواب دهم.
من توی تعیین اندازه ی دایره طبق حرکت موس مشکل دارم.
اینکه کاری ندارد عزیز جان!
برای رسم دایره تا دقیق تر بگویم یک بیضی در این قبیل برنامه ها به سه عدد نیاز دارید:
1) مختصات مرکز بیضی
2) طول شعاع در محور x
3) طول شعاع در محور y
(که در خصوص دایره واقعی مورد 2 و 3 همواره برابر است.)
(در دنیای واقعی به یک زاویه هم نیاز داریم ولی برای برنامه های این تیپی این زاویه همواره صفر است.)
خوب حالا از مختصات ماوس چی داریم.
- x1 , y1 مختصات نقطه اول
- x2 , y2 مختصات نقطه دوم
چه باید انجام دهیم؟
باید از داده هایی که داریم (مختصات ماوس) داده های مورد نیاز (پارامترهای رسم بیضی) را به دست آوریم.
1) مرکزبیضی = x1+x2/2 و y1+y2/2
2) طول شعاع در محور x برابر است با ABS(x1-x2)/2
3) طول شعاع در محور y برابر است با ABS(y1-y2)/2
که ABS در واقع تابع قدر مطلق است و تضمین میکند مقدار تفریق همواره مثبت خواهد بود.
حل شد؟
موفق باشید.
اگه میشه کد رو هم بنویسید تا من بهتر متوجه بشم :31:
یه سوال دیگه ... در vb2008 چه جوری میشه تشخیص داد که چه دکمه ای فشرده شده ؟
در حالت های مختلف ... مثلا وقتی کلیک سمت چپ موس با کلید شیفت فشرده شده بود یه کاری رو کنه.
سلام
اگه میشه کد رو هم بنویسید تا من بهتر متوجه بشم
الآن که به متد DrawEllipse نگاه کردم متوجه شدم، اصلاً نیازی به انجام هیچ کدام از محاسباتی که در پست قبلی گفته بودم نیست!!!
در واقع برای رسم یک بیضی به آن اطلاعات نیاز است ولی پارامترهای ورودی DrawEllipse را فراموش کرده بودم.
DrawEllipse خودش یک محدوده مستطیلی را میگیرد و بیضی/ دایره را داخل ان ترسیم میکند.
نتیجتاً به راحتی با کد زیر میتوانید ترسیم را انجام دهید:
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
گرچه میتوان کدهای بهتری هم نوشت.
در حالت های مختلف ... مثلا وقتی کلیک سمت چپ موس با کلید شیفت فشرده شده بود یه کاری رو کنه.
اگر به رویدادهای ماوسس دقت کنید یک پارامتر e به شما تحویل داده میشود که
e.Button دکمه های فشرده شده ماوس را مشخص میکند.
e.Location موقعیت ماووس را مشخص میکند
و...
برای کیبورد یا باید از رویداهای کیبورد مثل KeyDown استفاده کنید که مقادیر زیر را تحویل میدهد:
e.Alt
e.Control
e.Shift
e.Modifiers
e.KeyCode
e.KeyData
e.KeyValue
و...
یا باید از متد System.Windows.Forms.Control.ModifierKeys استفاده کنید که کلیدهای فشرده شده را بازگرداند.
از راهنماییتون خیلی ممنونم ... ولی من هیچ چی از کد رسم بیضی نفهمیدم :31:
این Point این وسط چی کارس :20:
سلام
برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
در کد فوق point1 و point2 از نوع ساختار System.Drawing.Point هستند.
point1 به نقطه اولیه ماوس اشاره میکند که با در رویداد MouseDown از e.Location تحصیل شده و ذخیره گردد.
point2 به نقطه انتهایی ماوس اشاره میکند که با در رویداد MouseUp از e.Location تحصیل و استفاده شود.
graphicsvariantname هم که از نوع System.Drawing.Graphics است و به پرده رسم جاری اشاره میکند...
که میتواند از رویداد Paint به دست آید و یا از متد نه چندان جالب CreateGraphic و یا از متد FromImage با دادن یک bmp و...
سلام
در خصوص آن متن رنگی و richtextbox،
من مدت ها قبل یک کنترلر خیلی قوی دیده بودم و دانلود کرده بودم و بالاخره با جستجویی کافی (!) توانستم پیدایش کنم.
قویاً پیشنهاد میکنم به جای RichTextBox از این کنترلر استفاده کنید.
این کنترلر مخصوص همین کار طراحی شده و امکانات وسیعی در حد برابری با امکانات ویرایشگر متنی خود VS دارد.
نمونه کد ساده به همراه dll را میتوانید از زیر دانلود کنید:
cid-9b2bdd1b12ce8c7d.skydrive.live.com/self.aspx/H2FX.Net/TextEditor.zip
دوست عزیز میشه لطف کنین و آدرس جدید این کنترل رو بزارین؟ این یکی پاک شده.
سلام
دوست عزیز میشه لطف کنین و آدرس جدید این کنترل رو بزارین؟ این یکی پاک شده
امکان نداره! خودم آپلود کردم و خودم هم باید پاکش کنم و من پاک نکردم! :31:
لطفاً مجدد تست کنید، اگر روی تصویر فایل zip (مشابه تصویر زیر) کلیک کنید باید دانلود شود.
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
vBulletin , Copyright ©2000-2025, Jelsoft Enterprises Ltd.