Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zustand eines Buttons erkennen (https://www.delphipraxis.net/187007-zustand-eines-buttons-erkennen.html)

Jumpy 20. Okt 2015 14:20

AW: Zustand eines Buttons erkennen
 
Deswegen ist es wohl am besten einfach beides zu machen :-D

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.

mm1256 20. Okt 2015 14:22

AW: Zustand eines Buttons erkennen
 
Zitat:

Zitat von Luckner (Beitrag 1319189)
Hallo,

folgendes Problem. Ich habe ein Editfeld und einen Abbruch-Button. Im Editfeld sollen und müssen nur Zahlen eingetragen werden....

Wenn ich das "müssen" richtig interpretiere, darf der Inhalt des TEdit nicht leer sein. Folglich muss an anderer Stelle sowieso noch eine Validierung auf <> '' stattfinden, womöglich auch noch Wertebereich-Check usw.

BTW ein einfaches TEdit ist nun mal keine "gute" Komponente für ein rein numerisches Eingabefeld. Auch nicht die neue Variante mit "NumbersOnly", denn wenn die z.B. noch mit dem Default-Text "Edit1" vorbelegt ist, oder der Text falsch vorbelegt wird (Edit1.Text := 'Hallo') dann hat man ein ähnliches Problem.

FarAndBeyond 20. Okt 2015 14:56

AW: Zustand eines Buttons erkennen
 
FormKeyPress:
Delphi-Quellcode:
If Sender Is TEdit
Then
 Begin
  If Pos(Key,'1234567890'+#8#27#13) = 0 Then Key:= #0;
 End;

himitsu 20. Okt 2015 14:58

AW: Zustand eines Buttons erkennen
 
Nur ein Tipp zum Vorgehen, ohne dass etwas blockiert:

Keine blokierenden Operationen im OnExit und es gibt keine Probleme. :roll:


Im OnExit oder OnChange nur prüfen und dann per Farbe, Hint, BallonHint oder Dergleichen den Status/Hinweis anzeigen.
Der HintText ist auch nett, wenn etwas eingegeben werden muß, da er nur angezeigt wird, wenn nichts in Text steht.

Und bei "OK" (Ausführen der Aktion) dann mit richtigen Fehlermeldungen um sich werden, wenn dann immernoch nichts drin steht.

baumina 20. Okt 2015 15:04

AW: Zustand eines Buttons erkennen
 
Ich hab die Jedis nicht, aber hat so ein TJvValidateEdit kein OnValidate-Event?

FarAndBeyond 20. Okt 2015 18:12

AW: Zustand eines Buttons erkennen
 
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???

mm1256 20. Okt 2015 18:22

AW: Zustand eines Buttons erkennen
 
Die Jedi's kenne ich nicht. (Vorab-)Validierung bei der Eingabe lässt sich meiner Meinung nach immer noch am Benutzerfreundlichsten mit der Orpheus-Bibliothek von Turbopower realisieren, die ich mittlerweile schon ca. 18 Jahren verwende. Sind OpenSource und heute immer noch erste Sahne, dazu die komfortablen Einstellungen im OvcController wie AutoAdvanceChar, AutoAdvanceLeftRight, AutoAdvanceUpDown, AutoSelect, BeepOnError und InsertPushes.

HolgerX 20. Okt 2015 19:04

AW: Zustand eines Buttons erkennen
 
Um mal zur Fragestellung zurück zu kommen...

Mit Delphi 6 gehts z.B. so:

Delphi-Quellcode:
procedure TForm1.Edit1Exit(Sender: TObject);
begin
  if not(ActiveControl is TButton) then DoValidate(Edit1.Text);
end;
Statt '(ActiveControl is TButton)' kannst Du auch 'ActiveControl = AbbruchButton' benutzen und somit wird das Validieren nur ausgeführt, wenn du NICHT auch Abbruch clickst.. ;)

Luckner 21. Okt 2015 12:32

AW: Zustand eines Buttons erkennen
 
Danke an Alle. HolgerX werde Deinen Vorschlag mal ausprobieren und werde das Ergebnis hier melden.

Luckner.

Luckner 23. Okt 2015 10:03

AW: Zustand eines Buttons erkennen
 
Hallo HolgerX,

bin gerade erst dazu gekommen Dein Vorschlag auszuprobieren. Leider schmeißt mein Delphi7 Ent. 'ActiveControl' als undefinierten Bezeichner raus. Benutzt Du spezielle Buttons?

Gruß, Luckner


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:23 Uhr.
Seite 3 von 4     123 4      

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