AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Formular mit TEdit als Pflichtfeld mit Button.OnClick beenden
Thema durchsuchen
Ansicht
Themen-Optionen

Formular mit TEdit als Pflichtfeld mit Button.OnClick beenden

Ein Thema von pischti · begonnen am 23. Nov 2013 · letzter Beitrag vom 25. Nov 2013
Antwort Antwort
pischti

Registriert seit: 20. Mai 2011
Ort: SHS
3 Beiträge
 
Delphi XE5 Starter
 
#1

Formular mit TEdit als Pflichtfeld mit Button.OnClick beenden

  Alt 23. Nov 2013, 20:03
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:
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 + '''';
Danke schon mal für die Hilfe
Pischti
  Mit Zitat antworten Zitat
pischti

Registriert seit: 20. Mai 2011
Ort: SHS
3 Beiträge
 
Delphi XE5 Starter
 
#2

AW: Formular mit TEdit als Pflichtfeld mit Button.OnClick beenden

  Alt 23. Nov 2013, 20:47
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');
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

AW: Formular mit TEdit als Pflichtfeld mit Button.OnClick beenden

  Alt 23. Nov 2013, 20:53
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.
  Mit Zitat antworten Zitat
pischti

Registriert seit: 20. Mai 2011
Ort: SHS
3 Beiträge
 
Delphi XE5 Starter
 
#4

AW: Formular mit TEdit als Pflichtfeld mit Button.OnClick beenden

  Alt 23. Nov 2013, 21:15
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
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: Formular mit TEdit als Pflichtfeld mit Button.OnClick beenden

  Alt 24. Nov 2013, 12:00
Delphi-Quellcode:
if not (ActiveControl = btnBeenden) then ShowMessage('Beenden wurde NICHT geklickt')
  else ShowMessage('Beenden wurde geklickt');
Das geht einfacher und ohne Gehirnverknotung
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');
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Formular mit TEdit als Pflichtfeld mit Button.OnClick beenden

  Alt 25. Nov 2013, 07:29
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.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  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 04:39 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