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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.05.2009, 15:40   #11
IIpopoK
Пользователь Подтвердите свой е-майл
 
Аватар для IIpopoK
 
Регистрация: 03.01.2008
Сообщений: 49
Восклицание

В общем при нажатии на кнопку, в RichEdit должно вестись допустим слово - "Десять".
пример:
Код:
50
50
50
Десять
50
50
если нажать повторно, то должно выйти вот так:
Код:
50
50
50
Десять
Десять
50
50
вот!
А при использовании написанного выше кода происходит следующее.
при 1-м клике на кнопку:
Код:
50
50
50
Десять
50
50
При 2-м клике на кнопку:
Код:
50
50
50
Десять
Десять

50
50
При 3-м клике на кнопку:
Код:
50
50
50
Десять
Десять
Десять


50
50
и т.д.
IIpopoK вне форума Ответить с цитированием
Старый 24.05.2009, 15:49   #12
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
А при использовании написанного выше кода происходит следующее.
Которого именно..? Там их уже много разных накопилось...

Скорее всего добавляется лишнее "#10" или "#13"...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 24.05.2009, 15:52   #13
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Эм.. Может, тогда просто:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var k : integer;
begin
SendMessage(RichEdit1.Handle, EM_REPLACESEL, 0, integer(PCHAR('Десять'+#13)));
end;
?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.05.2009, 16:15   #14
IIpopoK
Пользователь Подтвердите свой е-майл
 
Аватар для IIpopoK
 
Регистрация: 03.01.2008
Сообщений: 49
Восклицание

Цитата:
Сообщение от DomiNick Посмотреть сообщение
Которого именно..? Там их уже много разных накопилось...

Скорее всего добавляется лишнее "#10" или "#13"...
вот этого:
Цитата:
k:=Pcode.RichEdit1.SelStart;
Pcode.RichEdit1.SelLength := length(Pcode.RichEdit1.Text);
if Pcode.RichEdit1.SelText[1]<>#13 then
Pcode.RichEdit1.SelText := #10+Pcode.RichEdit1.SelText
else
Pcode.RichEdit1.SelText := #10+#13+Pcode.RichEdit1.SelText;
Pcode.RichEdit1.SelStart := k+1;
Pcode.RichEdit1.SelLength := 0;
Pcode.RichEdit1.SetFocus;
---------------------------------------------------------------------------------

Цитата:
Сообщение от Sazary Посмотреть сообщение
Эм.. Может, тогда просто:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var k : integer;
begin
SendMessage(RichEdit1.Handle, EM_REPLACESEL, 0, integer(PCHAR('Десять'+#13)));
end;
?
Если использовать этот метод то получается так:
1-е нажатие:
Цитата:
50
50
Десять
50
50
2-е нажатие:
Код:
50
50
ДесятьДесять

50
50
----
а должно быть так:
1-е нажатие:
Цитата:
50
50
Десять
50
50
2-е нажатие:
Код:
50
50
Десять
Десять
50
50
и так далее...
IIpopoK вне форума Ответить с цитированием
Старый 24.05.2009, 16:20   #15
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от IIpopoK
Если использовать этот метод то получается так:
Хм.. А у меня как надо делается..
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 24.05.2009, 17:00   #16
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Попробуйте так:
Код:
SendMessage(RichEdit1.Handle, EM_REPLACESEL, 0, integer(PCHAR(#13+'Десять')));
А вообще это зависит где будет распологаться курсор...
Вариант Sazary для случая если курсор в начале строки...


Цитата:
вот этого:
...
Думал долго... Но так и не понял что оно должно делать...

Если первый символ в выбранном не "абзац", то перевести выделенное на новую строку...
Иначе дважды перевести выделенное на новую строку..... %)
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 25.05.2009, 02:29   #17
IIpopoK
Пользователь Подтвердите свой е-майл
 
Аватар для IIpopoK
 
Регистрация: 03.01.2008
Сообщений: 49
Восклицание

Цитата:
Сообщение от Sazary Посмотреть сообщение
Хм.. А у меня как надо делается..
Я незнаю почему( может быть из-за того что у меня сначала идет функция поиска и замены, а потом только переход на новую строку, но это маловероятно!
Вам тоже большое спасибо!!!! Очень помогли!

Цитата:
Сообщение от DomiNick Посмотреть сообщение
Попробуйте так:
Код:
SendMessage(RichEdit1.Handle, EM_REPLACESEL, 0, integer(PCHAR(#13+'Десять')));
А вообще это зависит где будет распологаться курсор...
Вариант Sazary для случая если курсор в начале строки...



Думал долго... Но так и не понял что оно должно делать...

Если первый символ в выбранном не "абзац", то перевести выделенное на новую строку...
Иначе дважды перевести выделенное на новую строку..... %)
Большое спасибо! то что нужно! все верно работает!
Но работает с небольшим косяком( на 2-м клике((
вот скрин что получается:
Изображения
Тип файла: png 25.05.png (5.3 Кб, 86 просмотров)

Последний раз редактировалось IIpopoK; 25.05.2009 в 02:53.
IIpopoK вне форума Ответить с цитированием
Старый 25.05.2009, 02:56   #18
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от IIpopoK
Но работает с небольшим косяком( на 2-м клике((
А где здесь результат второго клика? Какая строчка?
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 25.05.2009, 03:15   #19
IIpopoK
Пользователь Подтвердите свой е-майл
 
Аватар для IIpopoK
 
Регистрация: 03.01.2008
Сообщений: 49
Восклицание

Цитата:
Сообщение от Sazary Посмотреть сообщение
А где здесь результат второго клика? Какая строчка?
ну да) согласен не видно=))
Обьясню..) при каждом клике появляется текст "a:=a+1;"!
соответственно "a:=а+1;а:=а+1;" - т.е. выделенный текст есть 2-е нажатие
IIpopoK вне форума Ответить с цитированием
Старый 25.05.2009, 03:27   #20
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Очень странно. А где у вас находится курсор при первом клике?
Попробовал свой вариант и DomiNick'а. Оба работают.. Все переносится..
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенос текста на следующую строку в TEdit uraura Общие вопросы Delphi 3 17.04.2009 18:13
Как при нажатии на строку в Listbox передавать нажатую строку в переменную Михаил Юрьевич Общие вопросы Delphi 5 16.03.2009 12:59
Как обработать следующую ситуацию? Tanuska___:) БД в Delphi 5 09.09.2008 12:47
На чем целесообразнее решить следующую задачу? Stilet Свободное общение 4 01.08.2008 09:35
Перемещение указателя на следующую запись Avalonix БД в Delphi 6 31.05.2008 11:13