Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Foco en Page control (https://www.clubdelphi.com/foros/showthread.php?t=70598)

valeria 29-10-2010 19:53:17

Foco en Page control
 
Buenos Dias, tengo un problema con el page control, tengo un page control con tres tabsheet el problema es que esos tabsheet muestran informacion en un dbgrid bien el usuario abre el form y necesito tener el foco en esos dbgrid bien se abre el form.
Bien yo hasta que agregaba dos tabshett no tenia ningun problema pero apartir que agregue el tercer tabshett me tira el siguiente error: Cannot focus a disabled or invisible window ; este error lo tira ni bien abro el form; el codigo es el siguiente adonde "creo" puede estar la falla...

Código Delphi [-]
procedure TFrm.PageControl1Changing(Sender: TObject;
  var AllowChange: Boolean);
begin
  case TPageControl(Sender).TabIndex of
  0: self.DBGrid.SetFocus;
  1: self.DBGrid1.SetFocus;
  2: self.DBGrid2.SetFocus;
end;
end;

Código Delphi [-]
procedure TFrm.FormActivate(Sender: TObject);
var id: integer;
begin
 if PageControl1.ActivePage = self.TabSheet1 then
 begin
   self.DbGrid.SetFocus;
 end;
 if PageControl1.ActivePage = self.TabSheet2 then
 begin
  self.DBGrid1.SetFocus;
 end;
 if self.PageControl1.ActivePage = self.TabSheet3 then
 begin
  self.DBGrid2.SetFocus;
 end;
end;

Caral 29-10-2010 20:12:33

Hola
Lo que me extraña es que en el form Active indiques si los tabsheet estan activos cuando lo logico es que sea el primero solamente.
Cuando se cambia de tab es cuando se activa o no.
Saludos

valeria 29-10-2010 20:33:39

Usaba el form Active por que voy resaltando la fila en la que se encuentra el Mouse , si no ponia algo asi como que cuando cambia de TabShett quedaba congelado...igualmente aunque saque el formActive me sigue tirando este error...me parece que no estoy manejando bien el tema de page control y tab sheet,estoy haciendo mal el foco....

Caral 29-10-2010 20:47:03

Hola
Hice un ejemplo con los mismos datos que tu, solo que con edits en vez de dbgrids y quitando el self, no me da ningun error.
Da la impresion de que el problema podria estar en la carga de los dbgrids.
Código Delphi [-]
procedure TForm1.FormActivate(Sender: TObject);
begin
   if PageControl1.ActivePage = self.TabSheet1 then
 begin
   edit1.SetFocus;
 end;
 if PageControl1.ActivePage = self.TabSheet2 then
 begin
  edit2.SetFocus;
 end;
 if self.PageControl1.ActivePage = self.TabSheet3 then
 begin
  edit3.SetFocus;
 end;
end;

procedure TForm1.PageControl1Changing(Sender: TObject;
  var AllowChange: Boolean);
begin
  case TPageControl(Sender).TabIndex of
  0: edit1.SetFocus;
  1: edit2.SetFocus;
  2: edit3.SetFocus;
end;
end;
Saludos

ecfisa 29-10-2010 20:59:49

Hola Valeria, amigo Caral.

Estaba revisando el post, ya que una vez tratamos un tema relacionado aqui , y coincido totalmente con lo dicho por Caral. No logro que me salga ningún error... Aún dejando el innecesario 'Self'.

Saludos. :)

Aleca 01-11-2010 12:14:05

Cita:

Empezado por valeria (Mensaje 380898)
Buenos Dias, tengo un problema con el page control, tengo un page control con tres tabsheet el problema es que esos tabsheet muestran informacion en un dbgrid bien el usuario abre el form y necesito tener el foco en esos dbgrid bien se abre el form.
Bien yo hasta que agregaba dos tabshett no tenia ningun problema pero apartir que agregue el tercer tabshett me tira el siguiente error: Cannot focus a disabled or invisible window ; este error lo tira ni bien abro el form; el codigo es el siguiente adonde "creo" puede estar la falla...

ese error me lo tiró cuando puse un dbgrid en visible= false.
PD: el pagecontrol al iniciarse muestra el tabsheet q dejaste activo el diseño del formulario (si en el diseño estuviste trabajando en el tercero, al correr el programa se posiciona en el tercero y no en el primero).

ositoguatoncito 01-06-2015 16:29:49

una pequeña y humilde acotacion
 
yo probe con el evento onchange en vez de onchangin, y asi si me funciono.


La franja horaria es GMT +2. Ahora son las 17:48:31.

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