AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Focus setzen

Ein Thema von Micha · begonnen am 10. Sep 2003 · letzter Beitrag vom 10. Sep 2003
Antwort Antwort
Micha

Registriert seit: 21. Jul 2003
Ort: Neumarkt
263 Beiträge
 
#1

Focus setzen

  Alt 10. Sep 2003, 15:36
In mehreren Edit-Feldern sollen nur Zahlen kleiner als 15 eingegeben werden dürfen.

Wird im ersten Edit-Feld nun eine Zahl über 15 eingegeben, so soll eine Fehlermeldung erscheinen.
Soweit so gut.
Nun soll aber natürlich der Focus auf eben dieses Edit-Feld gelegt werden.

Mein bisherige Quelltext sieht folgendermaßen aus:

Delphi-Quellcode:
procedure TStunden.StdExit(Sender: TObject);
var
Tmp: TEdit;
Edit : String;
begin
// keine Angabe über 15 Stunden möglich
 Tmp:= Sender As TEdit;
 Edit := Tmp.Text;
begin
if Edit <> 'then
 begin
  if strtoint(Edit) > 15 then
    begin
      showmessage('Bitte nur Stundenangaben im Bereich {0,0 ... 15,0}');
// hier Edit.SetFocus funktioniert nicht
      ModalResult := 0;
      exit;
    end;
  end;
end;
end;
Die Edit-Felder sind durch eine Variable abgebildet. Dies soll auch nicht geändert werden. Da mir sonst der Quelltext zu lang werden würde.

Kann mir wer helfen?

Es geht also nur darum, dass eben der Cursor bei Falscheingabe wieder auf das "falsche" Feld gesetzt wird.

Vielen Dank im Voraus.
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Focus setzen

  Alt 10. Sep 2003, 15:40
Hallo. In diesem Fall könntest du mit Tmp.SetFocus dem Edit seinen Focus zurückgeben. Oder hattest du etwas anderes gemeint?
Wenn ja, dann frag einfach nochmal

Man liest sich, Stanlay
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Focus setzen

  Alt 10. Sep 2003, 15:40
Moin Micha,

bei Deinem Code müsste das schlicht

Tmp.SetFocus; heissen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Focus setzen

  Alt 10. Sep 2003, 15:42
Moin Micha,

Zitat von Micha:
Wird im ersten Edit-Feld nun eine Zahl über 15 eingegeben, so soll eine Fehlermeldung erscheinen.
warum verhinderst Du nicht gleich, dass ungültige Werte eingegeben werden.
Mir für meinen Teil gefallen solche Meldungen nicht sonderlich

@Stanlay:
Vordrängler
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Focus setzen

  Alt 10. Sep 2003, 15:47
@Christian
1. Hast du natürlich recht, dass man das verhindern sollte. Allerdings könnte es dann theoretisch sein, dass der Anwender nicht weiß, wie viel er eingeben darf und dann "e[delphi]ig" vor dem Edit hockt und probiert. Wenn dann sollte man vielleicht noch zusätzlich einen Hinweis in einer Statusbar oder so anzeigen, wo drin steht, dass man nicht mehr als 15,0 eingeben darf.

2. (=> Vordrängler)

Man liest sich, Stanlay
  Mit Zitat antworten Zitat
Micha

Registriert seit: 21. Jul 2003
Ort: Neumarkt
263 Beiträge
 
#6

Re: Focus setzen

  Alt 10. Sep 2003, 15:57
1. Ja, ich habe das mit "tmp.SetFocus" gemeint.
Ich habs die ganze Zeit mit "Edit.SetFocus" probiert.
Optimal.

2. @christian: Wie stelle ich das mit dem Verhindern an? Geht das auch ohne MaskEdit?
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#7

Re: Focus setzen

  Alt 10. Sep 2003, 16:00
Hi. Ich bin zwar nicht Christian... aber im OnChange des/eines Edits einfach eingeben: IF StrToInt(Tmp.Text) > 15 THEN Tmp.Text := ''.
Das löscht bei einer falschen Eingabe den Inhalt des Edits.

Man liest sich, Stanlay
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Focus setzen

  Alt 10. Sep 2003, 16:02
Moin Micha,

MaskEdit hab' ich noch nie verwendet
Im OnKeyDown/OnKeyUp/OnKeyPress kannst Du auf gültige Zeichen prüfen, und ungültige löschen (hatten wir schon öfter). Ausserdem könntest Du da dann, bei gültigem Zeichen, auch gleich prüfen, ob der Wert noch korrekt ist.
Sinnvoll wäre auch eine Prüfung im OnChange, da ja jemand die Daten auch per Copy & Paste einfügen könnte.

Was, wie Stanlay ja schon sagte, auf jeden Fall sein muss, ist ein Hinweis (z.B. StatusBar, Label zum Edit) in dem der zulässige Wertebereich angezeigt wird.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Micha

Registriert seit: 21. Jul 2003
Ort: Neumarkt
263 Beiträge
 
#9

Re: Focus setzen

  Alt 10. Sep 2003, 16:05
Erstmal sorry an Stanlay Hanks.

Dann ein rießen Dank an alle, die meine Frage(n) beantwortet haben. Echt super.

Danke, ihr habt mir sehr geholfen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:13 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