Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.24;
Скачать: CL | DM;

Вниз

ClientRect   Найти похожие ветки 

 
webpauk   (2003-11-13 16:51) [0]

Может кто подскажет как изменить ClientRect TPanel, чтобы вышележащие компоненты, имеющие Align=alClient отображались только в определенной области TPanel (например, Rect(10, 10, 20, 20))


 
Ru ©   (2003-11-13 16:54) [1]

может им (я так понял это потомки) просто присвоить left,top,heigth,width?


 
REA ©   (2003-11-13 17:03) [2]

Так они же alClient - т.е. все свободное пространство.
Скажи что надо то? Там еще есть constraints, alCustom...


 
webpauk   (2003-11-13 17:05) [3]

компонент, наследник TPanel имеет специальную область, куда вышележащие компоненты не должны залазить


 
Ru ©   (2003-11-13 17:07) [4]

>webpauk (13.11.03 17:05) [3]

"вышележащие компоненты" это "компоненты лежащие на панели"?


 
webpauk   (2003-11-13 17:10) [5]

ага


 
webpauk   (2003-11-13 17:11) [6]

неохота на TPanel создавать еще один Tpanel. Хочется просто отрисовать нужную область


 
Ru ©   (2003-11-13 17:14) [7]

>webpauk (13.11.03 17:11) [6]

можно или вторую панель (как и говоришь) или отслеживать положение дочерних компанент программно (ложи панель)


 
webpauk   (2003-11-13 17:15) [8]

not cool


 
serge   (2003-11-13 17:22) [9]

Смотри в сурсах:

procedure TCustomPanel.AdjustClientRect(var Rect: TRect);
var
BevelSize: Integer;
begin
inherited AdjustClientRect(Rect);
InflateRect(Rect, -BorderWidth, -BorderWidth);
BevelSize := 0;
if BevelOuter <> bvNone then Inc(BevelSize, BevelWidth);
if BevelInner <> bvNone then Inc(BevelSize, BevelWidth);
InflateRect(Rect, -BevelSize, -BevelSize);
end;

Может поможет!
Удачи!


 
webpauk   (2003-11-13 17:27) [10]

serge, СПАСИБО! СПАСИБИЩЕ!!!


 
serge   (2003-11-13 17:29) [11]

Скажешь спасибо когда получится :о)


 
webpauk   (2003-11-13 17:39) [12]

дык получилось

procedure TPanel1.AdjustClientRect(var Rect: TRect);
var
BevelSize: Integer;
begin
inherited AdjustClientRect(Rect);
InflateRect(Rect, -BorderWidth, -BorderWidth);
OffsetRect(Rect, 0, 20);
Dec(Rect.Bottom, 21);
end;


 
webpauk   (2003-11-13 17:43) [13]

точнее говоря:

unit Panel1;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, ExtCtrls, Graphics;

type
TPanel1 = class(TPanel)
private
{ Private declarations }
protected
{ Protected declarations }
procedure Paint; override;
procedure AdjustClientRect(var Rect: TRect);override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
{ Public declarations }
published
{ Published declarations }
end;

procedure Register;

implementation

constructor TPanel1.Create(AOwner: TComponent);
begin
inherited;
ControlStyle:=ControlStyle-[csSetCaption]+[csAcceptsControls];
Height:=105;
end;

destructor TPanel1.Destroy;
begin
inherited;
end;

procedure TPanel1.Paint;
var
fR: TRect;
fCanvas: TCanvas;
begin
inherited;
fCanvas:=TCanvas.Create;
fCanvas.Handle:=GetWindowDC(Handle);
fR:=Rect(1, 1, Width-2, 20);
fCanvas.Brush.Color:=clBlue;
fCanvas.Pen.Color:=clBlue;
fCanvas.FillRect(fR);
fCanvas.Handle:=0;
fCanvas.Free;
end;

procedure TPanel1.AdjustClientRect(var Rect: TRect);
begin
inherited AdjustClientRect(Rect);
InflateRect(Rect, -BorderWidth, -BorderWidth);
OffsetRect(Rect, 0, 20);
Dec(Rect.Bottom, 21);
end;

procedure Register;
begin
RegisterComponents("Standard", [TPanel1]);
end;

end.


 
serge   (2003-11-13 17:57) [14]

Я тоже делал как-то панельку с капшином с возможностью перетаскивания - типа тулнвидоу, только вот енту процедуру я там не использовал - небыло надобности, теперь добавлю, благо ты напомнил о сей веши!

Удачи!



Страницы: 1 вся ветка

Текущий архив: 2003.11.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.035 c
3-78829
Talla2k
2003-11-04 15:18
2003.11.24
запрос


1-78918
SergP
2003-11-12 09:33
2003.11.24
TDatetime.


4-79215
Sfagnum
2003-09-26 13:50
2003.11.24
RichEdit 2.0


3-78817
Митяй
2003-11-04 17:20
2003.11.24
Локальная БД.


4-79220
Wizard_Ex
2003-09-29 17:43
2003.11.24
Нужно выдрать иконку MDIChild окна