![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перевод Ф.И.О. в верхний регистр
zdm © (2008-09-29 14:35:00)Добрый день. Вот такая вот задачка, юзер вбивает фамилию, имя, отчество и после нажатия пробела между, соответсвенно фам, имени первые буквы должны переводиться в верхний регистр. Ни чего умнее как
procedure TForm4.Edit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);я не придумал... но почемуто срабатывает когда переменная q-глобальная и если очень быстро набирать, то косяк получается, как будто комп запаздывает за набиранием и переводятся не те символы которые нужны...
begin
if q=1 then //был пробел, следующий символ переводим в верхний регистр
begin
Edit1.Text:=Copy(edit1.Text,1,Length(Edit1.Text)-1)+AnsiUpperCase(copy(Edit1.Text,Length(Edit1.Text),1));
end;
//ловим нажатие пробела
if key = VK_SPACE then q:=1 else q:=0;
end;
Anatoly Podgoretsky (2008-09-29 14:44:00) [41]Это еще пользователь не перемещался мышкой по органу, вот тут и кырдык придет.
{RASkov} (2008-09-29 14:44:00) [42]А если делать чтоб при вводе, то можно добится всего этого... т.е. лешить косяков алгоритм, но он будет ресурсоемким(времязатратным).... В общем - не оптимальным....
zdm (2008-09-29 14:43:00) [43]согласен, на счет двух пробелов и прочих ньюансов это потом.. в Word допустим, все в реальном времени отрабатывается....
{RASkov} (2008-09-29 14:42:00) [44]В данном алгоритме кроме двух пробелов еще кучу косяков можно найти.... например нажатие Del перед первой загавной и впечатывании следом другой буквы.... Вообщем туфта идея :)
Юрий Зотов (2008-09-29 14:41:00) [45]Будет гораздо проще переводить регистр не сразу, а в событии OnExit. То есть, после полного окончания ввода.
{RASkov} (2008-09-29 14:40:00) [46]Плохой алгоритм.... а если два пробела нажать?
Лучше по окончанию ввода сделать нужное...