Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.05;
Скачать: CL | DM;

Вниз

Подсчет символов   Найти похожие ветки 

 
Pretender   (2004-11-24 15:40) [0]

Люди, подскажите, пожалуйста, как сделать следующее:

на форме есть компонента Memo1. А как сделать так, чтобы в компонене Label1 считались символы, которые вводятся в Memo, а при нажатии BackSpace они стирались и счетчик тоже убавлялся на соответствующее количество символов? С Label проблем нет, подскажите алгоритм как это организовать. Я пробовал сделать через обработчик событий OnKeyPress, но считались вообще все нажатия клавиш, BackSpace тоже :).


 
Poirot ©   (2004-11-24 15:47) [1]

А ты попробуй TMemo.OnChange обработчик попользовать у твоего мемо:)


 
Jay   (2004-11-24 15:52) [2]

Проверяй код клавиш, если Backspace (#8), значит минут один...


 
wal ©   (2004-11-24 15:54) [3]


procedure TForm1.OnMemo1Change(Sender:TObject)
begin
 Label1.Caption := IntToStr(Length(Memo1.Lines.Text) - 2*(Memo1.Lines.Count-1))
end;

Помоему так.

С уважением.


 
Pretender   (2004-11-24 16:52) [4]

Вечером проверю. Ребят, спасибо! Но если что я опять пристану. :)


 
Ega23 ©   (2004-11-24 16:54) [5]

2 wal ©   (24.11.04 15:54) [3]

procedure TForm1.OnMemo1Change(Sender:TObject)
begin
Label1.Caption := IntToStr(Length(Memo1.Text))
end;

Достаточно там.


 
Poirot ©   (2004-11-24 17:01) [6]

Ega23 ©   (24.11.04 16:54) [5]
Это если без учёта переноса строки то да, а если считать именно символы чепятные символы, то нет!


 
Ega23 ©   (2004-11-24 17:06) [7]

Ставим Memo1.WordWrap:=True и никаких тебе $0D + $0A


 
Poirot ©   (2004-11-24 17:15) [8]

Ega23 ©   (24.11.04 17:06) [7]
Возми в руки Делфи и проверь.
Ты не прав. Практика показывает:)
Докучи о каких-то Врапах вообще изначально речи не было:)
ЗЫ:нехорошо сначала что-то делать а потом обговаривать условия ка кэто должно работать.


 
Плохиш ©   (2004-11-24 17:24) [9]


> Poirot ©   (24.11.04 17:15) [8]
> Ega23 ©   (24.11.04 17:06) [7]
> Возми в руки Делфи и проверь.

Ты эта, сам бы взял и проверил. В Text находятся только символы введённые пользователем, что вроде как автору и нужно.


 
Poirot ©   (2004-11-24 17:28) [10]

Дык блин что я и написал в
Poirot ©   (24.11.04 17:01) [6]
Введённые - а ентер он тоже может ввести:) Это мемо!!!!
Сам почитай.. я взял и проверил...


 
Ega23 ©   (2004-11-24 17:30) [11]

2 Poirot ©   (24.11.04 17:15) [8]
1.
Возми в руки Делфи и проверь.
Ну естественно проверил.
Доказательство:
Form1, Memo1, Button1, Label1.
Memo1.Width:=81; Memo1.Font - по умолчанию. В общем 11 символов вмещается в строку; Memo1.WordWrap:=True;

procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Caption:=IntToStr(Length(Memo1.Text));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption := IntToStr(Length(Memo1.Lines.Text) - 2*(Memo1.Lines.Count-1))
end;

Вводим

Начинаем ввод символов. Вводим строчку "1111111111 1111111111"
Button1 -> Label1.Caption=21
Button2 -> Label1.Caption=19

Где правильно?

Докучи о каких-то Врапах вообще изначально речи не было:)

Специально пересмотрел: изначально о только ПЕЧАТНЫХ символах речи тоже не было.


 
ALEIIIKA ©   (2004-11-24 17:35) [12]

Сорри я не усмортел, думал меня спрашивает.


 
Ega23 ©   (2004-11-24 17:36) [13]

2 Poirot ©

Ну и вдогонку, раз мы все такие "умные":
Лезем на сайт, ну, допустим, www.megafon.ru, выбираем сервис "Отправить SMS" и в форме текста сообщения начинаем нажимать Enter. Сколько символов из 110 отведённых остаётся?

Так что учите матчасть, молодой человек.


 
Poirot ©   (2004-11-24 17:37) [14]

Флуд на пустом месте....
Poirot ©   (24.11.04 17:01) [6] - ещё раз перечитай...
Проверял - я про врапы... Если есть \n то они есть....
А врапы это не переносы строки...
ЗЫ: Initional conditions изначально показывать надо, а не в конце...


 
Ega23 ©   (2004-11-24 18:13) [15]

Проверял - я про врапы... Если есть \n то они есть....
Если WordWrap=True, то они (\n) не нужны. И без них прекрасно строки переносятся.
Даже сейчас, набивая данный текст, я его пишу в мемо. И строка
11111111111111111111111111111111111111111111111111111111111111 1111111111111111
у меня занимает полторы строчки, а на экране выглядит целой.
Когда строишь пользовательский интерфейс, то очень у многих компонентов Align выставляешь. А это автоматически означает, что при одинаковой длине текста Мемо на разных разрешениях экрана может быть разное количество строк.
И ещё. Я могу поставить в качестве разделителя строк символ #13, а также #13+#10 (на сколько мне известно DOS-овское и UNIX-овое различие разделителя строк).


 
Poirot ©   (2004-11-24 18:29) [16]

>>Если WordWrap=True, то они (\n) не нужны. И без них прекрасно >>строки переносятся.
Да, но если ты введёшь этот самый \n. Так кто тебе его запрещает ввести?!!.. проблема в том, что Count для мемо соответствует количеству строк именнов мемо, а не в тексте...
И соглашусь что просто так тривиально уменьшать количество символов непрально, но всётаки это зависит от задачи. А если не надо считать \n в данной задаче - тогда это уже проблема другая - их не считать... логично?! - это слишком долго для одной каждого изменения сивола...
А ворд врап это вообще отдельная песня. Так как если ты сохранишь содержимое мемо в файл, то там уже буит реальное количество строк и совершщенно не приделать буит этот самый ворд врап.
PS: пРедлагаю закончит флуд. Задача тривиальна. Мб поговорить на более интересные темы?! а?!... :)



Страницы: 1 вся ветка

Текущий архив: 2004.12.05;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.032 c
1-1101094265
zzTop
2004-11-22 06:31
2004.12.05
Подключение баз KAV к воей программе


4-1098366299
Serega41
2004-10-21 17:44
2004.12.05
Как перехватить сообщения от OutputDebugString, DbgPrint?


14-1100706976
Kolan
2004-11-17 18:56
2004.12.05
Как 32 разрядное приложение на Delphi стать 16 разрядным?


3-1100002398
Term
2004-11-09 15:13
2004.12.05
TQReport как сделать чтобы одна страница была портрет а вторая


1-1101095867
zina_kogay
2004-11-22 06:57
2004.12.05
word_query