Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.05.2010, 21:38
Cors Cors вне форума
Прохожий
 
Регистрация: 30.04.2010
Сообщения: 5
Репутация: 10
Стрелка Преобразование первой буквы Edit в заглавную

Когда пользователи вводят данные, часто они должны их форматировать нужным способом. Чтобы не зависеть от пользователя, Вы должны заставить программу сделать эту работу.

Например, если пользователь напечатает имя прописными буквами, программа должна автоматически преобразовать первую букву имени или фамилии в заглавную.

Код:
with Sender as TEdit do
    if (SelStart = 0) or 
       (Text[SelStart] = ' ') then
          if Key in ['a'..'z'] then 
             Key := UpCase(Key) ;

Этот код идёт тока на латинский, а мне надо его сделать на русский чтоб также работал.
Ответить с цитированием
  #2  
Старый 18.05.2010, 22:28
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,048
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
Edit1.Text := AnsiUpperCase(Copy(Edit1.Text,1,1)) + 
                    Copy(Edit1.Text,2,Length(Edit1.Text)-1);

или

Код:
var
  C : Char;
begin
  C := Edit1.Text[1];
  Case C Of
    'a'..'z' : C := Chr(Ord('A') + Ord(C) - Ord('a'));
    'а'..'я' : C := Chr(Ord('А') + Ord(C) - Ord('а'));
  End;
  Edit1.Text[1] := C;

Во втором случае:
1. В первой строке все буковки англ, во второй - русские
2. Если не дает использовать Edit1.Text[1], то делать через буф. строку.
Ответить с цитированием
  #3  
Старый 19.05.2010, 07:54
Cors Cors вне форума
Прохожий
 
Регистрация: 30.04.2010
Сообщения: 5
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Код:
Edit1.Text := AnsiUpperCase(Copy(Edit1.Text,1,1)) + 
                    Copy(Edit1.Text,2,Length(Edit1.Text)-1);

или

Код:
var
  C : Char;
begin
  C := Edit1.Text[1];
  Case C Of
    'a'..'z' : C := Chr(Ord('A') + Ord(C) - Ord('a'));
    'а'..'я' : C := Chr(Ord('А') + Ord(C) - Ord('а'));
  End;
  Edit1.Text[1] := C;

Во втором случае:
1. В первой строке все буковки англ, во второй - русские
2. Если не дает использовать Edit1.Text[1], то делать через буф. строку.

var
C : Char;
begin
C := Edit1.Text[1];
Case C Of
'a'..'z' : C := Chr(Ord('A') + Ord(C) - Ord('a'));
'а'..'я' : C := Chr(Ord('А') + Ord(C) - Ord('а'));
End;
Edit1.Text[1] := C;


Куда этот код прописать?
Ответить с цитированием
  #4  
Старый 19.05.2010, 08:33
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

PHP код:
type
  TForm1 
= class(TForm)
    
Edit1TEdit;
    
procedure Edit1Change(SenderTObject);

procedure TForm1.Edit1Change(SenderTObject);
var
  
lInteger;
begin
  
if Length(TEdit(Sender).Text)>0 then
  begin
    l
:=TEdit(Sender).SelStart;
    
TEdit(Sender).Text:=AnsiUpperCase(TEdit(Sender).Text[1])+Copy(TEdit(Sender).Text2Length(TEdit(Sender).Text));
    
TEdit(Sender).SelStart:=l;
  
end;
end
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:20.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter