![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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