Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Editeingabe und der erste Buchstabe immer Groß (https://www.delphipraxis.net/135836-editeingabe-und-der-erste-buchstabe-immer-gross.html)

Kunoishi 18. Jun 2009 16:00


Editeingabe und der erste Buchstabe immer Groß
 
wie schaffe ich es das in einem Editfeld bei Eingabe der erste Buchstabe immer groß geschrieben wird?

Sherlock 18. Jun 2009 16:03

Re: Editeingabe und der erste Buchstabe immer Groß
 
Mach Dich mal mit dem Delphi-Referenz durchsuchenOnChange-Ereignis vertraut.

Sherlock

DeddyH 18. Jun 2009 16:08

Re: Editeingabe und der erste Buchstabe immer Groß
 
Mir fallen 2 Möglichkeiten ein.
OnChange:
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
var s: string;
begin
  if Length(Edit1.Text) > 0 then
    begin
      s := Edit1.Text;
      s[1] := AnsiUpperCase(s)[1];
      Edit1.Text := s;
      Edit1.SelStart := Length(Edit1.Text);
    end;
end;
OnKeyPress:
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Edit1.Text = '') or (Edit1.SelLength > 0) and (Edit1.SelStart = 0) then
    Key := AnsiUpperCase(Key)[1];
end;

Kunoishi 18. Jun 2009 16:52

Re: Editeingabe und der erste Buchstabe immer Groß
 
jups die erste version hat auf anhieb geklappt.
Danke, dass forum ist hier echt klasse.
schnell und kompetent die leute hier.
vieleicht lerne ich das denn hier ein wenig schneller :-)

himitsu 18. Jun 2009 17:04

Re: Editeingabe und der erste Buchstabe immer Groß
 
Ich würde beide Möglichkeiten kombinieren ... so würde das Eingabeverhalten des Edits nur minimal verändert :-D

und vorallem nicht direkt auf das Edit1 zugreifen. :zwinker:
Vorteile: die Prozeduren können für mehrere Edits verwendet werden und man hat keine Probleme, falls man das Edit mal umbenennt.

Delphi-Quellcode:
// OnChange
procedure TForm1.Edit1Change(Sender: TObject);
var s: string;
  i: Integer;
begin
  s := (Sender as TEdit).Text;
  if (s <> '') and (s[1] <> AnsiUpperCase(s)[1]) then
  begin
    s[1] := AnsiUpperCase(s)[1];
    i := TEdit(Sender).SelStart;
    TEdit(Sender).Text := s;
    TEdit(Sender).SelStart := i;
  end;
end;

// OnKeyPress
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Sender as TEdit).SelStart = 0 then
    Key := AnsiUpperCase(Key)[1];
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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