AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

dbNavigator Aktion abbrechen

Ein Thema von Sidi61 · begonnen am 28. Okt 2014 · letzter Beitrag vom 29. Okt 2014
Antwort Antwort
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#1

dbNavigator Aktion abbrechen

  Alt 28. Okt 2014, 00:34
Hallo zusammen,

kann mir jemand helfen folgendes Problem zu lösen:

Vorgehensweise

Eingabe in beliebiges Eingabefeld
während das Eingabefeld noch den Focus besitzt klickt der Anwender auf Post im dbNavigator
im onExit Ereignis des Eingabefeldes wird festgestellt dass der Eintrag nicht zulässig ist

jetzt das Problem

wie kann ich die eingeleitete Aktion des dbNavigators abbrechen und dem Eingabefeld den Focus zurück geben??

Gruß Sidi61
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#2

AW: dbNavigator Aktion abbrechen

  Alt 28. Okt 2014, 00:40
Abort
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#3

AW: dbNavigator Aktion abbrechen

  Alt 28. Okt 2014, 21:56
Hallo - ja, Abort ist mir bekannt, müsste dann aber die Gültigkeit in der onclick Methode des dbNavigator prüfen bzw. dort alle Felder die geprüft werden müssen prüfen - wollte es aber in der onexit des Eingabefeldes machen. Wenn das geht - wie wäre es mit einem kleinen Beispiel
Gruß Sidi61
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.452 Beiträge
 
Delphi 12 Athens
 
#4

AW: dbNavigator Aktion abbrechen

  Alt 28. Okt 2014, 22:28
Das Edit soll doch den Fokus behalten, oder? Dann sollte das TabStop beim Navigator auf false stehen und die Überprüfung und gegebenenfalls das Abort im BeforeAction-Event des Navigators erfolgen. Der Navigator-OnClick-Event wird erst nach der Ausführung der Operation aufgerufen, aber dann ist es schon zu spät.

Der Focus-Wechsel und damit das OnExit-Event des Edit kommt nur, wenn beim Navigator TabStop auf true steht (zumindest ist das bei XE7 so).
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Sidi61

Registriert seit: 13. Jun 2006
97 Beiträge
 
Delphi XE5 Professional
 
#5

AW: dbNavigator Aktion abbrechen

  Alt 28. Okt 2014, 23:01
Da die Prüfung in einem dbNavigator Ereignis erfolgen muss um Abort ausführen zu können, habe ich eine function zur Prüfung erstellt und diese im dbNavigatorClick Ereignis aufgerufen und ensprechend dem Ergebnis Abort ausgeführt. Dies hatte den unschönen Effekt dass sich die Farbe des Post-Buttons veränderte. Das ganze in die dbNavigatorBeforeAction verlegt sieht besser aus.

Code:

function TForm_Schleifbrand.Eingabe_ok : boolean;
var eintrag : string;
    ok : boolean;
begin
  ok := true;
  //Feldeingabe erstpruefung prüfen
  if OK then
  begin
    eintrag := dbCombobox_erstpruefung.Text;
    if dbCombobox_erstpruefung.Items.IndexOf(eintrag) < 0 then
    begin
      ok := false;
      showmessage('Eintrag '+''''+eintrag+''''+' ist nicht in Auswahl für Erstprüfung enthalten!');
      dbCombobox_erstpruefung.SetFocus;
    end;
  end;
  result := ok;
end;

procedure TForm_Schleifbrand.DBNavigator1BeforeAction(Sender: TObject;
  Button: TNavigateBtn);
begin
  case Button of
    nbPost : if (Editmode = true) and (Eingabe_ok = false) then abort;
  end;
end;

Jetzt kommt sicher der Einwand dass dbCombobox mit Einstellung CsDropDownList eine Eingabe außerhalb der Listeneinträge nicht zulassen würde und somit eine Prüfung nicht notwendig wäre Die zur Auswahl stehenden Einträge stammen aus einer separaten Datei und können sich im Laufe der Zeit ändern, die dbCombobox hat jedoch bei Einstellung CsDropDownList die unschöne Eigenschaft nur Einträge anzuzeigen, die auch in der Liste sind d.h. ändert sich die Liste dann werden bei Datensätzen die vorher angelegt wurden und nun Einträge haben die nicht in der Liste sind, diese Einträge nicht angezeigt d.h. das Textfeld von dbCombobox bleibt leer obwohl das Feld einen Eintrag hat.

Also dann besten Dank für die Unterstützung
Gruß Sidi61
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

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

AW: dbNavigator Aktion abbrechen

  Alt 29. Okt 2014, 07:02
Eine Überprüfung aller DB-Feld-Inhalte auf Gültigkeit würde ich im BeforePost des DataSets machen.
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 08:35 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