• ایجاد یک رابط کاربری گرافیکی با استفاده از Win32 API. ایجاد رابط کاربری گرافیکی با Qt

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

    کار خوببه سایت">

    دانشجویان، دانشجویان تحصیلات تکمیلی، دانشمندان جوانی که از دانش پایه در تحصیل و کار خود استفاده می کنند از شما بسیار سپاسگزار خواهند بود.

    نوشته شده در http://www.allbest.ru/

    نوشته شده در http://www.allbest.ru/

    آژانس فدرال برای آموزش فدراسیون روسیه

    موسسه آموزشی دولتی

    آموزش عالی حرفه ای

    کمک بشردوستانه دولتی روسیهدانشگاه

    پژوهشگاه علوم اطلاعات و فناوری های امنیتی

    گروه انفورماتیک عمومی

    تست

    برای فناوری های اطلاعاتی

    رابط های گرافیکی و ابزار برای توسعه آنها

    لیسیچنوک کنستانتین ویکتورویچ

    تحصیل خارجی 3 سال تحصیل

    (دوره تحصیلی 4 ساله)

    گروه b (حوزه اطلاعات)

    مشاور علمی

    کاندیدای علوم فنی، مدرس: Mashintsov E.A.

    مسکو 2005

    طرح

    معرفی

    سیستم پنجره ایکس

    ترتیب کلی سیستمپنجره X

    برنامه نویسی با کتابخانه X Toolkit Intrinsic (Xt).

    اشیاء Xt، طبقه بندی آنها

    منابع اطلاعاتی

    معرفی

    هنگامی که برای اولین بار در سال 1959، در کنفرانس یونسکو در مورد پردازش اطلاعات، آقای استرچی یک حالت اشتراک زمانی را برای حل مسائل در رایانه پیشنهاد کرد، از آن لحظه مرسوم شد که شروع محاسبات تعاملی و در نتیجه، مطالعه رابط انسان و ماشین با افزایش قدرت رایانه ها، هزینه بخش نرم افزار مکالمه نیز افزایش یافت. موضوع کارآیی ماشین با ورود سریع به بازار ایستگاه های کاری که تعامل تعاملی را با گرافیک ترکیب می کنند تشدید شده است. اصطلاح بهره وری از آن زمان به بعد معنای خود را تغییر داده است - اگر قبلاً ویژگی هایی مانند زمان پردازنده و مقدار حافظه اشغال شده را منعکس می کرد ، اکنون به عنوان سهولت توسعه ، سهولت نگهداری و راحتی کار با برنامه درک می شود. بنابراین، هزینه های تحقیق و توسعه رابط کاربری موجه است.

    توسعه هر نرم افزار کاربردی، به عنوان یک قاعده، شامل ایجاد یک رابط کاربری است. از آنجایی که بیشتر رابط های کاربری مدرن مبتنی بر ایده های مشابه هستند ( استفاده فعال"موس"، تمرکز بر روی اشیاء، گرافیک و غیره. - تقلید از فرآیندها و پدیده‌ها، امکان استفاده از الگوریتم‌هایی که برای هر فرد از زندگی روزمره‌اش آشناست)، سپس امکان و نیاز به توسعه نرم‌افزارهای کمکی برای ایجاد این نوع رابط‌های «استاندارد» یا بهتر بگوییم پایه‌های آنها وجود دارد. .

    از سوی دیگر، سخت‌افزارها و پلتفرم‌های سیستمی متعدد و متنوعی که این نرم‌افزار نیاز به اجرا دارد، مستلزم قابل حمل بودن آن در سطح کد منبع است. الزامات فوق به طور منطقی منجر به ایده یک جعبه ابزار نرم افزاری یکپارچه قابل حمل برای ایجاد رابط کاربری می شود یا اگر محصول نرم افزار کاربردی نهایی را در نظر بگیریم، سیستمی (ماژول، بلوک) که مدیریت (مدیریت، اجرا، نگهداری، مدیریت) رابط کاربری

    می توانید چنین ابزارهایی (ابزارهای رابط کاربری) را بر اساس این طرح طبقه بندی کنید:

    * سیستم های صفحه نمایش مبتنی بر متن (نفرین، نفرین، و غیره).

    * سیستم های صفحه نمایش گرافیکی

    * سیستم های چند پنجره ای (WMS):

    * شخصیت گرا (متن)؛

    * گرافیک؛

    * جعبه ابزار UI

    * سنتی؛

    * شی گرا؛

    * UIDS - سیستم توسعه رابط کاربری - سیستم توسعه رابط کاربری (کیت ابزار).

    * UIMS - سیستم مدیریت رابط کاربری - سیستم رابط کاربری (مدیریت) (ماژول نرم افزار - بخشی جدایی ناپذیر از محصول نهایی در ارتباط با UIDS مربوطه).

    * UIDE - محیط توسعه رابط کاربری - محیط توسعه رابط کاربری.

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

    در حال حاضر تلاش های زیادی برای توسعه روش ها و ایجاد ابزارهای درون سیستم هایی به نام UIMS - User Interface Management System در حال انجام است.

    سیستمپنجره X

    پنجره Xیا به سادگی ایکس- سیستمی است برای ایجاد یک رابط کاربری گرافیکی، در اصل - در رایانه هایی که یونیکس دارند. X در MIT (موسسه فناوری ماساچوست) ایجاد شد. نسخه 11.6 (X11R6) قبلا منتشر شده است و آماده سازی برای انتشار نسخه 7 در حال انجام است.

    یکی از ویژگی های پنجره X معماری آن است - طبق طرح مشتری-سرور ساخته شده است. تعامل بین X-client و X-server در چارچوب پروتکل مربوطه انجام می شود سطح کاربردی- پروتکل X پنجره X نسبت به حمل و نقل مورد استفاده، که می تواند یک سوکت محلی یونیکس یا هر شبکه ای مانند TCP باشد، بی تفاوت است. این بدان معنی است که سرویس گیرنده X و سرور X می توانند "زندگی" داشته باشند کامپیوترهای مختلف، یعنی برنامه می تواند I/O انجام دهد اطلاعات گرافیکیروی صفحه رایانه دیگری، و تفاوت در معماری سرویس گیرنده X و سرور X هیچ نقشی ندارد - این توسط استاندارد پروتکل X ارائه شده است. این سیستم خروجی گرافیکی را به صفحه دستگاه ارائه می دهد، سیگنال های دستگاه های ورودی مانند صفحه کلید و ماوس را می پذیرد و آنها را به برنامه ها منتقل می کند. لازم به ذکر است که یک دستگاه خروجی ممکن است بیش از یک صفحه نمایش داشته باشد. X خروجی هر یک از آنها را فراهم می کند. همه اینها: صفحه نمایش (صفحه نمایش)، دستگاه های ورودی (صفحه کلید، ماوس) از نظر پنجره X نامیده می شود - نمایشگر.

    با توجه به معماری آن، پنجره X آزادانه در سیستم های محاسباتی توزیع شده، به عنوان مثال، در شبکه های TCP / IP (اینترنت) استفاده می شود.

    X به کاربر (پشت صفحه نمایش) اجازه می دهد تا با بسیاری از برنامه ها به طور همزمان ارتباط برقرار کند. به طوری که خروجی از آنها مخلوط نشود، سیستم "صفحه های فرعی مجازی" - پنجره هایی را روی صفحه نمایش ایجاد می کند. هر برنامه (معمولاً) فقط در پنجره خود (یا پنجره های آن) ترسیم می کند. X مجموعه ای از ابزارها را برای ایجاد پنجره ها، جابجایی آنها در اطراف صفحه نمایش، تغییر اندازه، نمایش آنها و غیره فراهم می کند.

    به عنوان یک قاعده، برنامه ها دارای مجموعه ای از پارامترهای پیکربندی - منابع هستند. این می تواند رنگ پنجره، پارامترهای مختلف فونت متن (لیگاتور، اندازه و غیره) و موارد دیگر باشد. این سیستم نحوه تعریف و مدیریت منابع برنامه را استاندارد می کند و شامل تعدادی رویه برای کار با آنها است. این مجموعه از توابع "مدیر منابع" (Xrm - X Resource Manager) نامیده می شود. "ذخیره" تنظیمات برنامه پایگاه داده منابع نامیده می شود.

    X بر اساس ایدئولوژی معماری رویداد محور عمل می کند - ارتباط بین خود برنامه ها و بین برنامه ها و محیط خارجی را از طریق رویدادها سازماندهی می کند. رویداد واحدی از اطلاعات است که تغییرات یا اعمالی را که در سیستم رخ می دهد را شناسایی می کند. با شناسه رویداد، می توانید اطلاعاتی در مورد آن به دست آورید - نوع رویداد، ویژگی های آن، محل وقوع آن و غیره.

    دستگاه پنجره X اشتراکی

    سیستم پنجره Xمجموعه ای از برنامه ها و کتابخانه ها است. "قلب" او است برنامه ویژه- سرور X این یک فرآیند یونیکس جداگانه است که در رایانه ای که نمایشگر به آن متصل است انجام می شود. این سروری است که ویژگی‌های یک سخت‌افزار خاص را می‌داند، می‌داند برای نمایش هر شیء گرافیکی، به عنوان مثال، یک نمونه اولیه، چه کاری باید انجام شود. او همچنین می داند که چگونه سیگنال های دریافتی از صفحه کلید و ماوس را درک و پردازش کند.

    سرور با ارسال یا دریافت بسته های داده از برنامه های مشتری با آنها ارتباط برقرار می کند. اگر سرور و کلاینت روشن هستند ماشین های مختلف، سپس داده ها از طریق شبکه ارسال می شود و اگر روی یکی باشد، از کانال داخلی استفاده می شود. به عنوان مثال، اگر سرور تشخیص دهد که کاربر دکمه ماوس را فشار داده است، بسته (رویداد) مناسب را آماده می کند و آن را برای مشتری ارسال می کند که در پنجره ای که نشانگر ماوس در لحظه فشردن دکمه در پنجره آن قرار داشت. برعکس، اگر برنامه نیاز به نمایش چیزی بر روی صفحه نمایش داشته باشد، بسته داده لازم را ایجاد کرده و به سرور ارسال می کند. بدیهی است که شرح این تعامل، فرمت های بسته و غیره. و مشخصات پروتکل X فوق الذکر را انجام می دهد.

    اما برای برنامه نویسی برای X نیازی به دانستن جزئیات پیاده سازی سرور و پروتکل X نیست. این سیستم یک کتابخانه استاندارد از رویه ها را فراهم می کند که توسط آن برنامه ها به خدمات "سطح بالا" X دسترسی پیدا می کنند. بنابراین، برای نمایش یک نقطه روی صفحه، کافی است رویه استاندارد مربوطه را فراخوانی کنید و پارامترهای لازم را به آن منتقل کنید. این روش تمام کار تشکیل بسته های داده و انتقال آنها به سرور را انجام می دهد.

    پنجره X

    همانطور که قبلاً ذکر شد، پنجره یک مفهوم اساسی در X است. معمولاً یک ناحیه مستطیلی را بر روی صفحه نمایش می دهد که توسط سیستم به برنامه مشتری ارائه می شود. دومی از یک پنجره برای نمایش اطلاعات گرافیکی استفاده می کند.

    پنجره دارای یک داخل و یک لبه است. ویژگی های اصلی یک پنجره عرض و ارتفاع داخلی و همچنین عرض (ضخامت) لبه است. به این پارامترها هندسه پنجره می گویند.

    هر پنجره با یک سیستم مختصات مرتبط است که منشا آن در گوشه سمت چپ بالای پنجره (به طور دقیق تر، داخلی آن) است. محور x به سمت راست و محور y پایین است. واحد اندازه گیری هر دو محور یک پیکسل است.

    X Window به یک برنامه اجازه می دهد چندین پنجره را همزمان ایجاد کند. آنها در سلسله مراتبی به هم متصل هستند که در آن برخی "والدین" و برخی دیگر "فرزند" هستند. خود سرور در هر صفحه یک پنجره اصلی ایجاد می کند که بالاترین "والد" در بین سایر پنجره ها است. این پنجره را پنجره "ریشه" می نامند.

    مدیریت پنجره

    ویندوز را می توان بر روی صفحه نمایش به روش دلخواه مرتب کرد و روی یکدیگر همپوشانی کرد. X Window دارای مجموعه ای از ابزارها است که یک برنامه کلاینت می تواند از آنها برای تغییر اندازه پنجره ها و تغییر مکان آنها بر روی صفحه استفاده کند. یکی از ویژگی های سیستم این است که توانایی داخلی برای مدیریت ویندوز با استفاده از ماوس یا صفحه کلید ندارد. برای انجام این کار، به یک مشتری خاص نیاز دارید - مدیر پنجره (مدیر پنجره).

    با این حال، مدیر نمی تواند به درستی ویندوز را بدون دانستن چیزی در مورد آنها مدیریت کند. ویندوز می تواند ویژگی های مختلفی داشته باشد که مدیر پنجره باید ارائه دهد: به عنوان مثال، در بسیاری از موارد داشتن عناوین پنجره راحت است، در موارد دیگر مطلوب است که پنجره را نتوان کوچکتر کرد، یا برعکس - بزرگتر از یک اندازه خاص. پنجره را می توان به یک نماد ("نماد") "جمع کرد" - در این مورد، مدیر باید بداند که از کدام نماد استفاده کند و آن را چه نامی بگذارد. مشتریان می توانند خواسته های خود در مورد ویندوز را از دو طریق به مدیر منتقل کنند:

    * هنگام ایجاد یک پنجره X، "توصیه ها" (نکات) در مورد موقعیت اولیه پنجره، هندسه آن، حداقل و حداکثر اندازه و غیره قابل انتقال است.

    * می توانید از روش داخلی X برای برقراری ارتباط بین برنامه ها استفاده کنید - مکانیسم "خواص".

    قابلیت های گرافیکی X Window

    سیستم پنجره X برای کار بر روی نمایشگرهای بیت مپ طراحی شده است. به تعداد بیت ها در هر پیکسل، عمق یا ضخامت نمایشگر می گویند. بیت‌هایی با اعداد یکسان (ارقام دودویی یکسان) در همه پیکسل‌ها یک صفحه را تشکیل می‌دهند که گویی موازی با صفحه است. به آن صفحه رنگ می گویند. X به شما این امکان را می دهد که در هر صفحه رنگی بدون تأثیرگذاری روی سایرین نقاشی کنید.

    مقدار پیکسل مستقیماً رنگ یک نقطه روی صفحه را تنظیم نمی کند، بلکه تعداد سلول را در یک آرایه خاص تنظیم می کند که در آن مقدار رنگ ذخیره می شود. مقدار پیکسل شماره رنگ را در پالت فعلی مشخص می کند.

    X دارای مجموعه بزرگی از رویه ها است که به شما امکان می دهد تا ابتدائی های گرافیکی را ترسیم کنید: نقاط، خطوط، قوس ها، متن. کار با مناطق آزاد

    «خواص» و اتم ها

    پنجره X دارای امکانات داخلی برای ارائه اطلاعات بین برنامه های مشتری است. برای این کار از مکانیسم "خواص" استفاده می شود. یک "ویژگی" یک ساختار اطلاعاتی است که با برخی شیء مرتبط است، مانند یک پنجره، که در دسترس همه مشتریان X است. هر ویژگی یک نام و یک شناسه منحصر به فرد دارد - یک اتم. معمولاً نام اموال با حروف بزرگ نوشته می شود. اتم ها برای دسترسی به محتویات ویژگی ها به منظور کاهش میزان اطلاعات ارسال شده بین کلاینت ها و سرور X استفاده می شوند.

    X تعدادی روش ارائه می دهد که به شما امکان می دهد نام ویژگی را به یک اتم منحصر به فرد ترجمه کنید و برعکس، داده های لازم را از اتم دریافت کنید.

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

    برنامه نویسی کتابخانهX Toolkit Intrinsic (Xt)

    برای تسهیل برنامه نویسی در سیستم پنجره X، بسته های متعددی ایجاد شده است. استاندارد فعلی، کتابخانه X Toolkit Intrinsics (Xt) است که در توزیع استاندارد سیستم گنجانده شده است. Xt راه اندازی اولیه برنامه ها و ایجاد ویندوز را آسان می کند. علاوه بر این، کتابخانه حاوی ابزارهایی برای ایجاد اشیاء (عناصر کنترل) است که توسط برنامه ها هنگام برقراری ارتباط با کاربران استفاده می شود. در اصطلاح Xt، کنترل ویجت نامیده می شود.

    که در در حال حاضرمبتنی بر بسته پیاده سازی شده است مجموعه های مختلف(مجموعه) کنترل ها (اشیاء)، به عنوان مثال، آتنا، OSF/موتیف، نگاه باز. این مجموعه ها به همراه خود Xt به عنوان ابزاری مناسب برای ایجاد رابط ها استفاده می شوند. آنها در هنگام نوشتن کارهای معمولی را انجام می دهند برنامه خودفقط با استفاده از روال های کتابخانه هسته X Window، برنامه نویس باید این کار را به صورت دستی انجام دهد.

    مبانی Xt

    برنامه نویسی رابط گرافیکی کاربر

    اشیاء Xt

    بسته Xt پایه ای برای ایجاد عناصر کنترل - ویجت ها (جاهای خالی) است. در مفهوم Xt، ویجت به سادگی یک ساختار داده است که فیلدهای آن شامل شناسه خود عنصر، شناسه پنجره آن، در صورت وجود، و موارد دیگر است. ویژگی های چنین شیئی منابع نامیده می شوند. منابع یک ویجت می تواند به عنوان مثال رنگ پنجره آن، رنگ حاشیه پنجره، فونت متن نمایش داده شده و غیره باشد.

    هر شی متعلق به یکی از کلاس های از پیش تعریف شده (کلاس ویجت) است. یک کلاس به معنای معمول برای برنامه نویسی شی گرا درک می شود، به عنوان مثال: یک کلاس را می توان به عنوان مجموعه ای از نمونه ها (اشیاء) در نظر گرفت که ویژگی های یکسانی دارند. کلاس های Xt یک سلسله مراتب را تشکیل می دهند.

    در حین اجرا، برنامه خود اشیاء را ایجاد می کند (نمونه های کلاس -- ویجت). آنها مجموعه هایی را تشکیل می دهند که هر کدام نشان دهنده یک سلسله مراتب خاص هستند. هر یک از این سلسله مراتب درخت ویجت نامیده می شود. ریشه درخت لزوما ویجت است که متعلق به یکی از زیر کلاس های کلاس ویژه - Shell است. اگر در بین دو ویجت A و B درختی از اشیاء، اولی به ریشه نزدیکتر از دومی باشد، A والد ("والد") B و B شی فرعی (یا شی "فرزند" است. (فرزند)) از A. بنابراین، شی پوسته ویجت والد همه ویجت های دیگر در این درخت شی است. این اوست که تعامل برنامه و مدیر پنجره را انجام می دهد.

    سلسله مراتب ویجت توصیف شده مربوط به رابطه ویندوز آنها است که یکی از ویژگی های پنجره X است. علاوه بر این، سلسله مراتب دیگری بر روی اشیا قرار می گیرد. واقعیت این است که در طول عملیات، برخی از اشیاء می توانند دیگران را کنترل کنند. به عنوان مثال، اگر یک شی دارای اشیاء فرعی باشد، هنگامی که هندسه تغییر می کند، می تواند به طور خودکار هندسه فرزندان خود را بازسازی کند. برای اینکه این اتفاق بیفتد، یک پیوند بین ویجت ایجاد می شود - پیوند "مدیریت". هر شی می تواند یک یا چند شیء فرعی "مدیریت شده" داشته باشد.

    سه مکانیسم برای تعامل برنامه های Xt با ویجت و پنجره X وجود دارد.

    * پاسخ به تماس

    رویه ها ("روش های برگشت به تماس"). برای هر کلاس، مجموعه ای از اقدامات تعریف شده است که اشیاء متعلق به آن باید به آن پاسخ دهند. به عنوان مثال، برای هر کلاس، یک واکنش برای از بین بردن ویجت ارائه شده است. هنگامی که یک عمل انجام می شود، یک تابع استاندارد Xt یا یک یا چند روال ارائه شده توسط برنامه فراخوانی می شود. چنین توابعی را رویه های برگشت تماس یا به سادگی callback می نامند.

    *عمل

    -روش ها این برنامه می تواند واکنشی به یک یا آن رویداد پیچیده (گروهی از رویدادها) که از Xt می آید را سفارش دهد. اگر رویدادی رخ دهد، Xt تابع مناسب را جستجو و فراخوانی می کند.

    * گردانندگان رویداد

    - کنترل کننده رویداد. این روش مشابه روش قبلی است، اما سریعتر و کمتر انعطاف پذیر است. این به شما امکان می دهد فقط به رویدادهای ساده (تک) واکنش نشان دهید، اما نه به دنباله آنها.

    طرح برنامه نویسی عمومی

    برنامه هایی که در X اجرا می شوند باید تعدادی عملکرد استاندارد مانند برقراری ارتباط با سرور، تنظیم ویژگی های لازم برای مدیر پنجره و بسیاری از مراحل دیگر را انجام دهند. اگر از Xt استفاده می شود، تمام این کارها توسط یک رویه انجام می شود - XtInitialize(). این بسته خود، مدیر منبع X Window (\term resource manager) را مقداردهی اولیه می کند و سایر عملیات های ضروری را انجام می دهد. shell-widget، که می تواند به عنوان ریشه درخت شی برنامه استفاده شود. به عنوان یک قاعده، نام کلاس برنامه با نام خود برنامه یکسان است و فقط با یک حرف بزرگ شروع می شود. مدیر منابع از نام و کلاس برنامه برای جستجوی پارامترهای آن در پایگاه داده منابع.

    هر برنامه می تواند برخی از گزینه ها را در خط فرمان مشخص کند. Xt پارامترهای "استاندارد" را تعریف می کند که هنگام شروع یک برنامه می توان آنها را ارسال کرد. علاوه بر این، خط فرمان ممکن است حاوی پارامترهای غیر استانداردی باشد که منحصر به این برنامه هستند. XtInitialize() اسکن می کند خط فرمانو مقادیر داده مربوطه را در پایگاه داده قرار می دهد.

    در طول مقداردهی اولیه، یک زمینه برنامه نیز ایجاد می شود - ساختاری که تمام اطلاعات مربوط به برنامه را ذخیره می کند. این زمینه برای محافظت از برنامه در برابر تأثیر تغییرات مختلف در سیستم عامل در نظر گرفته شده است. XtInitialize() مقداری زمینه استاندارد (زمینه پیش فرض) ایجاد می کند، اما، با این وجود، با شروع از نسخه چهارم X، توصیه می شود برای هر نمونه از برنامه، یک زمینه "شخصی" جداگانه ایجاد کنید، که برای آن، از نظر Xt ، باید از فراخوانی رویه XtAppInitialize() (به جای XtInitialize()) استفاده کنید. در اینجا توجه داشته باشید که یک برنامه در Xt می تواند نه یک، بلکه چندین شیء داشته باشد. سطح بالا".

    مرحله بعدی پس از مقداردهی اولیه، مرحله ایجاد عناصر کنترل برنامه، توصیف رابطه بین آنها، تنظیم واکنش ها به رویدادهای مختلف (ثبت کنترل کننده رویداد و سایر اشیاء مشابه) است. این کار قابل انجام است راه های مختلف، سنتی این است که برای مثال برای ایجاد یک شی از رویه XtCreateWidget، برای انتقال کنترل یک شی به والد آن - رویه XtManageChild()، برای ثبت کنترل کننده رویداد برای یک ویجت - رویه XtAddEventHandler() استفاده شود. و غیره. و غیره

    پس از آماده شدن تمام اشیاء برنامه برای کار، نمایش های گرافیکی آنها (به عنوان مثال، پنجره های مربوط به این ویجت ها) توسط رویه XtRealizeWidget () روی صفحه نمایش داده می شود.

    مرحله بعدی چرخه اصلی است - چرخه دریافت و ارسال رویدادها. با فراخوانی رویه XtMainLoop () ()XtAppMainLoop پیاده سازی می شود.

    برنامه‌ای که فقط از روال‌های کتابخانه هسته X (Xlib) استفاده می‌کند باید خودش هر رویداد ورودی را در نظر بگیرد (دریافت آن از صف رویداد با یک فراخوان صریح، به عنوان مثال، XNextEvent() یا XPeekEvent()) و مطابق با آن واکنش نشان دهد. اگر کار دارای چندین پنجره باشد، قبل از انجام هر اقدامی، باید مشخص شود که رویداد در کدام یک از پنجره ها رخ داده است و این رویداد در چه سطحی از سلسله مراتب پردازش می شود (آیا این شی یا والد آن این رویداد را پردازش می کند؟ ). همه اینها کاملا خسته کننده است.

    Xt از تمام کارهای معمول مراقبت می کند. XtMainLoop () رویداد بعدی را دریافت می کند و پنجره ای را که برای آن در نظر گرفته شده است تعیین می کند. ویجت مربوطه در پنجره قرار دارد. برای دومی، یک کنترل کننده رویداد، رویه اقدام، یا پاسخ به تماس برای ثبت برای پاسخ به رویدادی که رخ داده است، تعریف شده است. اگر شبکه ای وجود داشته باشد، آنها فراخوانی می شوند. مکانیسمی که در بالا توضیح داده شد، اعزام رویداد نامیده می شود.

    XtMainLoop() (XtAppMainLoop()) برنامه را در صورت درخواست مدیر پنجره به طور خودکار خاتمه می دهد.

    اشیاء Xt، طبقه بندی آنها

    Xt مجموعه ای از امکانات را برای ایجاد اشیاء فراهم می کند که توسط برنامه ها برای برقراری ارتباط با کاربر و به طور کلی با بقیه جهان خارج استفاده می شود.

    هر برنامه تولید شده استویجت نماینده یک کلاس یا کلاس دیگر است. Xt و بسته های مبتنی بر آن مانند OSF/Motif، Athena، Tk/tcl، Open Look و غیره دارای تعداد زیادی ازچنین کلاس هایی ایجاد ویجت‌های جدید که در کتابخانه‌های استاندارد ارائه نشده‌اند نیز نیازمند ایجاد (تعریف) کلاس مربوطه است که معمولاً کاری زمان‌بر است.

    هر کلاس دارای تعدادی مشخصه ثابت است که در تمام نمونه های آن مشترک است (مثلاً لیستی از رویه های برگشت تماس). مقادیر این ویژگی ها برای خود اشیا ممکن است متفاوت باشد.

    تمام کلاس های Xt یک سلسله مراتب را تشکیل می دهند. اگر کلاس B نسبت به کلاس D به بالای سلسله مراتب نزدیکتر باشد، B را کلاس پایه D و D را کلاس مشتق شده (یا زیر کلاس) B می نامند.

    زیر کلاس ها ویژگی های تمام کلاس های پایه خود را به ارث می برند. این بدان معنی است که یک نمونه از یک کلاس نه تنها ویژگی های کلاس خود، بلکه ویژگی های همه کلاس های پایه را دارد.

    در برنامه ها، هر کلاس با یک متغیر مشخص می شود که به ساختار داده مربوطه اشاره می کند. این متغیر را نشانگر کلاس می نامند. داده های این ساختار با مقداردهی اولیه Xt پر می شود.

    کلاس های ابزارک اصلی:

    هدف - شی. یک کلاس انتزاعی (کلاسی که شیء خود را تولید نمی کند) که به عنوان ریشه درخت همه اشیا استفاده می شود. این شامل یک زیر کلاس است:

    RectObj. یک کلاس انتزاعی که برای تعریف برخی از ویژگی های کلی لازم برای عملکرد انواع مختلف اشیاء (مثلاً برای اشیایی که پنجره ندارند) استفاده می شود. این شامل یک زیر کلاس است:

    هسته. ریشه درخت کلاس های ویجت هایی که ویندوز دارند. این کلاس ویژگی های مشترک برای همه اشیاء را تعریف می کند، مانند اندازه پنجره ویجت و موقعیت آن روی صفحه. شامل یک زیر کلاس:

    کامپوزیت. ویجت های متعلق به این کلاس می توانند والد برای اشیاء دیگر باشند. نمونه هایی از کلاس Composite رفتارهای زیر را برای زیر اشیاء خود تعریف می کنند:

    * مکان ویجت "کودک" را با توجه به محدودیت های خاصی تنظیم می کند.

    * هنگامی که از بین می رود، حافظه مورد استفاده توسط اشیاء فرعی را آزاد می کند (هنگام تخریب ویجت کلاس کامپوزیت، ابتدا تمام "فرزندان" آن از بین می روند).

    * ظاهر ویجت های فرزند خود را بر روی صفحه نمایش پنجره ها کنترل می کند.

    * انتقال فوکوس ورودی بین اشیا را کنترل می کند.

    کلاس Composite شامل زیر کلاس‌هایی است:

    محدودیت. این کلاس بسط دیگری از کلاس پایه است. نمونه های آن توانایی بیشتری برای کنترل اندازه و مکان فرزندان خود دارند. به عنوان مثال، اشیاء فرعی را می توان به ترتیب خاصی قرار داد: در یک ردیف، در یک ستون و غیره.

    پوسته. این یک کلاس ویژه است که برای تعامل با مدیر پنجره طراحی شده است. ویجت از این کلاس فقط می تواند یک فرزند داشته باشد. کلاس Shell شامل زیر کلاس های زیر است:

    OverrideShell. این یک زیر کلاس مهم از کلاس شل است. برای یک پنجره ویجت از این کلاس، ویژگی override_redirect روی True تنظیم شده است، یعنی. مدیر پنجره هیچ کنترلی روی آن ندارد. به عنوان یک قاعده، پنجره های اشیاء این کلاس دارای لوازم جانبی اضافه شده توسط مدیر پنجره (عنوان، قاب، دکمه های استاندارد) نیستند و عمدتاً برای ایجاد انواع منوها استفاده می شوند.

    WMShel. این یک زیر کلاس خاص از کلاس Shell است که حاوی فیلدهای اضافی مورد نیاز برای تعامل با مدیر پنجره است. حاوی:

    VendorShell. این کلاس برای فعال کردن تعامل با مدیران پنجره خاص در نظر گرفته شده است. این کلاس شامل زیر کلاس های زیر است:

    TopLevelShell. ویجت های این کلاس معمولاً به عنوان اشیاء پوسته درخت شی برنامه استفاده می شوند. او حاوی:

    ApplicationShell. یک برنامه معمولاً می تواند فقط یک نمونه داشته باشد که به کلاس ApplicationShell تعلق دارد.

    TransientShell. این کلاس با کلاس قبلی فقط در نحوه تعامل با مدیر پنجره متفاوت است. ابزارک های این کلاس را نمی توان کوچک کرد (به یک نماد تبدیل کرد). اما اگر والد یک شی از کلاس TransientShell به یک نماد تبدیل شود، پنجره ویجت از صفحه حذف می شود. کلاس TransientShell برای ایجاد دیالوگ ها استفاده می شود.

    هر یک از کلاس‌های ویجت، و از این رو، اشیاء ایجاد شده بر اساس آن، دارای تعداد نسبتاً زیادی پارامتر هستند. از نظر Xt به آنها "منابع" گفته می شود. Xt طیف وسیعی از ابزارها را برای کار با آنها فراهم می کند.

    ویژگی های اضافی Xt

    Xt مکانیزمی برای کار با فایل ها (و به طور کلی دستگاه های خارجی) در حالت ناهمزمان ارائه می دهد. یک برنامه کاربردی می تواند رویه ای را ثبت کند تا زمانی که داده ها آماده هستند یا زمانی که یک خطای خواندن/نوشتن رخ می دهد فراخوانی شود.

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

    Xt توانایی انجام برخی اقدامات را در زمانی که صف رویداد خالی است را فراهم می کند. این کار با ثبت یک رویه «کار» ویژه انجام می شود که در صورت خالی بودن صف رویداد، Xt آن را فراخوانی می کند. معمولاً از چنین توابعی برای انجام اقدامات و محاسبات مختلف در مدت زمان بسیار کوتاهی استفاده می شود.

    هر برنامه، در صورت لزوم، می تواند چرخه معمول دریافت و ارسال (پردازش) رویدادها را تغییر دهد - Xt مجموعه کاملی از رویه ها را برای کار با صف رویداد ارائه می دهد.

    Xt دارای مکانیزمی از به اصطلاح شتاب دهنده ها (شتاب دهنده) است که به شما امکان می دهد وابستگی های رویدادها و اقدامات را وارد کنید. شتاب دهنده ها مشابه رویه های اقدام هستند، با این تفاوت که یک رویداد (یا گروهی از رویدادها) که در یک ویجت رخ می دهد، فراخوانی رویه عمل مربوطه را در یک شی دیگر آغاز می کند.

    Xt از چندین روش برای کار با ویندوز ویجت پشتیبانی می کند. بنابراین، برنامه با استفاده از روال های ارائه شده توسط Xt، می تواند پنجره را نشان دهد، این یا آن حالت عملکرد را برای آن تنظیم کند و در صورت غیر ضروری شدن پنجره را ببندد. این رویه ها عمدتاً برای ایجاد منوها و دیالوگ های پاپ آپ استفاده می شوند. به عنوان یک قاعده، همه مجموعه‌های ویجت (به عنوان مثال OSF/Motif) رویه‌های بسیار راحت‌تری برای ایجاد منوها و گفتگوها دارند.

    افزونه‌های Xt در حال حاضر، Xt توسط کنسرسیوم X کاملاً استاندارد شده است، اما استانداردهای سطح بالاتری وجود ندارد. محبوب هستند:

    * OSF/Motif Toolkit.

    * مجموعه ویجت آتنا.

    * OPEN LOOK Intrinsic Toolkit.

    * مصاحبه؛

    *Tk/tcl.

    رایج ترین و تقریباً عملاً استاندارد را احتمالاً باید OSF/Motif در نظر گرفت.

    آتنا

    مجموعه ابزارک Athena ("مجموعه ویجت") توسط کنسرسیوم X به عنوان بخشی از توزیع استاندارد X ارائه می شود. Athena از کار بر روی برنامه های کاربردی و ابزارهای اساسی در طول پروژه Athena در MIT ایجاد شد که منجر به سیستم پنجره X شد.

    آتنا در ابتدا دارای گرافیک "مسطح" بود - همه دکمه ها، منوها و سایر عناصر رابط هیچ سایه ای نداشتند، یعنی. مسطح بودند حدود یک سال پیش، AW3d منتشر شد، یک نوع ابزارک Athena که این نقص را برطرف کرد.

    موتیف

    Open Software Foundation Motif (OSF/Motif) بسته‌ای است که شامل یک مدیر پنجره، مجموعه‌ای از ابزارهای کمکی برای انجام عملیات‌های مختلف کمکی، و کتابخانه‌ای از اشیاء ساخته شده بر روی Toolkit Intrinsics است.

    Motif از تمام کلاس‌های Xt و بنابراین منابع آن کلاس‌ها پشتیبانی می‌کند، اما نام و کلاس منبع یک شی به ترتیب با پیشوندهای XmN و XmC نشان داده می‌شود. برای ثبت نوع منبع، از ثابت هایی با پیشوند XmR استفاده می شود (به جای XtR، که در Xt پذیرفته شده است).

    Motif مجموعه کلاس های شی ارائه شده توسط Xt را گسترش می دهد. به طور خاص، Motif از مجموعه نسبتاً بزرگی از کلاس‌ها پشتیبانی می‌کند که به شما امکان می‌دهد منوها، نوارهای اسکرول)، دکمه‌های قابل کلیک، عناصر ویرایش و غیره را ایجاد کنید.

    علاوه بر این، Motif یک کلاس ویژه از اشیاء به نام گجت را ارائه می دهد - آنها یک کلاس XmGadget جداگانه در Motif تشکیل می دهند که زیر کلاس کلاس RectObj است. آنها همچنین می توانند برای ایجاد عناصر رابط استفاده شوند، اما این ویژگی را دارند که ویندوز خود را ندارند. برای طراحی، ابزارها از پنجره والدین خود استفاده می کنند.

    هر کلاس ویجت دارای انتخاب نسبتاً گسترده ای از منابع ارثی و اضافی خاص خود است. آنها به شما اجازه می دهند تا ویژگی های مهم اشیاء مانند رنگ پس زمینه، مکان روی صفحه، فونت متن نمایش داده شده و غیره را کنترل کنید.

    برخی از کلاس‌های Motif برای ایجاد نمونه‌های ویجت استفاده نمی‌شوند (این گونه کلاس‌ها در اصطلاح برنامه‌نویسی شی‌گرا کلاس‌های انتزاعی نامیده می‌شوند). آنها حاوی رایج ترین ویژگی ها و روش های مورد نیاز برای عملکرد انواع ویجت هستند.

    Motif دو زیر کلاس شی اصلی دارد: XmPrimitive و XmManager (کلاس XmGadget قبلا ذکر شد). هر دوی این کلاس ها انتزاعی هستند. اولین مورد از کلاس Core به ارث برده شده است و به عنوان پایه ای برای کلاس های شی که دارای اشیاء دیگری نیستند استفاده می شود. به عنوان مثال دکمه های قابل کلیک، لیست ها و غیره هستند. کلاس XmManager از کلاس Constraint مشتق شده و برای ایجاد اشیایی استفاده می شود که می توانند اشیاء فرزند را داشته باشند و مدیریت کنند.

    طبقه بندی اشیاء

    کلاس XmGadget. هنگام نمونه سازی کلاس های شیء معمولی Motif (ویجت)، پنجره مربوطه نیز تولید می شود. اگر برنامه از ویجت های زیادی استفاده می کند، این منجر به کندی قابل توجهی در برنامه می شود. زمان هم برای ایجاد پنجره ها و هم برای کار بیشتر با آنها صرف می شود. اما به راحتی می توان فهمید که لازم نیست برای هر شی یک پنجره جداگانه داشته باشید. برچسب ها، دکمه ها و بسیاری از ویجت های دیگر می توانند با موفقیت از اشیاء والد خود برای ترسیم پنجره ها استفاده کنند. هیچ پنجره ای وجود ندارد - نیازی به تماس مجدد با سرور نیست، عملکرد افزایش می یابد و حافظه اضافی تلف نمی شود.

    با اجرای این ایده، توسعه دهندگان Motif برخی از کلاس های شی را کپی کرده اند و دو نسخه را ایجاد کرده اند - با پنجره و بدون پنجره. نسخه هایی از اشیاء که پنجره ندارند سلسله مراتب خود را از کلاس انتزاعی - XmGadget هدایت می کنند و نام عمومی یکسانی دارند. این کلاس شی خاص، ویژگی های خود را از کلاس RectObj به ارث می برد، که به نوبه خود، یک کلاس انتزاعی است که مکانیسم های اساسی برای مدیریت هندسه شی را در بر می گیرد.

    علاوه بر این که گجت ها ویندوز مخصوص به خود را ندارند، محدودیت های دیگری نیز برای آن ها اعمال می شود. بنابراین، برای آنها غیرممکن است که کنترل کننده رویداد (کنترل کننده رویداد)، جداول ترجمه را تعریف کنند. همچنین، ابزار نمی تواند اشیاء کودک داشته باشد. در غیر این صورت، عملکرد ابزار و ویجت مربوطه یکسان است، بنابراین ما آنها را به طور جداگانه شرح نمی دهیم، بلکه فقط آنها را لیست می کنیم.

    کلاس XmGadget شامل زیر کلاس‌هایی است:

    *XmArrowButtonGadget.

    * XmLabelGadget.\hfil

    *XmPushButtonGadget.

    *XmToggleButtonGadget.

    *XmCascadeButtonGadget.

    *XmSeparatorGadget.

    کلاس XmPrimitive. این کلاس انتزاعی شامل:

    دکمه XmArrow. یک نمونه از کلاس دکمه ای است که یک فلش جهت دار روی آن کشیده می شود. دکمه را می توان با ماوس یا صفحه کلید کلیک کرد. مرز عنصر کنترل می تواند یک سایه داشته باشد، از آن برای نشان دادن حالت های مختلف استفاده می شود که در آن شی می تواند باشد: آزاد ("فشرده") و فشرده.

    برچسب Xm. نمایندگان این کلاس (برچسب ها) یکی از ساده ترین اشیاء Motif هستند. برچسب ها برای نمایش اطلاعات طراحی شده اند: متن یا عکس (نقشه های بیتی (پیکسلی)).

    XmPushButton. اعضای این کلاس دکمه های مستطیلی قابل کلیک هستند که می توان در آنها یک خط متن رسم کرد.

    اگر یک شی انتخاب شود، به عنوان مثال، با فشار دادن دکمه سمت چپ ماوس در حالی که مکان نما روی شی است، رنگ حاشیه ویجت تغییر می کند، که یک افکت کلیک ایجاد می کند. هنگامی که دکمه آزاد می شود، رنگ حاشیه بازیابی می شود. همچنین می توانید روی چنین ویجتی از صفحه کلید کلیک کنید - برای این کار باید فوکوس ورودی را به شی منتقل کنید و کلید "فضا" را فشار دهید (معمولا).

    XmDrawnButton. اشیاء این کلاس شبیه دکمه های قابل کلیک هستند، تنها با این تفاوت که نه متن، بلکه یک تصویر دلخواه (نقشه پیکسلی) ترسیم می کنند.

    XmToggleButton. اشیاء این کلاس نشان دهنده یک دکمه کوچک است که معمولاً یک متن توضیحی در کنار آن وجود دارد. دکمه می تواند در دو حالت روشن و خاموش باشد (یعنی سوئیچ است). آنها با تغییر در ظاهر کنترل مشخص می شوند.

    نماینده این کلاس برای ایجاد به اصطلاح "دکمه های چک" (دکمه بررسی) استفاده می شود که عاقلانه تر است که "چک مارک ها" و "دکمه های رادیویی" (دکمه رادیویی) - سوئیچ های چند موقعیتی را فراخوانی کنید. اولی برای تنظیم پارامترهای منطقی، یعنی. داشتن دو معنی دومی هدفی مشابه دارد، اما مجموعه ای از معانی در این موردمحدود است و شامل بیش از دو عنصر است. در این مورد، شکل نمایش گرافیکی یک شی از نوع XmToggleButton بستگی به این دارد که از آن به عنوان دکمه "تیک" یا "رادیو" استفاده شود.

    به طور معمول، ویجت های کلاس XmToggleButton به ترتیب در ساختارهایی به نام جعبه چک و جعبه رادیویی ترکیب می شوند. این بلوک ها به نوبه خود تغییراتی را در اشیاء کلاس XmRowColumn نشان می دهند که در زیر توضیح داده شده است.

    دکمه XmCascade. اشیاء این کلاس نشان دهنده دکمه های قابل کلیک هستند و هنگام ایجاد منوها استفاده می شوند. هنگامی که روی یک شی کلیک می کنید، یک زیر منو از سطح بعدی ظاهر می شود.

    xmllist. نمایندگان این کلاس از جالب ترین اشیاء Motif هستند. آنها به گونه ای طراحی شده اند که لیستی از رشته ها را نمایش دهند و به کاربر توانایی انجام اقدامات مختلف با عناصر لیست را می دهند. کاربر می تواند یک یا چند ردیف از ردیف های موجود در این شی را انتخاب کند و آنها برجسته می شوند. علاوه بر این، اگر لیست دارای فوکوس ورودی باشد، یکی از عناصر آن با یک قاب نقطه‌دار برجسته می‌شود. این فریم مکان نما فهرست نامیده می شود.

    XmScrollBar. اشیاء این کلاس - نوارهای پیمایش (نوارهای پیمایش)، به عنوان یک قاعده، در ارتباط با اشیاء دیگر، مانند یک لیست (XmList)، متن (XmText) و دیگران استفاده می شود. اگر اطلاعات ارائه شده در آن (فهرست، متن، تصویر و غیره) به طور کامل در پنجره نمایش داده نشود، نوار اسکرول برای پیمایش منطقه در نظر گرفته شده است. اشیاء کلاس XmScrollBar نشان دهنده یک نوار (افقی یا عمودی) با دکمه های پیکان در لبه ها هستند. با کلیک بر روی هر یک از آنها در جهت مشخص شده توسط فلش ​​پیمایش می شود. در نوار نوار پیمایش یک لغزنده (لغزنده) وجود دارد - یک مستطیل که با رنگ برجسته شده است. اگر آن را با ماوس "قلاب" کنید و "کشیدن" را انجام دهید، این، به عنوان یک قاعده، منجر به پیمایش منطقه نیز می شود.

    XmSeparator. اشیاء این کلاس - جداکننده - معمولاً به منظور بهبود ظاهر پنجره های برنامه استفاده می شود. چنین ویجتی یک نوار عمودی یا افقی (خط) است که گروه هایی از اشیاء را از هم جدا می کند. به عنوان مثال، جداکننده ها را می توان در منوها برای جدا کردن برخی از دستورات از برخی دیگر، در گفتگوها - برای جدا کردن گروهی از دکمه های فشرده از عناصر دیگر و غیره استفاده کرد.

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

    Motif تعدادی رویه راحت را ارائه می دهد که به شما امکان می دهد انواع مختلفی از عملیات را با ویجت این کلاس انجام دهید: دریافت و اصلاح داده ها، کپی بخشی انتخاب شده از داده ها در کلیپ بورد سیستم (کلیپ بورد) و غیره.

    XmTextField. اشیاء این کلاس به شما امکان مشاهده و ویرایش یک خط متن را می دهند.

    کلاس XmManager. این کلاس انتزاعی است، یعنی. برای تخم ریزی اجسام استفاده نمی شود. پارامترهای اساسی مورد نیاز برای ساخت کلاس های ویجت که می توانند اشیاء دیگر را دستکاری کنند، تعریف می کند. این منابع برای ارائه صحیح ویجت‌های کودک و کنترل نحوه تمرکز ورودی آنها مورد نیاز است.

    کلاس XmManager شامل:

    XmBulletinBoard. آبجکت های این کلاس می توانند زیر اشیاء داشته باشند که به صورت دلخواه در پنجره قرار می گیرند. مختصات پنجره ویجت های فرزند در یک سیستم مختصاتی اندازه گیری می شود که منشاء آن در گوشه سمت چپ بالای پنجره یک شی کلاس XmBulletinBoard است.

    هنگام تغییر اندازه یک جسم، به عنوان مثال، با ماوس، مکان اولیه اشیاء فرعی یا تغییر نمی کند یا به گونه ای جابجا می شوند که از تقاطع متقابل جلوگیری شود. اگر پنجره ویجت کوچکتر شود، ممکن است قسمتهایی از اشیاء فرعی نامرئی شوند.

    کلاس XmBulletinBoard شامل:

    Xform. یکی از ویژگی‌های بارز اشیاء این کلاس (فرم‌ها) توانایی کنترل مکان زیراشیاء آنها با تنظیم پیوندها بین خود فرم و ویجت فرزند و بین خود زیرشخص‌ها است.

    برای هر ویجت فرزند، می‌توانید مشخص کنید که لبه‌های چپ، راست، پایین یا بالای آن به چه چیزی متصل است. بنابراین، اگر لبه های چپ و راست موضوع فرعی به لبه سمت راست فرم گره خورده باشد، فاصله آنها تا این لبه همیشه ثابت می ماند. اگر اندازه فرم کاهش یابد، شی فرعی به سمت چپ و اگر اندازه افزایش یابد، به سمت راست حرکت می کند. شما می توانید یک موضوع فرعی را به دیگری پیوند دهید. سپس با تغییر موقعیت فرعی که ویجت به آن وصل شده است، شی متصل شده به گونه ای حرکت می کند که فاصله بین آنها حفظ شود.

    هنگام تغییر اندازه یک فرم، تمام روابط بین موضوعات فرعی آن حفظ می شود.

    XmSelectionBox. اشیاء این کلاس ("جعبه های انتخاب") نمونه ای از یک ویجت ترکیبی را نشان می دهند و شامل یک لیست قابل پیمایش است که کاربر می تواند آیتم مورد نظر را انتخاب کند، و همچنین یک فیلد متنی (یک شی XmTextField) که در آن مورد انتخاب شده در لیست است. نمایش داده. کاربر می تواند انتخاب انجام شده را ویرایش کند. کادر فهرست و فیلد متنی می‌توانند دارای برچسب‌های توضیحی با استفاده از ویجت‌های مربوط به کلاس XmLabel باشند. شی کلاس XmSelectionBox همچنین شامل سه دکمه فشاری (اشیاء XmPushButton) است. به طور پیش فرض، آنها دارای برچسب "Ok"، "Cancel" و "Help" هستند. و در نهایت، یک عنصر دیگر وجود دارد - دکمه قابل کلیک، که به طور پیش فرض دارای نام "اعمال" است. این موضوع فرعی در ابتدا ایجاد می شود اما در لیست ویجت های مدیریت شده قرار نمی گیرد.

    با استفاده از بلوک انتخاب، کاربر می تواند زیر رشته مورد نیاز خود را در لیست مشخص کند یا آن را در قسمت متن وارد کند. تنظیمات با فشار دادن دکمه "Ok" تایید می شوند.

    کلاس XmSelectionBox شامل:

    XmCommand. اشیاء این کلاس به کاربر اجازه می دهد تا با استفاده از لیستی از دستورات وارد شده از قبل یا با وارد کردن دستوری در یک فیلد متنی که به طور خاص برای این مورد در ویجت ارائه شده است، دستور مورد نظر را انتخاب کند.

    XmFileSelection. اشیاء این کلاس به شما این امکان را می دهند که محتویات فعلی دایرکتوری های مختلف را مشاهده کرده و یک فایل خاص را انتخاب کنید.

    اشیاء این کلاس حاوی عناصر زیر هستند:

    * 2 فیلد متنی: "Filter" و "Selection" (اشیاء کلاس XmNextField).

    * 2 لیست: "Directories" و "Files" (اشیاء کلاس XmList).

    * 4 دکمه فشاری: "Ok"، "Filter"، "Cancel" و "Help" (اشیاء کلاس XmPushButton).

    فیلد متنی "فیلتر" یک ماسک (الگو) را برای انتخاب یک زیرمجموعه خاص از کل مجموعه پرونده هایی که شرایط مشخص شده در این قسمت را برآورده می کند - مطابق با الگو - این زیر مجموعه است که در لیست "Files" نشان داده شده است. لیست "Directories" زیر شاخه های دایرکتوری فعلی را نمایش می دهد. فیلد متنی "انتخاب" فایل (نام آن) انتخاب شده در لیست "Files" را نمایش می دهد و در همان فیلد متنی کاربر می تواند نام کامل فایل مورد نیاز خود را به صورت دستی وارد کند. از چهار دکمه فشاری برای انجام اقدامات مختلف استفاده می شود:

    Ok - یک فایل مشخص شده را انتخاب کنید.

    فیلتر - به روز رسانی لیست فایل های نمایش داده شده در قسمت متنی "Files" با توجه به ماسک فعلی.

    لغو - پنجره ویجت را می بندد، هیچ فایلی انتخاب نمی شود.

    کمک - یک تماس برای کمک.

    XmMessageBox. اشیاء این کلاس برای ارسال پیام هایی به کاربر که در حین عملکرد برنامه رخ می دهد در نظر گرفته شده است. این ویجت ترکیبی است. دارای ناحیه ای است که در آن یک خط متن (پیام) نمایش داده می شود و یک نماد خاص که نوع پیام را مشخص می کند. علاوه بر این، جسم دارای سه دکمه قابل فشار است. به طور پیش فرض، آنها دارای برچسب: "Ok"، "Cancel" و "Help" هستند.

    XmDrawing Area. اشیاء این کلاس پنجره ای برای ترسیم و نمایش اطلاعات در اختیار برنامه قرار می دهند. خود کلاس پارامترهایی را ارائه نمی دهد که بتوان مستقیماً برای نمایش گرافیک از آنها استفاده کرد. اما فهرست‌های رویه‌های برگشت به تماس موجود در این کلاس به شما امکان می‌دهد اعلان‌هایی در مورد نیاز به ترسیم مجدد پنجره ویجت و دریافت فوکوس ورودی دریافت کنید.

    XmFrame. از اشیاء این کلاس برای تشخیص برخی از اشیاء از سایرین با چرخاندن آنها با یک قاب استفاده می شود. ویژگی ویجت این کلاس این است که آنها می توانند تنها یک Subject را داشته باشند و مدیریت کنند.

    XmPanedWindow. اشیاء این کلاس می توانند ویجت های غیر مشابه را ترکیب کنند. اشیاء فرعی از یکدیگر جدا می شوند و عنصر خاصی بین آنها قرار می گیرد که به آن ارسی می گویند. به نظر می رسد یک مربع کوچک است و برای تغییر اندازه ویجت های کودک استفاده می شود. بنابراین، اگر یک شی از کلاس XmPanedWindow دو شیء فرعی داشته باشد، می توانید کارهای زیر را انجام دهید: "قلاب" را با ماوس بریزید و آن را در جهت درست (پایین به بالا یا چپ-راست) بکشید - در حالی که اندازه طولی است. (اندازه در امتداد جهتی که ارسی "کشیده" شده است) یک شی کودک "به هزینه" دیگری افزایش می یابد (اندازه دیگری کاهش می یابد) ، ابعاد عرضی هر دو شیء فرعی حفظ می شود. . اندازه عرضی یک شی از کلاس XmPanedWindow با حداکثر اندازه مشابه زیراشیاء آن تعیین می شود.

    ستون XmRow. اشیاء این کلاس می توانند ویجت های غیر مشابه را ترکیب کنند. اشیاء فرعی به ترتیب خاصی مرتب شده اند - به شکل ماتریس. کلاس ویجت XmRowColumn اساس ایجاد اشیاء زیر است:

    چک باکس - "بلوک دکمه های قابل بررسی" (به عنوان مثال اشیاء کلاس XmToggleButton یا کلاس XmToggleButtonGadget)؛ از میان دکمه های موجود در "بلوک" می توان چندین دکمه ("روشن") را همزمان انتخاب کرد.

    جعبه رادیویی - "بلوک دکمه های رادیویی" (یعنی اشیاء XmToggleButton یا XmToggleButtonGadget)؛ از میان دکمه‌های موجود در "بلاک" تنها یک دکمه را می توان در یک زمان انتخاب کرد ("فعال").

    منوی کشویی - "منوی کشویی" - یک پنجره زیر منو که پس از انتخاب یک دکمه در منوی سطح بالا (نوار منو) ظاهر می شود. آیتم های منو به صورت عمودی مرتب شده اند.

    منوی گزینه - دکمه با منوی مرتبط؛ هنگامی که دکمه فشار داده می شود، یک پنجره منو ظاهر می شود که از آن یک مقدار پارامتر انتخاب می شود. آیتم های منو به صورت عمودی مرتب شده اند.

    منوی پاپ آپ - "منوی پاپ آپ" که به طور معمول با فشار دادن دکمه سوم ماوس فراخوانی می شود. پنجره منو در محلی که مکان نما آن قرار دارد ظاهر می شود. آیتم های منو به صورت عمودی مرتب شده اند.

    نوار منو - منوی سطح بالا حاوی یک ردیف دکمه (اشیاء کلاس XmCascadeButton یا XmCascadeButtonGadget) که برای فراخوانی زیر منوهای مختلف (منوی کشویی) استفاده می شود. آیتم های منو به صورت افقی مرتب شده اند.

    XmScale. یک شی از این کلاس، یک ناحیه مستطیلی است که حاوی یک لغزنده ثابت (اسلایدر) است که با استفاده از آن کاربر می تواند مقدار پارامتر مرتبط با شی را از محدوده مشخص شده انتخاب کند.

    پنجره XmScrolled. یک شی از این کلاس امکان نمایش و مشاهده برخی اطلاعات (متن، تصویر، لیست) را فراهم می کند. چنین ویجتی، به عنوان یک قاعده، حاوی یک موضوع فرعی است که داده های در نظر گرفته شده برای مشاهده در آن قرار دارد (این می تواند یک شی از کلاس XmText، XmDrawingArea و غیره باشد) برای اطلاعات بیشتر مشاهده راحتداده ها را می توان به صورت افقی و راه راه های عمودیطومار.

    این کلاس شامل یک زیر کلاس است

    XmMainWindow. اشیاء این کلاس یک مؤلفه واسط جداگانه را نشان می دهند که معمولاً از بخش های زیر تشکیل شده است:

    * منوی سطح بالا،

    * پنجره فرمان،

    * "فضای کار،

    * جعبه پیام،

    * و دو نوار پیمایش (افقی و عمودی).

    اشیاء فرعی را می توان با جداکننده ها از هم جدا کرد.

    کلاس های XmMenuShell و XmDialogShell. Motif کلاس شی XmMenuShell را برای ایجاد منوهای مختلف فراهم می کند. این کلاس از کلاس OverrideShell (از Xt) ارث می برد.

    همانطور که قبلاً در هنگام توصیف Xt ذکر شد، کلاس TransientShell برای ایجاد اشیاء برنامه استفاده می شود که از یک طرف مستقیماً با مدیر پنجره تماس می گیرند و از طرف دیگر دارای ویژگی هایی هستند که آنها را از پنجره های معمولی سطح بالا متمایز می کند. یکی از اصلی ترین این ویژگی ها این است که ویجت کلاس TransientShell را نمی توان به حداقل رساند. اما اگر والد به نماد تبدیل شود، از روی صفحه حذف می شوند. این نوع ویجت معمولا برای ایجاد پنجره های کمکی برنامه استفاده می شود.

    Motif ویژگی های مشخص شده کلاس TransientShell را می گیرد و آنها را به یک کلاس XmDialogShell مشتق شده گسترش می دهد. دومی به عنوان هدف پوسته گفتگو عمل می کند.

    ساختار کادر محاوره ای در Motif را می توان به صورت زیر نشان داد:

    شی کلاس XmDialogShell

    یک شیء زیر کلاس XmManager، مانند XmBulletinBoard یا XmForm

    عناصر کنترلی مختلف: دکمه ها، فیلدهای ورودی متن و غیره.

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

    دیالوگ ها

    همانطور که گفته شد، ساخت کادر محاوره ای در Motif به این صورت است: ابتدا یک شی از کلاس XmDialogShell وجود دارد که سپس ویجت یکی از زیر کلاس های کلاس XmManager را شامل می شود، این آبجکت برای میزبانی آبجکت های مختلف استفاده می شود.

    این کتابخانه رویه های خاصی را برای ایجاد دیالوگ ها ارائه می دهد. آنها با نوع ویجت متمایز می شوند که فرزند شی کلاس XmDialogShell است.

    خروجی متن

    این کتابخانه دارای تعداد نسبتاً زیادی ویجت است که برای نمایش اطلاعات متنی استفاده می شود. اینها XmLabel با زیر کلاس‌ها، XmText و غیره هستند. منبع XmNfontlist برای تعیین فونت‌های احتمالی استفاده می‌شود که می‌توان هنگام کشیدن خطوط استفاده کرد. از نوع XmFontlist است. مقدار آن مجموعه ای از جفت های "font"/"font tag" است.

    برچسب ها (برچسب ها) به گونه ای طراحی شده اند که برنامه ها را از فونت های خاصی که توسط کاربر مشخص شده است مستقل کنند. این کار به صورت زیر انجام می شود: برنامه به گونه ای ایجاد می شود که در تمام توابعی که با خطوط متن کار می کنند، خود فونت ها وجود نداشته باشند، بلکه برچسب های آنها وجود داشته باشد. هنگامی که کار کامپایل و شروع می شود، مطابقت بین برچسب ها و فونت های خاص مشخص می شود. دومی برای نقاشی استفاده می شود.

    Motif نه تنها ابزارهایی برای کار با خطوط متن نمایش داده شده در یک فونت دارد، بلکه به شما امکان می دهد با اشیایی مانند "خطوط مرکب" کار کنید - یعنی. خطوط متنی که از فونت های زیادی استفاده می کنند. مجموعه ای از ابزارها برای ایجاد چنین رشته هایی، کار با آنها و تبدیل آنها به رشته های معمولی "تک فونت" وجود دارد.

    کار با تصاویر

    Motif خود با تصاویر کار می کند و آنها را در قالب داخلی نشان می دهد که ساده ترین بیت مپ (bitmap) است که با استفاده از ساختار XImage مشخص شده است.

    کنترل فوکوس ورودی

    Motif از دو مدل برای عبور فوکوس ورودی پشتیبانی می کند. اولین مورد ضمنی است (اشاره‌گر): تمرکز به ویجتی داده می‌شود که مکان‌نمای ماوس در آن حرکت می‌کند. مدل دوم صریح است: برای انتقال فوکوس، نشانگر ماوس را در پنجره ویجت قرار دهید و دکمه سمت چپ ماوس را فشار دهید. هنگامی که یک ابزارک یا ابزارک فوکوس ورودی را دریافت می کند، حاشیه آن برجسته می شود.

    علاوه بر این مدل های انتقال و دریافت فوکوس ورودی، مکانیسمی نیز برای انتقال فوکوس ورودی از یک ویجت به ویجت دیگر وجود دارد. اشیاء را می توان در گروه ها ترکیب کرد - این را می توان با تنظیم مقادیر لازم منابع مربوطه انجام داد یا می توان آن را به سیستم داد. در مورد دوم، Motif به طور خودکار ویجت را با استفاده از قوانین داخلی متصل می کند. بنابراین، برای مثال، یک شی از کلاس XmMessageBox شامل سه گروه است: یکی شیء گفتگوی "اصلی" (کلاس XmForm)، دومی "برچسب" است که در آن پیام به کاربر ارائه می شود، و سومی دکمه ها است. فشرده شود.

    فوکوس ورودی هم از یک شی (در یک گروه) به دیگری و هم از گروهی به گروه دیگر منتقل می شود.

    انتقال فوکوس در یک گروه با استفاده از کلیدهای جهت دار و از گروهی به گروه دیگر - با استفاده از کلید تب انجام می شود (به همین دلیل است که خود گروه ها گروه Tab نامیده می شوند). هنگامی که فوکوس به یک گروه منتقل می شود، تمرکز ورودی در آن به اولین شی که می تواند فوکوس را دریافت کند منتقل می شود (با تنظیم مقدار مناسب منبع مربوطه می توان از دریافت فوکوس یک شی جلوگیری کرد). ترتیبی که فوکوس ورودی در یک گروه ارسال می شود با ترتیبی که ویجت های آن ایجاد می شود یکسان است. در این حالت معمولاً کلید ترکیبی فوکوس را در جهت مخالف حرکت می دهد.

    Motif همچنین تعدادی رویه را ارائه می دهد که می توان از آنها برای کنترل فوکوس ورودی استفاده کرد.

    Lesstif اخیراً یک آنالوگ رایگان از Motif منتشر شده است که کاملاً با آن سازگار است. به آن لستیف می گویند. می توان آن را آزادانه به صورت منبع دریافت کرد و برای پلتفرم های مختلف در اینترنت گردآوری کرد.

    Tk/tcl

    Tcl - read: - مخفف: "tool command language" (زبان دستور ابزاری). این شامل دو بخش است: زبان واقعی و کتابخانه.

    زبان tcl یک نحو ساده دارد و برنامه‌نویسی با آن آسان است. در شکل اصلی خود، tcl یک مفسر است. این به شما امکان می‌دهد ساختارهای جدیدی مانند توابع یا برنامه‌ها ایجاد کنید، که ابزار قدرتمندی را در اختیار یک برنامه‌نویس ماهر قرار می‌دهد تا نه تنها برنامه‌های کاربردی نهایی، بلکه همچنین توسعه زبان tcl خود را توسعه دهد و سبک خود را ایجاد و حفظ کند.

    کتابخانه tcl امکان استفاده را فراهم می کند برنامه های کاربردیمفسرهای ah از زبان tcl، و بنابراین شامل اسکریپت های نوشته شده در زبان فرمان tcl این کتابخانه حاوی یک تحلیلگر واژگانی زبان tcl است، توابعی که دستورات داخلی tcl را پیاده‌سازی می‌کند و به شما امکان می‌دهد تا زیر روال‌های سفارشی (تماس‌های تابع) را به دستورات tcl متصل کنید. این ترتیب برای هر دو C و C ++ امکان پذیر است.

    Tk یک جعبه ابزار سازگار با Motif برای توسعه رابط های گرافیکی کاربر در محیط X Window است. علاوه بر رابط استاندارد برای C و C++، شامل یک رابط برای tcl است که امکان استفاده از امکانات Tk را از داخل محیط مفسر دستور tcl فراهم می‌کند. این بدان معنی است که علاوه بر برنامه نویسی استاندارد در C و C++، بخش های رابط برنامه را می توان به عنوان اسکریپت در زبان tcl پیاده سازی کرد و این بخش های رابط (دیالوگ ها، طرح های صفحه و غیره) را می توان به صورت پویا در طول عملیات ویرایش کرد. برنامه نهایی با استفاده از دستورات tcl.

    محیط پنجره "wish" به شما این امکان را می دهد که برنامه هایی با رابط کاربری گرافیکی تنها با استفاده از امکانات زبان tcl ایجاد کنید.

    اسناد مشابه

      سیستم های برنامه نویسی و امکانات گرافیکی آنها توسعه یک دوره چند رسانه ای که به جذب مؤثر مبحث "امکانات گرافیکی زبان برنامه نویسی" توسط دانش آموزان مدرسه پایه کمک می کند (به عنوان مثال زبان ها) برنامه نویسی پایهو پاسکال).

      پایان نامه، اضافه شده 12/29/2010

      اجزای گرافیکی صفحه نمایش، اشیاء و توابع سیستم. سیستم ابزار تعامل کاربر با دستگاه. تاریخچه رابط های گرافیکی کاربر کامپیوترهای شخصی، طبقه بندی آنها سیستم پنجره X

      ارائه، اضافه شده در 2012/05/22

      برنامه نویسی و قابلیت های گرافیکی ساده. ساختارهای پایه برای view و دو سازنده با آرگومان. مختصات نقطه بیشتر و مقداردهی اولیه یک نقطه جدید. ذخیره و تغییر مختصات گوشه سمت چپ بالای مستطیل.

      کار آزمایشگاهی، اضافه شده در 12/01/2011

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

      مقاله ترم، اضافه شده 06/13/2007

      توسعه یک برنامه برای سیستم عامل ویندوز با استفاده از VisualC++ (6.0، .NET). بررسی مبانی شبیه سازی نرم افزاری عملکرد دستگاه (کتری برقی). قوانین ایجاد کلاس های دستگاه و رابط گرافیکی آن.

      مقاله ترم، اضافه شده 06/03/2014

      گرافیک کامپیوتری. نمایش اطلاعات گرافیکی در کامپیوتر فرمت های گرافیکی ویرایشگر گرافیکی گرافیک برداری. کورل دراو. ویژگی های برنامه، رابط. قابلیت های تکنولوژیکی و استفاده از CorelDraw.

      مقاله ترم، اضافه شده در 2007/05/19

      نقش سیستم های محاسباتی توزیع شده در حل مسائل مدرن سیستم ابزار DVM برای توسعه برنامه های موازی. ابزارهایی برای ساخت یک مدل رسمی از یک رابط گرافیکی. الزامات رابط گرافیکی سیستم DVM.

      مقاله ترم، اضافه شده 10/15/2010

      ماهیت برنامه نویسی با استفاده از محیط دلفی 7 و قابلیت های گرافیکی اصلی آن. ساختار یک مجموعه مستقل ماژول نرم افزارو اصول آن تکنیک های اساسی برای کار با رویه های گرافیکی، ساخت قوس، دایره و بیضی.

      مقاله ترم، اضافه شده 12/16/2011

      حوزه گرافیک کامپیوتری. انواع گرافیک کامپیوتری. وضوح رنگ و مدل های رنگ. نرم افزاری برای ایجاد، مشاهده و پردازش اطلاعات گرافیکی. امکانات گرافیکی واژه پردازها، ویرایشگرهای گرافیکی.

      تست، اضافه شده در 06/07/2010

      تکامل رابط های گرافیکی کاربر X Window System Device و Window Managers. شرح دسکتاپ و برنامه های کاربردی KDE و GNOME. مروری بر اصول اولیه سازماندهی رابط در سیستم ویندوز، شرح بسته کاربردی آن.

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

    از مقدمه مختصر بالا، مشخص است که عناصر اجباری رابط گرافیکی هنگام حل مسائل علمی و / یا آموزشی باید عبارتند از:

    1. یک یا چند پنجره برای نمایش نتایج محاسبات گرافیکی.

    2. چندین پنجره قابل ویرایش که با کمک آنها مقادیر پارامترهای وظیفه تنظیم و/یا تغییر می شود.

    3. دکمه های کنترلی که به شما امکان می دهد فرآیند محاسبه را شروع و متوقف کنید، نتایج را دوباره ترسیم کنید، از کار خارج شوید.

    4. برچسب های توضیحی (متن ثابت).

    البته کنترل‌های دیگری مانند لیست‌های قابل پیمایش، دکمه‌های رادیویی برای انتخاب یکی از گزینه‌های متعدد و غیره امکان‌پذیر است، اما در این آموزش فقط به چهار نوع فهرست‌شده با جزئیات نگاه می‌کنیم. شکل 8 نشان می دهد ساده ترین رابط کاربری، برای مطالعه ضربات ایجاد شده از افزودن دو نوسان هارمونیک با فرکانس های نزدیک ایجاد شده است. همانطور که از شکل مشخص است، تمام عناصر فوق در آن وجود دارد.

    برای ایجاد چنین رابطی، می توانید از عملکردهای خروجی گرافیکی و همچنین یک عملکرد ویژه طراحی شده برای تعامل تعاملی کاربر با یک نقاشی استفاده کنید. این تابع uicontrol نامیده می شود. اما برای ساده سازی کار و ایجاد همان نوع عناصر رابط در سیستم متلب، برنامه خاصی وجود دارد که به شما امکان می دهد عناصر مورد نیاز را در سطح برنامه نویسی بصری، تقریباً بدون نوشتن کد ایجاد کنید.

    برنج. 8. ساده ترین رابط کاربری گرافیکی برای حل مشکل "کتک زدن".

    9.1. ایجاد ظاهر رابط

    در این بخش به استفاده از متلب برای توسعه ظاهر یک رابط گرافیکی (GUI -GraphicsUserInterface) با استفاده از ابزارهای برنامه نویسی گرافیکی (بصری) خواهیم پرداخت. برای فراخوانی ویرایشگر تصویری، باید دستور راهنمای را در پنجره دستور MATLAB تایپ کنید. پس از مدت زمان معینی که بر اساس سرعت کامپیوتر شما تعیین می شود، دو پنجره جدید ظاهر می شود که در شکل 9 نشان داده شده است. یکی از آنها کنترل پنل (کنترل پنل، در شکل سمت چپ) و قسمت فرم یا طراحی (شکل، در شکل سمت راست) است. این پنجره ها ممکن است همپوشانی داشته باشند، اما برای وضوح، آنها را در کنار هم قرار داده ایم. اگر راهنما وجود نداشته باشد قبل از تماس با راهنما، تصویر نشان داده شده در بالا روی صفحه ظاهر می شود. نقاشی در فضای باز. اگر تابع راهنما پس از ترسیم یک نقاشی فراخوانی شود، به جای یک نقاشی خالی باز می شود. ما از همان ابتدا ایجاد یک رابط گرافیکی را در نظر خواهیم گرفت.

    قبل از ایجاد یک رابط کاربری گرافیکی، ایده خوبی است که آنچه را که می خواهید به عنوان یک رابط داشته باشید، "پروژه" کنید. ما نمونه ای از خروجی سه سیگنال مختلف در سه زیر پنجره را در نظر خواهیم گرفت که از نظر گرافیک سطح بالا توسط عملگرهای subplot(3,1,k) تعیین می شود که k تعداد نمودار است. بعلاوه،

    برنج. 9. نمای کلی بصری ویرایشگر گرافیکیو ویندوز را ویرایش کنید

    در سمت راست زیر پنجره های واقعی با نمودارها، می خواهیم سه مورد قابل ویرایش داشته باشیم

    ، که در آن می توانید مقادیر عددی سه را وارد / ویرایش کنید

    متغیرها اجازه دهید این متغیرها مقادیر دلخواه را بگیرند.

    در این ارائه، چک باکس های قابل ویرایش خود را تجهیز نمی کنیم.

    koy، آیا مقادیر وارد شده هر شرایطی را برآورده می کند، اگرچه ممکن است

    می توان. بیایید این متغیرها را N, R, C. In بنامیم این مثالیعنی محاسبه

    جریان در مدار RC هنگامی که سیگنالی با عدد N به پایانه ها اعمال می شود و R و C مقاومت هستند-

    یون و ظرفیت در مدار (برای شرح دقیق کار، به بند 10 اصلی مراجعه کنید

    متن دستی).

    رابط ما باید اجازه تغییر مقدار را بدهد

    مقادیر N، R و C، در سه مرتبه قرار می گیرند

    یکی بالاتر از سیگنال زیر پنجره های دیگر (ولتاژ،

    اعمال شده به پایانه ها)، مشتق سیگنال

    la و ولتاژ مقاومت U r. جدا از

    پنجره هایی برای نمایش نمودارها و پنجره های قابل ویرایش

    R u n سابق i t

    ورودی باید در پانل رابط قرار داده شود -

    دو دکمه دیگر - RUN - برنامه را روشن کنید

    برنج. 10. نمای رابط

    حساب و خروج - خاتمه کار و حذف

    پنجره گرافیکی

    در مرحله اول لازم است ظاهر رابط توسعه یابد. اجازه دهید

    در طرح اولیه ما، رابط باید چیزی شبیه به آن باشد

    به شرح زیر (شکل 10). عناصر این رابط سه پنجره هستند

    خروجی نمودار (محورها از نظر کنترل پنل)، سه برچسب ثابت N، R، C (متن)، سه پنجره ورود/ویرایش داده (ویرایش) و دو دکمه (فشار).

    برای ایجاد زیرپنجره هایی که در آنها گرافیک نمایش داده می شود، از دکمه نشان داده شده در سمت راست در شکل (پنجره و محورها) استفاده کنید. با کلیک بر روی این عنصر در کنترل پنل و انتقال ماوس به صفحه طراحی، باید صلیب را که در نوک ماوس قرار دارد، در آن قسمت قرار دهید.

    جایی که گوشه سمت چپ بالای اولین زیرپنجره باید باشد. فشار دادن و نگه داشتن دکمه سمت چپماوس، باید مستطیل حاصل را به اندازه دلخواه بکشید. پس از آن، روند ساخت دو پنجره دیگر به طور مشابه تکرار می شود.

    دکمه ویرایش نشان داده شده در سمت راست برای ایجاد کادرهای ورودی قابل ویرایش استفاده می شود. به همان روشی که هنگام ایجاد پنجره های فرعی با محور استفاده می شود. ابتدا یک ماوس بارگذاری شده با یک صلیب ظاهر می شود که با کمک آن یک مستطیل ورودی ساخته می شود.

    زیرنویس‌های پانل شکل با استفاده از دکمه متن ایجاد می‌شوند که به همان روشی که در بالا توضیح داده شد بسته و تراز می‌شود. برای اینکه هر متنی در قسمت متن ثابت ظاهر شود،

    کتیبه، لازم است با ویرایشگر ویژگی کار کنید، که یا با استفاده از دکمه Property editor یا با استفاده از دو تا ضربه ی آهسته بزندکمه سمت چپ ماوس روی شی مربوطه در پانل طراحی.

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

    پنجره‌های خروجی و ویرایشی که به این روش ساخته شده‌اند، پنجره‌ها و دکمه‌های متن ایستا و همچنین سایر اشیاء را می‌توان با استفاده از پانل Alignment Tools تراز کرد و شکاف‌های خاصی را بین آنها تنظیم کرد.

    برای این کار بر روی دکمه مربوطه در کنترل پنل کلیک کنید تا پنل تراز نمایان شود. برای تنظیم تعدادی از اشیاء که با آنها هر عملی انجام می شود، لازم است با کلیک بر روی هر یک از آنها در حالی که کلید Shift را نگه دارید، آنها را انتخاب کنید. اشیاء انتخاب شده علامت گذاری می شوند

    نقاط سیاه در اطراف اجسام مربوطه. اگر نیاز به تغییر اندازه هر شی (دکمه، پنجره و غیره) دارید، باید با دکمه سمت چپ ماوس روی این شیء کلیک کنید و با استفاده از ماوس اندازه مورد نیاز را به همان اندازه اندازه هر پنجره ویندوز تغییر دهید. .

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

    از آنجایی که همه اشیا به طور پیش فرض بر حسب پیکسل اندازه می شوند، این امر می تواند باعث شود که دکمه ها و/یا پنجره ها با تغییر اندازه پنجره خروجی با هم همپوشانی داشته باشند. برای جلوگیری از چنین پدیده نامطلوبی، لازم است واحدهای اندازه همه اشیاء را در متغیرهای بدون بعد - کسری از اندازه پنجره تنظیم کنید. به این اندازه نرمال می گویند. برای انجام این کار، باید با کلیک بر روی دکمه در کنترل پنل با ویرایشگر ویژگی تماس بگیرید.

    نوشتن ویرایشگر Property . پس از انتخاب تمام اشیایی که در پنجره بالایی ویرایشگر ویژگی وارد کرده ایم (با نگه داشتن کلید Ctrl و انتخاب اشیا با دکمه سمت چپ ماوس)، در پنجره پایین ویرایشگر ویژگی، ویژگی Units (واحد اندازه گیری) را پیدا می کنیم. و با کلیک بر روی دکمه سمت چپ ماوس آن را انتخاب کنید. پس از آن، در قسمت میانی ویرایشگر، در یک پنجره خاص، ویژگی Units در سمت چپ و یک پنجره انتخاب مقدار در سمت راست ظاهر می شود که در آن یک لیست کشویی با مقادیر ویژگی معتبر وجود دارد. ویژگی Units باید به حالت عادی تنظیم شود. به طور مشابه، شما باید مقدار ویژگی FontUnits - واحدهای اندازه گیری را برای اندازه فونت ها تنظیم کنید. این تضمین می کند که اندازه فونت با تغییر اندازه پنجره تغییر می کند.

    برای قرار دادن نوشته‌ها روی دکمه‌ها و در ناحیه متن ثابت، شی مربوطه را انتخاب کنید (یا با دوبار کلیک کردن مستقیم در قسمت تصویر یا در پنجره بالایی ویرایشگر ویژگی) و در پنجره پایین ویرایشگر ویژگی ، ویژگی String را پیدا کنید و پس از انتخاب آن، متن مورد نیاز را بین نقل قول ها وارد کنید (به عنوان مثال 'شروع' در دکمه مربوطه). برای تنظیم زیرنویس ها در بالای هر یک از پنجره های خروجی، پنجره مربوطه را انتخاب کنید و ویژگی editor8 را فراخوانی کنید که در پنجره پایینی آن باید ویژگی Title را پیدا کنید.

    8 ویرایشگر ویژگی را می توان نه تنها با استفاده از دکمه روی کنترل پنل فراخوانی کرد، بلکه

    و روی شی مربوطه دوبار کلیک کنید.


    9 جولای 2003

    با ظهور ابزارهای مختلف توسعه برنامه های بصری، نوشتن رابط های گرافیکی برنامه به نوعی بازی کودکانه تبدیل شده است. با ماوس نوک زدم - یک قالب ظاهر شد، بار دوم آن را فشار دادم - دکمه کشیده شد. به نظر من اکنون بسیاری به روش متفاوتی از برنامه نویسی در یک محیط گرافیکی فکر نمی کنند. البته، نمی‌توانید با پیشرفت مخالفت کنید؛ هنگام نوشتن پروژه‌های بزرگ، همه این راحتی‌ها بسیار مفید هستند. اما بحث در این مورد نیست. گاهی اوقات به نقطه پوچی می رسد، یک برنامه ابتدایی با استفاده از MFC، VCL و غیره نوشته می شود. چنین برنامه‌هایی مانند موریانه‌ها حافظه را می‌خورند و با بدن چاق‌شان زائد می‌شوند فضای دیسک. به عنوان یک قاعده، آنالوگ های MFC/VCL ده تا بیست برابر بیشتر از برنامه های نوشته شده در API خالص وزن دارند. آ ویژوال بیسیک(خدا منو ببخشه بابت این عبارت) با msvbvmXX.dllش؟ بله و منابع سیستمخیلی بیشتر خرج می کند (چند بار). کاربران فقیر که خود را از آبجو محروم می کنند، اسکناس ها را برای خرید سخت افزار جدید ذخیره می کنند. حیف فقرا نیست؟ نه تنها برنامه نویسان آبجو می نوشند؟ یک لحظه مثبت دیگر در کدنویسی API وجود دارد، برنامه نویس به سیستم عامل نزدیک تر می شود. بر این اساس، آن را بهتر درک و کنترل می کند. و بله، این فقط بسیار سرگرم کننده است. تکرار می کنم، همه موارد فوق به طور خاص برای برنامه های کوچک و ساده اعمال می شود، در پروژه های بزرگ همه چیز کاملاً متفاوت است.

    امیدوارم متقاعدت کرده باشم برو

    ما به ایجاد یک رابط پنجره ای ساده با حداقل عملکرد نگاه خواهیم کرد. این یک پنجره ساده با دو فیلد ورودی و دو دکمه خواهد بود. با کلیک بر روی دکمه "کپی"، متن از قسمت ورودی اول در قسمت دوم کپی می شود. با کلیک بر روی دکمه "بستن"، برنامه به کار خود پایان می دهد. در آینده، می تواند به عنوان الگویی برای نوشتن برنامه های دیگر پیچیده تر عمل کند. ما با C / C ++ ارتباط برقرار خواهیم کرد، اگرچه دلفی را هم توهین نخواهیم کرد. اصل کلییکسان است، فقط نحو متفاوت است. برای کار با پیام های سیستم و توابع API، باید فایل های هدر را در پروژه خود قرار دهید. در C/C++ windows.h، در دلفی ماژول های windows و messages است.

    هر برنامه ویندوز از سه بخش اصلی تشکیل شده است: یک تابع اصلی، یک حلقه پیام و یک تابع پنجره که تمام پیام های ارسال شده به پنجره را مدیریت می کند.

    برنامه ما با تابع WinMain() شروع می شود. این تابع اصلی است. تابع WinMain() معمولاً وظایف زیر را انجام می دهد:

    • کلاس پنجره را مشخص می کند. نباید با کلاس OOP اشتباه گرفته شود.
    • ثبت می کند کلاس داده شدهدر سیستم
    • پنجره اصلی برنامه و سایر کنترل ها را ایجاد می کند.
    • پنجره ای را روی صفحه نمایش می دهد.
    • یک حلقه پیام را شروع می کند.
    • به این صورت اعلام شده است: int APIENTRY WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) بیایید با پارامترها مقابله کنیم:
      • hInstance یک دسته برای نمونه برنامه فعلی است.
      • hPrevInstance - دسته ای برای نمونه قبلی برنامه، در صورت اجرا.
      • lpCmdLine - اشاره گر به رشته ای حاوی پارامترهای ارسال شده به برنامه در هنگام راه اندازی.
      • nCmdShow - ثابتی که نحوه نمایش پنجره را تعیین می کند. (به ثابت های SW_ مراجعه کنید).

    در دلفی چنین تصویری نخواهیم دید؛ در این محیط توسعه، تابع اصلی توسط کامپایلر از برنامه نویس مخفی می شود. هر چند که البته در کد نهایی وجود دارد. برای ثبت کلاس پنجره، باید فیلدهای ساختار نوع WNDCLASS (در دلفی TWNDCLASS) را پر کنید. برای این کار متغیر wcl را اعلام کرده ایم. wcl.hInstance = hInstance; یک دسته برای نمونه برنامه فعلی، متغیر hInstance توسط تابع WinMain() مقداردهی اولیه می شود. در دلفی، به طور ضمنی مقداردهی اولیه می شود. wcl.lpszClassName = szWinName; نام کلاس. متغیر رشته szWinName را از قبل ایجاد و مقداردهی اولیه کردیم. wcl.lpfnWndProc = WindowFunc; اشاره گر به یک تابع پنجره. سبک wcl = 0; ثابتی که سبک پنجره را مشخص می کند. برای این، از پرچم های CS_ استفاده می شود، من فقط آنها را تنظیم مجدد می کنم. می توانید ترکیبی از پرچم ها را با استفاده از عملیات بیتی "یا" مشخص کنید. wcl.hIcon = LoadIcon (NULL، IDI_ASTERISK)؛ دستگیره به نماد برنامه، همانطور که توسط تابع LoadIcon() برگردانده شده است. من آیکون پیش فرض را آپلود کردم. ثابت IDI_ را ببینید. wcl.hCursor = LoadCursor(NULL,IDC_ARROW); به مکان نما برنامه بازگردانده شده توسط تابع LoadCursor() رسیدگی کنید. من یک فلش استاندارد آپلود کردم. ثابت IDC_ را ببینید. wcl.lpszMenuName = NULL; اشاره گر به رشته ای که نام منبع منو برای این کلاس پنجره را مشخص می کند. بدون منو، بدون اشاره گر. wcl.cbClsExtra = 0; زمینه رزرو شده ریست می کنیم. wcl.cbWndExtra = 0; زمینه رزرو شده ریست می کنیم. wcl.hbr پس زمینه = (HBRUSH)COLOR_WINDOW; رنگ پنجره. ثابت COLOR_WINDOW به نوع HBRUSH ریخته می شود (نیازی به ریختن در دلفی نیست). همچنین با استفاده از تابع GetStockObject() می توانید رنگ براش پنجره یا تصویر پس زمینه را تنظیم کنید. حالا با جسارت کلاس پنجره را ثبت کنید.

    RegisterClass(&wcl); یک اشاره گر به ساختار wcl به عنوان یک پارامتر به تابع RegisterClass ارسال می شود.

    با خط بعدی پنجره خود را ایجاد می کنیم.

    hMainWnd = CreateWindow(szWinName, "یک پنجره ساده در API.", WS_OVERLAPPEDWINDOW ^ WS_THICKFRAME ^ S_MAXIMIZEBOX, CW_USEDEFAULT, CW_USEDEFAULT, 300, 170, HWND_DESKTOP, NULL, hInstance, NULL);
    • اولین پارامتر نام کلاس پنجره است.
    • پارامتر دوم عنوان پنجره است.
    • سومین پارامتر سبک پنجره است. از WS_OVERLAPPEDWINDOW استاندارد، با استفاده از عملیات xor، قابلیت بزرگ کردن پنجره را حذف کردم و دکمه حداکثر کردن را غیرفعال کردم.
    • چهارم و پنجم - موقعیت پنجره از سمت چپ، گوشه بالایی صفحه. من CW_USEDEFAULT دارم، با این مقدار سیستم موقعیت پنجره را به طور خودکار انتخاب می کند.
    • پارامترهای ششم و هفتم به ترتیب عرض و ارتفاع پنجره هستند.
    • پارامتر هشتم پنجره مالک است. در پنجره اصلی، مالک دسکتاپ (0) است. کنترل ها دارای پنجره اصلی هستند.
    • نهم اشاره گر به دسته منو است. بدون منو، بدون اشاره گر.
    • دهمین پارامتر یک دسته برای نمونه برنامه فعلی است.
    • یازدهم - هنگام ایجاد برنامه های کاربردی با رابط MDI استفاده می شود. ما نیاز نداریم.
    تابع یک دسته را به پنجره ایجاد شده برمی گرداند که در متغیر hMainWnd ذخیره می شود.
    دسته پنجره یک شماره منحصر به فرد در سیستم است که پنجره یا کنترل را مشخص می کند.

    در مرحله بعد، کنترل های لازم را ایجاد می کنیم. همه کنترل ها ویندوز یکسان هستند، فقط نام کلاس متفاوتی دارند. کلاس های کنترل نیازی به ثبت نام ندارند، آنها از قبل در سیستم از پیش تعریف شده اند. دکمه - دکمه کلاس. فیلد ورودی - ویرایش کلاس. کتیبه کلاس ststic است. کلاس های زیادی وجود دارند که با کنترل های استاندارد مطابقت دارند. ما با استفاده از تابع آشنا ()CreateWindow و تابع ناآشنا ()CreateWindowEx کنترل ایجاد می کنیم. CreateWindowEx() به شما امکان می دهد یک پنجره با سبک توسعه یافته ایجاد کنید. ما از آن برای ایجاد فیلدهای ورودی استفاده می کنیم. در این تابع، اولین پارامتر اضافه شده است که این سبک بسیار توسعه یافته را تنظیم می کند، پارامترهای باقیمانده مانند CreateWindow () هستند. کنترل ها پنجره های فرزند هستند، صاحب آنها پنجره اصلی است.

    هنگام ایجاد کنترل ها، در پارامترهای تابع، باید توصیفگر اصلی پنجره و همچنین سبک پنجره WS_CHILD را مشخص کنید. ظاهرو عملکرد کنترل‌ها را می‌توان با استفاده از پرچم‌های WS_، ES_، BS_، SS_، ترکیب آن‌ها با عملیات بیتی "یا" دستکاری کرد. هنگام ایجاد کنترل ها، متغیرهای مربوطه را با دسته های آنها مقداردهی اولیه می کنیم که توسط توابع CreateWindow() و CreateWindowEx() برگردانده می شوند. ما به این توصیفگرها نیاز داریم کار بیشتربا کنترل پنجره ای که ایجاد کرده ایم را روی صفحه نمایش می دهیم و دوباره ترسیم می کنیم.

    تابع GetMessage پیام بعدی را از صف پیام برنامه انتخاب کرده و به پنجره ارسال می کند.
    • اولین پارامتر ساختاری از نوع MSG است (در دلفی، نوع TMSG)
    • پارامتر دوم دسته پنجره ای است که پیام در نظر گرفته شده است. اگر NULL یا 0 باشد، تمام پنجره های برنامه.
    • سوم و چهارم - به شما امکان می دهد محدوده پیام های دریافتی را تنظیم کنید. اگر 0 باشد، تمام پیام ها به پنجره ارسال می شوند.
    GetMessage - هنگامی که یک پیام WM_QUIT ظاهر می شود، FALSE را برمی گرداند، در این صورت حلقه خارج می شود و برنامه خارج می شود. TranslateMessage - کدهای کلید مجازی را به پیام های صفحه کلید ترجمه می کند. DispatchMessage - پیامی را برای پردازش به یک تابع پنجره ارسال می کند.

    تابع پنجره عملکرد برنامه را با پردازش فراهم می کند پیام های سیستمی. تابع پنجره یک تابع CALLBACK است، یعنی. توسط سیستم عامل در پاسخ به یک پیام جدید دریافتی فراخوانی می شود. تابع پنجره به صورت زیر اعلام می شود:

    LRESULT CALLBACK WindowFunc (HWND hMainWnd، UINT iMsg، WPARAM wParam، LPARAM lParam)

    • HMainWnd - دسته به پنجره اصلی.
    • iMsg - شماره پیام. ثابت های WM_ را ببینید.
    • lParam و wParam پارامترهای پیام هستند.

    هنگامی که یک پیام ظاهر می شود، می توانیم پارامتر iMsg را با یکی از ثابت های WM_ مقایسه کنیم و واکنش مناسب برنامه را برنامه ریزی کنیم.

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

    در داخل تابع پنجره یک دستور select وجود دارد که وظیفه فوق را انجام می دهد. دستور انتخاب باید حاوی یک کنترل کننده پیش فرض باشد که توسط DefWindowProc (hMainWnd, iMsg, wParam, lParam) پیاده سازی می شود.

    اگر این کار انجام نشود، برنامه ما می میرد و زنده نمی شود. بسیاری از پیام ها توسط خود سیستم پردازش می شوند، مانند: تغییر اندازه پنجره، کوچک کردن / حداکثر کردن پنجره، فراخوانی منوی سیستم و غیره. این همان چیزی است که DefWindowProc() برای آن است.

    هنگام کار با کنترل های پنجره، یک پیام WM_COMMAND به پنجره مالک ارسال می شود، جایی که lParam شامل دسته کنترل است و بایت بالای پارامتر wParam، شناسه رویداد مطرح شده در کنترل است. به عنوان مثال: هنگام کلیک بر روی دکمه - BN_CLICKED. ثابت های BN_، WM_ را ببینید. می توانیم با استفاده از تابع PostQuitMessage(0) برنامه را ببندیم. این تابع یک پیام WM_QUIT به پنجره ارسال می کند.

    چند کلمه در مورد نحوه نوشتن چنین برنامه هایی در دلفی. یک پروژه جدید ایجاد می کنیم، Project Manager را راه اندازی می کنیم، Unit1 را به همراه فرم حذف می کنیم. Ctrl + F12 را فشار دهید و فایل پروژه را باز کنید. ماژول فرم ها را از موارد استفاده حذف می کنیم، پنجره ها و پیام ها را در آنجا اضافه می کنیم. همه چیز بین شروع و پایان را حذف کنید. آماده سازی آماده است. می توانید کد بزنید. نوشتن برنامه بر روی یک API خالص بدون کمک، که همیشه باید در دسترس باشد، غیرممکن است. اگر شما جای خود گیتس بودید، نمی توانید همه چیز را به خاطر بسپارید. توصیه می کنم:

    • اول از همه - MSDN؛
    • سیستم کمک دلفی (فایل MSTOOLS.HLP)؛
    • http://www.soobcha.ru/rushelp کمک روسی در Win32 API دارد.
    همین.
    موفق باشید.

    ماکسیم بوباچنکودانلود: CreateWnd.zip(2.6K)
    آرشیو حاوی فایل های windows.cpp و windows.dpr است

    توسعه رابط کاربری گرافیکی

    ابزار کلیدی تعامل کاربر با برنامه، رابط کاربری گرافیکی (GUI) است. رابط کاربری گرافیکی هر کدام محصول نرم افزارییکی از عوامل کلیدی در محبوبیت آن است.

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

    در عمل، برنامه نویسی برنامه های کاربردی ویندوز شامل استفاده گسترده از ابزارها و جادوگران مختلف است. بنابراین، با در نظر گرفتن استانداردهای سیستم عامل انتخاب شده، ابزار نرم افزار دارای یک رابط پنجره ای خواهد بود. این در درجه اول به این دلیل است که ویندوز عناصر اصلی رابط گرافیکی در سیستم عامل ها (OS) خانواده ویندوز هستند. آنها مناطق مستطیلی هستند که تنظیمات، ویژگی ها و انواع خاص خود را دارند.

    بخش گرافیکی بلوک آموزشی شامل چهار نوع پنجره است:

    پنجره اصلی -- شامل تمام عناصر برای پیمایش در برنامه و همچنین اطلاعات تکمیلیبرای راحتی کار با PS لازم است.

    پنجره های مدیریت پایگاه اطلاعات -- شامل تمام عناصر کنترلی جزء اطلاعاتی ابزار نرم افزار است. آنها علاوه بر آزمایش ها، اطلاعات، کاربران و مدیران جدید، به شما امکان می دهند داده های جدید ایجاد شده یا موجود را دستکاری کنید.

    ویندوز برای کار با ویژگی های نرم افزار - ارائه کار با عملکردهای اصلی بلوک آموزشی، مانند گذراندن آزمون ها و مطالعه سخنرانی ها.

    ویندوز برای نمایش اطلاعات و آمار -- برای نمایش اطلاعات استفاده می شود نوع متفاوتو همچنین آمار و نمودار.

    پنجره اصلی برنامه شامل کنترل ها و خروجی اطلاعات زیر خواهد بود:

    عنوان پنجره که شامل نام برنامه و هدف پنجره است.

    دکمه های منوی سیستم که وظیفه تغییر اندازه، کوچک کردن و بستن برنامه را بر عهده دارند.

    ناحیه عنوان پنجره که تنها وظیفه دکوراسیون را دارد و برای مطابقت با تصمیم کلی طراحی ضروری است.

    منطقه استقبال؛

    نمایش منطقه برای روز هفته، تاریخ و زمان فعلی.

    نوار ابزار کاربر حاوی دکمه هایی برای دسترسی به عملکردهای اصلی برنامه؛

    پانل اداری، شامل یک دکمه برای دسترسی است عناصر اداریمدیریت PS;

    نوار وضعیت که اطلاعات مربوط به تمام حالت های برنامه را نمایش می دهد.

    طرح پنجره اصلی رابط گرافیکی (نمای پنجره برای حساب اداری) در شکل 3.2 نشان داده شده است.

    شکل 3.2 - طرح پنجره اصلی رابط گرافیکی: 1 - عنوان پنجره. 2 -- دکمه های منوی سیستم 3 - ناحیه عنوان پنجره؛ 4 -- نوار وضعیت؛ 5 - منطقه خوش آمد گویی؛ 6 - منطقه خروجی روز هفته، تاریخ و زمان؛ 7 -- پنل اداری 8 -- پنل کاربری; 9 -- دکمه دسترسی به مرحله یادگیری. 10 -- دکمه برای دسترسی به مرحله تست. 11 -- دکمه برای نمایش آمار و نمودار. 12 -- خروج; 13 -- دکمه دسترسی به بخش مدیریتی برنامه

    با در نظر گرفتن جهت نرم افزار توسعه یافته، چندین راه حل گرافیکی غیر استاندارد به منظور جلب توجه و علاقه بیشتر به برنامه توسعه داده شد. علاوه بر این، این به شما امکان می دهد تا نوعی فردیت را در بین بقیه آرایه های برنامه هایی با موضوعات و تمرکز مشابه به دست آورید.

    یکی از این راه حل ها را می توان رنگارنگ و ایجاد یک طراحی منحصر به فرد، عناصر رابط نام برد که هیچ مشابهی در این زمینه ندارند. ما در مورد درج های متحرک مبتنی بر انیمیشن فلش صحبت می کنیم. با کمک آنها، طراحی نام تمام پنجره های کاربردی اصلی، عناصر ناوبری، رابط فرم ثبت نام و مجوز اجرا می شود. مزایای اصلی این توسعه عبارتند از: اجرای یک رابط کاربری دلپذیر و دوستانه. ساده سازی قابل توجه استفاده از برنامه، هم در سطح کاربر و هم در سطح اداری.

    یکی دیگر از مزایای اصلی در بین برنامه های آنالوگ، چه در نرم افزار و چه در پیاده سازی گرافیکی، سازماندهی گذراندن آزمون های درخواستی است. برای گذراندن این نوع آزمایش، کاربر نیاز به جمع آوری پرس و جوهای SQL از عناصر جداگانه و مستقل دارد. بسته به نوع درخواستی که باید بر اساس شرایط کار پیشنهادی کامپایل شود، چند ضلعی مشخص برای مونتاژ تشکیل می شود. چند ضلعی شامل فیلدهایی برای جایگزینی عملگرهایی است که توسط ماوس از یک بلوک جداگانه به داخل آنها کشیده می شود و فیلدهای ورودی برای نام جداول، فیلدها و شرایط.

    آمار کاربر در قالب نمودارهایی پیاده سازی می شود که بسته به نتایج به دست آمده توسط وی ساخته می شود. هر آزمون دینامیک خاص خود را دارد. نمودارها شامل تمام برچسب‌های لازم هستند، با استفاده از کامپوننت TChart پیاده‌سازی می‌شوند و بنابراین کنترل‌های زیادی دارند که به‌طور پیش‌فرض در کامپوننت تعبیه شده و در نتیجه در برنامه پیاده‌سازی می‌شوند.

    همچنین، برای تجسم دوستانه‌تر، سبک‌های سرصفحه جدول به جای آن‌هایی که در محیط توسعه پیش‌فرض پیاده‌سازی شده‌اند، جایگزین شده‌اند.

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