Многострочное поле ввода (TMemo) Delphi » DelphiComponent.ru
Итак, добавьте на форму пока только одну кнопку. Измените ее свойство caption на очистить и имя на ciearButton. Кстати, давайте изменим имя компонента Memo1 на MainMemo.Создайте для кнопки обработчик событияonclick. В нем напишите следующее:
Показать / Скрыть текст
В этом программном коде вызывается метод clear объекта Lines, который в свою очередь принадлежит объекту MainMemo. Немного запутано, но со временем вы поймете, что это очень даже удобно. У компонента MainMemo есть свойство Lines, значит, чтобы получить к нему доступ, мы должны написать MainMemo.Lines. Свойство Lines — это целый объект, и у него есть метод Clear, который очищает содержимое строк редактора.
Попробуйте запустить программу и написать внутри компонента Memo какой- нибудь текст. Потом нажмите кнопку Очистить, чтобы уничтожить все, что вы ввели.
Теперь давайте усложним наш пример, добавив возможность сохранения введенного текста и загрузки его обратно.
Создайте обработчик события Onshow (срабатывает, когда отображается окно) для формы и напишите в нем следующее:
Показать / Скрыть текст
Здесь вызывается метод LoadFromFile объекта Lines. Ему нужно передать только один параметр — имя файла, откуда будет происходить загрузка данных. Есть только один недостаток — если вы сейчас попытаетесь запустить программу, то во время загрузки произойдет ошибка, потому что файла memo.txt нет. Тут есть два выхода:
- заранее создать файл;
- при старте программы проверять, есть ли файл, и только если он существует, производить загрузку текста.
С первым способом все понятно. А вот для реализации второго способа можно воспользоваться функцией FileExists. Ей нужно передать имя файла, существование которого надо проверить, и если такой файл существует, функция вернет true.
Давайте изменим обработчик события Onshow следующим образом:Показать / Скрыть текст
Теперь создадим обработчик события OnClose (срабатывает на закрытие окна).
В нем напишем процедуру сохранения содержимого MainMemo.
Показать / Скрыть текст
Здесь используется метод SaveToFile, который работает так же, как и LoadFromFile, только сохраняет данные.
Теперь осталось только научиться программно добавлять, удалять и изменять строки в компоненте Tmemo, и можно считать, что мы досконально изучили этот компонент.
В этом компоненте текст хранится как простая последовательность строк — массив. Используя предыдущий пример, наберите текст и после закрытия программы посмотрите, как он выглядит в файле. Вот содержимое моего примера memo.txt:
DelphiComponent.ru
Как видите, в файле четыре строки (вторая пустая). Точно так же строки расположены и в файле.
Для доступа к каждой строке можно воспользоваться свойством strings свойства Lines. На рис. 7.6 наглядно показано, как получить доступ к строкам. Чтобы получить нулевую строку, нужно написать MainMemo.Lines.strings[0], для первой строки — MainMemo. Lines . Strings [ 1 ] И Т. Д.
Давайте напишем пример, который будет получать доступ к строкам, чтобы увидеть все это на практике. Добавьте к предыдущему примеру три кнопки.
- Добавить. Дадим этой кнопке ИМЯ— AddButton.
- Удалить. Дадим этой кнопке ИМЯ — DelButton.
- Изменить. Дадим этой кнопке ИМЯ — ChangeButton.
Давайте изменим обработчик события Onshow следующим образом:
Показать / Скрыть текст
Теперь создадим обработчик события OnClose (срабатывает на закрытие окна). В нем напишем процедуру сохранения содержимого MainMemo.
Показать / Скрыть текст
Здесь используется метод SaveToFile, который работает так же, как и LoadFromFile, только сохраняет данные.
Можете расположить их, как показано на рис. 7.7. Теперь создадим обработчик события onclick для кнопки Добавить. Здесь мы будем программно добавлять новую строку В MainMemo.Для ЭТОГО У объекта Lines есть метод Add,у которого только один параметр — текст новой строки:
Показать / Скрыть текст
Теперь создадим обработчик событияonclickдля кнопки Удалить. По этому событию мы должны удалить строку, в которой находится сейчас курсор. Для этого напишите в обработчике следующий текст:
Показать / Скрыть текст
В первой строке кода проверяется, сколько строк в компоненте MainMemo. Для этого есть свойство Lines, count. Если оно не равно нулю (MainMemo.Lines .count<>o), значит, строки есть, и мы можем удалить текущую строку.
Для удаления используется метод Delete объекта Lines. В качестве единственного параметра нужно передать номер строки для удаления. Но как узнать, какая строка сейчас является текущей? Для этого у MainMemo есть свойство CaretPos, которое указывает на текущую позицию курсора.
CaretPos— это переменная типаTPoint.Этот тип определяется как запись. С таким типом мы подробно познакомимся немного позже. Единственное, что сейчас необходимо знать, так это то, что данный тип похож на объект, только у него нет методов, а только свойства. У TPoint есть два свойства х и y:
х указывает на текущую колонку,
a y— на текущую строку.
Таким образом можно узнать текущую строку С ПОМОЩЬЮ MainMemo.CaretPos.y.
Итак,MainMemo.Lines.Delete удаляет указанную строку. Указание текущей строки происходит С ПОМОЩЬЮ MainMemo.CaretPos.Y.
Теперь осталось только написать обработчик события onclick для кнопки Изменить. В нем напишите следующий код:
Показать / Скрыть текст
В первой строке мы изменяем текущую строку на «Horrific». Второй строкой кода я изменяю первую строку мапмето на «Текст изменен».
Здесь вам уже все должно быть знакомым. Так что теперь можно считать, что мы изучили основные возможности компонента TMemo.
Помоги проекту! Расскажи друзьям об этом сайте:
Работа текстом в memo (в Delphi) : Программирование
DneprSerg |
| ||
27/07/06 |
| ||
| |||
GlazkovD |
| ||
16/02/07 |
| ||
| |||
Показать сообщения за: Все сообщения1 день7 дней2 недели1 месяц3 месяца6 месяцев1 год Поле сортировки АвторВремя размещенияЗаголовокпо возрастаниюпо убыванию |
Страница 1 из 1 | [ Сообщений: 2 ] |
Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы
Компонент памятки — Научись сам
Последнее обновление вторник, 27 декабря 2022 г. | Научите себя
Компонент Memo инкапсулирует многострочный элемент управления редактированием. Свойство Lines является наиболее важным свойством компонента Memo. Как я упоминал ранее при обсуждении TStrings, свойство Lines позволяет сохранять содержимое компонента Memo на диск, загружать Memo с текстом из файла или получать доступ к строкам memo по отдельности.
Свойство ScrollBars уникально для компонента Memo. Это свойство позволяет вам указать, будет ли ваш компонент иметь горизонтальную полосу прокрутки, вертикальную полосу прокрутки или и то, и другое. Вы использовали свойство ScrollBars на 6-й день, когда писали приложение ScratchPad. Компонент Memo — это очень универсальный компонент, который вы, вероятно, будете часто использовать.
Компонент RichEdit
Компонент RichEdit — самый большой и лучший из всех компонентов редактирования; он основан на расширенном средстве редактирования Win32. Компонент RichEdit позволяет изменять шрифты, использовать отступы, выделять текст полужирным шрифтом, курсивом или подчеркиванием и многое другое. По сути, компонент RichEdit представляет собой мини-текстовый процессор в одном аккуратном корпусе. RichEdit имеет на удивление мало свойств времени разработки по сравнению с компонентом Memo.
Ключевые свойства среды выполнения включают SelAttributes и Paragraph. Компонент RichEdit сложен, но прост в использовании, учитывая его сложность. Полную информацию о компоненте RichEdit см. в интерактивной справке Delphi.
Общие свойства элементов управления редактированием
Товар | Применяется к | Описание |
Свойства | ||
Автовыбор | Редактировать, Редактировать маску | Если установлено значение True, текст в элементе управления редактирования будет автоматически выделяться при переходе пользователя к элементу управления. По умолчанию: Истина |
Автоматический размер | Редактировать, Редактировать маску | Если установлено значение True, элемент управления редактирования автоматически изменит свой размер при изменении шрифта элемента управления редактирования. В противном случае элемент управления редактирования не изменяет размер при изменении шрифта. По умолчанию: Истина |
CharCase | Редактировать, Редактировать маску | Определяет, будет ли элемент управления редактированием отображать прописные буквы (ecUpperCase), строчные буквы (ecLowerCase) или смешанный текст (ecNormal). По умолчанию: ecNormal. |
HideScrollBars | RichEdit | Если установлено значение True, полосы прокрутки будут отображаться при необходимости, но в противном случае будут скрыты. Если задано значение False, полосы прокрутки отображаются в соответствии со значением свойства ScrollBars. |
Скрыть выделение | Правка, Памятка, RichEdit | Если установлено значение True, любой выделенный текст не будет отображаться как выделенный, когда пользователь переходит к другому элементу управления. По умолчанию: Ложь |
Линии | Памятка, RichEdit | Текст, содержащийся в компоненте. Lines — это экземпляр класса TStrings. |
Максимальная длина | Все | Указывает максимальное количество символов, которое будет содержать компонент. При значении 0 количество текста, которое можно ввести, не ограничено (ограничено только системными соображениями). Если задано любое ненулевое значение, количество символов ограничивается этим значением. По умолчанию: 0 |
OEMConvert | Правка, Памятка | Установите для этого свойства значение True, если вводимый текст будет состоять из имен файлов. По умолчанию: Ложь |
PasswordChar | Редактировать, Редактировать маску | Если для этого свойства задано значение, отличное от ASCII #0, любой введенный текст будет отображаться с предоставленным символом. Фактический текст в элементе управления редактирования не изменяется. Большинство изменений пароля используют звездочку (*) в качестве символа пароля. По умолчанию: #0 |
Обычный текст | RichEdit | Если установлено значение True, файлы RTF (текстовый формат) будут отображаться как обычный текст без форматирования символов и абзацев. Если установлено значение False, файлы RTF отображаются с полным форматированием. По умолчанию: Ложь |
Только для чтения | Все | Если установлено значение True, компонент будет отображать свой текст, но новый текст нельзя будет ввести. Однако пользователь может выделить текст и скопировать его в буфер обмена. По умолчанию: Ложь |
Полосы прокрутки | Памятка, RichEdit | Определяет, какие полосы прокрутки отображать. Возможные варианты: ssNone, ssBoth, ssHorizontal и ssVertical. По умолчанию: сснет |
Текст | Редактировать, Редактировать маску | Содержит текст в компоненте. |
Возвраты | Памятка, RichEdit | Если установлено значение True, компонент сохраняет символ возврата, и новая строка вставляется в поле ввода, когда пользователь нажимает Enter. Если установлено значение False, возвращаемые символы переходят в форму и не помещаются в поле редактирования. Если у вас есть форма с кнопкой по умолчанию, а для параметра WantReturns установлено значение False, нажатие Enter приведет к закрытию формы. По умолчанию: Истина |
Требуемые вкладки | Памятка, RichEdit | Если установлено значение True, символ табуляции помещается в поле редактирования, когда пользователь нажимает клавишу Tab. Если установлено значение False, символы табуляции переходят в форму, что позволяет использовать табуляцию вне элемента управления редактированием. По умолчанию: Ложь |
WordWrap | Памятка, RichEdit | Если установлено значение True, введенный текст будет переноситься на новую строку при достижении правого края элемента управления редактирования. Если установлено значение False, поле редактирования автоматически прокручивается по мере ввода нового текста. По умолчанию: Истина |
Модифицированный | Все | Указывает, изменилось ли содержимое элемента управления редактирования с момента последней установки свойства Modified. После сохранения содержимого компонента Memo или RichEdit в файл следует установить для Modified значение False. |
SelLength | Все | Содержит длину текста, выделенного в данный момент в поле редактирования. |
Селстарт | Все | Содержит начальную точку выделенного текста в поле редактирования. Первый символ в поле редактирования — 0. |
Селтекст | Все | Содержит текущий выделенный текст в элементе редактирования. |
Элементы управления Edit имеют много общих методов; их слишком много, чтобы перечислять их здесь. Методы CutToClipboard, CopyToClipboard, PasteFromClipboard и Clear работают с операциями с буфером обмена и манипулированием текстом. Методы GetSelTextBuff и GetTextBuff извлекают выделенный текст в компоненте и весь текст в компоненте соответственно. Полный список методов, связанных с каждым компонентом редактирования, см. в разделах интерактивной справки Delphi TEdit, TMaskEdit, TMemo и TRichEdit.
События компонента редактирования, которые вас, скорее всего, заинтересуют, зависят от типа используемого вами элемента управления редактированием. Однако в целом наиболее широко используются события OnEnter, OnExit, OnChange, OnKeyDown (или OnKeyPress) и OnKeyUp.
Продолжить чтение здесь: Компонент Bit Btn
Была ли эта статья полезной?
Меморандум о пенсиях пенсионеров Delphi Corporation и других пенсионеров, охваченных уязвимыми пенсионными планами
Меморандум для министра финансов, министра торговли и министра труда
Тема: Пенсии пенсионеров Delphi Corporation и других пенсионеров, охваченных уязвимыми пенсионными планами
Властью, предоставленной мне как Президенту Конституцией и законами Соединенных Штатов Америки, настоящим приказано следующее:
Раздел 1. Цель и политика. (a) В течение многих лет корпорация Delphi была неотъемлемой частью автомобильной промышленности США. Компания поставляла американским автопроизводителям автомобильные детали, начиная от подушек безопасности и заканчивая рулевыми колесами. Десятки тысяч американцев сделали карьеру в Delphi и благодаря своей работе помогли Америке стать ведущим мировым производителем автомобилей.
После банкротства Delphi тысячи наемных и не состоящих в профсоюзах работников Delphi, не по своей вине, лишились своих пенсионных планов, после чего опекунство было передано Корпорации гарантирования пенсионных пособий (PBGC) для управления в соответствии с законом. пределы. Коллеги этих рабочих, объединенные в профсоюзы, смогли сохранить свои полные пенсии благодаря сделке с General Motors. Группа наемных и не состоящих в профсоюзах пенсионеров Delphi, которые не получили выгоды от сделки своих коллег с профсоюзами с General Motors, провели последнее десятилетие в юридической и финансовой неопределенности, оспаривая прекращение действия своего пенсионного плана в федеральных судах. Этот судебный процесс все еще продолжается, и Апелляционный суд шестого округа недавно подтвердил вынесение окружным судом упрощенного судебного решения в отношении пенсионеров.
Предыдущая администрация не смогла в полной мере защитить пенсии наемных и не входящих в профсоюзы сотрудников Delphi, несмотря на существенное влияние этой администрации на процедуру банкротства General Motors. Его действия в этом отношении являются еще одним примером того, как он подвел американских рабочих. Напротив, бедственное положение наемных рабочих Delphi, не входящих в профсоюзы, очень беспокоит мою администрацию, которая привержена защите всех американских рабочих.
Обращение с наемными и не состоящими в профсоюзах пенсионерами Delphi также привлекло внимание к проблемам пенсионной системы Америки в целом. Счетная палата правительства включила программы PBGC для одного и нескольких работодателей в свой список государственных программ с высоким уровнем риска в 2019 году.. Реформы необходимы для поддержания платежеспособности этих важнейших программ в будущем, чтобы те американцы, чьи пенсии находятся под опекой PBGC, имели финансовую уверенность и безопасность.
(b) Политика Соединенных Штатов заключается в поддержке американских рабочих, независимо от членства в профсоюзах, защите пенсий трудолюбивых американцев и обеспечении того, чтобы Америка стала мировым центром производства и промышленности.
сек. 2. Обзор. (a) Министр финансов, министр торговли и министр труда, по согласованию с помощником президента по торговой и производственной политике, должны рассмотреть дело Delphi, описанное в подразделе 1(a) настоящего меморандума. и проинформировать Президента в течение 90 дней с даты настоящего меморандума о любых надлежащих действиях, которые могут быть предприняты в соответствии с применимым законодательством для (i) решения проблемы утраченных пенсионных пособий затронутых пенсионеров Delphi и (ii) обеспечения дополнительной прозрачности решения о прекращении действия плана, в соответствии с соответствующими мерами защиты привилегированного и конфиденциального материала. Этот обзор должен включать оценку осуществимости принятия законодательства и возможности восстановления плана до его статуса, предшествующего прекращению, в соответствии с разделом 1347 раздела 29., Кодекс США.
(b) Министр финансов, министр торговли и министр труда, по согласованию с помощником президента по экономической политике, пересматривают пенсионные планы, находящиеся в настоящее время в ведении PBGC, и информируют президента. в течение 180 дней с даты настоящего меморандума о любых соответствующих действиях, которые могут быть предприняты в соответствии с применимым законодательством. Действия могут включать в себя предложение законодательства, которое должным образом уравновешивает интересы всех, кто охвачен пенсионной системой — от пенсионеров, рабочих, работодателей и профсоюзов до планов и налогоплательщиков — для решения проблемы несостоятельности таких планов и поддержания платежеспособности PBGC в будущем. Программы для одного и нескольких работодателей.
сек. 3. Общие положения. (a) Ничто в настоящем меморандуме не может быть истолковано как умаляющее или иным образом затрагивающее:
(i) полномочия, предоставленные законом исполнительному департаменту, агентству или их руководителю; или
(ii) функции Директора Административно-бюджетного управления, связанные с бюджетными, административными или законодательными предложениями.
(b) Настоящий меморандум должен осуществляться в соответствии с действующим законодательством и при наличии ассигнований.