![]() |
Formular mit TEdit als Pflichtfeld mit Button.OnClick beenden
Hallo zusammen,
ich habe ein Formular mit einem Pflichtfeld TEdit. Diese prüfe ich auf "Leer" nach OnExit was ja soweit auch funktioniert. Jetzt ist aber so, dass das Formular auch ein Beenden Button enthält, worüber ich jeder Zeit das Formular schließen möchte. Wie kann ich in dem Ereignis OnExit abfragen, ob das Feld durch Klick auf das nächste Feld oder durch Button klick verlassen wurde? Ich habe schon mit Sender versucht, aber ohne Erfolg. Als Klassenname kommt nur TEdit an.
Code:
Danke schon mal für die Hilfe
procedure TEinbuchenForm.txtEanArtNrExit(Sender: TObject);
begin { ShowMessage(Sender.ClassName); if Sender = btnBeenden then ShowMessage('Beenden wurde geklickt'); } if txtEanArtNr.Text = '' then begin if Dialogs.MessageDlg('Eingabe von EAN oder Artikelnummer erforderlich!' + chr(10) + 'Einbuchen fortsetzen?', mtWarning, [mbYes, mbNo], 0, mbYes) = mrYes then begin txtEanArtNr.SetFocus; end else Close; end else begin // Artikel anhand von EAN oder Artikelnummer suchen qryArtikel.Close; qryArtikel.Sql.Clear; SQLBefehl := 'SELECT * FROM artikel WHERE art_ean_nr = ''' + txtEanArtNr.Text + ''''; Pischti |
AW: Formular mit TEdit als Pflichtfeld mit Button.OnClick beenden
Hallo,
ich habe jetzt doch noch eine Lösung gefunden. Vielleicht hilft sie Anderen :) Pischti
Delphi-Quellcode:
if not (ActiveControl = btnBeenden) then ShowMessage('Beenden wurde NICHT geklickt')
else ShowMessage('Beenden wurde geklickt'); |
AW: Formular mit TEdit als Pflichtfeld mit Button.OnClick beenden
Mach doch einfach einen Button Übernehmen und einen Button Abbrechen: Beim Klick auf Übernehmen wird geprüft, ob im Pflichtfeld was Sinnvolles drinsteht, beim Abbrechen-Button nicht. Klickt der Anwender nun auf Übernehmen, ohne das Pflichtfeld ausgefüllt zu haben, verweigerst du einfach das Schließen des Formulars. Du kannst aber auch den Button Übernehmen beim Aufruf des Formulars auf Enabled := False stellen, bis im Editfeld was drinsteht: Beim Verlassen des Editfelds prüfst du, ob was drinsteht; steht was drin, schaltest du den Übernehmen-Button auf Enabled := True.
|
AW: Formular mit TEdit als Pflichtfeld mit Button.OnClick beenden
Hallo Frank,
ja, daran habe ich auch gedacht, aber.... Wenn der Benutzer die Eingabe macht (und das Feld nicht leer ist), wird sofort geprüft, ob der Datensatz existiert. Existiert er, werden die Werte in die restlichen Felder übernommen. Er muss nur noch die neue Menge zum Zubuchen eingeben. Wenn der Datensatz nicht existiert, wird ein neuer angelegt und die Übernahme auf Enabled gesetzt. Aber wie gesagt, jetzt funktioniert. Trotzdem Danke Pischti |
AW: Formular mit TEdit als Pflichtfeld mit Button.OnClick beenden
Zitat:
Delphi-Quellcode:
if ActiveControl <> btnBeenden then
ShowMessage('Beenden wurde NICHT geklickt') else ShowMessage('Beenden wurde geklickt'); // // oder gleich // if ActiveControl = btnBeenden then ShowMessage('Beenden wurde geklickt') else ShowMessage('Beenden wurde NICHT geklickt'); |
AW: Formular mit TEdit als Pflichtfeld mit Button.OnClick beenden
Wichtig wäre evtl. noch zu wissen, dass der Button beim Klick nicht unbedingt den Fokus erhält (z.B. Default-Button und Enter oder Cancel-Button und ESC oder über den AccelChar Alt-[Buchstabe]), dann klappt das mit der ActiveControl nur, wenn du im OnClick des Buttons diesen auch mit SetFocus fokussierst.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 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