Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Einstellungen im Editfenster (https://www.delphipraxis.net/105811-einstellungen-im-editfenster.html)

STS301 30. Dez 2007 17:47


Einstellungen im Editfenster
 
Hallo

kann man im Editfenster einstellen, dass man nur ein Zeichen eingeben darf und es nur in Blockbuchstaben geschrieben werden kann

danke im Voraus

DeddyH 30. Dez 2007 17:50

Re: Einstellungen im Editfenster
 
Zur Länge schau Dir mal MaxLength an, aber was meinst Du mit Blockbuchstaben?

STS301 30. Dez 2007 18:01

Re: Einstellungen im Editfenster
 
dass er nur Großbuchstaben ausgibt ="ABCDEFGHIJKLMNOPQRSTUVWXYZ"

DeddyH 30. Dez 2007 18:08

Re: Einstellungen im Editfenster
 
Stell CharCase auf ecUpperCase.

STS301 30. Dez 2007 18:17

Re: Einstellungen im Editfenster
 
gut danke :thumb: :firejump:

kann man eigentlich auch sagen, dass er die Einstellungen auf für mehrere Editfenster übernehmen soll??

:?:

quendolineDD 30. Dez 2007 20:12

Re: Einstellungen im Editfenster
 
Klar, so geht das per Code.
Sucht sich alle Editfelder, welche nach dem Standard benannt sind ;)

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
const
  Name = 'Edit';
begin
    for i := 1 to ComponentCount do begin
      if Components[i-1].ClassName = 'TEdit' then
         with TEdit(FindComponent(Name + IntToStr(i))) do
          begin
            MaxLength := 10;
            CharCase := ecUpperCase;
          end;
    end;
end;

dominikkv 30. Dez 2007 20:20

Re: Einstellungen im Editfenster
 
Zitat:

Zitat von STS301
gut danke :thumb: :firejump:

kann man eigentlich auch sagen, dass er die Einstellungen auf für mehrere Editfenster übernehmen soll??

:?:

Du kannst dein Edit markieren (anklicken), dann kopieren (STRG + C) und dann einfügen (STRG + V), dann hat das neue Edit alle Eigenschaften vom alten.

quendolineDD 30. Dez 2007 20:22

Re: Einstellungen im Editfenster
 
Oder du markierst die entsprechenden Edit's in der Objekt-Hirarchie und verstellst dann im ObjektManager die Einstellungen, dann wird das für alle markierten Edit's entsprechend übernommen.

STS301 31. Dez 2007 13:03

Re: Einstellungen im Editfenster
 
ja so würde es auch gehen, habe es mal bei einem Button gemacht und dann hat er mir die ganze Zeit Fehlermeldungen ausgegeben :?: keine Ahnung warum

würde es auch mit For-Schleife gehen so z.b:

Delphi-Quellcode:
var x : integer
begin

for x:=1 to 3 do edit[x]:= edit[x].text:= 'Hallo'

end.

DeddyH 31. Dez 2007 13:05

Re: Einstellungen im Editfenster
 
Zitat:

Zitat von STS301
Delphi-Quellcode:
for x:=1 to 3 do edit[x]:= edit[x].text:= 'Hallo'

Was soll das denn bewirken (so es denn ginge)?

STS301 31. Dez 2007 13:15

Re: Einstellungen im Editfenster
 
Liste der Anhänge anzeigen (Anzahl: 1)
naja, habe ich mir nur so nebenbei gedacht, aber es sollte für die Edit[1-3] in den Text zb. Hallo schreiben


Zitat:

Zitat von quendolineDD
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
const
  Name = 'Edit';
begin
    for i := 1 to ComponentCount do begin
      if Components[i-1].ClassName = 'TEdit' then
         with TEdit(FindComponent(Name + IntToStr(i))) do
          begin
            MaxLength := 10;
            CharCase := ecUpperCase;
          end;
    end;
end;

wirklich funktionstüchtig ist es nicht
er gibt mir die Fehlermeldung aus

DeddyH 31. Dez 2007 13:18

Re: Einstellungen im Editfenster
 
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
    for i := 1 to 3 do begin
      with TEdit(FindComponent('Edit' + IntToStr(i))) do
        begin
          MaxLength := 10;
          CharCase := ecUpperCase;
          Text := 'Hallo';
        end;
    end;
end;
Ungetestet.

ArmyMan 31. Dez 2007 13:21

Re: Einstellungen im Editfenster
 
Wie heissen denn deine Edits? Falls du den Source von quendolineDD verwendest, müssen deine Edits mit "Edit" anfangen und durchnummeriert werden: Edit1, Edit2, ...

STS301 31. Dez 2007 13:23

Re: Einstellungen im Editfenster
 
genau :thumb: super :firejump:

@ArmyMan:

sie heißen eh alle und Edit1, Edit2, ...

STS301 31. Dez 2007 17:20

Re: Einstellungen im Editfenster
 
entschuldige meine vielen Fragen, aber das ist ja hoffentlich zu Silvester nicht verboten

1.kann man wenn man in ein Editfenster ein Zeichen hineinschreibt, man aber ein zweites Zeichen schreibt, dass der Rechner dann auf das nächste Editfenster umspringt?

2.wie kann man mit den Pfeiltasten die Edits rauf und hinunter fahren?

guten Rutsch!

haentschman 31. Dez 2007 18:08

Re: Einstellungen im Editfenster
 
...relativ einfach.

zu 1.
- im ONChange die Länge des Strings abfragen.
- ist Länge > 1 dann setze Focus auf nächstes Edit Feld.


zu 2.

- im OnKeyDown / OnKeyUp virtuellen Tastencode abfragen.
- bei Übereinstimmung SetFocus nächstes Feld.

...mit diesen Stichwörtern solltet Du was anfangen können... :hi:

Guten Rutsch alle miteinander... :party:

STS301 31. Dez 2007 19:44

Re: Einstellungen im Editfenster
 
anfangen ja, nur umsetzten nicht wirklich

1.
Delphi-Quellcode:
if edti1.text<1 then..
oder wie

2. schaffe nicht einmal den Anfange :pale: :pale: :duck:

bitsetter 1. Jan 2008 00:56

Re: Einstellungen im Editfenster
 
Hi,

du meinst bestimmt Length
Delphi-Quellcode:
if Length(Edit1.Text)> 1 then

Garfield 1. Jan 2008 09:55

Re: Einstellungen im Editfenster
 
Wenn es für alle TEdits gelten soll, kann man es im FormCreate so machen:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var
  i : Integer;
...

begin
...
  for i := 0 to ComponentCount - 1
  do begin
    if Components[i] is TEdit then
    with (Components[i] as TEdit) do
    begin
      MaxLength := 1;
      CharCase := ecUpperCase;
      Text := '';
      OnKeyPress := EditKeyPress;
    end;
  end;
...
end;
Dann lässt sich nur ein Zeichen eingeben und Buchstaben werden großgeschrieben. Andere Zeichen werden im OnKeyPress abgefangen. Vielleicht so:

Delphi-Quellcode:
procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
  case Key of
      #0.. #7  : Key :=  #0; // Steuerzeichen
      #9..#31  : Key :=  #0; // Steuerzeichen
     #34       : Key :=  #0; // "
     #42       : Key :=  #0; // *
     #47       : Key :=  #0; // /
     #58       : Key :=  #0; // :
     #60       : Key :=  #0; // <
     #62       : Key :=  #0; // >
     #63       : Key :=  #0; // ?
     #92       : Key :=  #0; // \
    #124       : Key :=  #0; // |
    #127       : Key :=  #0; // Sonderzeichen
    #129       : Key :=  #0; // Sonderzeichen
    #131..#195 : Key :=  #0; // Sonderzeichen
    #197..#213 : Key :=  #0; // Sonderzeichen
    #215..#219 : Key :=  #0; // Sonderzeichen
    #223       : Key :=  #0; // ß
    #224..#227 : Key :=  #0; // Sonderzeichen
    #229..#245 : Key :=  #0; // Sonderzeichen
    #247..#251 : Key :=  #0; // Sonderzeichen
    #253..#255 : Key :=  #0; // Sonderzeichen
  end;
end;
Bei der Form1 sollte unter private noch
Delphi-Quellcode:
procedure EditKeyPress(Sender: TObject; var Key: Char);
deklariert werden.

HLukas 1. Jan 2008 11:15

Re: Einstellungen im Editfenster
 
und warum nicht so !

procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
#65..#90 : begin end;
else key := #0;
end;
end;

Garfield 1. Jan 2008 12:09

Re: Einstellungen im Editfenster
 
Geht natürlich auch. Und wenn Du schon minimierst, kannst Du das "begin end" auch weglassen. Das ";" reicht.

DeddyH 1. Jan 2008 12:16

Re: Einstellungen im Editfenster
 
So fände ich es besser lesbar:
Delphi-Quellcode:
if not (Key in ['A'..'Z']) then
  Key := #0;

STS301 1. Jan 2008 17:34

Re: Einstellungen im Editfenster
 
Zitat:

Zitat von Garfield
Delphi-Quellcode:
      OnKeyPress := EditKeyPress;
Delphi-Quellcode:
procedure EditKeyPress(Sender: TObject; var Key: Char);
deklariert werden.

was bewirkt das OnKeyPress:=EditKeyPress?

was bewirkt das := #0

@bitsetter

ja genau, nur wie soll ich dem Programm dann sagen, dass er ins nächste Feld umspringen soll?

alles Gute im Neuen Jahr

DeddyH 1. Jan 2008 17:38

Re: Einstellungen im Editfenster
 
Zitat:

Zitat von STS301
ja genau, nur wie soll ich dem Programm dann sagen, dass er ins nächste Feld umspringen soll?

Versuch mal
Delphi-Quellcode:
Perform(WM_NEXTDLGCTL,0,0)

quendolineDD 1. Jan 2008 17:57

Re: Einstellungen im Editfenster
 
Sorry, hab die 2. Seite nicht gesehen

haentschman 1. Jan 2008 18:29

Re: Einstellungen im Editfenster
 
Hallo...

Zitat:

was bewirkt das := #0
...setzt den Key auf 0... damit dein Computer nicht 'bing' macht beim Tastendruck.
... nimm es raus und du wirst hören... :-D

Zitat:

Perform(WM_NEXTDLGCTL,0,0)
...setzt den Focus auf das nächste Feld in der Reihenfolge von TabOrder

ein bestimmtes Feld 'anspringen' z.B. mit...
Delphi-Quellcode:
Edit1.SetFocus;

... noch eine Variante:
Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if key = VK_ESCAPE then --mach nichts;
  if key = VK_RETURN then --mach was;
  if key = VK_UP then --gehe zum nächsten Edit;
end;
...Delphi Hilfe ---> virtuelle Tastencodes

:hi:

STS301 1. Jan 2008 19:18

Re: Einstellungen im Editfenster
 
aha, mit ein bischen Grübeln werde ich hoffentlich jetzt was zu Stande bringen, wenn nicht, dann hört ihr sicher wieder von mir :wink:

kann man es nicht auch so schreiben?

Delphi-Quellcode:
case key of
   #1:=; //mach nichts
@DeddyH die Briefmarke hat mir besser gefallen :( :(

Garfield 1. Jan 2008 19:27

Re: Einstellungen im Editfenster
 
Zitat:

Zitat von STS301
was bewirkt das OnKeyPress:=EditKeyPress?

Da steht ja
Delphi-Quellcode:
...
    with (Components[i] as TEdit) do
    begin
      ...
      OnKeyPress := EditKeyPress;
    end;
  ...
end;
was so viel ist wie:
Delphi-Quellcode:
(Components[i] as TEdit).OnKeyPress := EditKeyPress;
Das bedeutet, dem Ereignis OnKeyPress des TEdits wird die Procedure EditKeyPress zugewiesen. Heißt, wenn das Edit den Focus hat und eine Taste wird gedrückt wird diese Procedure ausgeführt.

DeddyH 2. Jan 2008 11:05

Re: Einstellungen im Editfenster
 
Zitat:

Zitat von STS301
@DeddyH die Briefmarke hat mir besser gefallen :( :(

Ein bisschen Abwechslung muss sein :cheer:

[edit]
Zitat:

Zitat von STS301
Delphi-Quellcode:
case key of
   #1:=; //mach nichts

Fast ;)
Delphi-Quellcode:
case key of
   #1:; //mach nichts (ohne Gleichheitszeichen)
[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 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-2025 by Thomas Breitkreuz