Visual Basic 6.0 translation

Showing posts with label visual basic programming tutorial. Show all posts
Showing posts with label visual basic programming tutorial. Show all posts

Saturday, February 11, 2012

VB 0.6 With Registry Editor

بسم الله الرحمن الرحيم
(الموضوع للمبتدئين)
Visual Basic 6.0 Registry
 
مقدمـــــــــــــــــــــــــــــــــــــــــــــــه
ماهى ملفات الريجيسترى Registry : 
    - هى قاعدة بيانات هرمية تقوم بتخزين اعدادات البرامج الاختيارات فى بيئة مايكروسوفت ويندوز تحتوى على ضبط و اعدادات ملفات و برامج نظام التشغيل ذات المستوى المنخفض مثل الـكيرنيل و تعريفات الجهاز و ايضا اى برنامج اخر ليس من منتجات مايكروسوفت و تم تقديمها لاول مرة فى اصدار الويندوز 3.1 .

موضوع اليوم هو التعامل مع ملفات الريجيسترى Registry Editor من خلال Visual Basic 0.6 و فائدة هذا الموضوع هو حفظ قيم المتغيرات التى تنتج من البرنامج و التى يود المبرمج الاحتفاظ بها حتى بعد عمل Restart للكمبيوتر و اهم الامثلة التطبيقية عليها هو مشروع تسجيل الدخول بكلمة سر او Login Screen .... حيث تحتاج احيانا ان تجعل البرنامج يتعامل مع اكثر من مستخدم سواء كان ذلك على جهاز واحد أو اكثر من جهاز فتقوم بعمل شاشة لدخول المستخدمين المصرح لهم فقط Register و ايضا بعد التسجيل تحتاج الى ان يتعرف البرنامج دائما على المستخدم الذى يعمل Login و ذلك عن طريق حفظ اسمه فى الريجيسترى و يظل دلئما مصرح له بالعمل حتى يقوم بعمل LogOut من البرنامج و تظهر هذه الخاصية فى العديد من المواقع التى تضع Box بعد خانات الـــ Login اسمه Save UserName On PC و معناها ان كل مره سيقوم المستخدم بالدخول على الموقع فلن يسأله الموقع عن اسمه او رقمه السرى فهم بالفعل محفوظين على الجهاز الخاص بالمستخدم و فى اغلب الاوقات يكون فى الريجيسترى.
طريقة التعامل مع ملفات الريجيسترى:
1) حفــظ  SaveSetting
2) حـــذف DeleteSetting
3) استدعاء GetSetting
4) استدعاء الكل GetAllSettings
متغيرات المعادلة
AppName, SectionName, KeyName, KeyValue
شرح متغيرات المعادلة :
AppName :
هو اسم البرنامج : و هو الاسم الذى تختاره بصرف النظر عن اسم برنامج الفيجوال بيزك قد يكون أى شىء
SectionName :
هو اسم القسم : و هو ايضا تختاره أى اسم تريد و هو يمثل مكان تخزين اسم القيمه Key Name
KeyName :
هو اسم المفتاح : و هو المفتاح الذى تخزن فيه القيمة Key Value
KeyValue :
هو قيمة الفمتاح : و هو القيمة المراد تخزينها أو التعامل معها عموما .
كتابة الكود :
SaveSetting appname := "MyApp"section := "Startup"Key := "Top"Key := 75
Or
SaveSetting "AppName", "SectionName", "KeyName", KeyValue
GetSetting "AppName", "SectionName", "KeyName"
GetAllSetting "AppName", "SectionName", "KeyName"
DeleteSetting "AppName", "SectionName", "KeyName"
شكل ملف الريجيسترى

ماهو شكل ملفات الريجيسترى Registry : 
    - هى جميع الملفات ذات الامتداد Reg و تكون عبارة عن مفاتيح فى اغلب الاوقات
اين توجد ملفات الريجيسترى Registry : 
    - توجد فى اى مكان على الجهاز فقط قم بالبحث عن (reg.*)
و المسؤل عن التعامل مع ملفات الريجيسترى هو برنامج الريجيسترى Registery Editor و يقوم باضافة ملفات و مفاتيح الريجيسترى و هو الذى سنقوم بالتعامل معه فى موضوع اليوم و يتم فتح الريجيسترى كالتالى :
1) قائمة Start ثـــــــــم
2) نختار Run او نضغط على R ثـــــــــــم
3) نكتب RegEdit
و يظهر الشكل التالى و الذى هو Registery Editor "لا انصح بالتعامل معه اذا لم تكن على دراية تامه به"
Registery Editor
اضغط على الصورة لرؤيتها بالحجم الطبيعى
أين تجد المفاتيح التى قمت بحفظها فى الريجيسترى عند التعامل مع VB6 ؟
HKEY_CURRENT_USER , SOFTWARE, VB AND VBA PROGRAM SETTINGS, "Your AppName"

ملفات الريجيسترى
 الموضـــــــــــــــــــــــــــــــــــــــــوع :
عمل شاشة Login للدخول على برنامج
البرنامج يحتوى على شاشة Login و شاشة أخرى تمثل البرنامج المراد التسجيل اليه سواء مستخدم جديد أو تسجيل دخول مستخدم حالى .
تصميم البرنامج : كما بالصورة رقم (1)
 
صورة رقم (1) - شكل الفورم
شكل الفولدر النهائى للبرنامج : كما بالصورة رقم (2)

صورة رقم (2) - شكل فولدر البرنامج
و المفروض أن المستخدم يقوم بالتسجيل أو يقوم مدير البرنامج Admin بتسجيل المستخدم عن طريق شاشة Login-Register و يضاف الاسم و كلمة السر الى قاعدة البيانات MyDb.Mdb و التى تحتوى على جدول (Info) و الذى بدورة يحتوى على 3 حقول هم (ID "AutoNumber" - UsrNm "Text 20" - PassWord "Text 20) .

يدخل المستخدم لشاشة Login لتسجيل بيانات الدخول اذا كانت صحيحه يسمح له البرنامج بالدخول للشاشة الرئيسية و اذا لم تكن البيانات صحيحه لا يسمح له, ايضا يمكن للمستخدم تعديل بيانات دخوله الى البرنامج بنفسه أو يكون Admin فقط له الحق فى ذلك على حسب حساسية البيانات المتعامل معها فى البرنامج و فى مثالنا هذا فإن المستخدم يقوم بتعديل بياناته بنفسه.

موضوع Registry يكمن فى نقطة واحده فقط فى البرنامج و هى (Remember me) أى ان الجهاز الذى تم الدخول من عليه سيحتفظ ببيانات الدخول حتى بعد اغلاقه و عند فتحه مره أخرى لن تكون هناك حاجه لتسجيل الدخول اذا قام المستخدم بوضع علامه فى مربع Remember Me و هذه الخاصيه كما أن لها مميزات فإن لها عيوب خطيره خصوصا اذا كان البرنامج يتم التعامل معه من على نفس الجهاز أو أن الجهاز يصل اليه أكثر من شخص .

حتى لا نطيل الكلام فى الموضوع و بعد أن تعرفنا على أساسيات و منطق و تصميم البرنامج فان البرنامج مرفوع Source Code على موقع MediaFire.com من خلال هذا الرابط .

أى سؤال عن المشروع من فضلك اترك تعليق هنا فى BlogSpot.Com او فى الجروب أعلى الصفحه .

اذا كنت تريد شرحا تفصيليا للعمل مع الريجيسترى ( من هنا )

Visual Basic 6.0 Lessons, Tricks, Tutorials and help links :

VB 0.6 Dispaly Tables Names of Access 2003 DataBase

بسم الله الرحمن الرحيم

موضوع اليوم هو : التعامل مع قاعدة البيانات من نوع Access 2003 على أنها جدول عادى و أن محتوياتها من الجداول عبارة عن حقول بمعنى اننا سنقوم عرض اسماء جداول و كويرى قاعدة البيانات فى مشروع فيجوال بيزك عن طريق الكود دون اللجوء لقاعدة البيانات نهائيا .

منطق المشروع : تخزين البيانات فى قاعدة البيانات و استرجاعها مرة أخرى .
أدوات المشروع  : VB 6.0 - MS-Access 2003 - AD0 2.8
تصميم المشروع : المشروع عباره عن برنامج تخزين بيانات الاصدقاء
البرنامج مرفوع على MediaFire و الشرح عباره عن ملف PDF مرفق مع البرنامج بالتفصيل و الصور .
اذا كان لديك أى استفسار من فضلك اكتب تعليق أو اكتب فى الجروب على FaceBook .

ملخص الدرس : يتناول الدرس التعامل مع قاعدة بيانات Access 2003 بطريقة مختلفه حيث يتم التعامل مع كائنات Objects قاعدة البيانات و هى Tables و Queries بالضبط مثل التعامل مع السجلات داخل الجداول .
حيث يمكنك :

1) انشاء قاعدة بيانات Access2003
2) انشاء جداول بها و تعديله و حذفه و عرضه
3) انشاء استعلام و تعديله و حذفة و عرضه
4) الاتصال بالجداول و قاعدة البيانات و الاستعلام و العمل عليهم .

Visual Basic 6.0 Lessons, Tricks, Tutorials and help links :

Thursday, February 9, 2012

VB 6.0 rounded and transparent forms Part1

بسم الله الرحمن الرحيم
الموضوع : عمل تأثيرات على الفورم (فورم مستديره - فورم شفافه)
rounded and transparent forms

بداية "اللهم لا سهلا إلا ما جعلته سهلا" .... أما بعد
عمل تأثيرات الفورم لا يغنى عن دراسة أساسيات الجرافيك و التصميم و لكن دليل على قوة المبرمج و تمكنه من أداء عمله و دليل على فهمه لمبدأ البرمجه .
ان شاء الله سنقوم بشرح الموضوع بمثال عملى سيتم رفعه على سيرفر MediaFire.com عباره عن Source Code ...
التعامل سيكون مع VB 6 App Viewer و لمن لا يعرف ما هو App Viewer انصحه بالتعرف عليه ثم الرجوع مره أخرى للشرح , سنقوم أولا بعمل New Project من نوع Windows Application .
و اضافة Module و عمل 2 فورم ثم نقوم بحفظ المشروع و اغلاقه ثم فتحه مره أخرى .
سنقوم بفتح App Viewer ...... 
من هنا يمكنك تنزيل المشروع و القاء نظره عليه و تابع شرح الاكواد ....
أولا : أكواد الموديول - Module


Option Explicit
الكود السابق يجعلك مجبر على تعريف المتغيرات المستخدمه فى البرنامج عن طريق Dim أو Public او Private أو أى من Access Modifiers يمكنك مراجعة درس OOP فى أى وقت للتعرف على Access Modifiers و عن استخدام Option Explicit فان أى متغير يتم استخدامه فى البرنامج اذا لم يكن معرف من قبل فان البرنامج يظهر رسالة Variable Not Defined فى أى وقت تستخدم متغير دون سابق تعريف.
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
الكود السابق عباره عن تحميل دالة SendMessage و يتم تحميل الدالة من Api Viewer عن طريق فتح Api Viewer ثم نختار File - Load TextFile - Win32Api ثم اختيار Declares ثم Public حيث يتم تحميل مجموعة دوال منها SendMessage و هى تستخدم فى ارسال رساله الى أى شاشة "مش لازم فى البرنامج بتاعك و لكن المقصود أى شاشة برنامج" أو أى اداه على هذه الشاشة على سبيل المثال ( تظهر الحروف على الشاشة عندما اضغط على الكايبورد حيث اقوم بارسال رساله نوعها "حرف" الى الشاشة "Internet Explorer" بلغة الاله يتم ترجمتها الى "حرف".و SendMessage لها معاملات Parameters و هى :
Hwnd As Long :
اختصار لــ Handle Window و هى الشاشة أو الاداه على الشاشة المراد ارسال الرساله لها
wMsg As Long :
و هى الرساله أو نوعها المراد ارسالها


wParam As Long :
و هى تحديد نوع الرساله
lParam As Any :
و هى تحديد نوع الرساله ايضا
Public Declare Function CreateRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long


الكود السابق عباره عن تحميل دالة CreateRectRgn و يتم تحميل الدالة مثل الدالة السابقه و وظيفة الدالة هو : عمل منطقة Rectangle او مستطيلة و هى اختصار لـ Create Rectangle Region و اسم المكتبة الاتيه منها الدالة هى GDI32 و معاملات هذه الدالة هى :
X1 As Long :
و هى تمثل الخط العرضى لـ ( الركن أعلى اليسار ) من المنطقة


Y1 As Long :
و هى تمثل الخط الطولى لـ ( الركن أعلى اليسار ) من المنطقة ... لاحظ ان المستطيل عبارة عن 4 أركان - الركن عباره عن ( زاوية 90 درجة يتمثل فى خطان متقابلان - الخط يبدأ من نقطة و ينتهى عند نقطه احدهما من اليمين الى اليسار  و الثانى من اسفل الى أعلى ) كما بالشكل .


X2 As Long :
و هى تمثل الخط العرضى لـ ( الركن اسفل اليمين ) من المنطقة
Y2 As Long :
و هى تمثل الخط الطولى لـ ( الركن اسفل اليمين ) من المنطقة


Public Declare Function CreateRoundRectRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
الكود السابق عباره عن تحميل دالة CreateRoundRectRgn و يتم تحميل الدالة مثل الدالة السابقه و وظيفة الدالة هو : عمل منطقة Round Rectangle او مستطيلة مستديرة الاطراف و هى اختصار لـ Create Round Rectangle Region و اسم المكتبة الاتيه منها الدالة هى GDI32 و معاملات هذه الدالة هى نفس معاملات الداله السابقه .
Public Declare Function CreateEllipticRgn Lib "gdi32" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long


الكود السابق عباره عن تحميل دالة CreateEllipticRgn و يتم تحميل الدالة مثل الدالة السابقه و وظيفة الدالة هو : عمل منطقة Elliptical او بيضاوية و هى اختصار لـ Create Elliptical Region و اسم المكتبة الاتيه منها الدالة هى GDI32 و معاملات هذه الدالة هى نفس معاملات الداله السابقه ..... كيف ؟
لاحظ أن Elliptical او المنطقة البيضاوية هى الرسمه المستديره حول مستطيل مثلا أى عند رسم الشكل الدائرى يتم تحديده عن طريق اقرب منطقه مستطيلة يمكن للشكل الدائرى أن يحتوية و هو ليس دائرة و لكنها منطقة مستديره .


Public Declare Function CombineRgn Lib "gdi32" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
الكود السابق عباره عن تحميل دالة CombineRgn و يتم تحميل الدالة مثل الدالة السابقه و وظيفة الدالة هو : عمل منطقة Elliptical او بيضاوية و هى اختصار لـ Combine Region و اسم المكتبة الاتيه منها الدالة هى GDI32 و وظيفة هذه الدالة هى دمج منطقتين و تخزين الدمج فى منطقة ثالثة و طريقة الدمج يتم اختيارها ... و معاملاتها كالتالى :


hDestRgn As Long :
اختصار لــ Handle Destination Region و هى تعريف لابعاد المنطقة الجديده بعد دمج منطقتين اخريين يجب تحديدهم أولا
hSrcRgn1 As Long :
اختصار لــ Handle Source Region و هى المنطقة الأولى المراد دمجها


hSrcRgn2 As Long :
و هى المنطقة الثانية المراد دمجها
CombineMode As Long:
و هو نوع الدمج و يكون أحد النتائج الاتية 
Rgn_AND
انشاء منطقة على شكل تقاطع بين المنطقتين الاولى و الثانية
Rgn_COPY 
انشاء منطقة عبارة عن : نسخه من المنطقة المحدده فى المعامل الاول 
hSrcRgn1
Rgn_Diff 
انشاء منطقة عبارة عن : الاجزاء من المنطقة الاولى و التى ليست جزءا من المنطقة الثانية .
Rgn_OR 
انشاء منطقة عبارة عن : اتحاد للمنطقتين المندمجتين
Rgn_XOR 

انشاء منطقة عبارة عن : اتحاد للمنطقتين المندمجتين ماعدا المناطق المتداخلة
Public Declare Function SetWindowRgn Lib "user32" (ByVal hwnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
الكود السابق عباره عن دالة SetWindowRgn و يتم تحميل الدالة مثل الدالة السابقه....... وظيفة الدالة هو : تحديد منطقة الرسم أى "الابعاد التى سيبدأ منها الرسم و سينتهى اليها الرسم" و لا يقوم الـ Windows بالرسم خارج هذه المنطقة على سبيل المثال "عند فتح أى برنامج تكون منطقة الرسم هى ابعاد الفورم التى يبدأ عندها البرنامج و بالتالى أى كود يشمل رسومات خارج هذه المنطقة لا يقوم البرنامج بعرضة ." و هى اختصار لـ Set Window Region و اسم المكتبة الاتيه منها الدالة هى USER32 و معاملات هذه الدالة هى :
Hwnd As Long :
و هى Handle أو التعامل أو المنطقة المراد التعامل معها .
hRgn As Long :
تحديد منطقة العمل فى الـ Handle السابق "فى أى منطقة أو أى أبعاد سيتم التعامل معها" .


bRedraw As Boolean :
تحديد ما اذا كان الويندوز سيقوم برسم المنطقة المحدده مرة أخرى "المنطقة الجديده hRgn أم لا . اذا كانت True فان الويندوز ينفذ الرسم أذا كانت False فان الويندوز لا يقوم بالرسم المطلوب .



Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
الكود السابق عباره عن تحميل دالة DeleteObject و يتم تحميل الدالة مثل الدالة السابقه و وظيفة الدالة هو : حذف اداة مثل (كائن الرسم Pen - كائن الرسم Brush - كائن الخط Font - كائن الصورة Bitmap - المناطق Region - مجموعات الالوان Palettes) حيث تقوم بتفريغ محتويات Resources الخاصة بالنظام و المتعلقة بالكائنات Objects السابقه و الـ Handle الخاص بها ايضا لا يعود له قيمة ." و هى اختصار لـ Delete Object و اسم المكتبة الاتيه منها الدالة هى GDI32 و معاملات هذه الدالة هى :
hObject As Long :
و هو الكائن أو الكائنات المراد حذفها .


Public Declare Function ReleaseCapture Lib "user32" () As Long
الكود السابق عباره عن تحميل دالة ReleaseCapture و يتم تحميل الدالة مثل الدالة السابقه و وظيفة الدالة هو : تحرير أداة الماوس من نطاق العمل الحالى الى نطاق عمله الطبيعى ." و هى اختصار لـ Release Capture و اسم المكتبة الاتيه منها الدالة هى USER32 و ليس لها معاملات .



 ' RGN_OR creates the union of combined regions
Public Const RGN_OR = 2
تعريف ثابت اسمه RGN_OR = 2 و هو أحد معاملات الدمج الخاص بنوع الدمج CombineMode للدالة CombineRgn حيث على سيتم تحديد نوع الدمج هنا .
 ' RGN_DIFF creates the intersection of combined regions
Public Const RGN_DIFF = 4
تعريف ثابت اسمه RGN_DIFF = 4 و هو أحد معاملات الدمج الخاص بنوع الدمج CombineMode للدالة CombineRgn حيث على سيتم تحديد نوع الدمج هنا .
Public Const WM_NCLBUTTONDOWN = &HA1
تعريف الثابت wm_nclbuttondown عباره عن رساله الى الويندوز حيث امكانية امساك الفورم بدون شريط عنوان من أى مكان .
Public Const HTCAPTION = 2
تعريف الثابت HTCAPTION = 2 عباره عن إمكانية تحريك الفورم بعد امساكها بالماوس من أى مكان
Public xp As Long, yp As Long
تعريف متغيرات xp , yp
Public mShape As Integer
تعريف متغير mShape


Sub Main()
الاجراء Main : و هو أول اجراء يتم تنفيذه فى البرنامج حيث عند كتابة Sub Main () فى موديول فانك بالتالى تخبر البرنامج أن هذا الاجراء سيتم تنفيذه أولا قبل أى سطر فى البرنامج أو أى Form
يحتوى الاجراء Main هنا على مجموعة أكواد مشروحه فى الاعلى .
سؤال : لماذا تم وضع (Program_Is_Already_Running) فى صيغة Function و ليس فى صيغة Sub ؟
الاجابه : Sub لا يعود بقيمه و لكن الدالة تعود بقيمة و الغرض من Program_Is_Already_Running هو تحديد قيمة من خلالها يتم التحكم و السيطره على عدم فتح البرنامج و هو قيد العمل .
و الاكواد السابقه معناها ان عند فتح البرنامج لأول مره تكون قيمة Program_Is_Already_Running تساوى False على حسب الداله الخاصه بها و لكن اذا ضغطنا على ايقونة البرنامج لتشغيلة مره أخرى فان الدالة تصبح قيمتها True و بالتالى تظهر رساله Program is already running أى ان البرنامج قيد التشغيل
If Program_Is_Already_Running Then
استدعاء الدالة Program_Is_Already_Running و تم عمل هذه الدالة فى الاسفل (مشروحه أقرئها أولا)
GoTo Noduplicate
توجه الى السطر : Noduplicate
End If
انتهت جملة الشرط
xp = Screen.TwipsPerPixelX
xp هو متغير عرفناه سابقا نوعه Long و سيتم تخزين قيمة Screen.TwipsPerPxelX فيه و Screen.TwipsPerPixelX هى : معامل لـلكائن Screen و هو الشاشة الحاليه و TwipsPerPixelX هو لتحويل وحدة القياس الاساسيه للشاشة Twips المتعامل معها من داخل الفيجوال بيزك الى وحدة قياس الرسم Pixel و الـ Pixel هو اصغر نقطة على الشاشة و هى وحدة قياس الشاشة الرئيسية بينما الـ Twips هو 1 على 20 من أى نقطة رسم و تساوى ايضا 1 على 1140 بوصه و Pixel هى اختصار لـ Picture Element بينما Twips هى اختصار لـ Twentieth Of a Point و Twips هى وحدة القياس الرئيسية للـ Visual Basic ايضا ....
اذا Xp يساوى قيمة Pixel للـ Screen التى تـــــــــم تحويلها من Twips أفقيـا (X)
yp = Screen.TwipsPerPixelY
المتغير Yp يساوى قيمة الـ Pixel للـ Screen التى تحويلها من Twips رأسيا (Y)
frmTranspForm.Show
اظهار الشاشة FrmTranspForm
Exit Sub
الخروج من الاجراء
Noduplicate:
السطر Noduplicate
MsgBox "Program is already running"
رساله للمستخدم تفيد : البرنامج قيد التشغيل
End Sub
نهاية الاجراء Main .
Function Program_Is_Already_Running()
الدالة Program_Is_Already_Running
Program_Is_Already_Running = False
قيمة الدالة هو False أى أن طبيعتها False
If (App.PrevInstance = True) Then
App.PreInstance فى جملة الشرط السابقه معناه : اذا كان البرنامج قيد العمل أو مفتوح بالفعل
Program_Is_Already_Running = True
فان قيمة الداله تكون True
End If
انتهت جملة الشرط
End Function
انتهت الدالة

شرح الدالة Program_Is_Already_Running و هى داله مصنوعه من المبرمج User Defined أى انها ليست اصليه فى الفيجوال بيزك Built-In-Function و الغرض منها التأكد من أن البرنامج لا يتم فتحه أكثر من مره فى نفس الوقت

Function UnloadIfExist(FormName As String) As Boolean
الدالة UnloadIfExist نوعها Boolean أى تحتمل نتيجتان فقط هما True او False اذا القيمة التى ستعود من هذه الدالة ستكون اما True أو False و الداله الحاليه لها معامل Parameter اسمه FormName نوعه String نصى اذا عند التعويض عن الداله يجب اعطاء قيمة للمتغير FormName .
و وظيفة هذه الدالة هو التأكد من عدم تحميل نفس الفورم مرتان و ذلك لأننا عندما نقوم بتشغيل البرنامج تكون الـ Form الرئيسية FrmTranspForm يمكن الوصول لها أى Active فى وقت ظهور اى شاشة أخرى بمعنى اننا لا نستخدم FrmTranspForm.Show 1 و هى داله يمكن الاستغناء عنها فى البرنامج اذا قمنا باستخدام الكود السابق FrmTranspForm.Show 1 حيث فى هذه الحاله قد نكون تأكدنا من عدم اظهار اكثر من Form لأن المفاتيح المستخدمه فى ذلك على FrmTranspForm تكون غير نشطه Inactive على الفورم الرئيسية .... قم بتجربة البرنامج فى كلتا الحالتان باستخدام الداله و باستخدام الكود FrmTranspForm.Show 1
    On Error Resume Next
استمر اذا اكتشفت خطأ ما
    Dim mloaded As Boolean
تعريف المتغير mloaded نوعه Bloolean
    mloaded = False
قيمة المتغير mloaded تساوى False
    Dim i As Integer
تعريف متغير i نوعه Integer رقمى
    For i = Forms.Count - 1 To 0 Step -1
عمل Loop باستخدام For معناه ( لكل i تساوى عدد الفورم فى المشروع - 1 الى 0 تخطى -1 )
    If UCase(Forms(i).Name) = UCase(FormName) Then
اذا كانت الحروف كابيتل لاسم الفورم(i) = الحروف كابيتل لاسم الفورم بالداله
    mloaded = True
اذا mloaded = True
    Unload Forms(i)
انهى عمل الفورم(i) .
    Exit For
الخروج من Loop
    End If
الخروج من جملة If
    Next
كرر العملية
    UnloadIfExist = mloaded
قيمة الداله UnloadIfExist تساوى قيمة mloaded
End Function
انهى الدالة
و هذا معناه انه اذا كان اسم الفورم الظاهره Active Form هو نفسه اسم الفورم المراد اظهاره مره اخرى اذا لا تقم بتحميل الفورم المراد اظهاره .و يمكن كما ذكرنا الاستغناء عن الداله باستخدام كود FrmTranspForm.Show 1 و ذلك سيؤدى الى جعل FrmTranspForm غير ممكن الوصول اليها فى حالة ظهور Form اخرى على الشاشة .

References :

Friday, January 27, 2012

VB 6.0 Change Visual Basic 0.6 Style

Microsoft Visual Basic 6.0 trick
Change Visual Basic 0.6 Style

Hello,
We all are tired and bored using VB0.6 coz of its strict and hard style which makes you feel that you still working with Windows 98 ....
Well .....
Here is a way to change that :

1) Open Notepad
2) Copy and Paste the following Lines


Note : the line (name="CompanyName.ProductName.YourAppName") is free writing, means you provide your own company name and product name ... while installing VB0.6 you provide the installation proccess with (Company Name) well, this is it ....
product name could be VB 0.6

3) Save as ... vb6.exe.manifest
in the same folder where vb6.exe rests in peace (you can find that by "Right-click on cv0.6 shortcut then properties then Find Target") as shown in the photo .
4) Start VB0.6 Project ... any project and from Components look for Microsoft Windows Common Controls 6 - or simpley add a Button and you will see the difference .


Google Me For More ( Evry1falls - your issue )


Visual Basic 6.0 Lessons, Tricks, Tutorials and help links :

Wednesday, November 16, 2011

VB 0.6 - Save Files Using DialogBox Control

الحفظ باستخدام DialogBox

قبل تنفيذ المشروع الحالى الرجاء قراءة الدرس السابق جيدا ( التعامل مع الملفات فى الفيجوال بيزك 6 ) .

الان, المشروع عبارة عن تطبيق باستخدام Visual Basic 0.6 الهدف منه توضيح كيفية حفظ ملف نوعه TxT باستخدام CommonDialog Control .

1) فتح برنامج فيجوال بيزك 6 و انشاء مشروع جديد Standard Application
صورة رقم 1
2) نقوم بحفظ المشروع على DeskTop مثلا باسم MyTxtFile
3) يكون شكل الفولدر كما بالصورة رقم (1) .
4) نقوم باضافة CommonDilaog على الفورم Form1 عن طريق الضغط على Ctrl+T أو Right-Click على شريط الادوات و اختيار Component ثم اختيار Microsoft Common Dialog Control Sp6 ثم Ok كما بالصورة رقم 2
صورة رقم 2
صورة رقم 3
5) نقوم برسم TextBox عدد (2) CommandButton و اضافة CommonDialog على الفورم ز نضغط Save أو Ctrl+S و يكون شكل الفورم بعدها كما بالصورة (3) .
6) عمل البرنامج : عند الكتابه فى TextBox ثم الضغط على Save As يتم فتح Dialog Box نقوم من خلالة بتحديد اسم الملف و حفظه بامتداد Txt لأنه ملف نصى و لا تنسى جعل خاصية MultiLine فى ال TextBox = True
7) الاكواد : سنقوم بفتح شاشة الاكواد Form1 و نمسح جميع محتوياتها Ctrl+A ثم BackSpace و نقوم بنسخ الكود التالى Ctrl+C و لصقة فى مكان كود الفورم Ctrl+V .
8) الكــــــــــــــود :
Option Explicit
Private Sub Command1_Click()
Dim strfilenaMe As String
Dim fnum As Integer
    On Error Resume Next
    CMD.ShowSave
    If Err.Number = cdlCancel Then
        ' The user canceled.
        Exit Sub
    ElseIf Err.Number <> 0 Then
        ' Unknown error.
        MsgBox "Error " & Format$(Err.Number) & _
            " Saving file." & vbCrLf & _
            Err.Description
        Exit Sub
    End If
    On Error GoTo 0

    ' Save the file.
    fnum = FreeFile
    strfilenaMe = CMD.FileName
 Open strfilenaMe For Output As fnum
 Print #1, Text1.Text
 Close #1
 End Sub
Private Sub Form_Load()
CMD.InitDir = App.Path
    CMD.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*"
    CMD.FilterIndex = 1
    CMD.DialogTitle = "Save File"
    CMD.CancelError = True
End Sub


الان قم بعمل Run أو Crtl+F5 لتجربة البرنامج و اكتب سطور عديده و اضغط على Save As تظهر Box نكتب به اسم الملف و نضغط على Save ثم نفتح فولدر المشروع سنجد الملف ان شاء الله

Monday, May 16, 2011

VB 6.0 Track Your MS Access DB Path anywhere

Microsoft Visual Basic 6.0 with MS-Access 2003
Track your Database path from anywhere

This Open-source is Free to Distribute and use, you can download it from (MediaFire)
this is an example of how to design a simple app to track down and hunt your MS Access database whenever it's lost or path's changed.
VB6 Track your Database Path from anywhere
 you won't have to worry anymore about database path.
you can always set database as default as if it were originally designed to be.
there is also the software packed and ready to try as a separate software, download from (MediaFire) just to make sure it is what you are looking for .

1) Design :
Check the Open-source-code

2) Files :
Check the Open-source-code

3) Logic :
you need to always detect your ms access database whenever changes its path, for example (you designed a software and the database path changed by the user for some reason , what would you do then?) ... the answer is that you will have to re-place it by yourself .
also let say (you have many MS Access databases and you want to connect to one at a time ....)
Or you wanna design a side-App as Admin Screen to manage your database connection at the user's place .....
Or Detect your MS Access Database in Network
- Add References :
Microsoft Scripting Run-time
Microsoft ADO 2.8

you have 5 buttons :
1) Browse : get the database path & name
2) Connect To Database Now : Connects you to the database you choose in the Browse Button
3) Set As My Default Database : Sets the MS Access Database you just choose as the database that will always connect as the program starts up every time .
4) Disconnect From Database : Disconnects you now from the database you are connected to.
5) Set No Database Connection : Remove the connection to the database for Permanent.
- as the project loads, there will be now database connection detected, so you just click on Browse and choose (Mdb File) Ms Access 2003 DataBase File to connect to anyway you like .
- Change the location of the database and notice that it asks you to pick another one,
- pick database from another location and set it as your default one and notice that it becomes your default connection .
- project depends on Filesystem-object - MS ADO 2.8 - Handling Files .

Sunday, May 8, 2011

VB 6.0 - Make DataGrid Header Columns Equal To Each Others

Microsoft Visual Basic 6.0 Datagrid control trick
Say, we've DataGrid control called (DG) Connected to a database table, and we want to make the Header Columns' width equal to each other and equal the datagrid width at the same time .............

Private Sub DGHeader()
For Each Column In DG.Columns
    Column.Width = Me.Width / DG.Columns.Count
Next

End Sub

Note:
Not likely suggested to a many columns datagrid .

Visual Basic 6.0 Lessons, Tricks, Tutorials and help links :
- Visual Basic 6.0 Color Picker tool source code 

Saturday, April 9, 2011

VB 0.6 MS Access Back up

بسم الله الرحمن الرحيم


(الدرس لكافة المستويات)
درس اليوم عن (عمل نسخه احتياطية لقاعدة بيانات من نوع اكسس فى الفيجوال بيزك باستخدام الكود)
عمل نسخه احتياطية لقاعدة بيانات الاكسس باستخدام الفيجوال بيزك
 
Back-up your Database using Code in Visual Basic 6.0
Back up your Database in Visual Basic 6.0 using code
بداية يجب ان نعرف سبب عمل الـــ Back Up ..... عندما تقوم بتصميم قاعدة بيانات على الرغم من كل الاحتياطات التى تتخذها لحماية قاعدة البيانات فهى فى النهاية على الــ Hard Desk أى انها عرضة للفيرس و الحذف لذا يجب دائما عمل نسخه احتياطية فى نهاية العمل على البرنامج و تحديثها فى كل مرة ينتهى المستخدم من البرنامج يقوم البرنامج بتحديث النسخه الاحتياطية حتى اذا حدث حذف او اى خلل فى الــ Hard Desk فان البيانات تكون محفوظة بسلام اما على USB Flash أو على Drive اخر أو على CD....
و بصفه عامه اذا أردت عمل Back Up لقاعدة بيانات أكسس 2003 من خلال الفيجوال بيزك فالأمر يحتاج الى تفكير للوصول الى الخطوات السليمه و لذا يجب توافر منطق سليم .
بداية ... لماذا تريد عمل Back Up ؟؟

فى هذا المثال سيكون السبب هو "فى حالة حدوث تلف للقاعدة الحالية لأى سبب من الاسباب أو حتى ضياعها كليا"

ثانيا ... أين تريد عمل Back Up ؟؟
سيكون الBackUp على نفس الكمبيوتر و لكن فالمكان الذى نختاره .

ثالثا ... هل الـ Back Up سيكون تلقائيا أو باختيار المستخدم ؟
سيكون باختيار المستخدم .
و هكذا نكون انتهينا من الفكره او المنطق ..
المثال العملى مرفوع على MediaFire
--------------------------------------------------
أى سؤال بخصوص الموضوع الرجاء اضافة تعليق
--------------------------------------------------
مع تحيات Evry1falls درس عمل Back Up لقاعدة بيانات Access 2003 من خلال الفيجوال بيزك 6 بالكود

Visual Basic Online Course

vb6 (63) Application Development (45) Visual Basic Online Course (45) Online Visual Basic Course (44) Visual Basic Help (44) Visual Basic Programming (42) IT Jobs (39) VB6 developer (38) Visual Basic Course (38) Visual Basic 6.0 (26) Microsoft Visual Basic 6.0 (25) VB6.0 (24) Visual Basic Programmers (24) vb 6.0 (24) visual basic programming tutorial (19) Third lesson (16) Source code download for Visual Basic 6.0 (14) Source code for Visual Basic 6.0 (10) visual basic tutorial (9) Visual Basic 6 (5) Visual Basic Courses (5) Lesson 3 (4) VB 0.6 - TreeView control (4) VB 0.6 With TreeView Control (4) VB6 Course (3) Create ActiveX (2) How to automate MS-Access from Visual Basic 6.0 (2) Add controls at runtime (1) Back up your Database (1) Change ActiveX icon (1) Change screen resolution (1) Create FTP (1) Crystal Reports 4.6 (1) Crystl32.ocx could not be loaded (1) DataGrid Columns re-size (1) Date Calculation (1) DateAdd Function (1) DateDiff function (1) FTP (1) Marquee Title Bar (1) Marquee VB 6.0 TitleBar (1) Method 'Action' of object 'CrystalCtrl' Failed (1) Microsoft Access with Visual Basic 6.0 (1) OpenSchema method (1) Save File Using CommonDilog (1) Track Database path (1) VB 0.6 - Registry (1) VB 0.6 With Registry Editor (1) VB 6.0 Access (1) VB 6.0 OOP (1) VB6 Access2003 ADO Like % (1) VB6 Add Date (1) VB6 Add Time (1) VB6 Date calculation (1) VB6 Subtract Date (1) Visual Basic Remote (1) Win7 (1) Windows7 (1) ms access networking details (1) remote Visual Basic DB (1) rounded and transparent forms (1) vb 0.6 style (1) vb 6.0 Remote Database (1)