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