Einzelnen Beitrag anzeigen

oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#16

Re: Panel wird nicht richtig gezeichnet

  Alt 14. Mär 2007, 21:52
Hi Hansa,


Zitat von Hansa:
Zitat von oki:
Das Thema umrandung war so bei mir in 5 min abgehakt.
Dann bringe mal Beispiel. Wäre auch eine Möglichkeit.
Hab ich oben zwar schon gemacht, aber weil du es bist hier noch mal:
Delphi-Quellcode:
  TMyPanel = class(TCustomPanel) // oder CustomControl, je nach Geschmack
  private
    FDrawFrame: boolean;
    FFrameColor : TColor; // Farbe des Frame ändert sich bei Select
    FSelected: Boolean;
    procedure SetDrawFrame(const Value: boolean);
    procedure SetSelected(const Value: Boolean);
  protected
    procedure Paint; override;
    procedure DoEnter; override;
    procedure DoExit; override;
    property Selected : Boolean read FSelected write SetSelected;
  public
  published
    property DrawFrame : boolean read FDrawFrame write SetDrawFrame;
  end;


procedure TMyPanel.Paint;
var OldColor : TColor;
begin
  inherited Paint;
  IF FDrawFrame then begin
    // zur besseren Sichtbarkeit Rahmen um Komponente zeichnen
    Oldcolor := self.Canvas.Brush.Color;
    self.Canvas.Brush.Color := FFrameColor;
    self.Canvas.FrameRect(self.ClientRect);
    self.Canvas.Brush.Color := OldColor;
  end;
end;

procedure TMyPanel.SetSelected(const Value: Boolean);
begin
  FSelected := Value;
  IF FSelected then
    FFrameColor := clBlue
  else
    FFrameColor := clBlack;
  Invalidate;
end;

procedure TMyPanel.DoEnter;
begin
  Selected := True;
  inherited DoEnter;
end;

procedure TMyPanel.DoExit;
begin
  Selected := False;
  inherited DoExit;
end;

procedure TMyPanel.SetDrawFrame(const Value: boolean);
begin
  FDrawFrame := Value;
  Invalidate;
end;
Wenn ich jetzt nichts vergessen hab, dann wars das.
DrawFrame hab ich eingeführt, damit man im OI das Zeichnen auch abschalten kann. Der Rest erklärt sich eigentlich von selbst.

Gruß oki

edit: Schreibfehler beseitigt
  Mit Zitat antworten Zitat