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

فقط برای نتایج

رعایت دقیق ضرب الاجل ها

شفافیت

اجرای پروژه

پشتیبانی فنی به عنوان هدیه

برنامه نویسی، بهبود، مشاوره در 1C

چگونه کار می کنیم

1. مشکل را تلفنی در میان می گذاریم. در حضور دسترسی از راه دور- نمایش بر روی صفحه نمایش کامپیوتر شما.

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

3. ما کار را انجام می دهیم.

4. شما در برنامه خود کار می پذیرید، اگر نواقصی وجود دارد اصلاح می کنیم.

5. ما فاکتور صادر می کنیم، شما پرداخت کنید.

هزینه کار

1. همه کارها به 3 دسته تقسیم می شوند: مشاوره، به روز رسانی یک پیکربندی معمولی، توسعه یا برنامه نویسی یک گزارش جدید، پردازش، دکمه ها و غیره.

3. برای کار بالای 10 ساعت کار فنی از قبل با شرح و هزینه کار تهیه می شود. کار پس از تایید TOR با شما آغاز می شود.

پشتیبانی فنی

1. در صورت مشاهده هر گونه خطایی در آثار قبلی، ظرف 3 ماه به صورت رایگان آنها را اصلاح می کنیم.

2. برای مشتریان دائمی، ما هر کاستی در کار خود را به صورت رایگان ظرف یک سال برطرف می کنیم.

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

خرید 1C: Enterprise

ما فروشنده رسمی 1C هستیم، می توانید انواع مختلفی را از ما خریداری کنید محصولات نرم افزاریو مجوزها علاوه بر خرید "جعبه"، ما به شما در راه اندازی برنامه، مشاوره و انجام تنظیمات اولیه کمک خواهیم کرد.

  • حسابداری
  • اتوماسیون فروشگاه
  • عمده فروشی
  • کمک در نصب و راه اندازی اولیهدر بسته گنجانده شده است!
  • تنظیم دقیق تنظیمات بر اساس نیازهای مشتری، توسعه ماژول های جدید در صورت عدم وجود عملکردهای لازم در پیکربندی استاندارد.
حسابداری 1c 1C: مدیریت تجارت 1C: خرده فروشی 1C: حقوق و دستمزد و مدیریت منابع انسانی
از 3300 روبل. از 6700 روبل. از 3300 روبل. از 7400 روبل.

ارائه سرور

سرور راه اندازی فوری + 1C.

سرور نداره؟ مهم نیست، ما یک سرور را در "ابر" انتخاب و به سرعت راه اندازی می کنیم. با هزینه ای اندک، راه حل بسیار قابل اعتمادی دریافت می کنید.

  • در دسترس بودن 24/7
  • نیازی به نگه داشتن خودت نیست مدیر سیستم(پس انداز هزینه سرور شما را پوشش می دهد).
  • راه اندازی و نصب سریع 1C بر روی سرور، در عرض 3 روز شما از قبل یک سیستم کاملاً فعال خواهید داشت.
  • در هر زمان می توانید به سرور محلیاگر راه حل رضایت بخش نیست.

پیامک از 1C شما

آیا می خواهید مشتریان به موقع از تبلیغات و تخفیف ها مطلع شوند؟ مشتریان برنمی گردند؟ شخصی سازی ارسال اس ام اسمستقیم از 1C!

شرکت ما می تواند به سرعت ارسال پیامک به مشتریان شما را مستقیماً از 1C تنظیم کند. نمونه هایی از رویدادهایی که می توانند خودکار شوند:

  • قدردانی از خرید و تعلق پاداش بلافاصله پس از خرید بعدی.
  • انباشت پاداش به کارت به عنوان هدیه برای تولد/یک روز مهم یا تعطیلات دیگر.
  • اطلاعیه انبار.
  • انقضای کوپن هدیه
  • اطلاعیه دریافت پیش پرداخت و رزرو کالا.
  • آدرس با مسیرهای فروشگاه/دفتر، شماره تلفن.
  • و غیره.

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

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

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

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

  1. برنامه باید به انجام کار کمک کند، نه اینکه تبدیل به کار شود.
  2. هنگام کار با برنامه، کاربر نباید خود را احمق احساس کند.
  3. برنامه باید به گونه ای کار کند که کاربر کامپیوتر را احمق نداند.
اصل اول- این به اصطلاح "شفافیت" رابط است. رابط کاربری باید بصری، آسان برای یادگیری باشد و مشکلاتی را برای کاربر ایجاد نکند که در این فرآیند مجبور به غلبه بر آنها باشد. استفاده از استاندارد، بدون اجزای تزئینی بیش از حد، استفاده از آشنا، استفاده می شود برنامه های مشابهتکنیک های مدیریت، و شما به معیارهای عملکرد خواهید رسید اصل اول.

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

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

سعی کنید قوانین زیر را رعایت کنید:

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

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

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

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

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

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

هنگام انتخاب یک آیتم منو کنترل ->یک زیر منو با دو مورد ظاهر می شود:

  • به جلو بیاورید
  • ارسال به عقب
اینها متدهای جزء هستند که به صورت برنامه نویسی نیز در دسترس هستند. Button1.SendToBackدکمه را به "پس زمینه" منتقل می کند، و Button1.BringToFront- به جلو بیاور». یعنی اگر یک جزء بالاتر از دیگری قرار گیرد، این روش ها آنها را تعویض می کنند. مواردی که این می تواند در آنها اعمال شود کاملاً واضح است.

برنامه نویسی شی گرا (OOP)، علاوه بر مفهوم کلاس، مفهوم اساسی یک رابط را نیز ارائه می دهد.

رابط چیست و کار با آن در زبان برنامه نویسی دلفی چه ویژگی هایی دارد؟

رابط یک ساختار معنایی و نحوی در کد برنامه است که برای مشخص کردن خدمات ارائه شده توسط یک کلاس یا مؤلفه (ویکی‌پدیا) استفاده می‌شود.

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

اغلب، رابط ها با کلاس های انتزاعی مقایسه می شوند، اما با وجود تمام شباهت ها، این مقایسه کاملاً صحیح نیست. در کلاس های انتزاعی، حداقل، کنترل روی دید اعضا در دسترس است. در عین حال، دامنه برای رابط ها تعریف نشده است.

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

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

دلفی/پاسکال

IMyNewInterface = رویه رابط InterfaceProc. پایان؛

IMyNewInterface =رابط

رویه InterfaceProc;

پایان ؛

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

واقعیت این است که رابط های دلفی در ابتدا برای پشتیبانی از فناوری COM معرفی شدند. بنابراین، رابط IInterface، که در دلفی جد تمام رابط‌های دیگر (نوعی آنالوگ TObject) است، از قبل شامل سه روش اساسی برای کار با این فناوری است: QueryInterface، _AddRef، _Release. در نتیجه، اگر کلاسی هر رابطی را پیاده سازی کند، باید آن متدها را نیز پیاده سازی کند. حتی اگر این کلاس برای کار با COM طراحی نشده باشد.

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

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

همه اینها به این واقعیت منجر شد که با وجود همه امکانات ارائه شده توسط رابط ها، استفاده عملی آنها در دلفی تقریباً فراتر از کار با COM نبود.

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

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

این مقاله بر اساس سوالات موجود در انجمن ها است: "چگونه یک رشته را از یک DLL برگردانم؟"، "چگونه یک آرایه از رکوردها را پاس کنم و برگردانم؟"، "چگونه یک فرم را به یک DLL ارسال کنم؟".

به طوری که نیمی از عمر خود را صرف کشف آن نکنید - در این مقاله همه چیز را روی یک بشقاب نقره ای خواهم آورد.

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

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

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

این مقاله بر روی رابط‌های باز دلفی تمرکز می‌کند و نمای کلی از ویژگی‌هایی که ارائه می‌دهند ارائه می‌کند. دلفی شش رابط عمومی را تعریف می کند: رابط ابزار، رابط طراحی، رابط متخصص، رابط فایل، رابط ویرایش و رابط کنترل نسخه. بعید است که در چارچوب این مقاله بتوانیم به تفصیل به بررسی و توضیح امکانات هر یک از آنها بپردازیم. متون منبع دلفی به شما کمک می کند تا مسائل مورد بررسی را با دقت بیشتری درک کنید، زیرا توسعه دهندگان نظرات مفصلی را برای آنها ارائه کرده اند. اعلان‌های کلاسی که رابط‌های عمومی را نشان می‌دهند در ماژول‌های مربوطه در دایرکتوری ...\Delphi\Source\ToolsAPI قرار دارند. رابط طراحی (ماژول DsgnIntf.pas) ابزاری را برای ایجاد ویرایشگرهای ویژگی و ویرایشگرهای مؤلفه فراهم می کند.

ویرایشگرهای ویژگی و کامپوننت موضوعی است که ارزش بحث جداگانه ای را دارد، بنابراین فقط به یاد می آوریم که ویرایشگر ویژگی وقتی می خواهید مقدار ویژگی مربوطه را تغییر دهید، ویرایشگر ویژگی رفتار بازرس شی را کنترل می کند و ویرایشگر مؤلفه زمانی فعال می شود که دوبار کلیک کنیددکمه سمت چپ ماوس روی تصویر جزء قرار داده شده روی فرم. رابط کنترل نسخه (ماژول VCSIntf.pas) برای ایجاد سیستم های کنترل نسخه طراحی شده است. با شروع نسخه 2.0، دلفی از سیستم کنترل نسخه یکپارچه Intersolv PVCS پشتیبانی می کند، بنابراین در بیشتر موارد نیازی به توسعه سیستم خود نیست. به همین دلیل، ما از بررسی رابط کنترل نسخه نیز صرف نظر خواهیم کرد. رابط فایل (ماژول FileIntf.pas) به شما امکان می دهد تا سیستم فایل کار IDE را دوباره تعریف کنید، که این امکان را فراهم می کند تا راه خود را برای ذخیره فایل ها انتخاب کنید (مثلاً در قسمت های یادداشت روی سرور پایگاه داده). رابط ویرایش (ماژول EditIntf.pas) دسترسی به بافر متن منبع را فراهم می کند، که به شما امکان می دهد کد را تجزیه و تحلیل و تولید کنید، موقعیت مکان نما را در پنجره ویرایشگر کد تعیین و تغییر دهید، و برجسته سازی نحو متن منبع را کنترل کنید.

کلاس‌های ویژه برای مؤلفه‌های قرار داده شده در فرم (تعریف نوع مؤلفه، دریافت ارجاع به مؤلفه‌های والد و فرزند، دسترسی به ویژگی‌ها، انتقال فوکوس، حذف و غیره)، به خود فرم و فایل منبع پروژه، واسط ارائه می‌کنند. رابط ویرایش همچنین به شما این امکان را می دهد که به اصطلاح اعلان کننده های ماژول را شناسایی کنید که واکنش به رویدادهایی مانند تغییر کد منبع ماژول، تغییر فرم، تغییر نام جزء، ذخیره، تغییر نام یا حذف ماژول، تغییر منبع پروژه را تعیین می کنند. فایل و غیره. رابط ابزار (ماژول ToolIntf. pas) ابزارهایی را در اختیار توسعه دهندگان قرار می دهد تا به دست آورند. اطلاعات کلیدر مورد وضعیت IDE و انجام اقداماتی مانند باز کردن، ذخیره و بستن پروژه ها و فایل های فردی، ایجاد یک ماژول، کسب اطلاعات در مورد پروژه فعلی (تعداد ماژول ها و فرم ها، نام آنها و غیره)، ثبت نام سیستم فایل، سازماندهی رابط ها به ماژول های فردی و غیره علاوه بر اعلان‌کننده‌های ماژول، رابط ابزار، اعلان‌کننده‌های افزودنی را تعریف می‌کند که در مورد رویدادهایی مانند باز کردن/بستن فایل‌ها و پروژه‌ها، بارگیری و ذخیره فایل دسکتاپ پروژه، افزودن/غیر از ماژول‌های پروژه، نصب/حذف بسته‌ها، کامپایل یک پروژه، اطلاع رسانی می‌کنند. و برخلاف اعلان‌های مدولار، اعلان‌های افزودنی به شما این امکان را می‌دهند که اجرای برخی رویدادها را لغو کنید.

علاوه بر این، Tool Interface ابزاری برای دسترسی به منوی اصلی Delphi IDE فراهم می کند و به شما امکان می دهد موارد اضافی را در آن جاسازی کنید. رابط خبره (ماژول ExptIntf.pas) اساس ایجاد مشاوران خبره است - ماژول های نرم افزاری، به منظور گسترش عملکرد آن در IDE تعبیه شده است. نمونه ای از یک متخصص، جادوگر فرم پایگاه داده دلفی است که فرمی را برای مشاهده و اصلاح محتویات یک جدول پایگاه داده ایجاد می کند. پس از تعریف کلاس متخصص، باید مطمئن شویم که دلفی درباره متخصص ما «یاد می‌گیرد». برای انجام این کار، باید با فراخوانی رویه RegisterLibraryExpert ثبت شود و نمونه ای از کلاس expert به عنوان پارامتر ارسال شود. به عنوان مثال، اجازه دهید یک متخصص ساده در سبک esStandard ایجاد کنیم، که وقتی آیتم منو دلفی مربوطه انتخاب شد، پیامی را نشان می دهد که در حال اجرا است. همانطور که از جدول بالا می بینید، سبک esStandard به شش روش نیاز دارد تا نادیده گرفته شود:

برای اینکه اکسپرت فعال شود، باید آیتم منو Component/Install Component ... را انتخاب کنید، ماژول حاوی خبره (در مورد ما exmpl_01.pas) را در گفتگوی Browse انتخاب کنید، روی OK کلیک کنید و پس از کامپایل. بسته dclusr30.dpk در منوی اصلی دلفی در بخش Help، مورد Simple Expert 1 باید ظاهر شود، در صورت انتخاب، پیام اطلاعاتی "Standard Expert شروع شد!" ظاهر می شود. اینکه چرا دلفی آیتم منوی متخصص را در بخش راهنما قرار می دهد، همچنان یک راز باقی مانده است. اگر از این واقعیت خوشتان نمی آید که آیتم منو در هر جایی از دلفی ظاهر می شود، و نه در جایی که شما می خواهید، گزینه زیر امکان پذیر است: ایجاد یک متخصص سبک افزودنی، که ایجاد خودکار آیتم منو را حذف می کند، و آیتم منو "به صورت دستی" با استفاده از رابط ابزار. این به شما امکان می دهد مکان مورد جدید را در منوی اصلی به صورت دلخواه تنظیم کنید.

برای افزودن یک آیتم منو، از کلاس TIToolServices - اساس رابط ابزار - و کلاس‌های TIMainMenuIntf، TIMEenuItemIntf استفاده می‌شود که رابط‌ها را برای منوی اصلی IDE و آیتم‌های آن پیاده‌سازی می‌کنند. نمونه ToolServices از کلاس TIToolServices توسط خود IDE هنگامی که مقداردهی اولیه می شود ایجاد می شود. توجه داشته باشید که این مسئولیت توسعه دهنده است که رابط ها را در منوی اصلی دلفی و موارد آن منتشر کند. در طول مسیر، اجازه دهید کمی بار عملکردی Expert Advisor را پیچیده کنیم: هنگامی که آیتم منوی آن فعال می شود، گواهی نامه ای در مورد نام پروژه باز شده در آن صادر می کند. این لحظهدر محیط: در این مثال، مکان مرکزی توسط تابع AddIDEMenuItem اشغال شده است که یک آیتم منو را به منوی اصلی Delphi IDE اضافه می کند. به عنوان پارامتر، متن آیتم منوی جدید، شناسه آن، شناسه موردی که آیتم جدید قبل از آن درج شده است، نمایش نمادین کلید، که همراه با کلید Ctrlقابل استفاده برای دسترسی سریعبه مورد جدید، و یک کنترل کننده رویداد مربوط به انتخاب مورد جدید. ما یک آیتم منوی جدید را قبل از آیتم Watches به بخش View اضافه کرده ایم.

حال بیایید با نوتیفایرها آشنا شویم. بیایید یک اعلان افزودنی تعریف کنیم که لحظات بسته شدن/باز کردن پروژه‌ها را ردیابی می‌کند و فیلدی را که نام را ذخیره می‌کند، تنظیم می‌کند. پروژه فعال(برای اختصار پیاده سازی متدهایی را که نسبت به مثال قبلی تغییر نکرده اند حذف می کنم): برای پیاده سازی notifier کلاس TAddInNotifier را که از نسل TIAddInNotifier است تعریف کرده و روش FileNotification را لغو کردیم. IDE هر بار که رویدادی رخ دهد که اعلان کننده افزودنی قادر به پاسخ دادن به آن باشد، این روش را فراخوانی می کند (هر رویدادی با ثابت نوع TFileNotification مربوطه نشان داده می شود). از فیلد Expert در کلاس TAddInNotifier استفاده می شود بازخوردبا یک متخصص (روش TAddInNotifier.FileNotification). در تخریب کارشناس، ثبت ابلاغ کننده ثبت نشده و ابلاغ کننده از بین می رود. حالا بیایید استفاده از اعلان های مدولار را نشان دهیم. بیایید یک کارشناس افزودنی ایجاد کنیم که پیام‌هایی را در مورد هر عمل ذخیره یک فایل پروژه صادر می‌کند (برای اختصار، اجرای روش‌هایی که قبلاً می‌دانیم ارائه نشده است): در این مثال، کارشناس افزودنی رویدادهای مربوط به افتتاحیه را نظارت می‌کند. /بسته شدن پروژه ها

هر بار که یک پروژه باز می شود، یک اطلاع رسانی ماژول مربوط به فایل پروژه ثبت می شود. از نظر پیاده سازی، اعلان کننده های مدولار شبیه به اعلان های افزودنی هستند: ما یک کلاس TModuleNotifier را تعریف می کنیم که از نسل TIModuleNotifier است و متدهای Notify و ComponentRenamed آن را لغو می کنیم. IDE متد Notify را زمانی فراخوانی می کند که رویدادهای خاصی مربوط به این ماژول رخ دهد. در این روش، واکنش به یک رویداد خاص مشخص می شود. متد ComponentRenamed زمانی فراخوانی می شود که نام کامپوننت موجود در فرم ماژول تغییر کند. لطفا توجه داشته باشید که ما از این روش استفاده نمی کنیم، اما باید آن را لغو کنیم، در غیر این صورت با تغییر نام کامپوننت، متد انتزاعی کلاس پایه فراخوانی می شود که منجر به عواقب غیرقابل پیش بینی می شود.

ثبت نام اعلان کننده ماژول تا حدودی پیچیده تر از ثبت نام افزودنی اعلان کننده است: ابتدا رابط ماژول (TIModuleInterface) را دریافت می کنیم و سپس با استفاده از رابط ماژول، اعلان کننده را ثبت می کنیم. هنگامی که پروژه بسته می شود، اعلان کننده ماژول ثبت نشده است (دوباره با استفاده از TIModuleInterface) و اعلان کننده از بین می رود. در پایان، نشان خواهیم داد که چگونه می توانید موقعیت مکان نما را در پنجره ویرایشگر کد تعیین کنید. بیایید یک Expert Advisor ایجاد کنیم که وقتی آیتم منوی مربوطه انتخاب می‌شود، پیامی حاوی نام فایل فعال و موقعیت مکان‌نما در آن را نمایش دهد (اجرای تنها روش‌هایی که برای این مثال ضروری هستند آورده شده است): برای تعیین موقعیت مکان نما، باید دنباله ای از رابط ها را دریافت کنیم: رابط ماژول (TIModuleInterface); رابط ویرایشگر کد (TIEditorInterface)؛ رابط نمایش ماژول در پنجره ویرایشگر (TIEditView).

اگر فایل فعال با متن مبدأ (*.pas) هنگام انتخاب آیتم منوی خبره فعال باشد، پیامی حاوی نام فایل فعال و موقعیت فعلی مکان نما در آن نمایش داده می شود. اگر فایل فعال یک فایل pas نباشد، هیچ پیامی صادر نمی شود. متد GetCurrentFile از کلاس TIToolServices برای دریافت نام فایل فعال استفاده می شود. این بحث ما را در مورد راه های استفاده از رابط های عمومی به پایان می رساند. CD-ROM حاوی کد منبع برای تمام مثال های ارائه شده است. CD-ROM همچنین شامل یک مثال پیچیده تر و گسترده تر است که حاوی یک متخصص افزودنی است که به کاربر اجازه می دهد کد منبع ماژول های دلفی را نشانه گذاری کند. راهنمای سریع نصب و استفاده از Bookmark Expert در فایل bkmrks97.htm موجود است. بنابراین، در این مقاله، رابط های عمومی به صورت کلی مورد بحث قرار گرفته و نمونه هایی از کاربرد آنها آورده شده است. بار دیگر، به لطف در دسترس بودن کدهای منبع رابط های باز، می توانید به راحتی جزئیات مورد علاقه خود را درک کنید. ما امیدواریم که تنوع از فرصت های ارائه شده است رابط های باز، بیش از یک ایده جسورانه و مفید به شما می دهد.