AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi SetFokus aber nur unter bestimmten Bedingungen
Thema durchsuchen
Ansicht
Themen-Optionen

SetFokus aber nur unter bestimmten Bedingungen

Ein Thema von TurboMagic · begonnen am 22. Nov 2023 · letzter Beitrag vom 22. Nov 2023
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#1

SetFokus aber nur unter bestimmten Bedingungen

  Alt 22. Nov 2023, 18:50
Hallo,

gegeben ist D11.3 und eine VCL Anwendung.
In einem Frame gibt es ein TEdit mit einem OnExit Event.

Dort wird der eingegebene Text an die Geschäftslogik übergeben.
Wird ein leerer Text eingegeben, führt das in der Geschäftslogik gewolltermaßen
zu einer Exception.

Die wird im OnExit abgefangen und ein Ballon Hint wird angezeigt.

Soweit so gut. Nun wollte ich aber verhindern, dass in dem Fall das Feld verlassen
werden kann. Naja, .SetFocus am betreffenden Edit ist schnell aufgerufen.

Aber: jetzt ist der Frame wo eingebettet wo es auch einen Abbrechen Button gibt.
In dem Fall soll ein leeres Eingabefeld jedoch nicht zum Problem werden.

=> wie bekomme ich .SetFokus nur dann aufgerufen, wenn die Ursache zum Verlassen
des Eingabefeldes nicht der Abbrechen Button war?
Ein Boolsches Flag, welches vom Abbrechen Button gesetzt wird funktioniert
natürlich nicht, da dessen OnClick Handler dann natürlich noch nicht gelaufen ist.

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.534 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: SetFokus aber nur unter bestimmten Bedingungen

  Alt 22. Nov 2023, 20:02
Ich nehme mal an, du hast Deine Abbruch-Logik im Frame selber untergebracht.

Dann könntest Du das im OnExit-Event des Edits z.B. so machen:

Delphi-Quellcode:
 if (Screen.ActiveForm.ActiveControl <> NIL) then begin
    if (Screen.ActiveForm.ActiveControl is TButton)
    and ((Screen.ActiveForm.ActiveControl as TButton).Name = 'bnCancel')
    then begin
      exit;
    end;

    if edit1.Text = 'then begin
      ShowMessage ('Bite text eingeben');
      Edit1.SetFocus;
    end;

  end;
Damit wird auf Leer sein des Edits immer (nur dann) getestet, wenn das Active Control nicht bncancel ist.

Geändert von Harry Stahl (22. Nov 2023 um 20:31 Uhr)
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#3

AW: SetFokus aber nur unter bestimmten Bedingungen

  Alt 22. Nov 2023, 20:41
Danke, dein Prinzip funktioniert!
  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 05:47 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