AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TEdit erste Buchstabe immer Groß schreiben...
Thema durchsuchen
Ansicht
Themen-Optionen

TEdit erste Buchstabe immer Groß schreiben...

Ein Thema von Gandimann · begonnen am 30. Dez 2008 · letzter Beitrag vom 3. Mai 2011
Antwort Antwort
Seite 2 von 2     12   
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#11

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

  Alt 30. Dez 2008, 14:06
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
Heiko
  Mit Zitat antworten Zitat
Gandimann

Registriert seit: 10. Dez 2008
105 Beiträge
 
#12

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

  Alt 2. Mai 2011, 18:55
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. ??
Was ist die mehrzahl von Mopp ? !
genau !... Möpse........oder ?
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#13

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

  Alt 2. Mai 2011, 19:13
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
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.

Geändert von BUG ( 2. Mai 2011 um 22:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#14

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

  Alt 2. Mai 2011, 22:03
Auch wenn es umständlicher aussieht:
Zitat:
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];
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#15

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

  Alt 2. Mai 2011, 22:23
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]
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#16

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

  Alt 2. Mai 2011, 22:33
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.157 Beiträge
 
Delphi 12 Athens
 
#17

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

  Alt 3. Mai 2011, 07:41
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#18

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

  Alt 3. Mai 2011, 08:09
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz