On Wed, 21 Dec 2005 20:28:55 +0200 Markku Niskanen <[EMAIL PROTECTED]> wrote:
> Hello, > > I have been trying to create a simple new component just for the > sake of experience and I MUST be real stupid as I get the following > backtrace when I try to insert the new component (which has been > compiled ok) to the form. The component comes from Delphi and > works just fine there. > > It seems to me as if the TWincontrol needed a parent but as it > cannot find one simply raises an exception. Before getting into the > real thing I created the simplest component I can image, it extends > class TCustomPanel and onPaint it should draw a very short line > and is totally useless. The Canvas operation Moveto() seems to > start the chain. > > Any help would be appreciated. I do not mind being called an > idiot, either :) > > When I get the first real component done I will document the > process and publish it as a starter's tutorial. > > ----- gdb backtrace (running lazarus, dropping component) ----------- > Program received signal SIGFPE, Arithmetic exception. > $0040dc98 in RAISEGDBEXCEPTION (MSG=$1f95e4c) at LCLProc.pas:594 > (gdb) bt > #0 $0040dc98 in RAISEGDBEXCEPTION (MSG=$1f95e4c) at LCLProc.pas:594 > #1 $00480f45 in TWINCONTROL__CREATEWND (this=$2216928) at > wincontrol.inc:4781 > #2 $00480c53 in TWINCONTROL__CREATEHANDLE (this=$2216928) > at wincontrol.inc:4723 > #3 $004818ac in TWINCONTROL__HANDLENEEDED (this=$2216928) > at wincontrol.inc:5031 > #4 $0047ff73 in TWINCONTROL__GETHANDLE (this=$2216928) at > wincontrol.inc:4073 > #5 $00482aa5 in TWINCONTROL__GETDEVICECONTEXT (WINDOWHANDLE=0, > this=$2216928) > at wincontrol.inc:5502 > #6 $004788f0 in TCONTROLCANVAS__CREATEHANDLE (this=$2199934) > at controlcanvas.inc:90 > #7 $004b8180 in TCANVAS__REQUIREDSTATE (REQSTATE=[CSHANDLEVALID], > this=$2199934) at canvas.inc:1403 > #8 $004b7a30 in TCANVAS__MOVETO (X1=2, Y1=2, this=$2199934) at > canvas.inc:1075 > #9 $007c12b1 in TSIMPLELINE__PAINT (this=$2216928) at SimpleLine.pas:49 > #10 $007c127d in TSIMPLELINE__RESIZE (this=$2216928) at SimpleLine.pas:44 > ---------------- /backtrace------------------------- > > ---------------------- unit/component------------------------ > unit SimpleLine; > {$mode objfpc}{$H+} > interface > uses > Windows, Messages, SysUtils, Classes, GraphType,Graphics, Controls, > Forms, Dialogs, > ExtCtrls, LResources; > > type > TSimpleLine = class(TCustomPanel) > private > { Private declarations } > protected > { Protected declarations } > public > { Public declarations } > constructor Create(AOwner: TComponent); override; > procedure Paint; override; > procedure Resize; override; > published > property OnResize; > { Published declarations } > end; > > procedure Register; > > implementation > > procedure Register; > begin > RegisterComponents('Misc',[TSimpleLine]); > end; > > constructor TSimpleLine.Create(AOwner: TComponent); > begin > inherited; > end; > > procedure TSimpleLine.Resize; > begin > inherited; > paint(); > end; Don't call paint in Resize. This will be done automatically. > > // --------- this is where it all starts ----------------------- > procedure TSimpleLine.paint() ; > begin > Canvas.Moveto(2,2); > Canvas.Lineto(4,4); > end; > > end. Mattias _________________________________________________________________ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives