تبلیغات
آموزش مطلب - مطالب GUIDE

guide

نویسنده :امین باشی
تاریخ:پنجشنبه 22 تیر 1385-09:07 ق.ظ

guide

در مورد گرافیک در مطلب خیلی صحبت کردم اما بدون صحبت از guide مطالبم ناقص است.

ویرایشگر رابط گرافیکی(guide) که از این پس ویرایشگر نامیده می شود  ساده ترین راه برای ایجاد رابط گرافیکی است .توسط این ویرایشگر شبیه تمام زبانهای ویژوال کافی است که مکان تکمه ها، نمودارها، منوها و ... انتخاب کرده و رابط گرافیکی خوتان را ایجاد کنید.

اگر از ویرایشگر مطلب 7.0 استفاده کنید نمی توانید از رابط ایجاد شده در نسخه های پایین تر مطاب استفاده کنید. البته امکان ذخیره کردن رابط به صورت m-file که در نسخه های پایین تر قابل استفاده باشد نیز وجود دارد اما  ترچیح می دهم که این کار را نکنم و در صورت لزوم رایط گرافیکی را مستقیما با نوشتن دستورات مطلب ایجاد کنم.

  ویرایشگر رابط گرافیکی ایجاد شده را در دو فایل ذخیره می کند.یک fig-file و یک m-file . چیدمان نمودارها و .... در fig-file ذخیره می شود و m-file برای برنامه نویسی استفاده می شود.

اولین کار برای ایجاد رابط - پیدا کردن یک تیکه گچ ، کشیدن رابط و ... رابط اسم یک بازی است که قدیما  از صبح تا شب بازی می کردیم - کشیدن یک طرح از پنجره مورد نظر روی کاغذ است .بعد از این کار دستور guide را اجرا کرده و طرح خود را در ویرایشگر می کشیم .

بعد از این کار باید ویژگی های اشیا قرار داده شده را تنظیم کنیم.مهمترین ویژگی که باید تنظیم شود ویژگی tag است.برای دسترسی به لیست ویژگی ها روی شئ مورد دوبار کلیک کنید.

در قسمت tag یک اسم یکتا را وارد کنید، اگر در لیست باز شده به قسمت callback  (اگر وجود داشته باشد) نگاه کنید خواهید دید که در مقابل عبارت automatic ذکر شده است.معنی این عبارت این است که در m-file ایجاد شده یک تابع به اسم tag_Callback ایجاد می شود گه به جای tag اسمی که وارد کردید قرار می گیرد(البته گاهی بهتر است که برای گروهی از اشیا یک اسم انتخاب کنید).

پس از ذخیره یرنامه m-file آن باز می شود. در m-file ایجاد شده توضیحات کامل برای کار آن توسط مطلب قراردهده شده است .در اینجا مقداری از آنها را برسی می کینم. 

ویرایشگر را باز کنید و یک Edit Text، یک Static Text . یک Push Bottun در صفحه باز شده قرار دهید(در منو سمت چپ می توانید اینها را پیدا کنید).بر روی هرکدام از این اشیا کلیک کرده تا لیست ویژگی های هرکدام باز شود.می بنید که برای ویژگی tag مربوط به Edit Text عبارت edit1 نوشته شده است.می توانید هر عبارت دیگری را بنوسید اما من تغیری در آن و در tag مربوط به دیگر اشیا نمی دهم.

من برنامه را به اسم guitest ذخیره کرده ام در m-file باز شده 6 تابع دیده می شود.

guitest

guitest_OpeningFcn

guitest_OutputFcn

نظیر این سه تابع در همه رابطهایی که با ویرایشگر ایجاد می شود وجود دارد و توابع دوم و سوم تابع داخلی تابع guitest (اسمی که رابط با آن ذخیره شده است) می باشند.

سه تابع دیگر در این m-file دیده می شود

edit1_Callback

edit1_CreateFcn

pushbutton1_Callback

در اینجا با تابع edit1_CreateFcn کاری نداریم  در لیست ویژگی های Edit text در مقابل  CreateFcn عبارت automatic نوشته شده است اگر این عبارت را پاک کنید این تابع ایجاد نخواهد شد.عملکرد این تابع همانند تابع guitest_OpeningFcn است .

در زیرتابع edit1_Callback این عبارات دیده می شود.

% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double

عبارت edit1 همان عبارتی است که در مقابل ویژگی tag شئ Edit Text نوشتیم و hobject دستگیره مربوط به این شئ است.

eventdata در حال حاضر در مطلب کاربرد ندارد

handles یک متغیر از نوع structure است.در این متغیر دستگیره تمام اشیا موجود در رابط قرار دارند.شما می توانید هر داده مورد نیاز را در آن قرار دهید.

و اما guidata

با کمک این دستور می توان متغیر handles به عنوانguidata ( داده های مورد نیاز تابع guitest) تعریف کرد و در هر قسمت از این تابع به این داده ها دسترسی پیدا کرد. با این کار نیازی به استفاده از متغیرهای سراسری و یا دستورات مشابه نیست.

این دستورات را به تابع edit1_Callback اضافه کنید

input = str2double(get(hObject, 'String'));
handles.metricdata.input = input;
guidata(hObject,handles)

دستور اول رشته موجود در شئ edit1 را به عدد تبدبه عنوان guidataیل می کند.دستور دوم این عدد را در متغیر handles ذخیره می کند و دستور سوم این متغیر را به عنوان guidata تعریف می کند.

شکل استفاده از دستور guidata به این صورت است.

guidata(object_handle, data)

آرگومان object_handle دستگیره رابط گرافیکی است ولی می توان دستگیره هر کدام از اشیا موجود در رابط را به جای به کار برد.

در زیر تابع pushbutton1_Callback دستورات زیر را اضافه کنید.

output = handles.metricdata.input * 3;
set(handles.text1, 'String', output);

واضح است که دستور اول عدد وارد شده در edit1 را در 3 ضرب کرده و در متغیر output قرار می هد.

برای دسترسی به دستگیره یک شئ کافی است به متغیر handles و فیلدی به اسم tag ان شئ مراجعه کیند.

لینکهای زیر رابط گرافیکی ایجاد شده برای این برنامه و یکی از مثالهای مطلب می باشد.که با مطلب 7.0 درست شده اند.

http://amin.bashi.googlepages.com/Guitest.rar

http://amin.bashi.googlepages.com/Guitest2.rar



نوع مطلب : GUIDE 





All right reserved©2005 Amin Bashi