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

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

Edit с заглавной буквы


Edit ©   (2008-01-29 11:41:00) 

Здравствуйте. Подскажите как можно сделать, чтобы в пле Edit при вводе значений первая буква автоматически становилась загланой.


Kolan   (2008-01-29 14:20:00) [1]

> Привет партизан.

Ку?


Семеныч   (2008-01-29 14:16:00) [2]

Сдается мне, что через некоторое время автор вопроса на собственном опыте убедится в том, что [2] - лучшее решение.


Anatoly Podgoretsky   (2008-01-29 14:08:00) [3]

> Kolan  (29.01.2008 13:05:15)  [15]

Привет партизан.


Kolan   (2008-01-29 13:05:00) [4]

> Еще хуже будет

Примерно так же.

Надо наверно сначала понять, зачем это надо, а потом уже предлагать решения.


Anatoly Podgoretsky   (2008-01-29 12:33:00) [5]

> Kolan  (29.01.2008 12:08:09)  [9]

> ANSIProperCase

Данная функция не соответвует постановке задачи.


Anatoly Podgoretsky   (2008-01-29 12:32:00) [6]


> Плохо тут то, что пользователь неузнат что будет в итоге
> пока не закончит ввод. А если это диалог, то вот он ввел.
>
> вася и жмет «ОК». И что в итеге ввелось вася или Вася он
> незнает…

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


Edit   (2008-01-29 12:15:00) [7]

Всем большое спасибо все здаработало.


Kolan   (2008-01-29 12:10:00) [8]

Я вот накидал, хрень какая-то, но работает :)

procedure TForm1.Edit1Change(Sender: TObject);
var
 S: string;
 SelPos: Integer;
 TempEdit: TEdit;
begin
 if Sender is TEdit then
 begin
   TempEdit := (Sender as TEdit);
   SelPos := TempEdit.SelStart;
   S := TempEdit.Text;
   if Length(S) > 0 then
   begin
     S[1] := AnsiUpperCase(S[1])[1];
     TempEdit.Text := S;
     TempEdit.SelStart := SelPos;
   end;
 end;
end;


Игорь Шевченко   (2008-01-29 12:10:00) [9]

procedure TForm1.Edit1KeyPress (Sender: TObject; var Key: Char);
begin
 with (Sender as TCustomEdit) do
   if (Key in ['a'..'z']) then
   begin
     if selStart = 0 then
       Dec(Key, 32);
   end
   else if (Key in ['A'..'Z']) then
   begin
     if selStart <> 0 then
       Inc(Key, 32);
   end
end;


Kolan   (2008-01-29 12:08:00) [10]

> ANSIProperCase из Rx рулит…  :)

Да есть какая-то ф-ция и в VCL имхо. Как в предложение что-то вертится на языке, но вспомнить немогу…


Ega23   (2008-01-29 12:06:00) [11]

ANSIProperCase из Rx рулит...  :)


Kolan   (2008-01-29 12:04:00) [12]

> А можно примерчк кода с событием OnChange, а то у меня что
> то не получается.

Показывай как неполучается…


Edit   (2008-01-29 12:03:00) [13]

А можно примерчк кода с событием OnChange, а то у меня что то не получается.


Kolan   (2008-01-29 11:54:00) [14]

> Что мешает сделать это по окончанию ввода, например, при
> потере компонентом фокуса ввода ?

Плохо тут то, что пользователь неузнат что будет в итоге пока не закончит ввод. А если это диалог, то вот он ввел.
вася и жмет «ОК». И что в итеге ввелось вася или Вася он незнает…


Семеныч   (2008-01-29 11:51:00) [15]

> Edit   (29.01.08 11:41)

Очень советую всерьез прислушаться к [2]. По соотношению нужной функциональности и простоты реализации это самый лучший способ.


Kolan   (2008-01-29 11:51:00) [16]

OnChange, имхо, больше подойдет бо на Delete реагирует.


Сергей М.   (2008-01-29 11:45:00) [17]

А собссно зачем это делать именно при вводе ?
Что мешает сделать это по окончанию ввода, например, при потере компонентом фокуса ввода ?


clickmaker   (2008-01-29 11:43:00) [18]

OnKeyPress


Наверх

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