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!