Delphi-Quellcode:
{ TMyScrollBar }
//******************************************************************************
constructor TMyScrollBar.Create(AOwner: TComponent);
begin
inherited;
FHBrush := CreateSolidBrush(ColorToRGB(FBackColor));
end;
//******************************************************************************
destructor TMyScrollBar.Destroy;
begin
DeleteObject(FHBrush);
inherited;
end;
//******************************************************************************
procedure TMyScrollBar.SetBackColor(const Value: Tcolor);
begin
FBackColor := Value;
DeleteObject(FHBrush);
FHBrush := CreateSolidBrush(ColorToRGB(FBackColor));
end;
//******************************************************************************
procedure TMyScrollBar.WMCtlColor(var Message: TWMCtlColorScrollbar);
begin
Message.Result := FHBrush;
end;
Ungetestet, gefunden bei SO. Damit ist sollte das Speicherleck zu sein.
Bereichsprüfungsfehler? Zeige doch mal auch was Du in der Message Procedure anstellst ?! Bei mir klappen alle Varianten.
Nochmals Danke fürs raussuchen. Aber wie gesagt, es geht ja nur zum Teil mit den Farben.
Das mit DeleteObject hatte ich sowieso schon gemacht. Das mit dem Fehler "Bereichsprüfung"... es war noch schlimmer und das alles lag am
VCL-Stil. Meine Anwendung ist ja schon abgestürzt, nur wenn ich ein TEdit hinzufügte. Ich hatte mir nämlich ein
VCL-Stil nur mit den ScrollBar-Daten gemacht. Das war dann einfach zu wenig und hier und da meckerte dann Delphi. Wichtig war StyleElements für die Komponenten entsprechend abzustellen. Egal jetzt... mit einer TScrollBar geht es jetzt.
Michael