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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с апострофом, Проблема с апострофом в Edit, RichEdit 
:(
    Опции темы
leha2007
Дата 9.8.2006, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



В Word'е для наборки апострофа в украинской(русской) раскладке нужно нажать Ctrl+Ё+Ё. Как 

можно сделать подобную комбинацию(можно другую) в Edit, RichEdit? На вариант - 

переключайтесь на англ. раскладку и набирайте там - пользователи категорически не согласны.
PM MAIL   Вверх
Palladin
Дата 9.8.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

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



Хм, я как всегда с велосипедом smile 

Вообщем сделай так, сделай пустую невидимую кнопку в компоненте MainMenu, там поставь на неё быстрый вызов, и в обработчики нажатия этой нопки пропиши добавление в твой едит или ричедит(в зависимости от того где курсор) использую аски-код "апострофа"

P.S. Думаю можно сделать более практично, но на крайний случай сойдёт smile 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Alexeis
Дата 9.8.2006, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



да зачем так сложно Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - стандартный обработчик нажатий кловиш, в нем проверить вызвана ли комбинация, если да, то вставить нужный символ в текст.


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

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

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

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



Во, я ж говорил что можно проще smile 

P.S. Сорри за флуд smile 


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
leha2007
Дата 10.8.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Пишу:

procedure TForm1.cxTextEdit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if ((Key = $C0) and (ssCtrl in Shift)) then cxTextEdit1.Text:=cxTextEdit1.Text+''';
end;

Есть 2 проблемы:
1) Ругается на ''' - как это записать правильно?
2) Курсор в cxTextEdit1 оказывается в начале строки, а не в конце...
PM MAIL   Вверх
Palladin
Дата 10.8.2006, 22:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 932
Регистрация: 15.5.2007
Где: Беларусь г.Гомель

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



Я ж говорил аски код юзай!

Попробуй так:


Код

procedure TForm1.cxTextEdit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if ((Key = $C0) and (ssCtrl in Shift)) then 
  begin
    p:=cxtextedit1.text;
    cxTextEdit1.Text:=p+#27;
  end;
end;


Это сообщение отредактировал(а) RooR - 10.8.2006, 22:52


--------------------
Глуп тот кто полагается на истину авторитета, а не на авторитет истины
[color=red]KAV&KIS==Evil[/color]
PM MAIL   Вверх
Alexeis
Дата 11.8.2006, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Ковычку нужно просто дублировать.
Код

procedure TForm1.cxTextEdit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if ((Key = $C0) and (ssCtrl in Shift)) then cxTextEdit1.Text:=cxTextEdit1.Text+'''';
end;

Для получения координаты курсора можно воспользоватся GetCursorPos
А затем после вставки символа вернуть позицию курсора при помощи SetCursorPos.
---------------------------------------------------------------------------------------
Решение ошибочное, т.к. функция  GetCursorPos дает положение курсора на экране, а не номер позиции текущего символа

Это сообщение отредактировал(а) alexeis1 - 13.8.2006, 17:18


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

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

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


Новичок



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

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



Пишу:
Код

     GetCursorPos(lpPoint);
if ((Key = $C0) and (ssCtrl in Shift)) then cxTextEdit1.Text:=cxTextEdit1.Text+'''';
    SetCursorPos(lpPoint.X,lpPoint.Y);

Вставляет апостроф, но только в конец строки, т.е. если я хочу где в средине текста вставить апостороф, то ничего не выйдет...  И курсор все-равно вначале строки.. 
PM MAIL   Вверх
Alexeis
Дата 13.8.2006, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


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

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



Код

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  X : Integer;

begin
  if ((Key = $C0) and (ssCtrl in Shift))
  then
    begin
      x := Edit1.SelStart;
      Edit1.Text := Copy(Edit1.Text, 1, X) + ''''
                  + Copy(Edit1.Text, X + 1, Length(Edit1.Text) - X);
      Edit1.SelStart := x + 1;
    end;
end;


Это сообщение отредактировал(а) alexeis1 - 13.8.2006, 17:15


--------------------
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.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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