I hope this the right forum for this question (gtk on lazarus-0.9.24-1.fc8 rpm on fpc-2.2.0-10.fc8 rpm)(but I know there are people here that can help me %^). I would like to add a special TShape (descendant or TComponent) to a panel. I tried the following but must be missing something.
type pControlVolume = ^TControlVolume ; {Forward} TControlVolume = class(TComponent {like a TShape}) private { private declarations } fNumber : integer ; fCVName : string ; fCVShape : tShape ; fPrevious : pControlVolume ; fNext : pControlVolume ; public { public declarations } property Number : integer Read fNumber Write fNumber ; property CVName : string Read fCVName Write fCVName ; property CVShape : tShape Read fCVShape Write fCVShape; property Previous: pControlVolume Read fPrevious Write fPrevious ; property Next : pControlVolume Read fNext Write fNext ; Constructor Create( Sender: TComponent ) {Override} ; Destructor Destroy {Override} ; Procedure Init(); Procedure Done(); end; : : implementation Constructor TControlVolume.Create( Sender:TComponent ); begin Inherited Create(Sender); fCVShape.Create( Sender ); end; Destructor TControlVolume.Destroy; begin fCVShape.Destroy; Inherited Destroy ; end; Procedure TControlVolume.Init(); begin {no Inherited TComponent.Init ;} fCVName := 'NoNameYet' ; end; Procedure TControlVolume.Done(); begin {no Inherited Done ;} fCVName := ''; end; : : {then in the Form's Button to add a new CV...} procedure TForm1.Button1Click(Sender: TObject); begin if pTopCV = nil then begin NEW( pTopCV ); pTopCV^ := TControlVolume.Create(PanelDraft); pLastCV := pTopCV ; pLastCV^.Previous := nil ; pLastCV^.Number := 1 ; end else begin NEW(pLastCV^.Next ); pLastCV^.Next^ := TControlVolume.Create(PanelDraft); pLastCV^.Next^.Previous := pLastCV ; pLastCV^.Next^.Number := pLastCV^.Number + 1 ; pLastCV := pLastCV^.Next ; end ; pLastCV^.CVName:='CV-' + IntToStr(pLastCV^.Number) ; pLastCV^.Next := nil ; pLastCV^.CVShape := TShape.Create( PanelDraft ) ; pLastCV^.CVShape.Parent := PanelDraft ; pLastCV^.CVShape.Left := 10 ; PanelDraft.Paint ; end; : : Compiling gives: unit1.pas(29,17) Warning: An inherited method is hidden by "constructor TControlVolume.Create(TComponent)" unit1.pas(30,16) Warning: An inherited method is hidden by "destructor TControlVolume.Destroy" unit1.pas(197,19) Warning: use extended syntax of NEW and DISPOSE for instances of objects unit1.pas(205,25) Warning: use extended syntax of NEW and DISPOSE for instances of objects Project "cvproject" successfully built. :) Is the principal right because I get an error on adding a new TControleVolume? External SEGSEGV crash. It seems like I am not defining the constructor properly??? I thought of using a stringlist for handling (--keeping record of) the string of objects (shapes with names and real space position properties) but am a bit lost with how to address the objects through the stringlist. All advice and pointers are welcome. TIA DanieW _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal