/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Resize Panel
Fra : Frank Nørvig


Dato : 07-09-03 14:50

Hejsa,

Jeg er igang med at lave et lille program, hvor brugeren selv kan designe et
skærmbillede. Til det har jeg brug for at brugeren kan (i runtime) resize et
TPanel. Panelerne bliver dynamisk created, alt efter hvor mange brugeren har
behov for.

Er der ikke en måde at gøre dette i Delphi 7, eller kræver det et komponent?

Mvh Frank



 
 
Finn Bindeballe (08-09-2003)
Kommentar
Fra : Finn Bindeballe


Dato : 08-09-03 12:18

hej der.......

i din form definere du under private flg:
........
private
p:TPanel;
...........

naar du saa vil ha et panel, gør du bare flg:
............
p:=tpanel.Create(self);
p.Parent:=self;
p.Left:=10;
p.Top:=10;
............
nemt ikk..........

/finn


Frank Nørvig wrote:

>Hejsa,
>
>Jeg er igang med at lave et lille program, hvor brugeren selv kan designe et
>skærmbillede. Til det har jeg brug for at brugeren kan (i runtime) resize et
>TPanel. Panelerne bliver dynamisk created, alt efter hvor mange brugeren har
>behov for.
>
>Er der ikke en måde at gøre dette i Delphi 7, eller kræver det et komponent?
>
>Mvh Frank
>
>
>
>


Frank Nørvig (08-09-2003)
Kommentar
Fra : Frank Nørvig


Dato : 08-09-03 18:08

Hej Finn,

Jeg tror du har misforstået mit spørgsmål. Jeg har ingen problemer med at
create panelerne, men derimod med at gøre panelet resizeable for brugeren
når programmet kører (runtime).

Mvh Frank

> hej der.......
> i din form definere du under private flg:
> private
> p:TPanel;
> naar du saa vil ha et panel, gør du bare flg:
> p:=tpanel.Create(self);
> nemt ikk..........





Claus Christiansen (09-09-2003)
Kommentar
Fra : Claus Christiansen


Dato : 09-09-03 22:26

"Frank Nørvig" <spam@noervig.dk> wrote in
news:3f5cb762$0$16866$edfadb0f@dread11.news.tele.dk:

> Hej Finn,
>
> Jeg tror du har misforstået mit spørgsmål. Jeg har ingen problemer
> med at create panelerne, men derimod med at gøre panelet resizeable
> for brugeren når programmet kører (runtime).
>
> Mvh Frank
>
>> hej der.......
>> i din form definere du under private flg: private p:TPanel;
>> naar du saa vil ha et panel, gør du bare flg:
>> p:=tpanel.Create(self); nemt ikk..........
>

....det er sikkert noget i stil med nedenstående du er ude efter:
en specialisering af et TPanel - det er ikke lavet færdigt, men det kan
du sikkert selv gøre - det kan kun gøre et panel større/mindre i bredden
og det verificeres ikke om brugeren forsøger at "vende" panelet ved at
trække i f.eks. venstre kant og flytte den over den højre (i det tilfælde
forsvinder panelet blot), og der er sikkert også andre faldgrupper, men
mon ikke det skulle give et skub i den rigtige retning :)

Propertien ResizeArea, angiver hvor stort område omkring kanten af
panelet, der skal være aktivt for resize.

Næste udvidelse kunne være at lave det så man kan bruge andet end
crDefault som "std" cursor for panelet, således at det brugeren
(programmøren) angiver som std. cursor, via Cursor propertien, for
panelet rent faktisk også bliver brugt....

unit Unit2;

interface

uses
ExtCtrls, Controls, Classes,
dialogs, Sysutils;

type
TResizePanel = class(TPanel) // Eventuelt TCustomPanel i stedet
private
sizing: (sdWest, sdEast, sdNorth, sdSouth);
FResizeArea: integer;
protected
procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;
procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
procedure MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); override;
public
property ResizeArea: integer read FResizeArea write FResizeArea
default 10;

constructor Create(AOwner: TComponent); override;
end;

implementation

{ TResizePanel }

constructor TResizePanel.Create(AOwner: TComponent);
begin
inherited;

ResizeArea := 10;
end;

procedure TResizePanel.MouseDown(Button: TMouseButton; Shift:
TShiftState;
X, Y: Integer);
begin
inherited;

if (x < ResizeArea) then sizing := sdWest;
if (x > self.Width - ResizeArea) then sizing := sdEast;
end;

procedure TResizePanel.MouseMove(Shift: TShiftState; X, Y: Integer);
begin
inherited;

if (x < ResizeArea) or
(x > self.Width - ResizeArea) and (self.Cursor <> crSizeWE) then
self.Cursor := crSizeWE
else
self.Cursor := crDefault;
end;

procedure TResizePanel.MouseUp(Button: TMouseButton; Shift: TShiftState;
X,
Y: Integer);
begin
inherited;

if sizing = sdWest then
begin
self.Width := self.Width - x;
self.Left := self.Left + x;
end;

if sizing = sdEast then
begin
self.Width := x;
end;
end;

end.

/Claus
--
Claus Christiansen, <mailto:NOSPAM@unipeople.dk>, leave the adr. as it is
personal: <http://unipeople.dk/~cch>; pythia: <http://www.pythia.dk>
===========================================================--------------
"Computers are useless. They can only give you answers" - Pablo Picasso

Claus Christiansen (09-09-2003)
Kommentar
Fra : Claus Christiansen


Dato : 09-09-03 22:28

Claus Christiansen <NOSPAM@unipeople.dk> wrote in
news:Xns93F1EE09217B1krucsid@news.unipeople.dk:

> dialogs, Sysutils;

Ovenstående kan udelades... de var blot til eget testformål!

/Claus

--
Claus Christiansen, <mailto:NOSPAM@unipeople.dk>, leave the adr. as it is
personal: <http://unipeople.dk/~cch>; pythia: <http://www.pythia.dk>
===========================================================--------------
"Computers are useless. They can only give you answers" - Pablo Picasso

Kurt Guldbæk (08-09-2003)
Kommentar
Fra : Kurt Guldbæk


Dato : 08-09-03 22:24

Hej Frank!

Jeg er ikke stærk i Delphi, men jeg mener, at du i eksemplet herunder kan
bruge

p.Width := DenØnskedeBredde;
p.Heigth := DenØnskedeHøjde;

Mvh Kurt


"Finn Bindeballe" <_AAAPPP_finnb@post6.tele.dk> skrev i en meddelelse
news:3f5c6582$0$16887$edfadb0f@dread11.news.tele.dk...
> hej der.......
>
> i din form definere du under private flg:
> .......
> private
> p:TPanel;
> ..........
>
> naar du saa vil ha et panel, gør du bare flg:
> ...........
> p:=tpanel.Create(self);
> p.Parent:=self;
> p.Left:=10;
> p.Top:=10;
> ...........
> nemt ikk..........
>
> /finn
>
>
> Frank Nørvig wrote:
>
> >Hejsa,
> >
> >Jeg er igang med at lave et lille program, hvor brugeren selv kan designe
et
> >skærmbillede. Til det har jeg brug for at brugeren kan (i runtime) resize
et
> >TPanel. Panelerne bliver dynamisk created, alt efter hvor mange brugeren
har
> >behov for.
> >
> >Er der ikke en måde at gøre dette i Delphi 7, eller kræver det et
komponent?
> >
> >Mvh Frank
> >
> >
> >
> >
>



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste