Показать сообщение отдельно
  #8  
Старый 27.08.2008, 15:03
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Цитата:
Сообщение от 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.
__________________
Не забывайте делать резервные копии