Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Курсор в RichEdit1, При добавлении новой строки курсор перес 
:(
    Опции темы
Drizhenko
Дата 25.10.2005, 06:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



При добавлении новой строки в RichEdit курсор перескакивает на следующую, как сделать, чтобы он оставался на новой строке, в самом конце?
Пробовал таким образом
Код

procedure TForm1.Ping1EchoReply(Sender, Icmp: TObject; Error: Integer);
  begin
    if error = 0 then
      begin
        richEdit1.SelAttributes.Color:=clred;
        RichEdit1.Lines.Add('Не могу выполнить операцию Ping: '+Ping1.ErrorString );
        richEdit1.SelStart:=richEdit1.SelStart-1;
        pp:=pp+1;
        label5.Caption:='Потеряно: '+inttostr(pp);
        label6.Caption :=IntToStr(round((pp*100)/kp))+'%'+' потерь';
      end
  else
    richEdit1.SelAttributes.Color:=clblack;
    RichEdit1.Lines.Add('Получено '+ IntTostr(Ping1.Reply.DataSize)+
  ' байт от '+ping1.HostIP + ' за ' + intToStr(Ping1.Reply.RTT) + ' миллисекунд');
    richEdit1.SelStart:=richEdit1.SelStart-1;
  end;


Все работает, но почему-то цвет шрифта не становится красным, если же убираю
Код
richEdit1.SelStart:=richEdit1.SelStart-1;

во втором случае(в конце процедуры), то цвет меняется, а курсор не перескакивает.
PM MAIL   Вверх
Drizhenko
Дата 25.10.2005, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Даже если сделать так
Код
richEdit1.SelStart:=richEdit1.SelStart;

то цвет меняется.

PM MAIL   Вверх
Drizhenko
Дата 25.10.2005, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Помогите кто-нибудь!Пожалуйста!
PM MAIL   Вверх
FRAGNATIC
Дата 25.10.2005, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: 6
Всего: 11



Код

var
  p: TPoint;
begin
  p.Y:=RichEdit1.CaretPos.Y;
  p.X:=Length(RichEdit1.Lines.Strings[p.Y]);
  RichEdit1.CaretPos:=p;
  RichEdit1.SetFocus;
end;

PM MAIL   Вверх
Drizhenko
Дата 26.10.2005, 05:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Не помогает!
PM MAIL   Вверх
FRAGNATIC
Дата 26.10.2005, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: 6
Всего: 11



Цитата
чтобы он оставался на новой строке, в самом конце

мой код именно это и делает
если немного вкуришь его то можешь сделать и чтобы на старой строке и ещё гденить он появлялся хоть в середине! =) и его роботоспособность я проверил в новом приложении всё пашет=)

Добавлено @ 14:34
слушай у меня прекрасно пашет код
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  richEdit1.SelAttributes.Color:=clred;
  RichEdit1.Lines.Add('Не могу выполнить операцию Ping: ');
  richEdit1.SelStart:=richEdit1.SelStart-1;
  RichEdit1.SetFocus;
end;


после вставки курсор находится после слов Ping: и всё ок! при этом эта строка красноя=)
и не надо ни чего мутить лишнего =)
PM MAIL   Вверх
Drizhenko
Дата 28.10.2005, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



А ты пробовал второй раз на кнопку нажимать???? smile smile

Это сообщение отредактировал(а) Drizhenko - 28.10.2005, 09:57
PM MAIL   Вверх
Alexeis
Дата 28.10.2005, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Вот так работает

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  richEdit1.SelAttributes.Color:=clred;
  RichEdit1.Lines.Add('Íå ìîãó âûïîëíèòü îïåðàöèþ Ping: ');
  richEdit1.SelStart:=richEdit1.CaretPos.X  - 1;
  RichEdit1.SetFocus;
end;



Это сообщение отредактировал(а) alexeis1 - 28.10.2005, 09:49


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Drizhenko
Дата 28.10.2005, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Рябята, спасибо вам, но у меня такое ощущение, что вы свой код даже не запускаете. Код alexeis1 работает, но курсор ПЕРЕСКАКИВАЕТ на следующую строку.
PM MAIL   Вверх
Romikgy
Дата 28.10.2005, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



Код

procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
  RichEdit1.Lines.Add('Íå ìîãó âûïîëíèòü îïåðàöèþ Ping: ');
  RichEdit1.Refresh ;

  i:=length(RichEdit1.Lines[RichEdit1.Lines.count-1]);
  richEdit1.SelStart:=richEdit1.SelStart-i-2;
   richEdit1.SelLength:=i;
   richEdit1.SelAttributes.Color:=clred;
   richEdit1.SelStart:=richEdit1.SelStart+i;

  RichEdit1.SetFocus;

end;

А так?


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Drizhenko
Дата 28.10.2005, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Спасибо, реально работающий код!! smile
PM MAIL   Вверх
Alexeis
Дата 28.10.2005, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



если правильно понял то вот так
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  p : TPoint;
begin
  RichEdit1.SelStart := RichEdit1.Perform(EM_LINEINDEX, RichEdit1.Lines.Count, 0);
  richEdit1.SelAttributes.Color:=clred;
  p :=  richEdit1.CaretPos;
  richEdit1.SelStart := p.X - 1;
  RichEdit1.Lines.Add('Не могу выполнить операцию Ping: ');
  richEdit1.SelLength := Length('Не могу выполнить операцию Ping: ');

  RichEdit1.SelStart := RichEdit1.Perform(EM_LINEINDEX, p.Y, 0);
  Application.ProcessMessages;

  RichEdit1.SetFocus;
end;



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.