AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein TFileOpenDialog fürht zu kuriosem DBGrid-Verhalten
Thema durchsuchen
Ansicht
Themen-Optionen

TFileOpenDialog fürht zu kuriosem DBGrid-Verhalten

Ein Thema von mariusbenz · begonnen am 20. Jul 2016 · letzter Beitrag vom 21. Jul 2016
 
mariusbenz

Registriert seit: 6. Mär 2015
38 Beiträge
 
Delphi 10.3 Rio
 
#1

TFileOpenDialog fürht zu kuriosem DBGrid-Verhalten

  Alt 20. Jul 2016, 11:53
Vorab schon mal der Code-Abschnitt um den es geht:

Code:
procedure TfrmMain.BtnDateiZuPosClick(Sender: TObject);
  var sTemp : String;
  begin
    if Sender = TObject(BtnOrdnerZuPos) then FODDateiPos.Options:= [fdoPickFolders]
    else if Sender = TObject(BtnDateiZuPos) then FODDateiPos.Options:= [];
    // In DB schreiben
    if FODDateiPos.Execute then
      begin
        sTemp:= FODDateiPos.FileName;
        SetSQLAndExecute(AdsQryMFA, 'UPDATE RLS_Detail ' +
                                    'SET Datei = ' + QuotedStr(sTemp) + ' ' +
                                    'WHERE ID = ' + AdsQuePosition.FieldByName('ID').AsString);
        Book := AdsQuePosition.GetBookmark;
      end;
    // Aktualisieren
    AdsQuePosition.Refresh;

    LblHyperlink.Caption:= AdsQuePosition.FieldByName('Datei').AsString;
  end;
Die Funktion SetSQLAndExecute führt einfach nur den SQL-Befehl aus.

Wenn ich die Prozedur mit den Options [fdoPickFolders] ausführe, bleibt der Cursor an der gleichen Position im DBGrid stehen.

Wenn ich die Prozedur mit den Options [] ausführe, springt der Cursor an die erste Position im DBGrid. Ich habe schon versucht, mir die Position mit dem Bookmark zu merken und dann am Ende wieder dort hinzuspringen. Das funktioniert auch, wenn ich erst danach durch einen Button-Click, oder so wie ich es jetzt ziemlich unschön umgangen habe, indem ich im AfterRefresh der Query einen Timer starte, an die entsprechende Position zurückspringe. Wenn ich z.B. im AfterRefresh direkt an die Position mit GoToBookmark springe, funktioniert das zwar auch, allerdings scheint sich das Grid danach noch zu aktualisieren, sodass ich wieder beim ersten Datensatz lande.

Zudem kann ich das Springen an die erste Position manchmal verhindern, wenn ich kurz im Debugmodus anhalte und da ein paar Sekunden warte.

Hat irgendjemand eine Ahnung, warum sich das Grid in dem einen Fall so komisch verhält, und im anderen Fall richtig?
  Mit Zitat antworten Zitat
 


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 14:56 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 by Thomas Breitkreuz