Delphi-PRAXiS

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)

Gandimann 30. Dez 2008 13:59

Datenbank: Firebird • Version: 2.1 • Zugriff über: Anydac LocalHost

TEdit erste Buchstabe immer Groß schreiben...
 
Halo Freunde ,
bei SQL Anfrage schicken muss ich immer erste Buchstabe im TEdit groß schreiben sonst findet mein Query gar keinen Datensatz. Gibt es eine Möglichkeit dass man im TEdit erste Buchstabe immer groß geschrieben bekommt. Mit Char.ecUpperCase griege ich ganze Text groß ich brauche aber nur erster Buchstabe...?
:coder:

´nen guuuuuten Rutsch ins neue..
:feuerchen:

DeddyH 30. Dez 2008 14:00

Re: TEdit erste Buchstabe immer Groß schreiben...
 
Ich würde eher das SQL anpassen.

Gandimann 30. Dez 2008 14:04

Re: TEdit erste Buchstabe immer Groß schreiben...
 
Thanx Detlef ,
für dein Antwort. Aber wie griege ich im SQL das hin !
UND general wie ist es möglich das beim daten eingabe immer rste Buchstabe nur im Uppercase bleibt ?

Matze 30. Dez 2008 14:04

Re: TEdit erste Buchstabe immer Groß schreiben...
 
Um trotzdem deine Frage zu beantworten, könntest du das ungefähr so lösen (OnChange):

Delphi-Quellcode:
MyText := Edit.Text;
MyText := LowerCase(MyText);
MyText[0] := UpperCase(PChar(MyText[0]));
Edit.Text := MyText;
Oder so ähnlich. Mit dem Char bin ich mir grad nicht ganz sicher. Das müsstest du ausprobieren.

DeddyH 30. Dez 2008 14:06

Re: TEdit erste Buchstabe immer Groß schreiben...
 
SQL-Code:
SELECT Feld FROM Tabelle
WHERE UPPER(Feld) = UPPER(Text_aus_dem_Edit)

Gandimann 30. Dez 2008 14:12

Re: TEdit erste Buchstabe immer Groß schreiben...
 
@Matze und Detlef

funzen leider beide nix....

Klaus01 30. Dez 2008 14:14

Re: TEdit erste Buchstabe immer Groß schreiben...
 
im onExit Ereignis:
Delphi-Quellcode:
MyText := Edit.Text;
MyText := LowerCase(MyText);
MyText[0] := UpperCase(MyText[0]);
Edit.Text := MyText;
Grüße
Klaus

DeddyH 30. Dez 2008 14:16

Re: TEdit erste Buchstabe immer Groß schreiben...
 
MyText[1] ;)

Gandimann 30. Dez 2008 14:18

Re: TEdit erste Buchstabe immer Groß schreiben...
 
Nein nein ich habs nun hin gegriegt und zwar geht so....


procedure TForm1.Edit1Change(Sender: TObject);
var
OldStart : Integer;
begin
With Edit1 do
if Text <> '' then begin
OnChange := NIL;
OldStart := SelStart;
Text := UpperCase(Copy(Text,1,1))+LowerCase(Copy(Text,2,Le ngth(Text)));
SelStart := OldStart;
OnChange := Edit1Change;
end;
end;

DeddyH 30. Dez 2008 14:20

Re: TEdit erste Buchstabe immer Groß schreiben...
 
Trotzdem muss die Abfrage von oben doch auch funktionieren.

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 07:16 Uhr.

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