ハイライトedit
1292 ワード
type
TEditLight= class (TEdit)
private
FEditSel: Boolean;
procedure WMNCPAINT(var msg: TMessage); message WM_NCPaint;
procedure SetEditSel(Value: Boolean);
published
property EditSel: Boolean read FEditSel write SetEditSel default False;
end;
procedure TEditLight.SetEditSel(Value: Boolean);
begin
if self.FEditSel <> Value then
begin
self.FEditSel := Value;
Self.Invalidate;
end;
end;
procedure TEditLight.WMNCPAINT(var msg: TMessage);
var
DC: HDC;
BorderBrush: HBRUSH;
R: TRect;
begin
DC := GetWindowDC(Handle);
try
SetRect(R, 0, 0, Width, Height);
if FEditSel then
begin
BorderBrush := CreateSolidBrush(RGB(123, 228, 255));
FrameRect(DC, R, BorderBrush); //
DeleteObject(BorderBrush);
InflateRect(R, -1, -1);
end
else
begin
InflateRect(R, -1, -1);
BorderBrush := CreateSolidBrush(ColorToRGB(Color));
FrameRect(DC, R, BorderBrush); // ,
DeleteObject(BorderBrush);
InflateRect(R, 1, 1);
end;
BorderBrush := CreateSolidBrush(RGB(78, 160, 209));
FrameRect(DC, R, BorderBrush); //
DeleteObject(BorderBrush);
finally
ReleaseDC(Handle, DC);
end;
end;