Форум: "Начинающим";
Текущий архив: 2009.10.18;
Скачать: [xml.tar.bz2];
ВнизКак автоматически ставить пробел после запятой Найти похожие ветки
← →
Dymok © (2009-08-14 15:12) [0]TDBMemo
Пользователи все время тупят и забывают ставить пробел после запятой.
Как написать событие, чтобы при наборе запятой автоматически после неё вставлялся пробел?
← →
Медвежонок Пятачок © (2009-08-14 15:14) [1]Это чтобы суммы в меме выглядели как 3, 62 ?
← →
Медвежонок Пятачок © (2009-08-14 15:15) [2]И что делать если юзер не тупит, и пробел вставляет руками как положено?
Задавать следующий вопрос как написать событие убирающее двойные пробелы?
← →
Dymok © (2009-08-14 15:21) [3]В моем случае там не будет сумм. Только некий список слов, разделенных запятыми.
← →
Медвежонок Пятачок © (2009-08-14 15:27) [4]тогда [2]
← →
MonoLife © (2009-08-14 15:32) [5]
> Как написать событие, чтобы при наборе запятой автоматически
> после неё вставлялся пробел?
if <послезапятой пробел> продолжаем дальше then
begin
ставим <послезапятой пробел>
проверяем дальше..
end;
← →
Медвежонок Пятачок © (2009-08-14 15:35) [6]все это дурь несусветная.
во первых есть BeforePost, во вторых запятую тоже могут пропустить как и пробел.
и вся ваша премудрость с элементами AI забуксует.
← →
Anatoly Podgoretsky © (2009-08-14 15:36) [7]А зачем пробелы то? Есть ли мальчик.
← →
Dymok © (2009-08-14 15:52) [8]
> Anatoly Podgoretsky © (14.08.09 15:36) [7]
> А зачем пробелы то? Есть ли мальчик.
Пробелы для корректного переноса по словам при печати.
← →
Dymok © (2009-08-14 15:54) [9]Если обрабатывать OnKeyPress
if Key="," then key:=
Получиться? Как дальше?
← →
Inovet © (2009-08-14 15:57) [10]> [8] Dymok © (14.08.09 15:52)
> Пробелы для корректного переноса по словам при печати.
Может кнопку формат предусмотреть, или перед печатью это делать.
← →
Kolan © (2009-08-14 16:00) [11]
> Пробелы для корректного переноса по словам при печати.
Пусть перенос по словам переносит не только по пробелу, но и по знакам препинания.
← →
Dymok © (2009-08-14 16:03) [12]
> Kolan © (14.08.09 16:00) [11]
> > Пробелы для корректного переноса по словам при печати.
> Пусть перенос по словам переносит не только по пробелу,
> но и по знакам препинания.
Для печати использую FastReport, там перенос автоматически, типа как в Excel
← →
Dymok © (2009-08-14 16:04) [13]А как узнать коды клавиш #... ?
← →
Медвежонок Пятачок © (2009-08-14 16:06) [14]Если обрабатывать OnKeyPress
if Key="," then key:=
Получиться? Как дальше?
А дальше тебя ждут приколы вашего городка.
Этот код не гарантирует от того, что ты сейчас имеешь.
← →
Dymok © (2009-08-14 16:16) [15]Мне не нужно гарантий.
Мне нужен прямой ответ - как при нажатии "," выводить ", " ?
← →
Медвежонок Пятачок © (2009-08-14 16:21) [16]зачем он тебе, если у тебя без этих телодвижений нет гарантий, и после этих телодвижений гарантий не будет?
← →
Медвежонок Пятачок © (2009-08-14 16:23) [17]Кроме того, все уже сказано. Есть событие датасета BeforePost.
в конце концов есть обработчик клика кнопки "Ок" или "сохранить".
Чего еще надо?
← →
Kolan © (2009-08-14 16:26) [18]Не понятно что вызывает затруднения. Вы не можете написать конструкцию
if ... then
?
— Прочтите учебник.
Вы не знаете какое событие обрабатывать?
— Возможно OnKeyPress подойдет.
«Пользователи все время тупят...»
Вы сделали одну из тех гадких программ, из-за которых люди думают, что компьютеры — это что-то сложное. Тупите вы, заплатите хорошему дизайнеру, он разработает вам нормальный интерфейс.
← →
Kolan © (2009-08-14 16:26) [19]Не понятно что вызывает затруднения. Вы не можете написать конструкцию
if ... then
?
— Прочтите учебник.
Вы не знаете какое событие обрабатывать?
— Возможно OnKeyPress подойдет.
«Пользователи все время тупят...»
Вы сделали одну из тех гадких программ, из-за которых люди думают, что компьютеры — это что-то сложное. Тупите вы, заплатите хорошему дизайнеру, он разработает вам нормальный интерфейс.
← →
{RASkov} © (2009-08-14 16:37) [20]Перед печатью или записью в базу сделать StringReplace(); заменить все "," на ", "
← →
Dymok © (2009-08-14 16:37) [21]Kolan - у вас словесный понос
← →
{RASkov} © (2009-08-14 16:55) [22]function InsertSpaceAfterComma(ATxt: String): String;
var N: Integer;
begin
Result:=ATxt;
for N:=Length(ATxt)-1 downto 1 do
if ATxt[N]="," then if ATxt[N+1]<>#32 then Insert(#32, Result, N+1);
end;
← →
MsGuns © (2009-08-14 17:02) [23]Между тем Колян дело говорит
← →
{RASkov} © (2009-08-14 17:07) [24]Хех, посмотреть бы на идеальную программу от Коляна :)
(ну эт типа шутки)
:о)
← →
Anatoly Podgoretsky © (2009-08-14 17:12) [25]> {RASkov} (14.08.2009 17:07:24) [24]
Мысли и программы это разные вещи, плохой танцор - хороший папа
← →
Dymok © (2009-08-14 17:22) [26]Накопал
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = char(",") then
SendMessage(Memo1.Handle, WM_CHAR, Word(" "), 0);
end;
Но, к сожалению, сначала пробел вставляет, зараза, а потом уже запятую...
← →
Медвежонок Пятачок © (2009-08-14 17:25) [27]Но, к сожалению, сначала пробел вставляет, зараза, а потом уже запятую...
а догадаться почему конечно сложно.
сначала сендмессадж делает работу, а запятая в мемо попадает после окончания обработчика.
← →
Dymok © (2009-08-14 17:26) [28]Догадаться, я и сам догадался. А вот как исправить...
← →
Медвежонок Пятачок © (2009-08-14 17:27) [29]Два раза сендмессадж и кей := 0 ?
← →
Inovet © (2009-08-14 17:28) [30]> [26] Dymok © (14.08.09 17:22)
> Накопал
>
> procedure TForm1.Memo1KeyPress(Sender: TObject; var Key:
> Char);
> begin
> if Key = char(",") then
> SendMessage(Memo1.Handle, WM_CHAR, Word(" "), 0);
> end;
>
> Но, к сожалению, сначала пробел вставляет, зараза, а потом
> уже запятую...procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = char(",") then
begin
Key = " ";
SendMessage(Memo1.Handle, WM_CHAR, Word(","), 0);
end
end;
Ы?:)
А чем тебе неоднократно советовавшееся форматирование не угодило?
← →
Медвежонок Пятачок © (2009-08-14 17:30) [31]А чем тебе неоднократно советовавшееся форматирование не угодило?
он не ожидает копи-паста в мемо. или бэкспейса после запятой.
верующий он короче.
← →
Dymok © (2009-08-14 17:39) [32]Копи пасты и бекспейсы - это на усмотрение пользователя, мы ему автозамену при воде предлагаем (вспомните тот же MS Office), которую можно отменить и т.п.
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = char(",") then
begin
Key = " ";
SendMessage(Memo1.Handle, WM_CHAR, Word(","), 0);
end
end;
- не работает. Вставляет несколько пробелов.
Форматирование - в понедельник попробую, может и понравиться
← →
Dymok © (2009-08-14 17:41) [33]Наверно после SendMessage(Memo1.Handle, WM_CHAR, Word(","), 0); вновь идет обработка key пресс
← →
Медвежонок Пятачок © (2009-08-14 17:43) [34]- не работает. Вставляет несколько пробелов.
Два сендмессджа. Один с запятой, второй с пробелом.
После чего вар-параметр убиваем в ноль.
← →
Dymok © (2009-08-14 17:48) [35]SendMessage(dbZavNom.Handle, WM_CHAR, Word(","), 0);
SendMessage(dbZavNom.Handle, WM_CHAR, Word(" "), 0);
Key:=#0;
???
Не-а ... Получается после любого SendMess c запятой вновь лезет в Onkeypress
← →
Медвежонок Пятачок © (2009-08-14 17:53) [36]а отключить обработчик перед сендмессаджем а потом включить снова ты опять конечно же догадался, но попробуешь только в понедельник.
угадал?
← →
Inovet © (2009-08-14 18:35) [37]> [36] Медвежонок Пятачок © (14.08.09 17:53)
> а отключить обработчик перед сендмессаджем а потом включить
> снова ты опять конечно же догадался
Лучше смотреть последний символ, и если это знак препинания, а текущий не знак препинания, то посылать пробел.
← →
Медвежонок Пятачок © (2009-08-14 18:39) [38]лучше вообще не бодаться с обработкой налету как уже было сказано.
но парень решил идти своим путем.
тем более что такое последний символ? я курсор двину в середину строки и нажму запятую, и вся логика упадет.
а так try/finally будет железобетонно работать отключая обработчик и включая снова
← →
Kolan © (2009-08-14 23:24) [39]Димок (я правильно произношу?), чтобы я был не голословен, обнародуйте сценарий работы пользователя и несколько скриншотов программы и я постараюсь объяснить свои слова.
*И почему мне кажется, что сценарий никто не писал, а может, даже никто и не знает что это такое?
Я почти уверен, что вы решаете не ту задачу. Отстаньте от ваших бедных пользователей, нравится им забывать ставить запятые — пусть забывают, а вы потом, после того, как они всё введут, исправляйте данные так, как вам угодно. Как это сделать вам уже рассказали.
Да, RASkov, к сожалению, показать особенно и нечего. Все использующиеся в данный момент программы я написал, когда думал примерно так же как автор этого вопроса.
Вот КСИНО есть (http://www.ksoftware.ru/wiki/ksino), но это интерфейс просто не очень ужасный, до хорошего ему далеко. Да и пощупать негде.
Посмотреть можно на Менеджер кредитов (http://www.ksoftware.ru/wiki/kcreditsmanages) — пример совково-дельфового говна с вкраплениями орехов кое где.
← →
Kolan © (2009-08-14 23:26) [40]Вместо «нравится им забывать ставить запятые » правильно читать «нравится им забывать ставить пробелы после запятых»
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.10.18;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.009 c