Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Focus (https://www.clubdelphi.com/foros/showthread.php?t=963)

Huer 30-05-2003 00:02:28

Focus
 
Hola amigos de delphi, gracias a sus consejos he superado etapas.

mi dificultad es la siguiente:

tengo un servidor SQL 2000 y del terminal la conexión la realizo a través de ODBC. y funciona bien, pero la dificultad esta cuando voy a grabar me indica el siguiente error:

no puede enfocar ventanas lisiadas o invisibles.

cannot focus a disabled or invisible windows.


no puedo solucionar este error, o sera que las instrucciones han cambiado

Código Delphi [-]
begin
try
    if dm.md_publica.GotoKey then
       dm.md_publica.IndexFieldNames:='ppn';
       dm.md_publica.SetKey;
except
on e:econverterror do
       messagedlg(';!Propuesta ya ingresada!;',mtconfirmation,[mbok],0);
end;
    if (length(pp.text)=0) then;
    messagedlg(';!Campos en Blancos!;',mtconfirmation,[mbok],0);
begin
        dm.md_publica.Open;
        dm.md_publica.Insert;
        dm.md_publicaPPN.AsInteger:=strtoint(pp.Text);
        dm.md_publicaDETALLE.AsString:=dt.Text;
        dm.md_publicaFECHA.AsDateTime:=fetop2.Date;
        dm.md_publicaFECHAV.AsDateTime:=fetop3.Date;
        dm.md_publicaDOC.AsString:=doc.Text;
        dm.md_publicaCONCEPTO.AsString:=con.Text;
        dm.md_publicaAVISO.AsInteger:=strtoint(avi.Text);
        dm.md_publica.Post;
        dm.md_publica.Refresh;
end

delphi.com.ar 30-05-2003 00:13:45

Ese problema sucede cuando haces un SetFocus a un componente que esta deshabilitado o invisible, o que esta sobre una ventana / contenedor en ese estado.
Es un error muy común hacer un SetFocus en el create de un form, y como el form aún no se encuentra visible produce este error, una solución sencilla para esto es hacer lo siguiente:

Código:

procedure TForm1.FormCreate(Sender: TObject);
begin
  ActiveControl := Edit1;
end;

o hacerlo en el Load, o preguntar por CanFocus....

A simple vista el código que pasaste no produciría directamente ese error, aunque puede ser disparado desde algún evento en particular, como los eventos del dm.md_publica

PD:
Me gusta mas pensar que Disabled es desactivado / deshabilitado y no lisiado :D

Saludos!

Alejandrina 04-05-2007 17:14:12

Mismo problema
 
Hola,
Tengo el mismo problema donde tengo que.
Código:

procedure TFrmIngresoSolicitud.BTNuevaSolicitudClick(Sender: TObject);
begin
  DBLMolde.KeyValue := Null;
  DBLMaquinas.KeyValue := Null;
  DBEDescripcionMaquina.text:='';
  DBLArea.KeyValue := Null;
  DBeArea.text := '';
  Descripcion.text:='';
  DBEDescripcionMolde.text:='';
  DBLMaquinas.KeyValue := Null;
  Descripcion.text:='';
  DBLCIndicador.KeyValue:=Null;
  DBEdCodigoIndicador.Text:='';
  ingresars := true;
  DmSip.TblSolicitud.Insert;
  edsolicitud.SetFocus;
  DBLCIndicador.visible:=true;
  DBEdCodMolde.Visible:=false;
  BTNuevaSolicitud.Enabled:=false;
end;

luego lo deshabilito para que el usuario no repita la acción mientras esta rellenando los campos...intento solucionarlo de la forma anterior pero no me funciona...que mas puedo hacer?

Gracias...

juanlaplata 04-05-2007 17:31:36

Código:

edsolicitud.SetFocus;
verifica esta componente. Como dice delphi.com.ar
"hacer un SetFocus a un componente que esta deshabilitado o invisible"
da ese tipo de error.

karlaoax 04-05-2007 20:07:50

Estoy segura que debe haber un campo oculto por eso marca el error indicado........:)

Alejandrina 04-05-2007 23:43:09

nooooooooooooooo
 
Hola,
Gracias por sus sugerencias pero recibo mas ya que aun me sale el mismo error....:confused:

delphi.com.ar 05-05-2007 18:16:20

Cita:

Empezado por delphi.com.ar
...o preguntar por CanFocus....

Algo simplemente como eso:
Código Delphi [-]
if AControl.CanFocus then
  AControl.SetFocus;

Saludos!


La franja horaria es GMT +2. Ahora son las 01:28:17.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi