Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi TEdit erste Buchstabe immer Groß schreiben... (https://www.delphipraxis.net/126665-tedit-erste-buchstabe-immer-gross-schreiben.html)

hoika 30. Dez 2008 15:06

Re: TEdit erste Buchstabe immer Groß schreiben...
 
Hallo,

kleine Ergänzung zum Code oben.

Delphi-Quellcode:
procedure TForm1.CommonEditChange(theEdit: TEdit);
var
  OldStart : Integer;
  TempProc: procedure (Sender: TObject) of object;
begin
  with theEdit do
  begin
    if Text <> '' then
    begin
      TempProc:= theEdit.OnChange;
      try
        OnChange := NIL;
        OldStart := SelStart;
        Text := UpperCase(Copy(Text,1,1))+LowerCase(Copy(Text,2,Length(Text)));
        SelStart := OldStart;
      finally
        OnChange := TempProc;
      end;
    end;
  end;
end;
Somit kann die Method für mehrere Editoren benutzen.


Heiko

Gandimann 2. Mai 2011 19:55

AW: Re: TEdit erste Buchstabe immer Groß schreiben...
 
Zitat:

Zitat von hoika (Beitrag 862259)
Hallo,

kleine Ergänzung zum Code oben.

Delphi-Quellcode:
procedure TForm1.CommonEditChange(theEdit: TEdit);
var
  OldStart : Integer;
  TempProc: procedure (Sender: TObject) of object;
begin
  with theEdit do
  begin
    if Text <> '' then
    begin
      TempProc:= theEdit.OnChange;
      try
        OnChange := NIL;
        OldStart := SelStart;
        Text := UpperCase(Copy(Text,1,1))+LowerCase(Copy(Text,2,Length(Text)));
        SelStart := OldStart;
      finally
        OnChange := TempProc;
      end;
    end;
  end;
end;
Somit kann die Method für mehrere Editoren benutzen.


Heiko

Wie kann ich diese Code so erweitern dass , erste Buchstabe nach Leerzeichen auch Gross kommt. ??

BUG 2. Mai 2011 20:13

AW: Re: TEdit erste Buchstabe immer Groß schreiben...
 
Zitat:

Zitat von Gandimann (Beitrag 1098427)
Wie kann ich diese Code so erweitern dass , erste Buchstabe nach Leerzeichen auch Gross kommt. ??

Sicher.

Als Erstes: diese Procedure arbeitet im Grunde auf Strings, warum sollte man sie auf die Nutzung mit TEdits beschränken.

Die eigentliche Funktion kann man genauso hinschreiben wie man sich das vorstellt.
Delphi-Quellcode:
function startWordsWithCaps(const x: String): String;
const
  blanks = [#9, #32, #10, #13];
var
  i: integer;
  lastWasBlank: boolean;
begin
  SetLength(Result, length(x));
  lastWasBlank := true;
  for i := 1 to length(x) do
  begin
    if lastWasBlank then Result[i] := upCase(x[i]) else Result[i] := x[i];
    lastWasBlank := x[i] in blanks;
  end;
end;
Fragen zum Code dürfen gestellt werden. Code darf in Frage gestellt werden :mrgreen:

DeddyH 2. Mai 2011 23:03

AW: TEdit erste Buchstabe immer Groß schreiben...
 
Auch wenn es umständlicher aussieht:
Zitat:

Delphi-Quellcode:
if lastWasBlank then Result[i] := upCase(x[i]) else Result[i] := x[i];

-->
Delphi-Quellcode:
if lastWasBlank then
  Result[i] := AnsiUpperCase(x[i])[1]
else
  Result[i] := x[i];

BUG 2. Mai 2011 23:23

AW: TEdit erste Buchstabe immer Groß schreiben...
 
Zitat:

Zitat von DeddyH (Beitrag 1098453)
Auch wenn es umständlicher aussieht:

Gibt es da eine Erklärung dazu?
UpCase sollte mit WideChar doch funktionieren?

Oder ist es wegen:
Zitat:

The conversion uses the current user locale, unlike UpperCase.
[AnsiUpperCase]

DeddyH 2. Mai 2011 23:33

AW: TEdit erste Buchstabe immer Groß schreiben...
 
Aus der Hilfe zu Upcase:
Zitat:

Character values not in the range a..z are unaffected.
D.h. Umlaute würden sonst nicht berücksichtigt.

himitsu 3. Mai 2011 08:41

AW: TEdit erste Buchstabe immer Groß schreiben...
 
Delphi-Quellcode:
function CapitalizeWords(const S: String): String;
const
  Blanks = [#9, #10, #13, #32];
var
  i: Integer;
  U: String;
begin
  U := AnsiUpperCase(S);
  Result := S;
  for i := 1 to Length(Result) do
    if (i = 1) or (Result[i - 1] in Blanks) then
      Result[i] := U[i];
end;

DeddyH 3. Mai 2011 09:09

AW: TEdit erste Buchstabe immer Groß schreiben...
 
Jepp, das dürfte schneller sein. Aber noch ein Vorschlag:
Delphi-Quellcode:
function CapitalizeWords(const S: String; FirstOnly: Boolean = false): String;
const
  Blanks = [#9, #10, #13, #32];
var
  i: Integer;
  U: String;
begin
  U := AnsiUpperCase(S);
  if FirstOnly then
    Result := AnsiLowerCase(S)
  else
    Result := S;
  for i := 1 to Length(Result) do
    if (i = 1) or (Result[i - 1] in Blanks) then
      Result[i] := U[i];
end;
So lässt sich steuern, ob ausschließlich der jeweils erste Buchstabe groß geschrieben werden soll.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:51 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz