I know that the other order works for my simple procedure. I asked because i inspected a bug, that is described in the german forum (http://www.lazarusforum.de/viewtopic.php?f=18&t=4599 <http://www.lazarusforum.de/viewtopic.php?f=18&t=4599>):

following code was tried in Stringgrid1.OnSelectEditor:

procedure TForm1.StringGrid1SelectEditor(Sender: TObject; aCol, aRow: Integer;
 var Editor: TWinControl);
begin
 if (aCol=2) and (aRow>0) then
 begin
   Memo1.Visible:=True;
   Editor:=Memo1;
   Memo1.BoundsRect:=StringGrid1.CellRect(2,aRow);
   Editor.SetFocus;       //!!! here is the focus that doesn't work
 end;
end;

//looking up the selecteditor-proceure:

procedure TCustomGrid.SelectEditor;
var
 aEditor: TWinControl;
begin
 aEditor := GetDefaultEditor(Col);
 if EditingAllowed(FCol) and Assigned(OnSelectEditor) then begin
   // in some situations there are only non-selectable cells
   // if goAlwaysShowEditor is on set initially editor to nil,
   // user can modify this value in OnSelectEditor if needed
   if not SelectCell(FCol,FRow) then
     aEditor:=nil;
   OnSelectEditor(Self, fCol, FRow, aEditor);    //!! here the above procedure 
with the setfocus is called
 end;
 if aEditor<>Editor then
    Editor := aEditor;      //!! here SetEditor is called that contains 
changing Parent with impact on focus
end;





















Mattias Gaertner schrieb:

u-boot <[email protected]> hat am 24. Januar 2011 um 17:49 geschrieben:

> Same question here as in irc nobody answered it a few hours ago.
>
>
> I tried the following lines. It does not work with setfocus before
> parent changing.
> My question is, if it should work in this order or if this is correct
> behaviour.
>
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
>   edit1.SetFocus;
>   if (Edit1.Parent=Panel2) Then Edit1.Parent:=Panel1 else
> Edit1.Parent:=Panel2;
> end;

Changing the Parent switches the focus to another control.

So, you should set the focus after changing the parent.

Mattias










------------------------------------------------------------------------

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to