Thema: Delphi Problem mit cxScheduler

Einzelnen Beitrag anzeigen

bwolf

Registriert seit: 17. Jan 2006
368 Beiträge
 
Delphi 2009 Professional
 
#1

Problem mit cxScheduler

  Alt 22. Aug 2012, 12:33
Hi,

ich habe ein kleines Problem mit dem cxScheduler.
Ich versuche mal anhand von ein paar Codeschnipseln zu erklären was ich vorhabe und woran es hängt.

Im Ereignis OnEventModified ändere ich ein Event "von Hand" ab. Anschließend wird über PostMessage eine Funktion aufgerufen, um eine "ControlBox" zu aktualiieren. Der Umweg über das PostMessage ist nötig da der Scheduler (oder meine Datebankkomponenten) nicht direkt aktualisiert werden.
Der Code sieht so aus:


Code:
procedure TfrmMain.ssKalenderEventModified(Sender: TObject;
  AEvent: TcxSchedulerEvent; var AHandled: Boolean);
begin
  FEventLastModified := TcxSchedulerControlEvent(AEvent);

   ...

  // Verzögertes updataen der Controlbox
  PostMessage(Handle, WM_AFTERMODIFIED, 0,0);
  AHandled := True;
end;
In der Variablen FEventLastModified wird die Referenz auf das zuletzt geänderte Event gespeichert.
Folgende Funktion wird dann vom PostMessage aufgerufen:

Code:
procedure TfrmMain.doUpdate(var msg : TMessage);
begin
  UpdateControlBox(FEventLastModified);
end;
Und UpdateControlBox sieht dann etwa so aus:

Code:
procedure TfrmMain.UpdateControlBox(AEvent : TcxSchedulerEvent = nil);
begin
  mdWarnungen.Close;
  mdWarnungen.Open;
  tsWarnung.ImageIndex := -1;

  lblBezeichnung.Caption := VarToStr(AEvent.GetCustomFieldValueByName('Bezeichnung'));
  ...

end;
Nun habe ich folgendes Problem:
Wenn ich diesen Code debugge und nach dem Aufruf von UpdateControlBox FEventLastModified.ClassName prüfe, passiert folgendes:
Im Beginn von UpdateControlBox ist FEventLastModified.ClassName = 'TcxSchedulerEvent', was auch korrekt ist.
Soblad ich aber auf die Nächste Zeile "mdWarnungen.Close;" ausführe, ist FEventLastModified.ClassName = 'TcxEditStyle', und daraufhin kriege ich beim Zugriff auf AEvent.GetCustomFieldValueByName natürlich eine Exception.


Wenn ich alle zugriffe auf mdWarnungen entferne, funnktionert alles bestens.
Ich kann mir allerdings überhaupt keinen Reim drauf machen was da schief läuft, mdWarnungen hat rein garnichts mit dem Scheduler zu tun...
Jemand einen Rat für mich?

Vielen Dank schonmal!
  Mit Zitat antworten Zitat