rtf какъв формат. Как да отворя .RTF файл? Повече информация за RTF формата

Най-честият проблем, който не позволява на потребителите да отворят този файл, е неправилно зададена програма. За да поправите това в Windows, трябва да щракнете с десния бутон върху файла, в контекстното меню, преместете мишката върху елемента „Отваряне с“ и изберете елемента „Избор на програма ...“ от падащото меню . В резултат на това ще видите списък с инсталирани програми на вашия компютър и можете да изберете подходящата. Също така препоръчваме да поставите отметка в квадратчето до „Използване на това приложение за всички RTF файлове“.

Друг проблем, с който нашите потребители също се сблъскват доста често, е, че RTF файлът е повреден. Тази ситуация може да възникне в много случаи. Например: файлът не е изтеглен напълно в резултат на грешка в сървъра, файлът е бил повреден първоначално и т.н. За да коригирате този проблем, използвайте една от препоръките:

  • Опитайте се да намерите желания файл в друг източник в Интернет. Може да имате късмет да намерите по-добра версия. Пример за търсене с Google: "File filetype:RTF" . Просто заменете думата "файл" с името, което искате;
  • Поискайте да ви изпрати отново оригиналния файл, може да е бил повреден по време на прехвърлянето;

Дори не знам какво да кажа на това...

200?"200px":""+(this.scrollHeight+5)+"px");">Този проект е създаден от начинаещ програмист на Delphi, така че очаквам вашите коментари.


Е, ако искаш - ето ти моето мнение, но само не се обиждай.
Ще кажа, че проектът беше изпълнен зле. Защо? Първо, изглежда грозно, а в нашата епоха на супертехнологии красивата обвивка е незаменима - без значение колко функции има. Защо е грозен? Добре, стандартната обвивка на Windows приложение е подходяща за начинаещи. Но не можете да разхвърляте компоненти така! Изглежда криво и така или иначе създава усещането, че всичко е скицирано за няколко минути. Конкретно: бутоните на панела са малки и няма надписи към тях, няма подсказки. Снимките не са много ясни. Картината над бутона "отвори" е грешна. Предназначението на някои е неясно, например: неразбираем бутон (крайно вдясно на левия панел), неразбираеми полета за въвеждане със стрелки нагоре и надолу. Менюто с настройки изглежда ужасно и се отваря само в раздела "txt format". И какви са тези раздели? Беше невъзможно да се направи прост прозорец? Още по-добре, като MDI приложение, те все още са доста популярни. Почти забравих - иконата на програмата не съвпада с програмата ...
Второ, неудобен е за използване. Както казах: раздели, меню с настройки (което може да се направи в главното изскачащо меню). Елементът от менюто "файл" все още не е ясен. Къде са елементите "ново", "запиши като"? И елементът "действия" трябва да се нарича "редактиране", защото това е по-разбираемо за потребителя. В същия параграф няма бутон "изрязване" - не е удобно да копирате и след това да изтриете. „Настройки“ >> „Отворете настройките“ е ужасяващо. Вече казах - по-добре е да направите всички настройки в елемента "настройки", в падащия списък. Но някои (ако има много настройки) издават отделен формуляр или рамка (рамка - като свойствата на формуляра и панела наведнъж, което е удобно). Няма никаква помощ, поне за това кой е създателят, а още по-добре опишете как да го използвате. При всяко стартиране програмата се появява някъде в долната част на екрана. По-добре е да направите автоматично центриране при стартиране - не се знае кой монитор има потребителят. И още по-добре - запазване на позицията на формата в ini файла... Е, това е, за в бъдеще... И още нещо: по-добре е да скриете лентите с инструменти, в зависимост от това какъв формат се редактира в момента. И надписът със стрелки, показващи на панела - изхвърлете го, само пречи. И все пак ви съветвам да използвате скриващи или деактивиращи компоненти, чието използване в момента не е възможно. И, разбира се, прозорец с въпроса "запазване на документи преди излизане?" никога не е излишно, дори ако има автоматично запазване ...
Това, общо взето, е всичко, което успях да забележа. Успех с програмирането, имаш още много да учиш...

P.S. Ето още един, който почти забравих:

200?"200px":""+(this.scrollHeight+5)+"px");">Изходен код: Да;
...
Тип лиценз: Правете каквото искате;


Хехе, но няма сорс код. Не мисля, че знаете къде се съхранява изходният код на Delphi. Или си объркал нещо... Накратко, забравил си да опаковаш файловете Unit2.pas и Unit3.pas. Там е целият ви изходен код. Ето, сър...
И накрая: програмата е малка, но сте използвали инсталатор, при това някакъв съмнителен (Avast! предложи да работи в sandbox). Използвайте просто WinRAR архивиране или, ако желаете, направете автоматичното разопаковане на същия WinRAR (или друг архиватор). И за да компресирате програмата в exe, съветвам ви да използвате ASPack, обикновено програма от 400 kb се компресира до 100, но кодът се разопакова в RAM преди стартиране - този метод не е много подходящ за големи програми.

Много начинаещи компютърни потребители, изправени пред файлове с неизвестен формат, включително RTF, не знаят как да ги отворят.


Какво е RTF файл? Rich Text Format, преведен от английски като "богат текстов формат" от Microsoft Corporation, поддържан от много версии на операционни системи и текстови редактори. Това са текстови документи, както за създаване, така и за отваряне, редактиране, промяна се използват популярни компютърни текстообработващи приложения. Използвайки този формат, текстът се въвежда, записва и копира за други операционни системи. Характеризира се със съдържание само на текстови данни. Те обаче могат да бъдат въведени във всеки друг формат, но окончателното записване се извършва в RTF разширението. Прехвърлянето на неговия текстов материал от една програма в друга (Microsoft Office) е доста просто. Същото важи и за версиите на операционната система.

Защо са необходими RTF файлове

Те ви позволяват да форматирате текста, да маркирате неговите секции в курсив или удебелен шрифт, да подчертавате някои елементи. Отпечатаните символи могат да бъдат избрани в различни шрифтове и цветове. С файловия формат RTF е лесно да зададете различно разстояние между редовете, да зададете отстъпа на текстовия материал спрямо ръба на листа. Той е в голямо търсене сред компютърните потребители.

Отваряне на RTF файл с помощта на програми и услуги



Този формат има гъвкавост, което е неоспоримото му предимство. Можете да отворите програмата за RTF файлове с помощта на приложението Word, включено в пакета MS Office. Това е най-успешният продукт предлаган от тази корпорация и се използва като стандарт в текстообработката. Той разполага с атрактивен интерфейс с представени функции. Пакетът Microsoft Office включва Project, Visio, InfoPath, Designer, PowerPoint, SharePoint, Excel, Access, Outlook. Струва си да се отбележи, че Word се счита за най-добрият сред текстовите редактори.
За да отваряте книги в RTF файл, можете да използвате приложението Kingsoft Writer, включено в пакета Kingsoft Office. Това е безплатен текстов редактор. Характеризира се със същите функции като горната програма Word. Приложението може да се инсталира както заедно с целия пакет, така и като самостоятелен документ. Има класически интерфейс, подобен на други текстови редактори. Използва се за създаване и форматиране на текстов материал с въвеждане на формули, диаграми, графики, изображения, триизмерни символи. Подобно на Word, Kingsoft Writer е снабден с отделен прозорец за вмъкване на определен брой знаци, които не са на клавиатурата. Тя ви позволява незабавно да конвертирате материали в PDF файл, без да прибягвате до използването на допълнителни инструменти. Интерфейсът с раздели прави възможно стартирането на множество файлове в един прозорец.
За да отворите RTF формата, използвайте програмата OpenOffice.org, многофункционален офис пакет с многоезична поддръжка. Той се управлява от всички основни операционни системи. Програмата ви позволява да съхранявате всички данни, като използвате собствен отворен ODF формат. Одобрен е от международната организация по стандартизация ISO. Една от най-добрите функции е експортирането на текст в PDF файл с едно щракване на мишката. Тук се поддържа Flash технология. Интерфейсът на програмата е доста ясен и удобен.
Забележка.Не се изисква лиценз за инсталиране на OpenOffice.org, което от своя страна позволява на всеки потребител, който желае да го инсталира на своя компютър.
Notepad2 също поддържа RTF формат. Това е малък, но достатъчно бърз текстов редактор с подчертаване на синтаксиса. Интерфейсът му е прост и привлекателен. Програмата не изисква инсталация.
Можете да разрешите този проблем с помощта на AbiWord, инструмент, който обработва текстови документи. Може да печата, редактира, създава различни материали, както и да обработва писма и съобщения.

Как да отворите RTF на компютър

Обикновеното приложение WordPad, намиращо се в менюто "Старт", ще ви помогне да отворите файла на вашия компютър. След като го стартирате, трябва да активирате бутона на главното меню с мишката и да изберете елемента "Отвори" и да посочите пътя до документа, който да бъде отворен. Приложението показва целия каталог на поддържаните формати, RTF не е изключение.
Освен това контекстното меню ви позволява да отворите необходимия файл, като щракнете с десния бутон върху иконата на документа. Менюто, което се отваря, ще покаже всички програми за преглед.

Как да отворите RTF на Android

Програмата Smart Office, изтеглена на таблет или друго мобилно устройство, ще ви помогне да отворите RTF на Android.
Програмата Cool Reader поддържа този формат доста добре в тази операционна система. Добро показване на съдържанието, заглавията, изображенията, което не може да се каже за таблиците.

Как да отворите RTF онлайн

За да отворите RTF онлайн и да направите промени в тях, можете да използвате почти всички текстови редактори на популярни операционни системи (Mac OS, Windows) и много безплатни офис програми. Следователно, изпращайки документи в този формат по електронна поща, няма съмнение, че за получателя ще бъде лесно да ги отваря и изучава онлайн, дори ако Office не е инсталиран на неговия компютър.
Отварянето на файл онлайн е лесно в Google Документи. След като отидете на техния адрес, трябва да щракнете върху раздела „Отвори“. В долния десен ъгъл е активирано полето "Създаване на документ". В менюто, което се отваря, изберете „Отваряне“. В раздела "Изтегляне" активирайте "Отвори" с мишката и изберете файла с това разширение на компютъра.

Как сами да създадете RTF файл



За да създадете сами RTF файл, не се нуждаете от специални умения, просто трябва да изтеглите и инсталирате безплатния Microsoft Office Excel Viewer за Windows. Интерфейсът му е доста прост. За операционната система Mac е подходящ Apple TextEdit. Тази програма се счита за основна за тази ОС. След като създадете текстов документ, изберете желания формат при запазване.

Конвертор за RTF файлове

Преобразуването на документи от един формат в друг е възможно с конвертора за RTF файлове. Много услуги предлагат своите услуги в тази посока. Някои дори не изискват специална инсталация на компютъра. Потребителят трябва да качи файл от диск или друг интернет ресурс в специална област за конвертиране. След това потвърдете действията си. На изхода той ще получи висококачествен документ с необходимия формат.

Как да запазите документ като RTF: видео

Много отговори на въпроса как да запазите RTF документ ще бъдат подсказани от видеоклипа:

Преди да продължим да се запознаваме с визуалните компоненти, нека разгледаме невизуалните, предимно тези, които са предназначени за достъп до стандартни диалогови прозорци на услуги на Windows. По-специално, това са диалогови прозорци за отваряне и запазване на файлове, диалогови прозорци за избор на цветове и шрифтове, както и диалогови прозорци за печат, търсене и замяна. Всички те трябва да са ви познати, тъй като се използват почти навсякъде в Windows приложения. Но за да разберем по-добре вътрешната им структура, ще разгледаме и един визуален компонент, за който са подходящи всички въпросни диалози, а именно редакторът за богат текст, за който дори ще създадем наш собствен текстов редактор.

Файлови диалогови прозорци

Всички диалогови прозорци се събират в общия раздел Диалози на палитрата на компонентите. Първият в него е компонентът OpenDialog, който е обвивка за функциите на Windows API, свързани с диалоговия прозорец за избор на файл. Диалоговият прозорец, извикан от компонента OpenDialog, се използва за избор (отваряне) на файл. За операцията за запис трябва да използвате друг компонент - SaveDialog. Той показва основно същия диалогов прозорец, но в режим на запазване.

Още 2 компонента - OpenPictureDialog и SavePictureDialog са специален случай на стандартни диалогови прозорци за отваряне и запазване, но предназначени за работа с графични файлове. Визуално те се различават от универсалните диалози по това, че имат прозорец за изглед на изображение. От гледна точка на използването им в програмата, те не се различават от OpenDialog и SaveDialog.

Като цяло трябва да се отбележи, че базовият клас за всички диалози е TCommonDialog, а за всички диалози за работа с файлове - класът TOpenDialog. И така, нека разгледаме общите свойства на файловите диалогови прозорци, базирани на OpenDialog, за които се обръщаме към Таблица 14.1.

Таблица 14.1. Свойства на диалоговия прозорец на файла
ИмотТипОписание
Default ExtнизУказва разширението по подразбиране, което ще бъде добавено към файла, ако потребителят не посочи изрично разширение.
име на файлнизУказва името на файл, включително неговия път
файловеTStringsСъдържа списък с избрани файлове, ако има повече от един (зададен от свойството Options чрез включване на флага ofAllowMultiSelect)
филтърнизУказва низ, съдържащ филтъра за тип файл
FilterIndexЦяло числоУказва коя от опциите за филтър трябва да бъде избрана по подразбиране
InitialDirнизУказва директорията, която да се показва първоначално
НастроикиTOpenOptionsОпределя типа поведение на диалоговия прозорец
OptionsExTOpenOptionsExУказва допълнителни опции, подходящи за Windows Me, 2000 и по-нови версии
ЗаглавиенизУказва текста, който да се показва в заглавието на диалоговия прозорец

Най-търсеното свойство на всеки файлов диалог е, разбира се, свойството FileName, тъй като това определя името на файла, избран от потребителя. В същото време други свойства също са важни за настройките на диалога, по-специално, използвайки свойството Филтър, те задават маска, чрез която потребителят може да филтрира типове файлове. Въпреки че това свойство е низ, за ​​редактирането му чрез Инспектора на обекти се използва редактор на електронни таблици. Освен това, за специализирани диалогови прозорци, предназначени за работа с графични файлове, това свойство се попълва автоматично (фиг. 14.1).

Ориз. 14.1. Редактор на свойства на филтри с данни по подразбиране за OpenPictureDialog

Колоната отляво показва името на филтъра (т.е. това, което потребителят вижда), а колоната отдясно показва действителния шаблон на филтъра. Ако искате да зададете филтъра програмно, тогава низът се разделя с помощта на символа с вертикална лента. В този случай първо посочете името, след това поставете ред и след това дефинирайте шаблона. За следващата опция всичко се повтаря, като самите опции също са разделени с вертикална линия:

OpenDialog1.Filter:="Всички файлове|*.*|Текстови файлове|*.txt";

Тук дефинирахме 2 опции за филтър - за показване на всички файлове (модел *.*) и за показване само на текстови файлове (модел *.txt). Ако един шаблон включва няколко различни разширения, тогава те са изброени разделени с точка и запетая:

OpenDialog1.Filter:="Всички файлове|*.*|Delphi файлове|*.pas;*.dpr";

Друго важно свойство на файловите диалогови прозорци са Опции. С помощта на набор от флагове на това свойство те определят поведението на диалоговия прозорец, а също така настройват показването на допълнителни елементи от неговия интерфейс. Стойностите на всички съответни флагове са дадени в таблица 14.2.

Таблица 14.2. Стойности на флага на свойството Options на компонента OpenDialog
ФлагОписание
ofReadOnly„Прави опцията само за четене активирана по подразбиране“
ofOverwritePromptПоказва, че трябва да се покаже предупредително съобщение, ако файл с указаното име вече съществува (за диалогови прозорци за запазване)
ofHideReadOnly„Премахва радиобутон само за четене от диалоговия прозорец“
ofNoChangeDirВръща оригиналния път след затваряне на диалоговия прозорец
ofShowHelpПоказва бутон за помощ в диалогов прозорец
ofNoValidateДеактивира проверката за невалидни знаци в името на файла
ofAllowMultiSelectПозволява на потребителя да избира няколко файла наведнъж
ofExtensionDifferentТози флаг се активира автоматично, когато избраният файл има разширение, различно от посоченото в свойството DefaultExt.
ofPathMustExistИзвежда съобщение за грешка, ако зададеният от потребителя път не съществува
ofFileMustExistИзвежда съобщение за грешка, ако зададеният от потребителя файл не съществува (за диалогови прозорци за отваряне на файл)
ofCreatePromptИздава предупредително съобщение за създаване на файл, ако зададеният от потребителя файл не съществува.
на ShareAwareПозволява ви да игнорирате грешки при достъп
ofNoReadOnlyReturnИзвежда съобщение за грешка, ако потребителят избере файл само за четене
ofNoTestFileCreateДеактивира проверката за права за достъп до мрежови ресурси
ofNoDereferenceLinksДеактивира обработката на етикети. Тези. ако този флаг не е зададен, тогава избирането на прекия път ще избере файла, към който препраща прекият път, в противен случай ще бъде избран самият прекият път (lnk)
ofEnableSizingПозволява на потребителя да промени размера на диалоговия прозорец (не работи на Windows 95 и Windows NT 4.0)
ofDontAddToRecentНе ви позволява да добавяте избраните файлове към списъка с наскоро отворени документи
ofForceShowHiddenПозволява на потребителя да вижда скрити файлове

По подразбиране са активирани само ofHideReadOnly и ofEnableSizing, т.е. опцията за отваряне на файлове в режим само за четене, рядко използвана на практика, е скрита и е разрешено преоразмеряване на диалоговия прозорец.

Що се отнася до второто свойство - OptionsEx, единствената налична настройка за него досега е ofExNoPlacesBar, която ви позволява да деактивирате страничната лента за бърз достъп до основните секции на компютъра, поддържани в Windows Me, 2000, XP и 2003 Server.

Нещата са още по-прости с методите. В допълнение към стандартните методи, които диалозите са наследили от класа TComponent, той има само един собствен метод - Execute. Именно с помощта на този метод се извикват диалози в програмния код. Методът Execute връща булева стойност - true, ако потребителят щракне върху OK, или false, ако потребителят избере отмяна. Съответно типично диалогово повикване в програма изглежда така:

Ако OpenDialog1.Execute then begin ... end;

В същия случай, ако единствената цел на процедурата или функцията, която осъществява достъп до диалоговия прозорец, е да получи името на файла (например, ако е манипулатор за бутон като "отвори файл"), тогава е по-удобно да се използва отрицание:

Процедура TForm1.OpenFileButtonClick(Sender: TObject); започнете, ако не OpenDialog1.Execute тогава излезте; Form1.Caption:=OpenDialog1.FileName; Memo1.Lines.LoadFromFile(OpenDialog1.FileName); край;

Този подход избягва ненужен блок начало-край, защото ако диалоговият прозорец не е завършен (т.е. потребителят е променил решението си относно отварянето на файла), тогава можете незабавно да излезете от подпрограмата, предназначена да обработва изтеглянето на файла.

Диалози за печат

VCL предоставя 3 компонента за взаимодействие с инструментите за подготовка за печат на Windows: PrintDialog, PrintSetupDialog и PageSetupDialog. Първият от тях предоставя достъп до стандартния диалогов прозорец за печат, вторият - до диалоговия прозорец за настройки на печат, а третият - до диалоговия прозорец за настройки на страницата.

Свойствата, притежавани от тези компоненти, са предназначени главно за директен обмен на информация между приложението и диалоговия прозорец или по-скоро дори с неговите съставни елементи. И така, за диалоговия прозорец за печат (PrintDialog, фиг. 14.2), това ще бъдат свойствата, отговорни за обхвата на печат и броя на копията. По-специално, свойството Copies е отговорно за броя на копията, свойството PrintRange е отговорно за типа диапазон, който може да приеме една от 3 стойности - всички (prAllPages), определени страници (prPageNums) или избран фрагмент ( prSelection). В този случай, ако е избран диапазон по страници, тогава неговите граници ще се определят от свойствата FromPage и ToPage. Можете да ограничите границите на избора на тези стойности от потребителя по време на работата му с диалоговия прозорец, като използвате свойствата MaxPage и MinPage.


Ориз. 14.2. Диалогов прозорец за печат

Както повечето други диалогови прозорци, диалоговият прозорец за печат има свойството Опции, което ви позволява да персонализирате външния вид и поведението на диалоговия прозорец. Ето описание на значенията на неговите флагове:

  • poDisablePrintToFile - Деактивира (прави недостъпна) опцията за печат във файл, приложима само ако флагът poPrintToFile е активиран;
  • poHelp - Показва бутон за помощ в диалогов прозорец;
  • poPageNums – Разрешава опцията за отпечатване на набор от страници;
  • poPrintToFile - Показва превключването на изход към файл;
  • poSelection - Прави достъпна опцията за отпечатване на селекцията;
  • poWarning - Проверява дали избраният принтер е наличен и издава предупреждение, ако устройството не е налично.

Важно е да разберете, че самият диалогов прозорец за печат не прави нищо. Всъщност той предоставя само потребителски интерфейс за избор на диапазон на печат и определяне на броя на копията. По-нататъшната обработка на получената информация трябва да се извърши от самото приложение, за което се използва обектът Printer (виж Глава 9). По-специално, обектът "принтер" има свойството Copies, указващо броя на копията, така че от тази гледна точка всичко е просто, просто трябва да запомните да включите модула Printers в блока Uses, тогава всичко, което остава, е да задайте подходящото свойство:

Printer.Copies:=PrintDialog1.Copies;

Редица други свойства на обекта Printer се конфигурират с помощта на диалоговия прозорец за настройки на печат, PrinterSetupDialog. Въпреки това, за разлика от диалоговия прозорец за печат, промените, направени от потребителя в диалоговия прозорец за настройки, а именно размер на хартията, подаващо устройство и ориентация на страницата, ще бъдат приложени автоматично. Това до голяма степен се дължи на факта, че тези настройки са пряко зависими от хардуера: в края на краищата не можете да зададете размер на хартията, който не се поддържа от принтера, или да зададете устройство, което не е физически достъпно като тава за подаване.

Друг диалогов прозорец, свързан с печата, е PageSetupDialog, въведен в Delphi 7. Той позволява на потребителя да определи ориентацията на страницата (портретна или пейзажна), да зададе размера на страницата и източника на захранване и да зададе полета. С други думи, този диалогов прозорец предоставя повече опции за избор на настройки на страницата от PrinterSetupDialog. С помощта на свойството Options обаче можете да изключите определени настройки, като например избор на размер на листа, ориентация, полета или подаващо устройство:

  • psoDefaultMinMargins - Взема предвид минималните стойности, зададени в свойствата за полетата на страницата;
  • psoDisableMargins - Деактивира UI елементи, свързани със задаване на полета;
  • psoDisableOrientation - Деактивира UI елементи, свързани с избора на ориентация на страницата;
  • psoDisablePagePainting - Деактивира показването на демонстрационния чертеж;
  • psoDisablePaper - Деактивира елементите на интерфейса, свързани с размера на хартията и подаването;
  • psoDisablePrinter - Деактивира бутона за избор на принтер;
  • psoMargins - Задава първоначалните стойности на полето на стойностите, посочени от свойствата на диалога. В противен случай той използва стойностите по подразбиране;
  • psoMinMargins - Задава минималните стойности на полето на стойностите, посочени от свойствата на диалоговия прозорец. В противен случай той използва стойностите по подразбиране;
  • psoShowHelp - Прави достъпен бутона за помощ;
  • psoWarning - Показва предупреждение, ако системата няма избран принтер по подразбиране.

Що се отнася до тези параметри, които не се присвояват автоматично на принтера (по-специално полета), те са представени от свойствата на компонента PageSetupDialog. Това са свойствата MarginLeft, MarginTop, MarginRight и MarginBottom, които отговарят съответно за полетата отляво, отгоре, отдясно и отдолу. В същото време има и възможност за ограничаване на минималния размер на маржа, което става чрез активиране на флага psoDefaultMinMargins, а самите стойности се задават с помощта на свойствата MinMarginLeft, MinMarginTop, MinMarginRight и MinMarginBottom. Типът данни за всички тези свойства е цяло число, но въпросът е какви единици представляват. На този въпрос отговаря свойството Units, което може да приема 3 стойности:

  • pmDefault - използват се единици по подразбиране;
  • pmInches - стойностите се интерпретират като стотни от инча;
  • pmMillimeters - Стойностите се интерпретират като стотни от милиметъра.

Същите единици се прилагат не само към полетата, но и към още 2 свойства - PageWidth и PageHeight, които са размерите на страницата по ширина и височина. Така че, ако свойството Units е зададено на pmMillimeters и потребителят избере лист A4 като носител, тези свойства ще приемат стойности от 21000 и 29700, т.е. 210 мм и 297 мм.

Подобно на файловите диалогови прозорци, диалоговите прозорци за печат имат един собствен метод, Execute, който трябва да се използва за извикване на диалоговия прозорец, докато програмата работи.

Диалогов прозорец за шрифтове

Диалоговите прозорци за отваряне на файлове и печат могат да бъдат приписани на групата за въвеждане и извеждане на данни. Може би само диалоговият прозорец за настройки на страницата се отнася до тяхното форматиране. В същото време има и диалози, фокусирани конкретно върху форматирането. По-конкретно, това е диалоговият прозорец с опции за шрифтове, представен от компонента FontDialog.

Основното свойство на този диалог може да се нарече свойство Font, с помощта на което този диалог обменя информация за шрифта с програмата. Вече сме донякъде запознати с типа TFont, по-специално с неговите свойства цвят, име, размер и стил. Има също свойства Charset и Height, които дефинират съответно набора от символи и височината. В този случай стойността на височината директно зависи от размера на шрифта, определен от свойството Размер. В същото време свойството Size е важно за диалоговия прозорец с параметри на шрифта, тъй като потребителят определя това свойство в самия диалогов прозорец. Що се отнася до свойството Charset, неговите възможни стойности се определят от избрания шрифт. За OpenType шрифтове, базирани на Unicode, използвани в най-новите версии на Windows, са разрешени множество набори от символи, но за обикновени TrueType шрифтове има не повече от 2 набора, обикновено основният латински (127 ANSI знака) и един от допълнителните - Гръцки, източноевропейски, кирилица и др. Стойността на набора от символи се определя с помощта на константи, дефинирани в модула Graphics, или директно с числа. Така за ANSI ще бъде 0, за символни шрифтове - 2, а за кирилица - 204.

Подобно на други диалогови прозорци, диалоговият прозорец с опции за шрифт има свойството Опции. В този случай той има следния набор от флагове:

  • fdAnsiOnly - Прави достъпни за избор само шрифтове, които поддържат ANSI знаци. Знаковите шрифтове ще бъдат изключени;
  • fdApplyButton - Показва бутона "Приложи", действието за което може да се зададе с помощта на манипулатора на събития onApply;
  • fdEffects - Показва групата за модификация (ефекти на зачертаване, подчертаване и цвят на шрифта);
  • fdFixedPitchOnly - Прави достъпни само моноширинни шрифтове;
  • fdForceFontExist - Проверява за съществуването на въведен от потребителя шрифт и показва съобщение за грешка, ако такъв не съществува;
  • fdLimitSize - Позволява проверка за ограниченията на размерите на шрифта, посочени с помощта на свойствата MaxFontSize и MinFontSize;
  • fdNoFaceSel - Диалогът се появява без предварително избран шрифт;
  • fdNoOEMFonts - Изключва OEM шрифтове от списъка с налични шрифтове;
  • fdScalableOnly - Изключва немащабируеми (битови или тип 1) шрифтове от списъка;
  • fdNoSimulations - Показва само онези лица, които са изрично дефинирани във файловете с шрифтове. Не се предлагат генерирани курсив и удебелени лица;
  • fdNoSizeSel - Диалогът се появява без предварително избран размер;
  • fdNoStyleSel - Диалогът се появява без предварително избран стил;
  • fdNoVectorFonts - Изключва векторни ("плотерни") шрифтове;
  • fdShowHelp - Показва бутон за помощ в диалогов прозорец;
  • fdTrueTypeOnly - Прави достъпни само TrueType шрифтове;
  • fdWysiwyg - Показва само шрифтове, налични за екран и принтер (с изключение на TrueType).

Най-често диалоговият прозорец за шрифтове се използва заедно с текстов редактор. Например, ако имаме приложение, състоящо се от многоредов редактор (компонент Memo) и предназначено за преглед на текстови файлове. Такова приложение ще има минимум 2 визуални компонента - редактор и бутон за извикване на диалоговия прозорец за отваряне на файл, както и 1 невизуален, който е същинският диалогов прозорец за отваряне на файл. Можем да дадем на потребителя възможността да променя шрифта, който файловете се показват в редактора, за което се нуждаем от компонент FontDialog и бутон за достъп до този диалог. Не боли да добавите още един бутон - за излизане от програмата. Така ще получим приложение, чийто външен вид в Delphi IDE ще бъде приблизително същият, както е показано на фиг. 14.3.


Ориз. 14.3. Приложение за преглед на текстови файлове

От свойствата, присвоени на използваните компоненти, отбелязваме само свойствата Caption за всичките 3 бутона, както и свойството Filter за диалоговия прозорец за отваряне на файл. Нека се дефинира така:

Текст|*.txt;*.bat;*.ini;*.pas;*.dpr|Всички|*.*

В този случай филтърът ще има 2 опции: "текст" (за файлове с разширения txt, bat, ini, pas и dpr), както и "всички", за файлове с произволно разширение. След това остава да добавим манипулатори на събития за събитието OnClick за всичките 3 бутона, в резултат на което ще получим програмата, чийто код е показан в листинг 14-1.

Листинг 14.1.Изходен код за преглед на файлове с избор на шрифт

единица единица 1; интерфейсът използва Windows, Classes, Controls, Forms, Dialogs, StdCtrls; тип TForm1 = class(TForm) Memo1: TMemo; Бутон1: TButton; Бутон2: TButton; Бутон3: TButton; OpenDialog1: TOpenDialog; FontDialog1: TFontDialog; процедура Button1Click(Подател: TObject); процедура Button2Click(Подател: TObject); процедура Button3Click(Подател: TObject); var Form1: TForm1; изпълнение ($R *.dfm) процедура TForm1.Button1Click(Sender: TObject); започнете, ако не OpenDialog1.Execute тогава излезте; Memo1.Lines.LoadFromFile(OpenDialog1.FileName); край; процедура TForm1.Button2Click(Подател: TObject); започнете, ако не FontDialog1.Execute след това излезте; Memo1.Font:=FontDialog1.Font; край; процедура TForm1.Button3Click(Подател: TObject); започнете отблизо; край; край.

Както се вижда от процедурата, която обработва натискането на бутона "Шрифт", за да промените всички параметри на шрифта наведнъж, е достатъчно да присвоите свойството Font на компонента на редактора към стойността на едноименното свойство на диалоговия прозорец. Ако трябва да зададем само част от атрибутите (например само името на шрифта и размера на шрифта), тогава трябва да зададем отделно съответните свойства на типа TFont:

Memo1.Font.Name:=FontDialog1.Font.Name; Memo1.Font.Size:=FontDialog1.Font.Size;

По същия начин може да се извърши и обратната операция, т.е. ако трябва да гарантираме, че когато се извика диалоговият прозорец, всички свойства са зададени в съответствие с тези, които редакторът има, тогава преди да извикаме неговия метод Execute, ще бъде достатъчно да присвоим свойството Font на диалоговия прозорец на стойността на Font собственост на редактора.

Цветен диалог

Диалоговият прозорец с опции за шрифт ви позволява да зададете всякакви опции за шрифт, включително цвят. Но не е проектиран да променя цвета на фона. За тези цели трябва да използвате специален диалогов прозорец за избор на цвят, във VCL той е представен от компонента ColorDialog. По отношение на свойствата той е подобен на диалоговия прозорец с опции, като единствената разлика е, че вместо свойство Font, което указва шрифт, има свойство Color, което указва цветовете.

Що се отнася до свойството Options, което е типично за диалогови прозорци, то има само 5 флага за ColorDialog:

  • cdFullOpen - Показва диалога в разширен вид, с палитра за избор на произволни цветове;
  • cdPreventFullOpen - Не позволява на потребителя да отваря диалогов прозорец за избор на произволни цветове;
  • cdShowHelp - Показва бутон за помощ в диалогов прозорец;
  • cdSolidColor - Указва на ОС да използва най-близкия системен цвят (от фиксираната палитра на Windows) вместо избора на потребителя:
  • cdAnyColor - Позволява на потребителя да избере цвят, който може да бъде показан само чрез смесване на множество цветове (което е от значение, ако дълбочината на цвета е по-малка от 24 бита).

По подразбиране се предлага палитра, състояща се само от 48 цвята, освен това други 16 цвята могат да бъдат зададени от разработчика чрез свойството CustomColors. Това свойство е от тип TStrings и трябва да се състои от низове от тип име=стойност, където името е думата Цвят и буква, от a до p по азбучен ред (общо максимум 16 опции), а стойността е цвят, определен с помощта на RGB- тройка:

ЦвятA=00CCDD ЦвятB=DFCA72 ... ЦвятP=234567

Ако потребителят отвори диалоговия прозорец (ако не е забранен от флага cdPreventFullOpen) или диалоговият прозорец първоначално се отваря изцяло (флагът cdFullOpen), след това или визуално, използвайки палитрата, или посочвайки числени стойности във формат HSB или RGB , потребителят ще може да избере всеки цвят ( Фиг. 14.4).


Ориз. 14.4. Свит (вляво) и разширен (вдясно) диалогов прозорец за избор на цвят

За да илюстрираме как работи този диалогов прозорец, нека добавим компонент ColorDialog и друг бутон към приложението в списък 14-1, което ще наречем Фон. В този случай кодът за събитието OnClick ще бъде както следва:

Процедура TForm1.Button4Click(Sender: TObject); begin ColorDialog1.Color:=Memo1.Color; ако не ColorDialog1.Execute тогава излезте; Memo1.Color:=ColorDialog1.Color; край;

Тук цветът на фона на редактора първо се присвоява на диалоговия прозорец, след което диалоговият прозорец се извиква и в случай на положителен отговор фонът на редактора се присвоява с нов цвят. Така обновеното приложение може да се види в директория Demo\Part3\Dlg2.

RTF редактор

Обсъдените по-горе диалогови прозорци за работа с шрифтове и цвят са от най-голяма стойност за форматиране на текст. За тези цели Windows има специален компонент - редактор на богат текст, представен във VCL библиотеката от компонента RichEdit, свързан с компонентите на Win32. Този компонент всъщност прави същото като всички останали компоненти от тази група - осигурява лесен и удобен достъп до един от стандартните системни контроли, като в този случай е представен от отделен системен файл - richedit32.dll.

В йерархията на VCL класовете компонентът RichEdit е наследник на класа TCustomMemo, на базата на който е изграден „обикновеният“ многоредов редактор. В същото време този компонент има редица свойства и методи, които позволяват, от една страна, форматиране на текст и, от друга страна, предоставяне на редица сервизни функции, като търсене на съвпадения или печат. Общо редакторът на богат текст има над 100 свойства на свое разположение. Само 12 обаче са дефинирани директно в класа TCustomRichEdit, на базата на който е създаден въпросният компонент, докато редица от тях - HideSelection, Lines, SelLength, SelStart и SelText са само предефиниране на едноименните свойства от редакторите, които вече разгледахме. В резултат на това не са останали толкова много нови свойства на този компонент за разглеждане - вижте таблица 14.3.

Таблица 14.3. Родни свойства на RTF редактора
ИмотТипОписание
DefAttributesTTextAttributesУказва характеристиките на текста по подразбиране
Конвертор по подразбиранеTConversionClassУказва класа на обекта, който ще се използва за конвертиране на текстовия формат. Преобразувателите на обикновен текст от и към RTF се използват автоматично
Скриване на ленти за превъртанеБулева стойностУказва дали лентите за превъртане трябва да се показват само когато са необходими
PageRectTRectУказва размерите на страницата (в пиксели), която да се използва за печат.
параграфTParaAttributesУказва опции за форматиране на абзац
обикновен текстБулева стойностУказва вида на текста - форматиран (false) или обикновен (true)
SelAttributesTTextAttributesОпределя характеристиките на текста на селекцията

Свойството DefAttributes на типа TTextAttributes, което задава параметрите на шрифта, е подобно по същество на свойството Font, което се намира в много други компоненти, но е достъпно само по време на изпълнение. В същото време, по време на инициализация на приложението, въз основа на параметрите, посочени за свойството Font, се присвояват стойностите за свойството DefAttributes. Що се отнася до типа TTextAttributes, той има една важна разлика от типа TFont, а именно свойството ConsistentAttributes, което показва разликите между избрания текстов фрагмент и останалата част от текста. Тази информация обаче е по-полезна за друго свойство на редактора, а именно SelAttributes. Именно това свойство ви позволява да промените параметрите на избраната част от текста или частта, където се намира каретката за въвеждане. Тъй като текстът може да бъде избран само докато приложението работи, това свойство е достъпно само по време на изпълнение.

За да разберем по-добре същността на свойствата DefAttributes и SelAttributes, нека създадем малко приложение, което да показва информация за състоянието и на двете свойства за компонента RichEdit. За да направим това, в допълнение към самия компонент RichEdit, ще ни трябват и 2 компонента от типа Memo - за показване на информация, както и бутон, като щракнете върху който ще се покаже информацията, която ни интересува.

Освен това се нуждаем от готов RTF файл, който ще съдържа текст, предварително форматиран по различни начини. Можете да го подготвите във всеки текстообработващ процесор, включително Word или WordPad, само трябва да посочите подходящия файлов формат при запис. За да качите такъв файл, ще поставим още един бутон във формата. Резултатът е формуляр с RTF редактор, 2 бутона и 2 обикновени редактора (Фигура 14.5).


Ориз. 14.5. Приложение за тестване на DefAttributes и SelAttributes

За манипулатора на събитие OnClick на бутона "Изтегляне" ще бъде достатъчно да напишете следния код:

RichEdit1.Lines.LoadFromFile("simple.rtf");

Това предполага, че примерният текстов файл се нарича simple.rtf и се намира в същата директория като изпълнимия файл на приложението.

Що се отнася до кода, който показва информация за стойностите на изследваните свойства, тогава, като се има предвид, че и двата пъти ще трябва да изведем информация за обект от същия тип - TtextAttribuitrs, има смисъл първо да създадем процедура, която може получават необходимите данни за обработка и ги показват на посоченото място. Нека го наречем PrintAttrInfo и го дефинираме като публична процедура на класа TForm1:

Тип TForm1 = class(TForm) ... публична процедура PrintAttrInfo(a: ​​​​TTextAttributes; m: TMemo); край;

Изпълнението на тази процедура ще се състои в последователно добавяне на редове със стойности на атрибути към редактора, посочен като 2-ри аргумент:

Процедура TForm1.PrintAttrInfo(a: ​​​​TTextAttributes; m: TMemo); vars:string; начало m.Lines.Clear; //предварително изчистване на съдържанието m.Lines.Add("Charset: "+IntToStr(a.Charset)); //набор от знаци m.Lines.Add("Цвят: "+IntToStr(a.Color)); //цвят m.Lines.Add("Име: "+a.Име); //headset (за текстов изход на информация за вида на шрифта ще определим коя от 3-те възможни опции се използва) case a.Pitch of fpDefault: m.Lines.Add("Pitch: fpDefault"); fpVariable: m.Lines.Add("Pitch: fpVariable"); fpFixed: m.Lines.Add("Pitch: fpFixed"); край; m.Lines.Add("Размер: "+IntToStr(a.Size)); //размер (тъй като един шрифт може да има няколко атрибута на свойството Style наведнъж, нека ги проверим всички) if fsBold в a.Style then s:="fsBold "; ако fsItalic в a.Style тогава s:=s+"fsItalic "; ако fsUnderline в a.Style тогава s:=s+"fsUnderline "; ако fsStrikeOut в a.Style тогава s:=s+"fsStrikeOut "; m.Lines.Add("Стил: ["+s+"]"); край;

И накрая, за бутона "Покажи" остава да напишем 2 извиквания на дефинираната от нас процедура PrintAttrInfo:

PrintAttrInfo(RichEdit1.DefAttributes, Memo1); PrintAttrInfo(RichEdit1.SelAttributes, Memo2);

Ако сега стартирате това приложение и щракнете върху бутона "Покажи", ще видите, че едни и същи стойности се показват и за двете свойства. Ако заредите файл с форматиран текст, тогава стойностите на свойството SelAttributes ще се променят. Освен това, ако в качения файл са приложени различни шрифтове или стилове на дизайн, тогава чрез промяна на текущата позиция на каретката ще бъде възможно да видите текущите атрибути на шрифта. В същото време, ако промените стойността на свойството Font, тогава не само стойността на свойството DefAttributes ще се промени, но и параметрите на целия текст. За да проверите това, можете да добавите друг бутон, който ще извика компонента FontDialog и ще напише следния код за него:

FontDialog1.Font:=RichEdit1.Font; if FontDialog1.Execute then RichEdit1.Font:=FontDialog1.Font;

По този начин, след достъп до диалоговия прозорец на шрифта и присвояване на нови данни на свойството Font, външният вид на целия текст ще се промени. Готовият пример може да бъде намерен в директорията Demo\Part3\Rich1.

Друго свойство, специфично за RTF редактора, е Paragraph. Позволява ви да зададете редица текстови опции, свързани с форматирането на абзац, включително подравняване, стил на списък, отстъп и табулатори. Той е от тип TParaAttributes, който от своя страна съдържа следните свойства:

  • Подравняване - определя подравняването, може да приема стойностите taLeftJustify, taRightJustify, taCenter съответно за ляво, дясно и централно подравняване;
  • FirstIndent - определя размера на "червената линия" в пиксели;
  • LeftIndent и RightIndent - определят съответно отстъпи от лявото и дясното поле в пиксели;
  • Номериране - отговаря за стила на "номериране", независимо дали параграфът трябва да бъде форматиран като елемент от списък (nsBullet) или не (nsNone).

Когато работите с редактор за форматиран текст, имайте предвид, че различните версии на Windows поддържат различни версии на редактора. И така, в Windows 95 това е версия 1.0, в Windows 98 - 2.0, а в Windows 2000 и XP - 3.0. Въпреки това, ако Office 97 или MSIE 4.0 е инсталиран на система Windows 95, функцията ще бъде надстроена до версия 2.0. Разбира се, новите версии са обратно съвместими с предишните, но на практика програма, която използва този компонент и работи под Windows 95, ще се държи различно от същата програма, работеща в Windows XP. Това се дължи главно на грешки, допуснати по време на разработването на първото издание на този контрол за Windows 95. И въпреки че е малко вероятно сега да намерите компютър с тази версия на операционната система и дори без инсталиран Office, изискванията за обратна съвместимост налагат Borland от версия поддържа вашия компонент RichEdit обвързан с версия 1.0 на този Windows елемент. Следователно, ако на практика трябва да разработите приложение, изградено около този компонент (т.е. приложение, в което текстовият редактор е един от най-важните компоненти), тогава използвайте компоненти на трети страни, които са насочени към по-нови версии на този системен елемент, например RichEdit98. По-специално, в допълнение към по-предсказуемото поведение и липсата на специфични „функции“, новите версии имат по-широка функционалност, например възможност за оправдаване на текст по ширина, както и много повече опции за дизайн. В същото време, ако RichEdit е необходим само като обикновен бележник с готови функции за търсене и печат, тогава функционалността на стандартен компонент ще бъде достатъчна.

Пример за текстов редактор

Всички стандартни диалогови прозорци, които разгледахме, заедно с RTF компонента, могат да се използват в рамките на едно приложение - текстов редактор. Ето защо, за да разберем по-добре тяхната употреба и в същото време да използваме редица други компоненти, обсъдени по-рано в тази част на книгата, ще създадем приложение, което е прост текстов редактор - леко опростен аналог на редактора на WordPad включени в Windows.

Но преди да поема разработването на приложението, бих искал да се спра на такъв аспект като правилата за именуване на компоненти. По подразбиране, както знаем, Delphi ги наименува, като премахва първата буква (T) и добавя сериен номер (1,2,3). Но на практика това не е много удобно, тъй като в достатъчно голяма програма ще бъде трудно да се разбере какво представлява Button22 или CheckBox17. Поради тази причина има някои общи правила за именуване на компоненти. Те се свеждат до факта, че се използва префикс от 2-3-4 букви (или, по избор, суфикс) за идентифициране на принадлежността на обекта към клас, в комбинация с дума, която отразява същността на този обект. Например текстово поле (клас TEdit), предназначено за въвеждане на потребителско име, според такива правила може да се нарече, да речем, EdtUserName или UserNameEd, а бутон (TButton), за да стартирате нещо - BtnStart или StartBtn.

И така, за текстов редактор трябва да създадем ново приложение и след това да поставим във формата му редица компоненти, необходими за работата му. На първо място, това е главното меню (MainMenu) и, разбира се, самият RichEdit. Очевидно стандартните диалогови прозорци също ще бъдат полезни, включително диалогови прозорци за работа с файлове (OpenDialog и CloseDialog), диалогови прозорци за печат (PrintDialog и PrintSetupDialog), както и диалогови прозорци за работа с цвят и шрифтове (FontDialog и ColorDialog). Сега за компонента RichEdit, задайте свойството Align на AlClient, така че областта на редактора да заема цялото свободно пространство във формуляра (фиг. 14.6).


Ориз. 14.6. Прозорец на текстов редактор в началото на разработката

След като поставим нужните компоненти във формуляра, ще зададем имената, както следва:

  • Форма - MainFrm;
  • Главно меню - MainMenu;
  • Редактор - RichEd;
  • Диалози - OpenDlg, SaveDlg, PrintDlg, PrintSetupDlg, FontDlg и ColorDlg;

Сега можете да започнете да подреждате главното меню. Нека предоставим 3 раздела в него: Файл, Редактиране и Форматиране. За да направите това, отворете редактора на менюто (чрез двукратно щракване върху компонента MainMenu) и създайте тези 3 елемента от главното меню. Те автоматично ще получат имената N1, N2 и N3, но ние няма да ги променяме по простата причина, че тези елементи са просто заглавия на самите менюта и няма да се налага да ги споменаваме в програмния код.

След това попълнете менюто "Файл", като създадете в него елементите "Отвори ...", "Запиши ...", "Печат ...", "Принтер ..." и "Изход". Нека ги наречем OpenFileM, SaveFileM, PrintFileM, PrintSetupFileM и ExitFileM. Често срещаните FileM суфикси в бъдеще ще ни кажат, че имаме работа с меню от файлови операции. А многоточието след думата в подписа на първите 4 елемента от менюто ще подкани потребителя, че тези елементи не се изпълняват сами, а предизвикват диалогов прозорец. Появата на дизайнера на менюто на този етап ще бъде както е показано на фиг. 14.7. Самото меню в програмата ще изглежда почти по същия начин, което може да ни наведе на мисълта за необходимостта от добавяне на разделители преди елементите "Печат" и "Изход". За да направите това, изберете желания елемент в конструктора и натиснете клавиша Ins на клавиатурата, след което в новия елемент, който се появява, посочете символа "-" като стойност на свойството Caption.

Следващият елемент, който имаме, е менюто "Редактиране". Нека поставим в него стандартните елементи "Отмяна", "Изрязване", "Копиране", "Поставяне" и "Избиране на всички", като им даваме имена съответно UndoEdM, CutEdM, CopyEdM, InsertEdM и SelAllEdM. В този случай след анулирането не пречи да поставите разделител. И накрая, в последната група - "Формат" - ще добавим елементите "Шрифт ..." и "Цвят ...", наричайки ги FontFmtM и ColorFmtM.

Сега нека подготвим диалоговите прозорци на файла за работа. Тъй като имаме работа с текстов редактор от типа RTF, основният тип файл ще бъде само RTF. Все пак няма да навреди да предвидите възможност за отваряне на други типове файлове, по-специално файлове с обикновен текст (.txt). По този начин свойството Филтър в инспектора на обекти трябва да бъде зададено на следната стойност:

RTF файлове|*.rtf|ASCII текстови файлове|*.txt|Всички файлове|*.*

Що се отнася до свойството DefaultExt, би било подходящо да посочите rtf за диалоговия прозорец за запазване.

Вече е направено достатъчно за започване на подготвителната работа, време е да започнем да разработваме действителните работни функции на програмата. По-специално, за елемента "Отвори" от менюто "Файл" за събитието OnClick е достатъчно да напишете следния код:

Ако OpenDlg.Execute тогава RichEd.Lines.LoadFromFile(OpenDlg.FileName);

За да го запазите, би било разумно да се опитате да дадете на файла предварително име, което да съответства на името на файла в отворения диалогов прозорец:

Ако ако OpenDlg.FileName"" тогава SaveDlg.FileName:=OpenDlg.FileName; if SaveDlg.Execute then RichEd.Lines.SaveToFile(SaveDlg.FileName);

Извикванията към други диалогови прозорци в програмата се извършват по подобен начин. Що се отнася до елементите на менюто "Редактиране", също не трябва да има проблеми: достатъчно е да се обърнете към съответните методи на самия редактор, за да извършите съответните операции. В този случай обаче би било полезно операцията предварително да се провери за допустимост. Например, преди да извършите отмяната (метод Undo), добра идея е да проверите състоянието на свойството флаг CanUndo:

Ако RichEd.CanUndo тогава RichEd.Undo;

Същото важи и за операциите с клипборда - няма смисъл да се опитвате да копирате избрания текст в клипборда, ако няма такъв:

Ако RichEd.SelText"" тогава RichEd.CutToClipboard;

Трябва да се обясни, може би, операцията за поставяне от клипборда: тук би било полезно първо да се уверите, че наистина има текст в него. За да направите това, модулът Clipbrd трябва да бъде добавен към списъка с използвани модули (употреби), самата процедура за проверка ще изглежда така:

Ако Clipboard.HasFormat(CF_TEXT) тогава ...

Тук имаме достъп до глобалния обект Clipboard (който се създава автоматично, като Screen или Application) и използвахме неговия метод HasFormat, за да се уверим, че информацията в клипборда е текст.

След като създадете манипулатори на събития за всички елементи от менюто, остава да запазите проекта, като изберете "main" като име на файла на формуляра и "myedit" като име на файла на проекта. По този начин, пълният изходен код за основния модул ще бъде нещо като листинг 14.2.

Листинг 14.2.Изходният код на редактора MyEdit

главен блок; интерфейсът използва Windows, Съобщения, SysUtils, Варианти, Класове, Графики, Контроли, Формуляри, Диалози, Менюта, StdCtrls, ComCtrls, ToolWin, Clipbrd; тип TMainFrm = class(TForm) MainMenu: TMainMenu; Лента с инструменти: TToolBar; RichEd: TRichEdit; OpenDlg: TOpenDialog; SaveDlg: TSaveDialog; PrintDlg: TPrintDialog; PrintSetupDlg: TPrinterSetupDialog; FontDlg: TFontDialog; ColorDlg: TColorDialog; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; OpenFileM: TMenuItem; SaveFileM: TMenuItem; PrintM:TMenuItem; PrintSetupM: TMenuItem; ExitFileM: TMenuItem; N4: TMenuItem; N5: TMenuItem; UndoEdM: TMenuItem; N6: TMenuItem; CutEdM: TMenuItem; CopyEdM: TMenuItem; InsertEdM: TMenuItem; SelAllEdM: TMenuItem; FontFmtM: TMenuItem; ColorFmtM: TMenuItem; процедура OpenFileMClick(Подател: TObject); процедура SaveFileMClick(Подател: TObject); процедура PrintMClick(Подател: TObject); процедура PrintSetupMClick(Подател: TObject); процедура ExitFileMClick(Sender: TObject); процедура FontFmtMClick(Подател: TObject); процедура ColorFmtMClick(Подател: TObject); процедура UndoEdMClick(Подател: TObject); процедура CutEdMClick(Подател: TObject); процедура CopyEdMClick(Подател: TObject); процедура InsertEdMClick(Подател: TObject); процедура SelAllEdMClick(Sender: TObject); край; var MainFrm: TMainFrm; изпълнение ($R *.dfm) процедура TMainFrm.OpenFileMClick(Подател: TObject); start if OpenDlg.Execute then RichEd.Lines.LoadFromFile(OpenDlg.FileName); край; процедура TMainFrm.SaveFileMClick(Подател: TObject); start if if OpenDlg.FileName"" then SaveDlg.FileName:=OpenDlg.FileName; if SaveDlg.Execute then RichEd.Lines.SaveToFile(SaveDlg.FileName); край; процедура TMainFrm.PrintMClick(Подател: TObject); start if PrintDlg.Execute then RichEd.Print(""); край; процедура TMainFrm.PrintSetupMClick(Подател: TObject); започнете PrintSetupDlg.Execute; край; процедура TMainFrm.ExitFileMClick(Подател: TObject); започнете отблизо; край; процедура TMainFrm.FontFmtMClick(Подател: TObject); begin FontDlg.Font.Name:=RichEd.SelAttributes.Name; FontDlg.Font.Color:=RichEd.SelAttributes.Color; FontDlg.Font.Charset:=RichEd.SelAttributes.Charset; FontDlg.Font.Size:=RichEd.SelAttributes.Size; FontDlg.Font.Style:=RichEd.SelAttributes.Style; ако не FontDlg.Execute тогава излезте; RichEd.SelAttributes.Name:=FontDlg.Font.Name; RichEd.SelAttributes.Color:=FontDlg.Font.Color; RichEd.SelAttributes.Charset:=FontDlg.Font.Charset; RichEd.SelAttributes.Size:=FontDlg.Font.Size; RichEd. SelAttributes.Style:=FontDlg.Font.Style; край; процедура TMainFrm.ColorFmtMClick(Подател: TObject); begin ColorDlg.Color:=RichEd.SelAttributes.Color; ако не ColorDlg.Execute тогава излезте; RichEd.SelAttributes.Color:=ColorDlg.Color; край; процедура TMainFrm.UndoEdMClick(Подател: TObject); започва, ако RichEd.CanUndo тогава RichEd.Undo; край; процедура TMainFrm.CutEdMClick(Подател: TObject); започнете, ако RichEd.SelText"" тогава RichEd.CutToClipboard; край; процедура TMainFrm.CopyEdMClick(Подател: TObject); започнете, ако RichEd.SelText"" тогава RichEd.CopyToClipboard; край; процедура TMainFrm.InsertEdMClick(Подател: TObject); start if Clipboard.HasFormat(CF_TEXT) then RichEd.PasteFromClipboard; край; процедура TMainFrm.SelAllEdMClick(Подател: TObject); започнете RichEd.SelectAll; край; край.

Ако сега стартирате програмата (готовият изходен код е в директорията Demo\Part3\Editor), можете да се уверите, че тя наистина работи - отваря файлове, позволява ви да въвеждате и редактирате текст, променяйки дизайна му. От недостатъците може веднага да се подчертае само надписът "RichEd", който първоначално съдържа редакторът, и липсата на ленти за превъртане, ако има повече текст, отколкото се побира в прозореца. Първият недостатък се коригира чрез редактиране на свойството Lines чрез премахване на ненужния текст, а вторият чрез задаване на свойството ScrollBars на ssBoth. Имайте предвид, че ако оставите свойството HideScrollBars зададено на true, лентите за превъртане ще се показват само когато са необходими.

По-сериозен недостатък е способността ни да работим не само с RTF файлове, но и с обикновени текстови файлове. Факт е, че дори ако изберете типа на текстовите файлове и посочите разширението txt при записване, програмата пак ще запази файла за маркиране. Но, както знаем, компонентът RichEdit има свойство PlainText, което отговаря за текущия формат. По този начин остава само да зададете желаната стойност за това свойство в момента, преди да запазите файла. И за да определим кой формат е избрал потребителят, използваме свойството FilterIndex на диалоговия прозорец за запазване:

Ако SaveDlg.Execute тогава започнете RichEd.PlainText:=(SaveDlg.FilterIndex>1); RichEd.Lines.SaveToFile(SaveDlg.FileName); RichEd.PlainText:=false; край;

Имайте предвид, че след запазване, RTF форматът се инсталира принудително. Това е необходимо в смисъл, че следващата стъпка на потребителя може да бъде да се опита да отвори RTF файл, който не може да бъде обработен, ако режимът PlainText е активиран.

Намерете и заменете диалогови прозорци

Работата с текст не се ограничава до промяна на настройките на шрифта. Често много по-полезни операции са като търсене на подниз и евентуалното му заместване с някакъв друг текст. За тези цели са предвидени и стандартни диалогови прозорци - FindDialog и ReplaceDialog. Свойствата на тези компоненти включват стандартните за диалогови прозорци с опции, както и група свойства, които определят позицията на диалоговия прозорец на екрана - отляво, отгоре и позиция. Но най-важното, разбира се, е свойството FindText, което всъщност съдържа низа за търсене. Диалоговият прозорец за замяна има още едно свойство - ReplaceText , което дефинира низа, който ще бъде заменен.

Но нека започнем със свойството Options. За диалогови прозорци за търсене и замяна има следния набор от флагове:

  • frDisableMatchCase - Деактивира опцията "Case Sensitive";
  • frDisableUpDown - Деактивира опцията за избор на посока на търсене;
  • frDisableWholeWord – Деактивира опцията „Само цялата дума“;
  • frDown - Разрешава опцията за посока на търсене "Надолу" (ако този флаг е изключен, ще бъде избрана посока "Нагоре");
  • frFindNext – Този флаг се активира автоматично, когато потребителят щракне върху бутона „Намери следващ“;
  • frHideMatchCase - Премахва опцията "Case Sensitive";
  • frHideWholeWord - Премахва опцията "Само цялата дума";
  • frHideUpDown - Премахва опцията за избор на посока на търсене;
  • frMatchCase - Показва, че е избрана опцията "Case Sensitive";
  • frReplace - Показва, че трябва да се извърши замяната на даденото намерено събитие (само за диалоговия прозорец за замяна);
  • frReplaceAll - Показва, че всички намерени събития трябва да бъдат заменени (само диалогов прозорец за замяна);
  • frShowHelp - Показва бутон за помощ в диалогов прозорец;
  • frWholeWord – Показва, че е избрана опцията Whole Word Only.

По подразбиране е активиран само флагът frDown, което прави избрана посоката на търсене към края на документа.

Използването на тези диалогови прозорци предполага използването на самостоятелно разработени функции за търсене и замяна. В същото време компонент като RTF редактора има метод FindText, който значително опростява задачата. Дефинира се така:

Функция FindText(const SearchStr: низ; StartPos, Length: Integer; Опции: TSearchTypes): Integer;

Тук SearchStr е низът за търсене, StartPos е местоположението, от което да започне търсенето, а Length е местоположението, до което да се търси. Като Опции можете да посочите флаговете stWholeWord и stMatchCase, които включват разпознаване на цели думи и регистър. Така можем да надградим нашия текстов редактор, така че да поддържа търсене на текст (надстроената версия се намира в директорията Demo\Part3\Editor2).

Първо нека поставим и двата въпросни компонента - FindDialog и ReplaceDialog - във формата, като им дадем имената FindDlg и ReplaceDlg. След това отваряме конструктора на менюто и добавяме разделител и 2 нови елемента в секцията „Редактиране“ - „Намиране ...“ и „Замяна ...“, като ги именуваме съответно SearchEdM и ReplaceEdM. Сега, за елемента "Намиране", нека дефинираме процедурата за извикване на диалоговия прозорец за търсене:

Процедура TMainFrm.SearchEdMClick(Подател: TObject); започнете FindDlg.Execute; край; По този начин показваме само диалоговия прозорец. Самата процедура за търсене трябва да бъде поставена в манипулатора на събитие OnFind на самия диалогов прозорец. В най-простия случай трябва само да определи мястото на началото и края на търсенето, а в случай на намиране на желаното, трябва да подчертае намерения фрагмент. Така можем да получим нещо като следната процедура: procedure TMainFrm.FindDlgFind(Sender: TObject); var StartPos, ToPos, FoundPos: Цяло число; begin StartPos:=RichEd.SelStart+RichEd.SelLength; ToPos:=Length(RichEd.Text)-StartPos; FoundPos:=RichEd.FindText(FindDlg.FindText, StartPos, ToPos, ); ако FoundPos-1 тогава започва RichEd.SelStart:=FoundPos; RichEd.SelLength:=Дължина(FindDlg.FindText); RichEd.SetFocus; end else ShowMessage("Текстът не е намерен!"); край;

Тук първо се изчислява началната точка на търсене - StartPos, след това се определя дължината на търсенето - ToPos, в типичен случай тя трябва да е равна на размера на текста от началната точка на търсенето до края на документа, след което FindText самият метод се извиква и резултатът от неговата работа се присвоява на променливата FoundPos. След това, ако резултатът не е -1 (т.е. ако се намери срещане на подниза), текстовият фрагмент се избира и фокусът на въвеждане се дава на прозореца на редактора, в противен случай се показва „Текстът не е намерен“.

Недостатъкът на процедурата в тази форма е, че не отчита възможни промени, направени от потребителя в прозореца за търсене. По-специално, не са дефинирани нито опциите, чувствителни към малки и главни букви, нито опцията за търсене на дума. За да активираме тези опции, трябва да дефинираме променлива от тип TSearchTypes, която ще трябва да бъде зададена на една или друга стойност, в зависимост от състоянието на флаговете на диалоговия прозорец за търсене. Тази променлива (да я наречем Opt) трябва да бъде инициализирана преди извикването на метода FindText, така че добавяме следните редове код в началото на процедурата:

Ако frMatchCase в FindDlg.Options тогава Opt:=; ако frWholeWord в FindDlg.Options тогава Opt:=Opt+;

Сега нашата функция за търсене разпознава зададените от потребителя настройки, така че можем да преминем към прилагане на процедурата за подмяна. Всъщност диалогът за замяна се извиква по абсолютно същия начин - чрез извикване на метода Execute. В този случай процедурата за търсене, реализирана от диалоговия прозорец за замяна, ще бъде точно същата като тази на диалоговия прозорец за търсене - ще бъде достатъчно да промените името на компонента (вижте също листинг 14.3).

Що се отнася до процедурата за обработка на събитието OnReplace, което възниква, когато потребителят щракне върху бутона „Замени“ или „Замени всички“, в най-простия случай ще изглежда подобно, с единствената разлика, че ще бъде добавено, за да замени запис с текста, зададен от потребителя. А именно, след като маркирате намерения текст, добавете още един ред код:

RichEd.SelText:=ReplaceDlg.ReplaceText;

По този начин може да се счита, че е изпълнена една единствена подмяна. Ако обаче потребителят щракне върху бутона „Замени всички“, ще се извърши само една замяна. Следователно е необходимо да се използва цикъл с постусловие. В този случай цикълът трябва да бъде прекъснат след първата итерация, ако потребителят е щракнал върху бутона "Замени", а не върху "Замени всички", или ако търсеният низ не е намерен. Така получаваме следното условие:

Повторете ... докато (FoundPos=-1) или не (frReplaceAll в ReplaceDlg.Options);

Ако сега затворим целия блок от операции на процедурата в този цикъл, с изключение може би на първите 2 реда, които определят параметрите за търсене, стартираме програмата и се опитаме да заменим всички срещания, тогава можем да се уверим, че всичко работи чудесно. Единственият проблем е, че в края на работата, независимо дали са направени замени или не, ще получите съобщението "Текстът не е намерен". Това е така, защото при последната итерация, във всеки случай, блокът else на условния оператор ще бъде изпълнен, проверявайки за появата на търсения текст. Следователно е необходимо да извадим тази проверка от цикъла и за да определим дали нещо е намерено, използваме променлива брояч, която задаваме на 0 преди началото на цикъла и с всяка извършена замяна ще увеличаваме с 1 По този начин можем не само да издадем съобщение, че текстът не е намерен, но и да покажем броя на направените замени, ако потребителят щракне върху бутона „Замени всички“. Крайната процедура за подмяна е показана в листинг 14.3.

Листинг 14.3.Процедури за намиране и замяна за RTF редактора и ReplaceDialog

Процедура TMainFrm.ReplaceDlgFind(Подател: TObject); var StartPos, ToPos, FoundPos: Цяло число; Opt: TSearchTypes; start if frMatchCase in ReplaceDlg.Options then Opt:=; ако frWholeWord в ReplaceDlg.Options тогава Opt:=Opt+; StartPos:=RichEd.SelStart+RichEd.SelLength; ToPos:=Length(RichEd.Text)-StartPos; FoundPos:=RichEd.FindText(ReplaceDlg.FindText, StartPos, ToPos, Opt); ако FoundPos-1 тогава започва RichEd.SelStart:=FoundPos; RichEd.SelLength:=Дължина(ReplaceDlg.FindText); RichEd.SetFocus; end else ShowMessage("Текстът не е намерен!"); край; процедура TMainFrm.ReplaceDlgReplace(Подател: TObject); var i, StartPos, ToPos, FoundPos: Цяло число; Opt: TSearchTypes; start if frMatchCase in ReplaceDlg.Options then Opt:=; ако frWholeWord в ReplaceDlg.Options тогава Opt:=Opt+; i:=0; повторете StartPos:=RichEd.SelStart+RichEd.SelLength; ToPos:=Length(RichEd.Text)-StartPos; FoundPos:=RichEd.FindText(ReplaceDlg.FindText, StartPos, ToPos, Opt); ако FoundPos-1 тогава започва RichEd.SelStart:=FoundPos; RichEd.SelLength:=Дължина(ReplaceDlg.FindText); RichEd.SelText:=ReplaceDlg.ReplaceText; RichEd.SetFocus; вкл.(i); край; до (FoundPos=-1) или не (frReplaceAll в ReplaceDlg.Options); if i=0 then ShowMessage("Текстът не е намерен!") else if frReplaceAll in ReplaceDlg.Options then ShowMessage("Produced "+IntToStr(i)+" replacements"); край;

Така създадохме редактор, който по принцип може да прави всички неща, необходими в ежедневната работа. За удобство остава само да се дефинират комбинации от клавишни комбинации за основни действия, предимно за отваряне и запазване на файлове, както и за търсене и замяна (клавишни комбинации за редактиране на текст като Ctrl+Z или Ctrl+C се поддържат автоматично). За да зададете преки пътища, в създателя на менюто за менюто „Отваряне“ в свойството ShortCut изберете Ctrl+O, за „Запазване“ – ​​Ctrl+S, за „Намиране“ – Ctrl+F и за „Замяна“ – Ctrl+H. Всички тези комбинации са стандартни за тези действия в Windows и изобретяването на ваши собствени опции за стандартни действия е силно обезкуражено.

- Разширението (формат) са знаците в края на файла след последната точка.
- Компютърът определя типа на файла точно по разширение.
- По подразбиране Windows не показва разширенията на файловите имена.
- Някои знаци не могат да се използват в името и разширението на файла.
- Не всички формати са свързани с една и съща програма.
- По-долу са всички програми, с които можете да отворите RTF файла.

С лесната за използване програма Calibre управлението на библиотеката става наистина удобно. Калибър ви помага да организирате всичките си книги в организирана библиотека. Програмата ви позволява да извършвате тези операции в спокоен режим за относително кратко време. Програмата е оборудвана и с полезна функция за преобразуване на текстови формати, които най-често се използват в електронните книги. В допълнение към различните помощни програми, включени в програмата, които служат за конвертиране на формати, тя включва и интегратор на новини, както и функция, която ви позволява да синхронизирате данни с електронен четец.

LibreOffice е безплатен софтуерен пакет за работа с текст, електронни таблици, бази данни и др. В основата си това е безплатен аналог на добре познатия Microsoft Office с добавяне на нови функции, които не са в подобен платен пакет. Интерфейсът на този пакет е подобен на старите версии на "офиса", така че почти всеки потребител може да разбере приложението. Особено ако някога е работил с офис приложения. Пакетът включва няколко приложения, които изпълняват същите функции като техните колеги от Microsoft Office. Например, програмата Writer е почти пълно копие на Word с поддръжка на всички популярни файлови формати, включително ...

NI Transliterator е интересна програма, която ви помага да конвертирате транслитериран текст. Работи с руски и английски език. Осигурява минимално форматиране на текст. Позволява ви да изтегляте документи в RTF формат и да ги запазвате след обработка. Поддържа популярни системи за транслитерация и зададени от потребителя таблици. Работи с ГОСТ 16876-71 и руско-английска система. NI Transliterator поддържа преобразуване на знаци в текст в главни или малки букви. Помощната програма работи с функцията за промяна на кодирането на руски думи и помага да се преброи броят на знаците във всеки текст. Функция за броене...

Cool Reader е друг добър четец на електронни книги, който комбинира не само многофункционален преглед на файлове, но и говорещ. Като цяло тази програма е много благоприятна за запазване на зрението ви, тъй като тя максимално приспособява четенето на текста към очите ви и го прави по-плавно. Програмата разбира параграфи, заглавия, може да променя шрифта, да използва плавен преход и т.н. Друга особеност на програмата е поддръжката на синтезатори. Тези. Cool Reader може да използва всеки синтезатор за четене на книга, в който случай можете като цяло да се занимавате с бизнеса си, а не ...

WindowsOffice е удобен и малък аналог на обикновения офис пакет. Включва необходимите програми за работа с текстови документи, електронни таблици. Позволява ви да редактирате всички документи, дори ранните версии на MSWord. Подходящ за ежедневна употреба, не изисква активиране. Работи много по-бързо, запазва документи без замръзване. Поддържа колекция от шаблони. С WindowsOffice потребителят ще може да извършва същите операции като другото приложение. Позволява ви да вмъквате различни изображения в документа. Има версия за таблетни устройства. Лек, бърз...

Balabolka е програма за четене на глас текстови файлове в широка гама от формати DOCX, RTF, PDF, ODT, FB2 и HTML. Сега не е нужно да засаждате зрението си, докато четете тази или онази книга. Balabolka ще прочете всеки текст на глас, без значение на какъв език. Слуховото възприятие, както знаете, ви позволява да научите и запомните много по-голямо количество информация от обикновеното четене. И най-важното, по-бързо. Balabolka ще ви прочете всичко, докато вие спокойно правите нещо друго. Всяка книга, докато четете, създава определено настроение, но сега можете да го създадете с помощта на Balabolka. Процесът на възпроизвеждане може...

Calligra е уникално приложение, което предоставя набор от полезни помощни програми за взаимодействие с различни документи. Включва набор от полезни програми за работа с всякакъв текст, бази данни, електронни таблици, презентационни файлове. Приложението има Flow редактор за създаване и модифициране на блок-схеми, диаграми. За работа със сложни векторни графики има и програмата Carbon, която не е по-ниска по отношение на набор от опции на други редактори. Calligra включва специално приложение за автор за писане на ваши собствени книги. Една от програмите в пакета отговаря за създаването и редактирането на чертежи (Krita). Той е чудесен заместител...

Един от най-популярните офис пакети, характеризиращ се с изобилие от функции, сред които може да се отбележи възможността за проверка на правописа. На първо място, този пакет е забележителен с това, че е напълно безплатен, което ви позволява да го използвате на всеки компютър. Позволява ви да изпълнявате всички обичайни задачи. И така, той включва текстов редактор и редактор на електронни таблици и програма за създаване на шаблони или презентации, както и слайдове. В допълнение, той е с отворен код, което ви позволява да правите промени в него, ако е необходимо. Освен това приложението може да се инсталира на почти всяка опера...

WPS Office е друг пакет за работа с офис документи, който е алтернатива на добре познатото приложение на Microsoft. Този пакет включва почти всички инструменти, които може да са ви необходими за редактиране на файлове. Така например пакетът WPS Office съдържа удобен текстов редактор, който може да отваря почти всички формати на офис приложения, като doc. Освен това тази програма може да работи с html страници и да отваря други текстови файлове. Има приложение за създаване на презентации, което също е подобно на популярния пакет от Microsoft. Той съдържа необходимия набор от функции, които могат да бъдат необходими на всеки...

Free Opener е доста функционална програма за преглед на най-популярните файлове, включително Winrar архиви, Microsoft Office документи, PDF, Photoshop документи, торент файлове, икони, уеб страници, текстови документи, аудио и видео файлове, графични файлове, включително Flash и много други. Броят на поддържаните файлове надхвърля седемдесет. В програмата липсват обичайните за нас настройки и опции, с изключение на промяната на дизайна. Трябва също да се отбележи, че няма руски език, но предвид простотата, не подценявайте програмата. Free Opener е многофункционална и много удобна програма за четене на различни видове файлове.



Продължение на темата:
Windows

Наталия Комарова , 28.05.2009 г. (25.03.2018 г.) Когато четете форум или блог, запомняте авторите на публикациите по псевдоним и ... по снимката на потребителя, така наречения аватар ....

Нови статии
/
Популярен