Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi AfterScroll wird vorzeitig verlassen (https://www.delphipraxis.net/18068-afterscroll-wird-vorzeitig-verlassen.html)

Yadon 13. Mär 2004 23:08


AfterScroll wird vorzeitig verlassen
 
Hallo, DP,

bis jetzt hat alleine das eifrige Studieren der Beiträge mir stets weitergeholfen, aber jetzt weiß ich nicht weiter.

Ich programmiere meist DB-Anwendungen, aber diesmal (DB für eine kleinere Bib-liothek) geschieht das Unmögliche. Nach einem Autorenwechsel wird ein Afterscroll durchgeführt, die ersten Befehle werden noch abgearbeitet, aber dann springt das Programm völlig unmotiviert in ein OnChange-Ereignis für das Editfeld des zum Au-toren gehörenden Buches, arbeitet die Routine vollständig ab, um dann – was aber nur selten möglich ist, in die AfterScroll-Routine zurückzukehren, und die letzten beiden Befehle auszuführen. Meist kommt es aber nicht soweit, da in der Edit-OnChange-Routine sich das Programm heillos aufhängt, was auch in Ordnung ist, weil eine Tabelle nicht aktiv ist, hätte ja auf den letzten beiden Zeilen vom AfterScroll passieren soll.

So etwas ist mir noch nie passiert, ich habe nun anderthalb Tage versucht, mit allen möglich Tricks versucht, diese Macke auszugleichen, aber irgendwas stimmt dann immer nicht. Das Programm soll bitte einfach nur die AfterScroll-Routine durchlaufen, schließlich ist kein Sprungbefehl vorgesehen. – Weiß jemand Rat?

Danke im voraus

Yadon

eddy 14. Mär 2004 12:19

Re: AfterScroll wird vorzeitig verlassen
 
Hallo Yadon,

was für Dich völlig unmotiviert aussieht hägt wohl mehr mit inkompatibler Logik zwischen Dir als Programmierer und Delphi als Programm zusammen. Du hast leider AfterScroll nicht veröffentlicht, aber ich bin auch schon auf so etwas reingefallen. Mit mühsamen Durchtippen mit F7 solltest Du aber die Stelle finden, an der Dein Programm nicht das macht, was Du glaubst, das es machen sollte.
Irgendwo steckt ein Befehl, der die von Dir erwartete lineare Abarbeitung unterbricht, irgendwo hinspringt und von dort dann wieder AfterScroll auslöst (oder so ähnlich).

Also empfehle ich Dir einen Haltepunkt an den Anfang und Ende von AfterScroll zu setzen und dann mit F7 und F8 die Stelle eingrenzen, an der sich Dein Programm selbst in den Hintern beißt.

mfg
eddy

Yadon 14. Mär 2004 16:14

Re: AfterScroll wird vorzeitig verlassen
 
Hi Eddy,

die Antwort war nicht sonderlich hilfreich, denn ich hatte es als selbstverständlich angesehen, daß man erst mal mit F7 durch die Routinen läuft, ehe man andere belästigt.

Hier die Befehlsfolge, die im übrigen beim ersten Autorenwechsel einwandfrei durchlaufen wird, und danach dann nie wieder, weil Delphi immer nach dem Active := False davonhüpft und est, wenn alles verhackt ist, zurückkommt.
Delphi-Quellcode:
procedure T.qAutorAfterScroll(DataSet: TDataSet);
begin
   with qryTitlebyAutor do
   begin
      Active := False;
      Parameters.Items[0].Value := qAutorAID.Value;
      Active := True;
   end;
end;

Ich komme jedenfalls nicht weiter, auch das Anmeckern desjenigen, für den das PRogramm bestimmt ist, hat nicht geholfen. :wall: das übrigens auch nicht.
Ist mir in fünf Jahren noch nicht passiert, also wurde es wohl Zeit. Aber meine Kenntnisse und Einfälle sind nun erschöpft.

Yadon

Yadon 16. Mär 2004 01:06

Re: AfterScroll wird vorzeitig verlassen
 
Ich versuch's einfach nochmal: kann keiner helfen, ich komme überhaupt nicht weiter.
MFG
Yadon

Sharky 16. Mär 2004 06:36

Re: AfterScroll wird vorzeitig verlassen
 
Zitat:

Zitat von Yadon
...
Delphi-Quellcode:
procedure T.qAutorAfterScroll(DataSet: TDataSet);
begin
   with qryTitlebyAutor do
   begin
      Active := False;
      Parameters.Items[0].Value := qAutorAID.Value;
      Active := True;
   end;
end;
...

Hai Yadon,
hast Du auf deiner Form ein (DB)-Edit welches mit der DataSet qryTitlebyAutor verbunden ist und ein OnChange hat?
Wenn ja wird dieses natürlich ausgeführt sobald Du deine Tabelle auf Activ=False setzt. Dann ändert sich nämlich der Inhalt des Editfeldes (es wird leer).
Versuche doch einfach mal das OnChange vor dem Scrollen zu daktivieren und es danach wieder zu aktivieren.

Delphi-Quellcode:
procedure T.qAutorBeforScroll(DataSet: TDataSet);
begin
  DBEdit1.OnChange := nil;
End;

procedure T.qAutorAfterScroll(DataSet: TDataSet);
begin
  with qryTitlebyAutor do
  begin
    Active := False;
    Parameters.Items[0].Value := qAutorAID.Value;
    Active := True;
  end;
  DBEdit1.OnChange := MyOnChageEvent;
end;

Yadon 17. Mär 2004 20:24

Re: AfterScroll wird vorzeitig verlassen
 
Danke, Sharky,

da habe ich heute etwas neues gelernt - das war bei all den anderen Programmen kein Problem; ich wußte einfach nicht, daß die beiden Dinge - Active := False und die Änderung des Edit-Feldes an dieser Stelle schon zusammenhängen.
Blöd, ich weiß, als ich es las, war es mir sofort klar, und trotzdem bin ich nicht drauf gekommen.

Danke, tat gut, nach zwei Tagen Krankenhaus, nun kann ich freudig weiterprogrammieren. :)

:firejump: :dancer2: und ein freundliches "blubb blubb"

Yadon

Union 18. Mär 2004 05:24

Re: AfterScroll wird vorzeitig verlassen
 
Hallo Yadon,

Du kannst es ja auch mit
Delphi-Quellcode:
DisableControls
versuchen

bye


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:48 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