Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как привести вводимый символ к верхнему регистру [D7, XP]


Страницы:   1 2 3 4

AntonUSAnoV ©   (2008-03-19 17:10:00) 


fieldname:=dbgrid1.SelectedField.FieldName;
if fieldname='Fam' then
begin
key:=chr(uppercase(str(key));
end;

вот значит, уважаемые мастера, нужно чтобы вводимый пользователем символ (в дбгриде) автоматически приводился к верхнему регистру, пишу я это в обработчике таблицы beforeedit , на указаный вверху код делфи пишет incopatible types,


AntonUSAnoV   (2008-03-19 19:35:00) [1]


> Johnmen ©   (19.03.08 19:29) [61]

а таким людям не место в ветке для начинающих, где наверху написана отдельная просьба мастерам - быть снисходительными, ведь я свою обязанность выполнил - я был вежлив. Такие люди могут только пользоваться цитатами после того как найден ответ.


AntonUSAnoV   (2008-03-19 19:30:00) [2]

Получилось ! правда говоря это несколько длиннее чем
цитата: Итог: Нам нужно всего лишь Key:=UpCase(Key);
Огромное спасибо.


Johnmen   (2008-03-19 19:29:00) [3]

Мы, без сомнения, неприязненно относимся к людям, предположительно не желающим подумать или поучиться прежде, чем задавать вопросы. Такие люди убивают время — они берут, ничего не давая взамен, они отнимают время, которое мы могли бы посвятить другому вопросу, более интересному, и другому человеку, более достойному ответа. Таких людей мы называем "неудачниками" ("losers")
(c) http://www.rsdn.ru/Info/Howtoask.xml


Reindeer Moss Eater   (2008-03-19 19:29:00) [4]

function AnsiUpcase(Ch : Char) : Char;
begin
Result := AnsiUpperCase(Ch)[1];
end;


Reindeer Moss Eater   (2008-03-19 19:25:00) [5]

Если по-русски, то UpCase неэффективен для не-accii символов


{RASkov}   (2008-03-19 19:25:00) [6]

> [49] AntonUSAnoV   (19.03.08 19:05)

unit RusChar;
interface
function LoCaseRu (Ch: Char): Char;
function UpCaseRu (Ch: Char): Char;

implementation

function LoCaseRu (Ch: Char): Char;
begin
    case Ch of
      'A'..'Z': Result:=Chr(Ord('a')+Ord(Ch)-Ord('A'));
      'А'..'Я': Result:=Chr(Ord('а')+Ord(Ch)-Ord('А'));
           'Ё': Result:='ё';
    else Result:=Ch;
    end;
end;

function UpCaseRu (Ch: Char): Char;
begin
    case Ch of
      'a'..'z': Result:=Chr(Ord('A')+Ord(Ch)-Ord('a'));
      'а'..'я': Result:=Chr(Ord('А')+Ord(Ch)-Ord('а'));
           'ё': Result:='Ё';
    else Result:=Ch;
    end;
end;

end.


AntonUSAnoV   (2008-03-19 19:24:00) [7]

ну всё выучили меня, вижу - только english, что делать то ?


Reindeer Moss Eater   (2008-03-19 19:22:00) [8]

кто-ни будь снизойдёт и подскажет функцию для приведения к верхнему регистру кодов accii типа char (надеюсь не бред)..

UpCase


Reindeer Moss Eater   (2008-03-19 19:20:00) [9]

Ctrl + Click на UpCase покажет всю правду.


AntonUSAnoV   (2008-03-19 19:19:00) [10]

а я бы тут до утра искал ответ ? хотя может Вы и правы, сам должен...
но всё же может кто-ни будь снизойдёт и подскажет функцию для приведения к верхнему регистру кодов accii типа char (надеюсь не бред)..


AntonUSAnoV   (2008-03-19 19:17:00) [11]

Во избежание неясностей я создал новый проект, кинул на форму едит, в обработчике onkeypress написал
procedure TForm1.edit1KeyPress(Sender: TObject; var Key: char);
begin
key:=upcase(key);
end;

откомпилировал, и ни чего - не приводится к верхнему регистру,


Reindeer Moss Eater   (2008-03-19 19:17:00) [12]

UpCase неэффективен не для accii символов


AntonUSAnoV   (2008-03-19 19:17:00) [13]


> Reindeer Moss Eater ©   (19.03.08 19:17) [51]
> UpCase неэффективен не для accii символов

воооо ! пророк воистину, !


AntonUSAnoV   (2008-03-19 19:06:00) [14]

поясню - завершается значит перескакивает через нижестоящие инструкции


AntonUSAnoV   (2008-03-19 19:05:00) [15]

я конечно замучал Вас но всё же, написав этот код (47), прога запускается, но символ не приводится к верхнему регистру, я проследил по трассировке, и значит после строчки key:=upcase(key); завершается выполнение процедуры, это я проверил добавив после key:=upcase(key); ещё несколько строк с инструкциями.


{RASkov}   (2008-03-19 19:01:00) [16]

> [45] AntonUSAnoV   (19.03.08 18:55)
> т.е. в обработчике onkeyup писать ?

Зачем? Почему ты пришел к такому выводу?
Насколько мне понятна твоя "проблема" тебе достаточно КейПресс, но ты же не можешь четко сформулировать вопрос, поэтому мой ответ может превести к непредсказуемым результатам, в результате чего твоя программа загнется вовсе.... :)
Поэтому важно как задан вопрос. Удачи.

> [47] AntonUSAnoV   (19.03.08 18:57)

Возможно :)


AntonUSAnoV   (2008-03-19 18:57:00) [17]

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: char);
begin
key:=upcase(key);
end;


AntonUSAnoV   (2008-03-19 18:55:00) [18]

не ну я счаз вообще себя дубом в пустыне чувствую, т.е. в обработчике onkeyup писать ? , но там уже тип word у key ...


AntonUSAnoV   (2008-03-19 18:55:00) [19]

не ну я счаз вообще себя дубом в пустыне чувствую, т.е. в обработчике onkeyup писать ? , но там уже тип word у key ...


{RASkov}   (2008-03-19 18:51:00) [20]

> [43] AntonUSAnoV   (19.03.08 18:48)
> пишу в обработчике onkeypress в дбгриде правильно или раньше надо ?

Вот опять ты начинаешь наводить на себя прикалывающихся :)

Ну сам почитай свой вопрос и попробуй ответить.
Вот смотри мои ответы:
1 - Да (позже)
2 - Нет (раньше)

Ты доволен? :(


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо