Avatar billede morten_s Nybegynder
29. juni 2001 - 10:31 Der er 26 kommentarer og
1 løsning

Flytbart polygonkomponent

Jeg har brug for et polygonkomponent med 4 hjørner  jeg skal kunne ændre facon på polygonkomponentet under RunTime.

Når jeg sætter et edit flag skal cursor skifte til f.eks. crSizeAll, og jeg skal kunne flytte rundt på polygonetshjørner, som når man resizer f.eks et TShape rectangel.

Er der nogen som ligger inde med noget brugbartkode til dette er jeg meget interesseret.

TShape rectangel komponenten kan ikke anvendes da polygonet også skal kunne have facon som en rombe
Avatar billede martinlind Nybegynder
29. juni 2001 - 10:34 #1
Det lyder da som en sød lille opgave, jeg vil anbefale dig at lave den selv, det lyder som om du har nogle specifike krav, som du sikkert bedst for opfyldt ved at lave den selv.

/Martin
Avatar billede borrisholt Novice
29. juni 2001 - 10:35 #2
Hvorfor ned arver du så ikke bare fra TShape, og fixer den på den måde ?

Jens B
Avatar billede morten_s Nybegynder
29. juni 2001 - 10:35 #3
Ja og jeg har lavet den, men jeg kan ikke finde ud af at resize den.
Avatar billede morten_s Nybegynder
29. juni 2001 - 10:36 #4
borrisholt> hvordan resizer jeg en TShape under runtime, så rectanglet bliver til en rompe, jeg skal kunne flytte alle 4 hjørner individuelt
Avatar billede delphi Nybegynder
29. juni 2001 - 10:37 #5
Det lyder som om TShape har alt det du skal bruge - bortset fra at den altså tegner rektangler og ikke bare \"firkanter\".

I ren OOE ånd vil det jo være oplagt enten at nedarve fra TShape, men overskrive dens OnPaint (?) metoder, eller se efter hvad TShape er nedarvet fra, lave en parrallel komponent, TFirkant.  Store dele af koden til TFirkant vil du kunne sakse fra sourcen til TShape.

Jeg vil umiddelbart, uden at have kigget på TShapes kode, tro at det er nemmest at nedarve fra TShape.

Peter
Avatar billede delphi Nybegynder
29. juni 2001 - 10:38 #6
Doh, man skal være hurtig her.  Sidder og skriver og bliver så overhalet indenom...
Avatar billede martinlind Nybegynder
29. juni 2001 - 10:38 #7
Jeg vil stadig mene du er bedre stillet med noget ikke \"hack\" kode, dvs. noget hvor du laver lidt mere selv, for så har du bedre styr på tingende, og tiden du kommer til at bruge på det er som regl den samme, det siger min erfaring i hvertfald mig. Vi hjælper gerne *S*

/Martin
Avatar billede martinlind Nybegynder
29. juni 2001 - 10:40 #8
delphi >> det må være en \"stille fredag\" *GG*
Avatar billede delphi Nybegynder
29. juni 2001 - 10:42 #9
Tjaa...  Sidder lige og lopper den lidt...  Håber at der måske er en pakke i posten, så jeg kan more mig foran PC\'en i weekenden med noget rimeligt ny software... HINT!

Peter
Avatar billede morten_s Nybegynder
29. juni 2001 - 10:44 #10
Peter> hvis det er den nye ver 6. hvad så med og more sig med at kode mit komponent ;-))
Avatar billede martinlind Nybegynder
29. juni 2001 - 10:45 #11
som starter med D og slutter på 6
Avatar billede martinlind Nybegynder
29. juni 2001 - 10:47 #12
morten_s >> Du skal da også havde noget at lave i weekenden, for øvrigt kan man ikke lave comps i D6 hvis man skal lave en prop. editor også, for der mangler Proxies.dcu, det er noget rigtig SKOD, at de laver den fejl igen.
Avatar billede morten_s Nybegynder
29. juni 2001 - 10:51 #13
Jeg har arbejdet på lortet en hel weekend...

og det er ret irreterende at se at alle Delphi komponenterne kan resizes når de sættes på formen, og jeg ikke kan få det til at virke ;-((
Avatar billede delphi Nybegynder
29. juni 2001 - 10:52 #14
vedr D6: I er sgu da ikke til at skjule noget for.... skarpsindige hjerner...
Jeg mangler lige et \"Preview\" af D6 inden jeg tager den endelige beslutning om at upgrade (dvs. inden jeg har fået vredet armen nok om på økonomi afdelingen...)

Jeg havde ikke hørt det med Proxies.  Hvon hulen kan de undlade at lægge den med?  De har vel selv benyttet den til deres egne property editors.

Delphi
Avatar billede delphi Nybegynder
29. juni 2001 - 10:53 #15
Igen uden at kende specielt til TShape.

Hvad har du forsøgt?
Kan du sende en WM_SIZE eller lign. message til komponenten?

Peter
Avatar billede martinlind Nybegynder
29. juni 2001 - 10:57 #16
hvis du droper noget kode her vil jeg ikke love noget men måske

martin@e-lind.dk

/Martin

PS ingen EXE tak
Avatar billede martinlind Nybegynder
29. juni 2001 - 10:59 #17
delphi >> Man kan også godt udvikle en compeditor, ved at requere DesignIDE.dcp med når du så laver et project for at teste din nye comp. så kan man ikke compilere, for man kan jo ikke lave et project der requere en designtime package.

/Martin
Avatar billede delphi Nybegynder
29. juni 2001 - 11:03 #18
Nu har jeg lige kigget på TShape.  Den ser da ud til at være nem at ændre, dvs. nedarv en TFirkant fra TShape og overwrite dens Pain metode.  Resten lader du bare være.

Noget i retning af:

Type
  TFirkant = Class(TShape)
    protected
      procedure Paint; override;
  published
    procedure StyleChanged(Sender: TObject);
    property Align;
    property Anchors;
    property Brush: TBrush read FBrush write SetBrush;
.
.
.  // Include alle TShape properties, undtagen Shape. *1)
.

    property OnMouseUp;
    property OnStartDock;
    property OnStartDrag;
  end;


procedure TFirkant.Paint;
Begin
  // Kode der tegner din firkant.
End;



*1)  Bliver du rigtig vild, så lader du shape være med, men ændrer den til TMyShapeType (TShapeType + stFirkant)  Hvis Shape er stFirkant, fint brug den egen Paint metode, ellers kaldes inherited.
Avatar billede morten_s Nybegynder
29. juni 2001 - 11:04 #19
Peter> jeg er startet helt fra bunden med
TSquare = class(TGraphicControl),
og jeg har fået den bygget op så jeg kan tegne den ved at klikke fra hjørne til hjørne.

Det som driller er når jeg skal tage fat i hjørnerne og flytte rundt på dem hvis de efterfølgende skal editteres.

Et af problemerne er at sætte komponentens Width og Height, og få slettet de gl. forbindelsesstreger til de to andre hjørner ved at tegne oveni.

Jeg syntes bare det var et problem som mange må have eksperimenteret med da alle delphi komp. kan resizes
Avatar billede delphi Nybegynder
29. juni 2001 - 11:05 #20
Martin>> Ok, jeg tror kun jeg har lavet en enkelt comp editor eller to i min tid - og det var tilbage i D3, D4 stykker.  i hvertfald lang tid siden. 

Peter
Avatar billede morten_s Nybegynder
29. juni 2001 - 11:09 #21
Delphi>  ja det kan jeg godt se, men hvordan får jeg de små hjørnefirkanter frem i runtime, og hvordan griber jeg fat i dem , i den oprindelige TShape, er det jo Hegith og width man flytter på og ikke hjørnerne i rectanglet
Avatar billede martinlind Nybegynder
29. juni 2001 - 11:09 #22
Den procedure du ændre pos i skal da bare kalde invalidate, også skal din paint klare opd. dvs. pos rutinen skal evt. bare ændre i dit array af point\'s eller hvordan du nu har lavet det.

Drop den på min mail så kigger jeg på det.
Avatar billede martinlind Nybegynder
29. juni 2001 - 11:12 #23
Det med de små sorte firkanter runtime, er ikke noget man bare laver, jeg har en lille runtime Object-inspector, jeg lavede i D3, og det var ikke nogen helt triviel sag.
Avatar billede morten_s Nybegynder
29. juni 2001 - 11:26 #24
Martin> Jeg har sendt til dig prøv at se om det kan kører
Avatar billede martinlind Nybegynder
29. juni 2001 - 11:38 #25
Kigger på det
Avatar billede morten_s Nybegynder
29. juni 2001 - 13:28 #26
Martin>> Har fået det til at virke
Avatar billede morten_s Nybegynder
29. juni 2001 - 13:28 #27
Mangler kun de sorte hjørnefirkanter ;-))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester