Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.015 c
3-78825
VP
2003-11-04 17:23
2003.11.24
Quick Report Pro


1-78968
lamer666
2003-11-14 18:37
2003.11.24
Обработка OnClick у объектов


4-79217
Sandman25
2003-09-30 17:31
2003.11.24
ExpandName?


1-79001
Stalker780
2003-11-14 12:24
2003.11.24
KOI-8 -> Windows и обратно


14-79157
alxx
2003-10-31 11:04
2003.11.24
Быстрая графика в Delphi




   Наверх