Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 410

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!.
У меня к Вам вопрос уважаемые!!!
Как можно в делфи сделать так что бы для мемо когда после точьки вводишь букву рна автоматом делалась большая??? и как что бы при нажатии кнопки если стоит больше двух пробелов, они убирались и остовался 1!!!

Лидуська Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Лидуська (статус: Посетитель)
Вопрос отправлен: 11 февраля 2009, 19:21
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Косолапов Дмитрий Юрьевич

Здравствуйте, Лидуська!
В принципе я делал нечто подобное (правда это был Html-редактор, чтобы при вводе < открывался список тэгов, при вооде > тэг "закрывался" бы и т.п.) - я обрабатывал событие типа OnKeyPressed, анализировал, какой символ введен, и на основании этого изменял (при необходимости) либо сам символ, либо какой-либо соседний текст. Свойства типа SelStart, SelEnd, SelText и им подобные тоже интенсивно использовались. Удачи!

Ответ отправил: Косолапов Дмитрий Юрьевич (статус: 8-ой класс)
Время отправки: 12 февраля 2009, 16:02

Ответ #2. Отвечает эксперт: Ученый

Здравствуйте, Лидуська! Ну как и обещал, вот код:

procedure TForm1.Button1Click(Sender: TObject); //удаляет все лишние пробелы в мемо
var
i,j,e:integer;
buf:string;
begin
for j := 0 to memo1.Lines.Count - 1 do
begin
for e:= 0 to length(memo1.Lines[j]) do
begin
   buf:= memo1.Lines[j];
 for I := 0 to length(buf) do
  if (copy(buf,i,1)=#32)and (copy(buf,i+1,1)=#32)  then
  begin
  delete(buf,i+1,1);
   memo1.Lines[j]:=buf;
  end;
end;
end;
 
end;
 
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);// делаем так, что бы вводились символы в верхнем
регистре
var
a:string;
begin
a:=key;
key:=ansiUpperCase(a)[1];
end;


З.Ы. Удачи:)))

Ответ отправил: Ученый (статус: 8-ой класс)
Время отправки: 12 февраля 2009, 18:24
Оценка за ответ: 5

Комментарий к оценке: большое спасибки!!! Я для пробела сдлала так
procedure TForm1.N1Click(Sender: TObject);
var i:integer;
n:string;
begin
n:=memo1.Lines.Text;
        for i:=2 to length(n) do
        begin
          if pos(' ', memo1.Text)<> 0 then
            begin
            memo1.HideSelection:=false;
            memo1.SelStart:=pos(' ',memo1.Text)-1;
            memo1.SelLength(' ');
            memo1.CutToClipboard;
            end;
        end;
end;
вроди пахает!!! Но все равно спасибо!!!!!!

Мини-форум вопроса

Всего сообщений: 8; последнее сообщение — 17 марта 2009, 10:56; участников в обсуждении: 4.
Ученый

Ученый (статус: 8-ой класс), 11 февраля 2009, 20:01 [#1]:

а большая это как? в верхнем регистре??
Лидуська

Лидуська (статус: Посетитель), 11 февраля 2009, 20:03 [#2]:

ну да!!!
Ученый

Ученый (статус: 8-ой класс), 11 февраля 2009, 20:11 [#3]:

А статьи почитать....
https://www.delphi-int.ru/articles/20/
Лидуська

Лидуська (статус: Посетитель), 11 февраля 2009, 20:18 [#4]:

var Str1, Str2, Str3: String;
{ ... }
Str1:='hELLo';
Str2:=UpperCase(Str1); { Str2 = "HELLO" }
Str3:=LowerCase(Str1); { Str3 = "hello" }
Я благодарна!!! но это уже мы проходили!!! не помогло!!! так как хотеорсь бы!!! Но все равно я Вам весьма благодарна!!!
Ученый

Ученый (статус: 8-ой класс), 11 февраля 2009, 20:40 [#5]:

Севодня код не смогу написать, а завтра если проблема еще будет актуальной напишу :)
Лидуська

Лидуська (статус: Посетитель), 11 февраля 2009, 20:51 [#6]:

Спасибо большое!!!
nmg

nmg (статус: Посетитель), 17 марта 2009, 10:49 [#7]:

Могу предложить универсальный способ удаления пробелов в строке.
можно пихнуть этот код в событие change для edit1 например
edit1.text:=stringreplace(edit1.text,'здесь два пробела','тут один',[rfReplaceAll]);

код отработает и поменяет два пробела на один.
Вадим К

Вадим К (статус: Академик), 17 марта 2009, 10:56 [#8]:

Вот только плоха такая замена и автора подобного опуса надо бить по пальцам. Если текстовый курсор находиться в конце текста - нормально. Но вот если он в середине тексте.... после такой правки курсор будет постоянно "уходить" и набор текста превратиться в пытку.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:57
Выполнено за 0.03 сек.