Цитата:
Сообщение от Beast
Спасибо, все заработало, если не затруднит, можно пояснить следующий код:
Код:
P := Edit1.SelStart;
S := AnsiUppercase(Edit1.Text[1]) + Copy(Edit1.Text, 2, 255);
|
Присвоение Text значения переводит курсор (SelStart - положение курсора в строке) в начало строки, поэтому надо запомнить место, где был курсор и после присвоения установить его на прежнее место.
Во второй строке преобразование первой буквы в заглавную и присоединение к этой букве остальных, начиная со второй. Такие манипуляции непосредственно с методом Text Delphi не допускает, поэтому приходится использовать локальную переменную (S).
Код:
procedure TForm1.Edit1Change(Sender: TObject);
var
S : TCaption;
P, K : Integer;
begin
if Length(Edit1.Text) > 0 then begin
P := Edit1.SelStart;
S := AnsiUppercase(Edit1.Text[1]) + Copy(Edit1.Text, 2, 255);
K := PosEx('-', S);
while K > 0 do begin
if Length(S) > K then
S[K+1] := AnsiUppercase(S[K+1])[1];
Inc(K);
K := PosEx('-', S, K);
end;
Edit1.Text := S;
Edit1.SelStart := P;
end;
end;
В этом коде проверяется наличие дефиса в строке и, если находится, то следующая за ним буква переводится в верхний регистр.
Цикл здесь затем, чтобы найти все дефисы в тексте. Их может быть более одного.
функция
PosEx находится в модуле StrUtils.