Ich habe einen Fehler, den ich nicht wirklich eingrenzen kann. Vielleicht kann mir jemand einen Tipp geben.
Bei fehlerhaften Eingaben färbe ich gerne die Fläche des Eingabelementes Rot ein. Die Anwendung verwendet Styles, weshalb ich bei Einfärbung das Property StyleElements ändern muss. Das mache ich so:
Delphi-Quellcode:
procedure TFormCbColorTest.ComboBoxTestChange(Sender: TObject);
var
lValid: Boolean;
lCombobox:TCombobox;
begin
lCombobox :=TCombobox(Sender);
lValid := ComboDataIsValid(lCombobox);
if lValid then
begin
lCombobox.StyleElements := lCombobox.StyleElements + [seClient];
end
else
begin
lCombobox.StyleElements := lCombobox.StyleElements - [seClient];
lCombobox.Color := clRed;
end;
end;
Das Funktioniert auch eigentlich in 99% der Fälle. Aber in manchen Fällen gibt es einen Fehler "Zugriffsverletzung bei Adresse xxxxx in Modul user32.dll. Lesen von Adresse 00000000."
Debuggen klappt nicht wirklich. Der Code geht fehlerfrei durch. Erst bei verlassen der Procedure, nach dem letzten "end" kommt die Fehlermeldung.
Wenn der Fehler in einen Form auftritt, dann tritt er immer in diesem Form auf. Deshalb kann ich es eingrenzen. Ich kann aber kein Beispielprogramm bereit stellen, da in allen Programmen, in dem der Fehler reproduziert werden soll, der Fehler nicht auftritt.
Der Fehler tritt auch nur ein einziges mal auf. Bei der zweiten Änderung der Combobox gibt es keine Fehlermeldung. Erst wenn das Formular geschlossen wird und neu aufgerufen wird, erscheint bei Änderung der Combobox der Fehler.
Vielleich übersehe ich ja was. Gibt es einen Grunde, weshalb ein Style NICHT in einem Event geändert werden sollte?