On Mon, 27 Feb 2006 14:49:18 +0200
"Graeme Geldenhuys" <[EMAIL PROTECTED]> wrote:

> Thanks Mattias.  Thinking about it now, the problem makes sense.  Made
> the change and it works perfectly now!
> 
> I am very impressed with CodeTools so far!  I have only scratched the
> surface of what it can do, but it is brilliant.  Once you get the
> basics of how it works and what each class does, it becomes much
> easier.  I took me much longer to write this addon for Kylix, than for
> Lazarus, thanks to CodeTools, which did most of the work for me.

Thanks.
Where is the addon available?

Mattias


> 
> Regards,
>   - Graeme -
> 
> 
> 
> On 2/27/06, Mattias Gaertner <[EMAIL PROTECTED]> wrote:
> > On Mon, 27 Feb 2006 11:36:39 +0200
> > "Graeme Geldenhuys" <[EMAIL PROTECTED]> wrote:
> >
> > > Hi,
> > >
> > > I created a Lazarus addon which shows a list of procedures in a Modal
> > > dialog (same a GExperts Procedure List).  Everythings seems to work
> > > fine, except for the editor focus after the jump.
> > >
> > > When I call the method below, it jumps to the correct location, and
> > > the Modal dialog closes, but now I cannot see my cursor in the editor?
> > >  The editor looks like it has focus, but no cursor movement is shown
> > > when I press the up/down keys or even the Ctrl+up/down keys.
> > >
> > > Any ideas how I can resolve this?  If you need the full source, I can
> > > email it directly.
> > >
> > > Some notes on the code below:
> > > LV = TListView component in Report style
> > > lItem.SubItems[3] holds the TCodeTreeNode.PosStart integer value
> > >
> > >
> > >
> > > procedure TProcedureListForm.JumpToSelection;
> > > var
> > >   lItem: TListItem;
> > >   Caret: TCodeXYPosition;
> > >   NewTopLine: integer;
> > >   CodeBuffer: TCodeBuffer;
> > >   ACodeTool: TCodeTool;
> > >   lStartPos: integer;
> > > begin
> > >   lItem := LV.Selected;
> > >   if lItem = nil then
> > >     Exit; //==>
> > >   if lItem.SubItems[3] = '' then
> > >     Exit; //==>
> > >
> > >   lStartPos := StrToInt(lItem.SubItems[3]);
> > >
> > >   CodeBuffer := CodeToolBoss.FindFile(MainFilename);
> > >   if CodeBuffer = nil then
> > >     Exit; //==>
> > >
> > >   ACodeTool := nil;
> > >   CodeToolBoss.Explore(CodeBuffer,ACodeTool,false);
> > >   if ACodeTool = nil then
> > >     Exit; //==>
> > >
> > >   if not ACodeTool.CleanPosToCaretAndTopLine(lStartPos, Caret,
> > >   NewTopLine) then
> > >     Exit; //==>
> > >
> > >   LazarusIDE.DoOpenFileAndJumpToPos(Caret.Code.Filename,
> > > Point(Caret.X, Caret.Y),
> > >       NewTopLine, -1, [ofRegularFile,ofUseCache]);
> >
> > The form is still modal, so the source editor can not be focused. Move
> > the above line behind the ShowModal.
> > Save the needed values in some public properties.
> >
> >
> > >
> > >   Close;
> > > end;
> > >
> > >
> > > { method the launches the dialog }
> > > procedure ExecuteProcedureList(Sender: TObject);
> > > begin
> > >   with TProcedureListForm.Create(Application) do
> > >     try
> > >       ShowModal;
> >
> > Add here:
> >
> > if ShowModal=mrOk then
> >   LazarusIDE.DoOpenFileAndJumpToPos ...
> >
> >
> > >     finally
> > >       Free;
> > >     end;
> > > end;
> >
> > Mattias
> >
> > _________________________________________________________________
> >      To unsubscribe: mail [EMAIL PROTECTED] with
> >                 "unsubscribe" as the Subject
> >    archives at http://www.lazarus.freepascal.org/mailarchives
> >
> 
> _________________________________________________________________
>      To unsubscribe: mail [EMAIL PROTECTED] with
>                 "unsubscribe" as the Subject
>    archives at http://www.lazarus.freepascal.org/mailarchives

_________________________________________________________________
     To unsubscribe: mail [EMAIL PROTECTED] with
                "unsubscribe" as the Subject
   archives at http://www.lazarus.freepascal.org/mailarchives

Reply via email to