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
Seite 2 von 4     12 34      
Luckner

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

AW: Zustand eines Buttons erkennen

  Alt 20. Okt 2015, 12:56
Das Problem ist, dass ich gerne wieder zurück in das Edit-Feld springen würde, falls Jemand doch keine Zahl eingibt. Dadurch erzeuge ich eine Schleife aus der man nicht so schnell rauskommt.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: Zustand eines Buttons erkennen

  Alt 20. Okt 2015, 13:02
Also mal ganz rudimentär würde ich so etwas vorschlagen:
Delphi-Quellcode:
unit Unit3;

interface

uses
  Winapi.Windows, Winapi.Messages,
  System.SysUtils, System.Variants, System.Classes,
  Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm3 = class( TForm )
    Value1Edit: TEdit; // Validate OnChange
    Value2Edit: TEdit; // Validate OnExit
    Value3Edit: TEdit; // Validate Button.OnClick
    Button1: TButton;
    Value1ErrorLabel: TLabel;
    Value2ErrorLabel: TLabel;
    Value3ErrorLabel: TLabel;
    procedure Value1EditChange( Sender: TObject );
    procedure Value2EditExit( Sender: TObject );
    procedure Button1Click( Sender: TObject );
  private
    FValue1Valid, FValue2Valid, FValue3Valid: Boolean;
    FValue1, FValue2, FValue3 : Integer;
    procedure ValidateValue1;
    procedure ValidateValue2;
    procedure ValidateValue3;
  public

  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Value1EditChange( Sender: TObject );
begin
  ValidateValue1;
end;

procedure TForm3.Value2EditExit( Sender: TObject );
begin
  ValidateValue2;
end;

procedure TForm3.Button1Click( Sender: TObject );
begin
  ValidateValue1;
  ValidateValue2;
  ValidateValue3;

  if FValue1Valid and FValue2Valid and FValue3Valid
  then
    begin

    end;
end;

procedure TForm3.ValidateValue1;
begin
  FValue1Valid := TryStrToInt( Value1Edit.Text, FValue1 );
  if FValue1Valid
  then
    Value1ErrorLabel.Caption := ''
  else
    Value1ErrorLabel.Caption := 'not a valid number';
end;

procedure TForm3.ValidateValue2;
begin
  FValue2Valid := TryStrToInt( Value2Edit.Text, FValue2 );
  if FValue2Valid
  then
    Value2ErrorLabel.Caption := ''
  else
    Value2ErrorLabel.Caption := 'not a valid number';
end;

procedure TForm3.ValidateValue3;
begin
  FValue3Valid := TryStrToInt( Value3Edit.Text, FValue3 );
  if FValue3Valid
  then
    Value3ErrorLabel.Caption := ''
  else
    Value3ErrorLabel.Caption := 'not a valid number';
end;

end.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#13

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
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#14

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
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS

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.537 Beiträge
 
Delphi 11 Alexandria
 
#15

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 Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#16

AW: Zustand eines Buttons erkennen

  Alt 20. Okt 2015, 13:53
Ich habe sowas ähnliches kürzlich umgesetzt und dabei das Ereignis OnKeyPress bemüht. Dafür hab ich ganz dreist von hier geguttenbergt.

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

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
640 Beiträge
 
Delphi 10.1 Berlin Professional
 
#18

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
Wenn du mit Gott reden willst, dann bete.
Wenn du ihn treffen willst, schreib bei Tempo 220 eine SMS

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.537 Beiträge
 
Delphi 11 Alexandria
 
#19

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
 
#20

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
Antwort Antwort
Seite 2 von 4     12 34      


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 03:51 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