|
Вопрос # 2 410/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!.
У меня к Вам вопрос уважаемые!!!
Как можно в делфи сделать так что бы для мемо когда после точьки вводишь букву рна автоматом делалась большая??? и как что бы при нажатии кнопки если стоит больше двух пробелов, они убирались и остовался 1!!!
 |
Вопрос задала: Лидуська (статус: Посетитель)
Вопрос отправлен: 11 февраля 2009, 19:21
Состояние вопроса: открыт, ответов: 2.
|
Ответ #1. Отвечает эксперт: Косолапов Дмитрий Юрьевич
Здравствуйте, Лидуська!
В принципе я делал нечто подобное (правда это был Html-редактор, чтобы при вводе < открывался список тэгов, при вооде > тэг "закрывался" бы и т.п.) - я обрабатывал событие типа OnKeyPressed, анализировал, какой символ введен, и на основании этого изменял (при необходимости) либо сам символ, либо какой-либо соседний текст. Свойства типа SelStart, SelEnd, SelText и им подобные тоже интенсивно использовались. Удачи!
Ответ #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]:
ну да!!!
|
|
Лидуська (статус: Посетитель), 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 (статус: Посетитель), 17 марта 2009, 10:49 [#7]:
Могу предложить универсальный способ удаления пробелов в строке.
можно пихнуть этот код в событие change для edit1 например
edit1.text:=stringreplace(edit1.text,'здесь два пробела','тут один',[rfReplaceAll]);
код отработает и поменяет два пробела на один.
|
|
Вадим К (статус: Академик), 17 марта 2009, 10:56 [#8]:
Вот только плоха такая замена и автора подобного опуса надо бить по пальцам. Если текстовый курсор находиться в конце текста - нормально. Но вот если он в середине тексте.... после такой правки курсор будет постоянно "уходить" и набор текста превратиться в пытку.
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|