Einzelnen Beitrag anzeigen

Mysterio08

Registriert seit: 11. Jan 2009
142 Beiträge
 
#1

Problem bei Hintergrundfarbe setzen bei eigener Komponente

  Alt 6. Aug 2010, 09:08
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.
Miniaturansicht angehängter Grafiken
sample.gif  
  Mit Zitat antworten Zitat