Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.036 c
14-1100507542
Гайцы-Газазад
2004-11-15 11:32
2004.12.05
Украина - Турция. 17 ноября 2004 года.


14-1100248365
Григорьев Антон
2004-11-12 11:32
2004.12.05
Пятничная головоломка по Delphi


4-1098273354
Александр В.
2004-10-20 15:55
2004.12.05
Програмное закрытие модального окна (диалог)


1-1101107443
ruslan_as
2004-11-22 10:10
2004.12.05
Как правильно прервать работу процедуры...


1-1100820152
noob
2004-11-19 02:22
2004.12.05
loop





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский