Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1250782279
istok20
2009-08-20 19:31
2009.10.18
createservice вызывает падение rpc...


15-1250675891
Yurikon
2009-08-19 13:58
2009.10.18
Контроль за использованием памяти


15-1250695519
McSimm
2009-08-19 19:25
2009.10.18
Технические работы


2-1250177404
Del
2009-08-13 19:30
2009.10.18
Указатели


2-1250247119
sdsk
2009-08-14 14:51
2009.10.18
Как в delphi получить копию экземпляра класса?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский