Hallo,
ich setzte mich seit kurzen mit der Komponentenentwicklung auseinander, und habe nun folgendes Problem: Ich leite meine Komponente von TGraphicControl ab und möchte nun die Möglichkeit bieten, eine Hintergrundfarbe setzen zu lassen. Hier ein bisschen Code:
Delphi-Quellcode:
private
FColor: TColor;
procedure SetColor(const Value: TColor);
...
published
property Color: TColor read FColor write SetColor;
...
procedure TCalculator.SetColor(const Value: TColor);
begin
FColor := Value;
with Canvas do begin
Brush.Color := FColor;
Pen.Color := FColor;
Pen.Width := 1;
Rectangle(0, 0, Width, Height)
end
end;
Ich glaube, die Prozedur SetColor ist - naja - schlecht programmiert, aber ich weiß nicht, wie ich sonst die Hintergrundfarbe setzen soll.
Nun ja, die Probleme treten auf:
• Das setzen der Farbe im
OI klappt noch, wenn die Komponente im Design-Bereich jedoch den Fokus verliert, dann tritt ein Problem auf, welches durch das Zeichnen verursacht wurde - die Komponente wird nicht vollständig gezeichnet, ich habe mal ein Screenshot gemacht.
• Klickt man erneut auf die Komponente, verschwindet die Farbe.
• Will ich das Programm, und damit die Komponente, kompilieren, tritt folgender Fehler auf und das Programm wird zurückgesetzt: "
Exception EInvalid Operation in Modul Standard.exe bei 00072410. Element '' hat kein übergeordnetes Fenster".
Meine Frage also: Wie kann ich die Prozedur SetColor eleganter/besser schreiben?
mfg.