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