|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.08.2009, 17:31 | #1 |
Пользователь
Регистрация: 31.07.2009
Сообщений: 13
|
Доступность Undo/Redo и редактирование текста в TRichEdit
1) На форме есть TRichEdit, TPopupActionBar. Хочу сделать чтобы пункты меню Undo и Redo были доступны только тогда, когда были произведены изменения.
С кнопками "Вставить" и "Копировать" я разобрался сам. Для компонента TPopupActionBar в обработчик события OnPopup я написал вот этот код: procedure TForm1.PopupActionBar1Popup(Sender: TObject); begin Cut.Enabled := RichEdit1.SelLength > 0; Copy.Enabled := RichEdit1.SelLength > 0; Paste.Enabled := Clipboard.HasFormat(CF_TEXT); end; Возможно ли подобным образом проделать тоже самое и с Undo и Redo? 2) Для кнопки "Выделить все" я написал такой код: SelectAllPopup.Enabled := RichEdit1.SelStart > 0; но мне кажется что он немного кривоват Последний раз редактировалось Ser11; 11.08.2009 в 13:36. |
10.08.2009, 17:47 | #2 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
1) Отчего же нельзя, можно. Но нужно историю хранить. Когда подошли к концу истории - делаем пункт Повторить неактивным, подошли к началу - делаем Отменить не активным.
2) По логике этот пункт должен быть активен когда есть что выделять. Просто проверяйте или документ не пустой, и все. Например так: if RichEdit1.Lines.Text='' //значит пустой Правда я не проверял или так можно с RichEdit, оставляю это вам )
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
11.08.2009, 13:41 | #3 |
Пользователь
Регистрация: 31.07.2009
Сообщений: 13
|
mutabor, благодарю за подсказку. Кое что уже начинает получаться.
Хотел еще спросить как правильно реализуется нажатие кнопки Aplly для компонента FontDialog? Я сделал так, только не знаю правильно или нет: Код:
|
11.08.2009, 13:54 | #4 |
Форумчанин
Регистрация: 22.02.2009
Сообщений: 875
|
Напишите вот так:
Код:
Код:
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
|
11.08.2009, 15:06 | #5 |
Пользователь
Регистрация: 31.07.2009
Сообщений: 13
|
Еще раз благодарю всех за помощь, большое спасибо.
Выловил у себя в коде баг. При изменении шрифта например с Arial на Lucida Fax русские буквы заменялись на нечитаемые сиволы. Вот из-за этого кода: Код:
|
11.08.2009, 15:27 | #6 |
Пользователь
Регистрация: 31.07.2009
Сообщений: 13
|
Neeter, а процедуры для верхнего/нижнего регистра надо объявить в private?
|
11.08.2009, 15:51 | #7 |
Форумчанин
Регистрация: 22.02.2009
Сообщений: 875
|
Нет, что вы, это просто обработчики кнопок)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
|
11.08.2009, 16:03 | #8 | |
Пользователь
Регистрация: 31.07.2009
Сообщений: 13
|
У меня делфи2009 выводит ошибку:
Цитата:
|
|
11.08.2009, 16:09 | #9 |
Форумчанин
Регистрация: 22.02.2009
Сообщений: 875
|
Что-то вы не то делаете...
Код приведите...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
|
11.08.2009, 16:25 | #10 |
Пользователь
Регистрация: 31.07.2009
Сообщений: 13
|
Во всплывающем меню обработчик события:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
реализация Undo и Redo | Bayazet | Общие вопросы Delphi | 5 | 03.03.2009 15:48 |
Undo на форме | yulia | Общие вопросы Delphi | 1 | 16.11.2008 17:22 |
Undo-Redo | NeiL | Общие вопросы Delphi | 8 | 14.03.2008 19:04 |
Undo, Redo | Xardas | Общие вопросы Delphi | 1 | 24.01.2008 19:35 |
Меню, создание нового пункта | Yogik™ | Помощь студентам | 2 | 17.08.2007 17:32 |