AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Exception (Fokusproblem) landet im CPU-Register
Thema durchsuchen
Ansicht
Themen-Optionen

Exception (Fokusproblem) landet im CPU-Register

Ein Thema von NoGAD · begonnen am 28. Mai 2021 · letzter Beitrag vom 2. Jun 2021
Antwort Antwort
Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
345 Beiträge
 
Delphi 10.4 Sydney
 
#1

Exception (Fokusproblem) landet im CPU-Register

  Alt 28. Mai 2021, 12:15
Huhu.

Irgendwo in meinem Programm habe ich scheinbar einen .SetFocus gesetzt und lande nun immer im CPU-Register, anstatt beim entsprechenden Code in der IDE.

Nun ist es leider zu mühsam alle Breakpoints auf .SetFocus zu setzen, um zu schauen, wann der richtige angesprungen wird.

Wie kann ich denn nun aber Rückschlüsse von der CPU-Ansicht auf den entsprechenden Code ableiten?


Edit: Habe dann doch während der Laufzeit alle Breakpoints gesetzt. Es wurde kein .SetFocus angesteuert.

Das Problem hat sich etwas verlagert, es ist scheinbar ein Tabellenproblem. Imemr wenn ich bei einer geöffneten Tabelle diese mittels .Append vorbereite, um neue Daten zur Tabelle hinzuzufügen, tritt genau dann das Fokusproblem auf (siehe Screenshot). Die Frage bezüglich CPU-Ansicht bleibt aber gleich.



LG Mathias
Angehängte Grafiken
Dateityp: png Screenshot 2021-05-28 132146.png (9,9 KB, 28x aufgerufen)
Mathias
Ich vergesse einfach zu viel.

Geändert von NoGAD (28. Mai 2021 um 12:23 Uhr)
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
655 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Exception (Fokusproblem) landet im CPU-Register

  Alt 28. Mai 2021, 13:00
Wenn du im CPU Fenster landest, ist die exception in einer Unit, von der nur die vorkompilierte DCU ohne Debuginfos vorhanden ist. Das müsste also wahrscheinlich in irgend einer 3rd Party Komponente oder einer Delphi Komponente sein. Im 2. Fall reicht es eigentlich, wenn du beim Kompilieren die Debug dcu's der IDE nutzt. Dazu musst du in den Debugsettings deines Programms, die Option "Debug DCUS's nutzen" aktivieren.

Wenn die Exception auftritt, kannst du dir auch mal den Stack anschauen, wo der letzte Codeteil ist, der über Debuginfos verfügt.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#3

AW: Exception (Fokusproblem) landet im CPU-Register

  Alt 28. Mai 2021, 13:24
In den Stacktrace schauen, ob es vorher irgendwo etwas gibt, wozu es eine Unit (Modul mit Debuginfos) gibt.

Eventuell auch noch ein/zwei Mal F7 drücken ... manchmal kommt man so auch z.B. zu einem übergeordneten Try-Except zurück, mit dem man was anfangen kann.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Exception (Fokusproblem) landet im CPU-Register

  Alt 29. Mai 2021, 11:21
So eine Exception hatte ich letztens auch mal. Ursache war, dass ich im FormShow-Handler einer gelegentlich genutzten Form einem Edit-Control den Focus gab, welches auf einem PageControl1.TabSheet1 saß. Der Haken daran, kurz vorm letzten Closen dieser Form, hatte ich ab und zu auf PageControl.TabSheet2 noch letzte Eingaben gemacht, welches damit dann also das zuletzt angezeigte TabSheet war. Folge: Als ich die Form erneut anzeigen ließ, war in dem Fall dieses TabSheet2 also immer noch das sichtbare, und das Edit-Control auf TabSheet1 damit natürlich nicht sichtbar.

Das ist eine der Exceptions, für die sicherlich reichlich solche oder ganz ähnliche Gründe vorstellbar sind.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#5

AW: Exception (Fokusproblem) landet im CPU-Register

  Alt 29. Mai 2021, 11:29
Fokus in einem ausgeblendeten Tab eines PageControls ist kein Problem, denn dort wird automatisch die Seite umgeblätert.

PS: Man kann in der Form ActiveControl setzen, wenn man den Fokus vor/außerhalb der Sichtbarkeit der Form zuweisen möchte.
(bei eingebetteten Forms ist das Auslesen jeweils bei der obersten Form möglich)

Die globale Screen-Variable, da sind zwei Events drin, wo man auf Fokusänderungen reagieren kann, und da könnte man auch einen Haltepunkt reinmachen.
Wenn der Fokus aber via PostMessage geändert wurde, dann bekommt man bei Änderungen nicht mit, wer es war (Stacktrace) ... dann kann man nur noch die zuvielen SetFocus und Co. debuggen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (29. Mai 2021 um 11:32 Uhr)
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Exception (Fokusproblem) landet im CPU-Register

  Alt 29. Mai 2021, 12:03
In meinem Prog bleibt das zuletzt aktiv gewesene TabSheet aber dasjenige, welches auch nach einem neuen Anzeigen der Form immer noch sichtbar ist. Habe das gerade nochmal gecheckt. Da gibts kein automatisches Umblättern. Oder ich müsste sowas (wenn's selbst wieder eine Property ist) ausgeschaltet haben, oder erst garnicht angeschaltet, weil es sich um ein minimal älteres Prog handelt? Erst wenn ich ins FormShow() eine < Ln1PageControl.ActivePage := BlablaTabSheet1; > -Anweisung einfüge, und damit sicherstelle, dass bei jedem neuen FormShow auch dieses TabSheet1 sichtbar ist, gibt's keine Exception mehr.
  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 19:42 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-2025 by Thomas Breitkreuz