Einzelnen Beitrag anzeigen

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