View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0004278 | JEDI VCL | 00 JVCL Components | public | 2007-10-27 04:11 | 2008-07-21 00:12 |
Reporter | ZENsan | Assigned To | obones | ||
Priority | normal | Severity | crash | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Product Version | Daily / GIT | ||||
Target Version | Fixed in Version | 3.34 | |||
Summary | 0004278: TJvAppEvents exception and total crash when using OnActiveControlChange | ||||
Description | JvAppEvents calls OnActiveControlChange also after JvAppEvents.Chained = False!!! Whis produce unhandled situations and problems. Source project attached. | ||||
Additional Information | That was difficult to catch out where is the problem in my project. Because I had verry difficult structure and interfaces/threads and thread safe version of JvDebugHandler.. So at the end I found where is the problem! | ||||
Tags | No tags attached. | ||||
2007-10-27 04:11
|
JvAppEvents.7z (14,094 bytes) |
|
I understand that onActiveControlChange notification goes from Screen object, but I think that it is not correct to call OnChangeActiveControl in DoActiveControlChange JvAppEvent.pas[539] there must be a check for "Chained"! And this also belongs to all other events such as OnActiveFormChange which also comes from Screen object. |
|
var I: Integer; begin for I := FAppEvents.Count - 1 downto 0 do begin TJvAppEvents(FAppEvents[I]).FCancelDispatch := False; if Assigned(TJvAppEvents(FAppEvents[I]).FOnActiveControlChange) then TJvAppEvents(FAppEvents[I]).FOnActiveControlChange(Sender); if not TJvAppEvents(FAppEvents[I]).Chained or TJvAppEvents(FAppEvents[I]).FCancelDispatch then Exit; end; if Assigned(FOnActiveControlChange) then FOnActiveControlChange(Sender); Maybe that line "if not TJvAppEvents(FAppEvents[I]).Chained TJvAppEvents(FAppEvents[I]).FCancelDispatch then Exit;" must be before previous lines? And if we replace Original events of objects Application and Screen why Originals must not be called when your AppEvents object is not chained: ? if Assigned(FOnActiveControlChange) then FOnActiveControlChange(Sender); if that Exit; works then this will not be called, but your Appevents.OnActiveControlChange(..) - will be called. It must be opposite I think.. |
|
Can you explain to me in more details using simple terms what the problem is? I'm having a hard time understanding it. |
|
I see that now it is resolved. So we can close this issue. |
Date Modified | Username | Field | Change |
---|---|---|---|
2007-10-27 04:11 | ZENsan | New Issue | |
2007-10-27 04:11 | ZENsan | File Added: JvAppEvents.7z | |
2007-10-27 04:16 | ZENsan | Note Added: 0014000 | |
2007-10-27 04:25 | ZENsan | Note Added: 0014001 | |
2008-02-20 06:55 | obones | Note Added: 0014173 | |
2008-02-20 06:55 | obones | Status | new => feedback |
2008-07-18 02:16 | ZENsan | Note Added: 0014398 | |
2008-07-21 00:12 | obones | Status | feedback => resolved |
2008-07-21 00:12 | obones | Fixed in Version | => Daily / SVN |
2008-07-21 00:12 | obones | Resolution | open => fixed |
2008-07-21 00:12 | obones | Assigned To | => obones |