Tôi có một điều khiển tùy chỉnh với cả hai thanh cuộn được bật và tôi muốn vẽ một đường viền màu đỏ đơn giản xung quanh khu vực khách hàng và các thanh cuộn, như trong hình bên dưới. Làm thế nào tôi làm điều này?Làm cách nào để vẽ đường viền tùy chỉnh bên trong vùng không phải của khách hàng bằng điều khiển bằng thanh cuộn?
Đây là mã kiểm soát:
unit SuperList;
interface
uses Windows, Controls, Graphics, Classes, Messages, SysUtils, StdCtrls;
type
TSuperList = class(TCustomControl)
protected
procedure Paint; override;
procedure CreateParams(var Params: TCreateParams); override;
public
constructor Create(AOwner: TComponent); override;
end;
implementation
procedure TSuperList.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style:=Params.Style or WS_VSCROLL or WS_HSCROLL;
end;
constructor TSuperList.Create(AOwner: TComponent);
begin
inherited;
Color:=clBlack;
Width:=300;
Height:=250;
end;
procedure TSuperList.Paint;
begin
Canvas.Pen.Color:=clNavy;
Canvas.Brush.Color:=clWhite;
Canvas.Rectangle(ClientRect); // a test rectangle te see the client area
end;
end.
Thật không may, điều này không hoạt động đúng trong Windows 7 Home Premium, 64 bit, Aero được kích hoạt, Delphi 2009. Nếu bạn di chuyển phần điều khiển bên ngoài màn hình và sau đó quay lại, các phần của thanh cuộn luôn hiển thị được vẽ lên . –
@Và Rất tiếc, nhưng tôi chưa có giải pháp nào cho bạn. (Bằng cách này, tôi thấy rằng trục trặc là với một 'TScrollBox' có một' BorderWidth> 0' quá, vì vậy nó có thể không có gì để làm với mã này.) – NGLN