AGB  ·  Datenschutz  ·  Impressum  







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

Zustand eines Buttons erkennen

Ein Thema von Luckner · begonnen am 20. Okt 2015 · letzter Beitrag vom 23. Okt 2015
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#1

AW: Zustand eines Buttons erkennen

  Alt 20. Okt 2015, 13:04
Könnte man nicht den Sender-Parameter auswerten? Oder alternativ das Edit gleich so einstellen, dass nur (ganze) Zahlen akzeptiert werden, in älteren Delphis gibt es da zwar noch keine Property für, kann man aber nachbauen.
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
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2

AW: Zustand eines Buttons erkennen

  Alt 20. Okt 2015, 13:47
Yupp...sehe ich genauso wie DeddyH. Noch dazu ist das "Nachrüsten" mit einer einzigen Zeile Quellcode passiert:

Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if ord(Key) > 27 then if not (Key in ['0'..'9']) then Key := #0;
end;
Und wenn ich z.B. 20 Edit's auf der Form hätte, dann weise ich das halt jedem TEdit zu. Es bleibt bei einer Zeile Code.

EDIT: Abgesehen davon finde ich persönlich (andere Programmierer mögen andere Meinungen haben) es etwa abartig, einem Anwender zuerst statt Zahlen irgendwas Anderes eingeben zu lassen, die Eingabe zu überprüfen, um ihm dann mitzuteilen, dass er Bockmist eingegeben hat.
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen

Geändert von mm1256 (20. Okt 2015 um 13:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#3

AW: Zustand eines Buttons erkennen

  Alt 20. Okt 2015, 13:51
Ich hatte jetzt eher an so etwas gedacht:
Delphi-Quellcode:
procedure MakeEditNumbersOnly(TheEdit: TCustomEdit);
begin
  Assert(Assigned(TheEdit));
  SetWindowLong(TheEdit.Handle, GWL_STYLE, GetWindowLong(TheEdit.Handle, GWL_STYLE) or ES_NUMBER);
end;
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 p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Zustand eines Buttons erkennen

  Alt 20. Okt 2015, 13:53
Yupp...sehe ich genauso wie DeddyH. Noch dazu ist das "Nachrüsten" mit einer einzigen Zeile Quellcode passiert:

Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if ord(Key) > 27 then if not (Key in ['0'..'9']) then Key := #0;
end;
Und wenn ich z.B. 20 Edit's auf der Form hätte, dann weise ich das halt jedem TEdit zu. Es bleibt bei einer Zeile Code.
wenn ich mich richtig erinnere fehlt da noch Return,Backspace....
aber das Prinzip ist schon mal gut.
Wobei ich irgendwie das Gefühl habe das die Validierung zum falschen Zeitpunkt stattfindet.
Wenn nach dem onExit der Abbruch oder die Validierung stattfinden soll, wäre es nicht schlecht das auch so zu programmieren.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
mm1256

Registriert seit: 10. Feb 2014
Ort: Wackersdorf, Bayern
642 Beiträge
 
Delphi 10.1 Berlin Professional
 
#5

AW: Zustand eines Buttons erkennen

  Alt 20. Okt 2015, 13:57
..wenn ich mich richtig erinnere fehlt da noch Return,Backspace..
Nein, fehlt nicht, weil das durch
Code:
if ord(Key) > 27
bereits erledigt wird.

Wenn nach dem onExit der Abbruch oder die Validierung stattfinden soll, wäre es nicht schlecht das auch so zu programmieren.
Das ist ja die grundsätzliche Frage zur Vorgehensweise. Beim Autofahren würde man ja auch zuerst den Sicherheitsgurt anlegen (Validierung) um dann los zu fahren (Eingabe auswerten) anstelle loszufahren und wenn es gekracht hat den Gurt anlegen. Das meinte ich mit "abartig".
Gruss Otto PS: Sorry wenn ich manchmal banale Fragen stelle. Ich bin Hobby-Programmierer und nicht zu faul die SuFu zu benutzen

Geändert von mm1256 (20. Okt 2015 um 13:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#6

AW: Zustand eines Buttons erkennen

  Alt 20. Okt 2015, 14:01
Bei der KeyPress-Variante wird aber die Zwischenablage nicht berücksichtigt, d.h. damit bekommt man immer noch Grütze ins Edit.
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
Luckner

Registriert seit: 28. Nov 2006
Ort: Berlin
418 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: Zustand eines Buttons erkennen

  Alt 20. Okt 2015, 14:17
Hallo,
habe vergessen zu erwähnen, das es sich um ein 'TJvValidateEdit' von den Jedi-Tools handelt. Die Validierung übernimmt schon dieses Tool. Das Edit-Feld darf nur nicht leer sein bzw. die Zahlen müssen in einer bestimmten Tabelle existieren.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#8

AW: Zustand eines Buttons erkennen

  Alt 20. Okt 2015, 14:20
Deswegen ist es wohl am besten einfach beides zu machen

Ist doch bei Formularen im Internet meist auch so. Wenn möglich wird begrenzt, was da so eingegeben werden kann, trotzdem findet eine serverseitige Validierung statt, die dann entsprechende Fehleingaben zurückmeldet.
Das wäre dann (bezogen auf dieses Beispiel) aber nicht unbedingt beim OnExit eines Controls, sondern bei drücken des Speichern-Buttons.
Ralph
  Mit Zitat antworten Zitat
FarAndBeyond
(Gast)

n/a Beiträge
 
#9

AW: Zustand eines Buttons erkennen

  Alt 20. Okt 2015, 18:12
Zitat:
Bei der KeyPress-Variante wird aber die Zwischenablage nicht berücksichtigt, d.h. damit bekommt man immer noch Grütze ins Edit.
Seit wann kann Grütze selbstständig irgendwo hingehen?
Außerdem kann man den einfachen Zugang ja blocken:
Delphi-Quellcode:
Procedure TForm1.Edit1ContextPopup(Sender: TObject; MousePos: TPoint; Var Handled: Boolean);
 Begin
  Handled:= True;
 End;

Procedure TForm1.Edit1KeyDown(Sender: TObject; Var Key: Word; Shift: TShiftState);
 Begin
  If (ssShift In Shift) Then Key:= 0;
 End;

Procedure TForm1.Edit1KeyPress(Sender: TObject; Var Key: Char);
 Begin
  If Pos(Key,'1234567890'+#8#27#13) = 0 Then Key:= #0;
 End;
STRG+V und Shift+Einfg fällt jetzt flach und ebenso die rechte Maustaste...

Das sollte doch erstmal reichen, außerdem gibt es immernoch Try Except End.
Was bleibt wäre expliziter Code... gibt es sonst noch 'was???
  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 14:03 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