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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2010, 11:34   #1
heny
Пользователь
 
Аватар для heny
 
Регистрация: 04.03.2010
Сообщений: 25
По умолчанию Строка состояния в Delphi

Здравствуйте
Учусь на заочном отделении, вот пишу контрольную работу и тут возникла проблема. Мне нужно создать текстовый редактор в Delphi. Вот...
Делать только начала, слава богу сама еле как разобралась и написала код для пункта "сохранить как", так что по истине считаю, что я не совсем пропащая
Но возникла проблема, не могу сообразить. В задании написано следующее:
17. В событии OnChange компонента RichEdit1 напишите код, который выдает на вторую панель строки состояния сообщение «Текст изменен». Таким образом, при изменении хотя бы одного знака в тексте будет выдаваться это сообщение.

Ничего другого мне не приходит в голову как написать это так:
Код HTML:
procedure TEditor.RichEdit1Change(Sender: TObject);
begin
  if RichEdit1.OnChange then
  StatusBar1.Panels[0].Text:= 'Текст изменен'
  else StatusBar1.Panels[0].Text:= '';
end;
либо так:
Код HTML:
procedure TEditor.RichEdit1Change(Sender: TObject);
begin
  if RichEdit1.Modified then
  StatusBar1.Panels[0].Text:= 'Текст изменен'
  else StatusBar1.Panels[0].Text:= '';
end;
Но мне пишут, что это ошибка и все дальше ступор.
Помогите пожалуйста, разъясните ошибку
heny вне форума Ответить с цитированием
Старый 13.09.2010, 11:57   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

В СтатусБар можно сделать несколько панелей... Вам нужно выводить сообщение во вторую панель, т.е. StatusBar1.Panels[1].Text:='Изменен...'
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 13.09.2010, 12:09   #3
heny
Пользователь
 
Аватар для heny
 
Регистрация: 04.03.2010
Сообщений: 25
По умолчанию

У меня есть панель 1 - в ней я пишу что текст сохранен (после сохранения), и как раз думала, что в панельке, которая слева, будет текст изменен.
То есть как я поняла в панель 0 не получится записать?
heny вне форума Ответить с цитированием
Старый 13.09.2010, 12:12   #4
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Дело в том, панели эти надо создать, тогда не будет ошибки.
На статусбаре двойной клик, появится окно редактора панелей.
Или в Object Inspector'е нажать на кнопку с тремя точками в свойстве Panels.
В редакторе надо создать парочку (желтая кнопка, нажать два раза или столько сколько надо панелей).
После этого можно из программы обращаться к панелям без ошибок.

Последний раз редактировалось Скандербег; 13.09.2010 в 12:14.
Скандербег вне форума Ответить с цитированием
Старый 13.09.2010, 12:14   #5
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Допустим, статусбар имеет 3-и панели... Тогда панель 1-я будет иметь индекс 0 (StatusBar1.Panels[0].text:=), панель 2-я будет иметь индекс 1 (StatusBar1.Panels[1].Text:=) и т.д. Так что, разберитесь что и в какую панель Вам нужно выводить и, соответственно, с каким индексом...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 13.09.2010, 12:16   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Можешь. Установи StatusBar1.SimplePanel:=true;
И пиши
Код:
StatusBar1.SimpleText:='dasdasd';
Это если никаких дополнительных панелей ты не создавала
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.09.2010, 12:17   #7
heny
Пользователь
 
Аватар для heny
 
Регистрация: 04.03.2010
Сообщений: 25
По умолчанию

У меня 2 панельки, StatusBar1.Panels[0] (в которую я хочу записать "Текст изменен") и StatusBar1.Panels[1] (тут у меня пишет "Текст сохранен" при изменении)
И между прочим я не совсем уж)))) так что обе панели у меня созданы, в этом не может быть ошибки

Цитата:
Сообщение от Stilet Посмотреть сообщение
Можешь. Установи StatusBar1.SimplePanel:=true;
И пиши
Код:
StatusBar1.SimpleText:='dasdasd';
Это если никаких дополнительных панелей ты не создавала
А куда это надо написать?

Последний раз редактировалось Stilet; 13.09.2010 в 12:24.
heny вне форума Ответить с цитированием
Старый 13.09.2010, 12:20   #8
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
17. В событии OnChange компонента RichEdit1 напишите код, который выдает на вторую панель строки состояния сообщение «Текст изменен».
Если строго соответствовать требованиям задания, то поменяйте индексы панелей...

Цитата:
Сообщение от heny Посмотреть сообщение
А куда это надо написать?
Лучше этого не делай, иначе прощайте Ваши две (и более) панелей...
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Stilet; 13.09.2010 в 12:24.
Grag вне форума Ответить с цитированием
Старый 13.09.2010, 12:25   #9
heny
Пользователь
 
Аватар для heny
 
Регистрация: 04.03.2010
Сообщений: 25
По умолчанию

Забыла сказать, этот код работает, но не правильно:
Код HTML:
procedure TEditor.RichEdit1Change(Sender: TObject);
begin
  if RichEdit1.Modified then
  StatusBar1.Panels[0].Text:= 'Текст изменен'
  else StatusBar1.Panels[0].Text:= '';
end;
Как только запускается редактор, и еще не внесено ни одного изменения в панеле уже написано "Текст изменен", а надо же после изменения
heny вне форума Ответить с цитированием
Старый 13.09.2010, 12:26   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А куда это надо написать?
Ну если действительно нужно две панели то пиши
Код:
StatusBar1.Panels[1].Text:= 'Текст изменен'
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript.Бегущая строка в строке состояния Zempery JavaScript, Ajax 1 01.12.2009 19:15
Строка состояния, подсказки Квио Общие вопросы Delphi 7 29.09.2009 19:34
Строка состояния и панель SoAndSo Microsoft Office Word 6 14.11.2008 15:59