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

مقاله بر اساس نتایج تجزیه و تحلیل برنامه های نوشته شده توسط توسعه دهندگان جوان گروه ما نوشته شده است.

دنباله تعویض اجزا را به درستی مرتب می کنیم

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

ترتیب سوئیچینگ اجزا در داخل کانتینر توسط ویژگی TabOrder مشخص می شود. اولین مؤلفه ای که فعال می شود مولفه ای است که TabOrder برابر با 0 دارد، دومی با 1 و غیره تا زمانی که همه مؤلفه ها شمارش شوند. علاوه بر این، کامپوننت دارای ویژگی TabStop است که نشان می‌دهد وقتی با کلید Tab جابجا می‌شوید آیا کامپوننت فوکوس دریافت می‌کند یا خیر. اگر نیاز به ممنوعیت تعویض به هر جزء دارید، TabStop آن را = false تنظیم کنید. در این حالت فقط با استفاده از ماوس می توانید به این کامپوننت سوئیچ کنید.

مواردی وجود دارد که کاربرانی که عادت به جابجایی با کلید خاصی در یک برنامه دارند، از روی عادت، به استفاده از آن در برنامه های دیگر ادامه می دهند. این اغلب برای کاربران 1C اتفاق می افتد، جایی که از کلید Enter می توان برای پیمایش در فیلدهای ورودی استفاده کرد. خوب اگر بخواهند در برنامه هایمان چنین فرصتی را به آنها می دهیم. ویژگی KeyPreview فرم را روی true تنظیم کنید و یک کنترل کننده رویداد OnKeyPress بنویسید:

روش TForm1.FormKeyPress(فرستنده: TObject; var Key: Char);
شروع
if ord(key)=vk_Return سپس
Form1.SelectNext(PriemForm.ActiveControl، true، true);
پایان؛

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

دکمه های پیش فرض

همه همان کاربران به سرعت به این واقعیت عادت می کنند که در جعبه های گفتگوی برنامه، به عنوان یک قاعده، می توانید انتخاب خود را با کلید Enter تأیید کنید و با کلید Esc لغو کنید. بیایید آنها را در برنامه های خود ناامید نکنیم، به خصوص که انجام آن بسیار آسان است. برای دکمه ای که به Enter پاسخ می دهد، ویژگی Default را روی true تنظیم کنید. برای دکمه ای که به Esc پاسخ می دهد، ویژگی Cancel را روی true تنظیم کنید. همین.

آره یا نه

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

همچنین، آنچه در بالا در پاراگراف "دکمه های پیش فرض" گفته شد را فراموش نکنید.

تمام کادرهای محاوره ای باید در مرکز صفحه باز شوند

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

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

اندازه پنجره ها نباید بیشتر از اندازه صفحه نمایش باشد

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

تغییر اندازه صحیح عناصر پنجره

هنگامی که اندازه پنجره تغییر می کند، زمانی که پنجره به حداکثر می رسد، و زمانی که پنجره پس از حداکثر سازی بازیابی می شود، عناصر پنجره باید تغییر اندازه داده یا به درستی حرکت کنند.

همه چیز همیشه قابل مشاهده است

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

نکات همه جا، نکات همیشه

برای دکمه ها، به ویژه در نوار ابزار (مانند نوار ابزار)، نکات باید مشخص شود تا همیشه مشخص شود که چرا این یا آن دکمه نیاز است.

طیف رنگ

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

نتیجه

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

نویسنده مقاله کار کمیته پذیرش در دانشگاه را خودکار کرد و در سال اول معرفی برنامه روزانه 3-4 ساعت را در کمیته پذیرش صرف ثبت نام متقاضیان، پر کردن اطلاعات شخصی آنها و دادن آنها کرد. گزارش های امتحانی و برای بقیه زمان کاریاشتباهات و کاستی ها را اصلاح کرد. باور کنید سال آینده عملاً هیچ مشکلی باقی نخواهد ماند. در هنگام معرفی ماژول پرسنل نیز همین اتفاق افتاد.

بنابراین، تجربه کاربری را در ذهن داشته باشید. کار کردن با برنامه های خود را برای آنها آسان و دلپذیر کنید.

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

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

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

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

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

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

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

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

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

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

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

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

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

شفافیت

اجرای پروژه

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

برنامه نویسی، اصلاحات، مشاوره در 1C

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

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

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

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

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

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

هزینه کار

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

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

پشتیبانی فنی

1. اگر در مدت 3 ماه در کارهایی که قبلاً پذیرفته شده‌اند، خطایی پیدا کردید، ما آنها را رایگان تصحیح می‌کنیم.

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

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

خرید 1C: Enterprise

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

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

تامین سرور

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

دلفی/پاسکال

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

IMyNewInterface =رابط

رویه InterfaceProc ;

پایان ؛

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


بالا