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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2010, 18:41   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию RVE: игнор Enter, позиция каретки

В Memo задуманное сделать получилось, в RichViewEdit не получается.
Что именно не получается:
1. позиционирование каретки
2. игнор Enter если RVR пуст (не переводить каретку на следующую строку при пустом RVE)
3. не игнорировать нажатие Ctrl + Enter
4. и что за косяк в RVE при вводе текста. Допустим я написал: привет и поставил каретку перед этим словом и начал снова вводить текст, после чего каретка сразу же переходит сама в конец слова.
Вложения
Тип файла: rar Test.rar (8.3 Кб, 10 просмотров)
Shouldercannon вне форума Ответить с цитированием
Старый 22.05.2010, 18:52   #2
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Цитата:
4. и что за косяк в RVE при вводе текста. Допустим я написал: привет и поставил каретку перед этим словом и начал снова вводить текст, после чего каретка сразу же переходит сама в конец слова.
Касяк в вашем коде, я создал новый проект и проверил - ничего подобного не происходит
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 22.05.2010, 18:57   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Да верно это всё из-за
Код:
procedure TForm1.RVEMessageChange(Sender: TObject);
begin
RVEMessage.SelectAll;
  Form1.Caption := IntToStr(Length(RVEMessage.GetSelText));
    RVEMessage.Deselect;
end;
минус одна проблема
Shouldercannon вне форума Ответить с цитированием
Старый 22.05.2010, 19:56   #4
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Цитата:
позиционирование каретки
интересует выяснение позиции курсора или его установка в нужную позицию ?
тоже не понятно.

Цитата:
не игнорировать нажатие Ctrl + Enter
вот тут не понял, что имеется в виду.
что за "не игнорировать" ?
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 22.05.2010, 20:21   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

1. Установка каретки в самый конец строки
2. Если в RichViewEdit ничего нет, то игнорируем нажатие Enter, тем самым не переводим каретку на следующую строку, а если нажали Ctrl + Enter то переводим даже при пусто RichViewEdit
Shouldercannon вне форума Ответить с цитированием
Старый 22.05.2010, 21:00   #6
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Проверка на пустоту :
Код:
function  IsEmpty(rve: TCustomRichViewEdit): Boolean;
begin
  Result := (rve.ItemCount=0) or ((rve.ItemCount=1) and (rve.GetItemStyle(0)>=0) and (rve.GetItemText(0)=''));
end;
Ставим курсор в конец текущей строки :
Код:
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
  RichViewEdit1.SelectCurrentLine;
  RichViewEdit1.Deselect;
end;
"Заряженному танку в дуло не смотрят" @Dekmer in WoT

Последний раз редактировалось Kotofff; 22.05.2010 в 21:28. Причина: Добавил ...
Kotofff вне форума Ответить с цитированием
Старый 22.05.2010, 21:23   #7
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Так по частям. Самое первое и самое главное. Как сделать чтобы игнорировалось нажатие Enter если RichViewEdit1 пуст?

Последний раз редактировалось Shouldercannon; 23.05.2010 в 02:20.
Shouldercannon вне форума Ответить с цитированием
Старый 23.05.2010, 06:03   #8
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Код:
procedure TForm1.RichViewEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (not(ssCtrl in Shift)) and (Key = VK_RETURN) and (IsEmpty(RichViewEdit1)) then Key := 0;
end;
Ctrl+Enter - все равно будет работать .
"Заряженному танку в дуло не смотрят" @Dekmer in WoT

Последний раз редактировалось Kotofff; 23.05.2010 в 06:06.
Kotofff вне форума Ответить с цитированием
Старый 23.05.2010, 13:25   #9
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Благодарю. Этап №2. Если в RichViewEdit есть какой-то текст, по после нажатия на Enter
Код:
//Поместим содержимое RVE в Memo
RVEMessage.SelectAll;
  MMessage.Text := RVEMessage.GetSelText;
    RVEMessage.Deselect;;
      RVEMessage.Clear;
        RVEMEssage.Format;
Пока что происходит снова перевод на новую строку.

Последний раз редактировалось Shouldercannon; 23.05.2010 в 13:29.
Shouldercannon вне форума Ответить с цитированием
Старый 23.05.2010, 13:36   #10
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Код:
procedure TForm1.RichViewEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (not(ssCtrl in Shift)) and (Key = VK_RETURN) and (not IsEmpty(RichViewEdit1)) then
    begin
    Key := 0;
    RichViewEdit1.InsertText(Memo1.Text, false);
    RichViewEdit1.Reformat;
    end
    else
    if (not(ssCtrl in Shift)) and (Key = VK_RETURN) and (IsEmpty(RichViewEdit1)) then Key := 0;
end;
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает Игнор в ICQ HellMercenariess Свободное общение 2 25.11.2009 12:45
Позиция Bat{CMD}_Men БД в Delphi 5 16.10.2009 18:32
Координаты каретки miatu Microsoft Office Word 11 28.08.2009 19:38
Создание второй каретки мыши andreyasu Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 02.07.2009 16:01
Позиционирование каретки Spice Win Api 1 25.03.2009 04:51