PDA

Ver la Versión Completa : Frame y setfocus


mjjj
09-01-2008, 19:02:38
hola:

Mi pregunta es la siguiente:

Tengo un TEdit dentro de un frame, necesito que al crear el frame me posicione el cursor en el Tedit... en esta caso es el 1.

Tonces tengo un codigo asi


procedure TForm1.sFrameBar1Items2CreateFrame(Sender: TObject;
var Frame: TCustomFrame);
begin
Frame32 := Tframe32.Create(nil);
frame:=frame32;

form1.sframebar1.items[2].caption:='Usuario';
frame32.sedit1.setfocus;
end;


al escribir el codigo no me tira ningun error este aparece cuando creo el frame, me sale:

'Control 'sedit1' has no parent window

Que podra ser... como hago que cuando cree el frame el cursor se posicione sobre el sedit1??

muchas gracias

luisgutierrezb
09-01-2008, 19:13:59
usa el evento onshow para pasar el foco, tambien segun la version del delphi, usar la propiedad activecontrol

mjjj
09-01-2008, 19:41:37
hola luisgutierrezb:

utilizo delphi 2006.... el TFrame no tiene evento ONSHOW ni tampoco la propiedad activecontrol.

ese es el problema....

ayuda porfa....

dec
09-01-2008, 19:49:57
Hola,

Probablemente el error tiene que ver conque todavía no se creó el "Frame" mismo, puesto el evento que estás utilizando. Es decir, que, ese evento no parece ser el indicado para hacer lo que quieres. Por otro lado, yo daría el foco al propio "Frame", y, pondría la propiedad "TabPosition" del "TEdit" en "cero", de modo que este fuera el control que tomara el foco al dárselo al "Frame", si no me equivoco.

No sé si me explico. Tú creas el "Frame", y, una vez creado, le das el foco con "SetFocus". Si la propiedad "TabPosition" del "TEdit" en cuestión es cero, ese será el control que tome el foco al dárselo al "Frame". Por otro lado, revisa a ver si el "Frame" tiene una propiedad "DefaultControl" (que no recuerdo) como la tienen los formularios. En este caso, también puedes usar esta propiedad, asignando como "DefaultControl" del "Frame" el "TEdit" que quieras.