Форум: "Основная";
Текущий архив: 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.029 c