Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Foco seleccionado que se mantenga (https://www.clubdelphi.com/foros/showthread.php?t=67613)

sizne 26-04-2010 17:57:07

Foco seleccionado que se mantenga
 
Hola.
Por favor preciso su ayuda.
Tengo lo siguiente AdoQuery1 como MasterSource (Qinscripcion:IdE,CiE,NombreE,Ape....etc); AdoTable1 (Tmateria:IdM,IdE,NombreM,Sigla....etc..)
Tengo Dos Dbgrid: I relacionado con el DataSource1 del Qinscripcion y el otro M relacionado con el DataSource2 de Tmateria.
Estos DBGrids se encuentran en el Form Facademico.

Estoy usando este codigo para regresar de un Form (Finscripcion) a otro Form (Facademico).
Código Delphi [-]
procedure TFinscripcion.VolverClick(Sender: TObject);
begin
  Finscripcion.Close;
  Facademico.I.Fields[1].FocusControl;//El DBGrid se llama I
  Facademico.Show;
end;

Pero siempre que regreso en el DBGrid me muestra el primer registro y no así el que recien agregué, como deberia ser. Y como yo quiero que muestre, siempre el que ingresé, osea el último registro.

Entonces en el foro me ayudaron y coloqué:
Código Delphi [-]
procedure TFinscripcion.VolverClick(Sender: TObject);
begin
  Finscripcion.Close;
  Facademico.DSQinscripcion.DataSet.Last;
  Facademico.Show;
end;

También coloqué:
Código Delphi [-]
procedure TFinscripcion.VolverClick(Sender: TObject);
begin
  Finscripcion.Close;
  Facademico.I.DataSource.DataSet.Last;//DBGrid se llama I
  Facademico.Show;
end;

Por si fuera pasable lo anterior....
Selecciono un registro del DBGrid I, digamos el registro IdE= 5, para este registro ingreso datos osea me dirijo al Form Fmateria, los datos ingresados muestran en el DBGrid M.
En cuanto regreso al Facademico, en el DBGrid I, no muestra el que antes habia seleccionado, sino muestra el PRIMER registro seleccionado, cuando deberia de haberse quedado en el registro seleccionado osea todo el registro IdE=5 como lo estaba...
De igual manera intente con los códigos mencionado....

Donde esta el fallo, alguien podria ayudarme...por favor.... :(:(:(

cloayza 26-04-2010 19:35:59

Asi a simple vista lo que se me ocurre es que puedes tener alguna instruccion en el OnShow del Facademico que este enviando el puntero del registro al inicio, tambien puede ser que estes abriendo la consulta en este evento...

Podrias chequear si existe algun codigo en el OnShow del formulario Facademico...

Saludos.

sizne 26-04-2010 22:37:03

Cita:

Empezado por cloayza (Mensaje 361940)
Asi a simple vista lo que se me ocurre es que puedes tener alguna instruccion en el OnShow del Facademico que este enviando el puntero del registro al inicio, tambien puede ser que estes abriendo la consulta en este evento...

Podrias chequear si existe algun codigo en el OnShow del formulario Facademico...

Saludos.

Hola cloayza, gracias por responder. Te comento que no estoy usando OnShow :o no sé cómo podría solucionar....

Gracias de todas maneras.

Saludos

cloayza 26-04-2010 23:23:38

Al parecer al salir del formulario inscripcion estas ejecutando alguna accion que cambia el cursor de registro seleccionado en I.

Verifica que haces al cerrar o salir de Finscripcion.

Otra alternativa seria que en el evento OnShow de Finscripcion, guardes el puntero al registro actual con la funcion getBookmark...y en el OnClose del form FIncripcion restaure la posicion del registro.

Por ejemplo


Código Delphi [-]
public
    RegistroActual:TBookmark;
...
  
procedure TFinscripcion.OnShow(Sender: TObject);
begin
      RegistroActual:=Facademico.I.DataSource.DataSet.GetBookmark;
end;

procedure TFinscripcion.OnClose(Sender: TObject);
begin
      Facademico.I.DataSource.DataSet.GotoBookmark(RegistroActual);
end;

Saludos

sizne 29-04-2010 21:52:07

Hola cloayza! Gracias por tu cooperación.
Sabes me aparecio el siguiente mensaje en cuanto puse el código que me sugeriste...
Cita:

[Warning]Uinscripcion.pas(88): Unsafe type 'TBookmark'
[Warning]Uinscripcion.pas(280): Unsafe type 'RegistroActual:Pointer'
[Warning]Uinscripcion.pas(286): Unsafe type 'RegistroActual:Pointer'
Si coloqué donde me dijiste...no sé por que me aparecio ese msj.
Por fa ayuda.
Saludos

cloayza 30-04-2010 17:25:01

En cual de las dos procedimientos te arrojo el error en el OnShow o en OnClose...

Por si acaso agrega la siguiente validacion a OnClose...

Código Delphi [-]
procedure TFinscripcion.OnClose(Sender: TObject);
begin
      If Assigned(RegistroActual) Then
         Facademico.I.DataSource.DataSet.GotoBookmark(RegistroActual);
end;
end;

Saludos cordiales

sizne 30-04-2010 20:50:05

Hola cloayza, te comento que el error ahora me lo enfoca donde declaro en la seccion de public...

Gracias!


La franja horaria es GMT +2. Ahora son las 08:25:42.

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