Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2009, 15:50   #1
unicode
Форумчанин
 
Аватар для unicode
 
Регистрация: 16.04.2009
Сообщений: 162
По умолчанию Как узнать изменен ли текст в RichEdit?

Здравствуйте, как можно узнать изменен ли текст в RichEdit?
пробовал вот так : RichEdit.Modified, но это не оно.
Заранее спасибо.
unicode вне форума Ответить с цитированием
Старый 13.07.2009, 16:01   #2
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

А чем не устраивает событие OnChange?
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 13.07.2009, 16:02   #3
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Код:
procedure TForm1.Edit1Change(Sender: TObject);
begin
if trim(edit1.Text) <> 'Изначальный текст' then {твои действия};
end;
С отсеиванием пробелов .... можно и без них , уберёш trim()
С ричэдитом просто в событии OnChange;

Последний раз редактировалось Lime; 13.07.2009 в 16:05.
Lime вне форума Ответить с цитированием
Старый 13.07.2009, 16:08   #4
unicode
Форумчанин
 
Аватар для unicode
 
Регистрация: 16.04.2009
Сообщений: 162
По умолчанию

Дело в том, что это нужно сделать в процедуре обработки нажатия на кнопку меню ...
Вот весь текст процедуры:
Код:
  if RichEdit.Modified then
    begin
      case Application.MessageBox('Çàìåíèòü ñóùåñòâóþùèé ôàéë?', 'Ïîäòâåðæäåíèå çàìåíû ôàéëà', MB_ICONWARNING + MB_YESNOCANCEL) of
        IDYES: RichEdit.Lines.SaveToFile(OpenDialog.FileName);
        IDNO:
          begin
            if SaveDialog.Execute then RichEdit.Lines.SaveToFile(SaveDialog.FileName);
          end;
      end; //case
    end //begin
  else
    begin
      case Application.MessageBox('Ôàéë íå áûë èçìåíåí. Âñå ðàâíî ñîõðàíèòü?', 'Ôàéë íå áûë èçìåíåí', MB_ICONQUESTION + MB_YESNO) of
        IDYES: RichEdit.Lines.SaveToFile(OpenDialog.FileName);
        IDNO:
          begin
            if SaveDialog.Execute then RichEdit.Lines.SaveToFile(SaveDialog.FileName);
          end; //begin
      end; //case
    end; //begin
unicode вне форума Ответить с цитированием
Старый 13.07.2009, 16:15   #5
QunneD
C++ &amp;amp; PHP &amp;amp; Asm
Форумчанин
 
Аватар для QunneD
 
Регистрация: 06.12.2008
Сообщений: 300
По умолчанию

Код:
procedure TestProcedure(RichEdit : TRichEdit);
var
  value : integer;
begin
  if (RichEdit.Modified) then
  begin
    value := MessageBox(0, 'Текст был изменен, сохранить?', 'Предупреждение', mb_IconWarning+mb_yesno);
    case value of
    6:
    begin
      ShowMessage('Текст сохранен');
    end;
    7:
    begin
      ShowMessage('Сохранение текста отменено');
    end;
    end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   TestProcedure(RichEdit1);
end;

Последний раз редактировалось QunneD; 13.07.2009 в 16:18. Причина: Добавил case
QunneD вне форума Ответить с цитированием
Старый 13.07.2009, 16:22   #6
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Что то я не вижу особой разницы...
Работать должно и в том и в другом случае...
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Старый 13.07.2009, 16:23   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Предлагаю так:
Фиксация изменений:
Код:
procedure TForm1.RichEdit1Change(Sender: TObject);
begin
RichEdit1.Tag:=Byte(RichEdit1.Modified);
end;
Работа при нажатии на кнопку если были изменения, и возвращение в исходное состояние
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 if boolean(RichEdit1.Tag) then caption:='Был изменен' else
  caption:='неа';
  RichEdit1.Tag:=0;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.07.2009, 16:40   #8
unicode
Форумчанин
 
Аватар для unicode
 
Регистрация: 16.04.2009
Сообщений: 162
По умолчанию

Я додумался как зделать эту проверку.
Я ввел переменную RichEditChange типа Boolean, теперь каждый раз при смене текста в RichEdit он получает значение True, а если текст не изменен то False.
Спасибо всем кто здесь отписался
unicode вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать выравнивание текста в RichEdit? Kib Общие вопросы Delphi 6 23.08.2010 15:36
Как узнать когда был изменен (создан) интерфейс версии IPv6. Crazyman Работа с сетью в Delphi 0 15.12.2008 00:51
Как узнать какой текст выделен в текст поле mogul82 JavaScript, Ajax 2 02.11.2008 16:32
Как узнать был ли вставлен текст из ClipBoard? Dux Общие вопросы Delphi 11 25.10.2008 18:03
текст в richedit по ширине *Devil* Компоненты Delphi 1 15.06.2007 16:27