Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cómo capturar el objeto al que he dado clic (https://www.clubdelphi.com/foros/showthread.php?t=96437)

Badillo 09-10-2023 15:30:09

Cómo capturar el objeto al que he dado clic
 
Buenos días, tengo una problemática que no encuentro como solucionarla. Me explico

En un Tform tengo un panel a la izquierda con varios botones y a la derecha otro panel con un PageControl, básicamente lo que necesito es: en evento OnExit del PageControl poder conocer a que botón le he dado click justo en momento que se disparó este evento, para después de hacer las operaciones del OnExit poder ejecutar el evento OnClick del botón correcto.

Gracias.

Casimiro Notevi 09-10-2023 17:25:01

Cita:

Empezado por Badillo (Mensaje 552883)
... en evento OnExit del PageControl poder conocer a que botón le he dado click justo en momento que se disparó este evento, para después de hacer las operaciones del OnExit poder ejecutar el evento OnClick del botón correcto.

Yo no lo he entendido.

Badillo 09-10-2023 17:55:56

Trataré de aclarar
 
Saludos,
En el PageControl tengo necesidad de al salir preguntar si se quieren guardar los cambios realizados en la pág activa, de eso se encarga el método save que tengo implementado.

Ahora en el evento OnExit del PageControl pregunto si es la pág que necesito llamar al método guardar y de ser así llamo al método y por tanto se queda en esa página y no sale. Le puse exit después de esa llamada y tampoco sale para el botón al que di click.

Casimiro Notevi 09-10-2023 18:33:09

¿Puedes poner un ejemplo sencillo para que podamos probar?

pgranados 09-10-2023 23:26:04

Yo utilizaría una bandera para identificarlo, pon una variable tipo string y al crear la forma y cambiar de pagina graba el valor

No se, por ejemplo, en el onCreate del form pon:

Código Delphi [-]
Origen:= PageControl1.ActivePage

y en el onChange de tu PageControl pon

Código Delphi [-]
if Origen <> PageControl1.ActivePage
begin
     showMessge('La pagina cambio');
     // cosas que hacer si la pag cambio
end
else
begin
     showMessge('La pagina es igual');
     // cosas que hacer si la pagina no cambio
end;
Origen:= PageControl1.ActivePage;

Badillo 09-10-2023 23:57:59

Ejemplo
 
1 Archivos Adjunto(s)
Saludos,

Adjunto un ejemplo.

Pasos a seguir:
1. click en el botón 7
2. poner texto en cualquiera de los dos edit que están en TabSheet7
3. hacer click en el botón 6 (se disparará el evento OnExit del PageControl)
4. Realizará lo que está en el evento OnExit del PageControl
5. No continua con la acción del botón 6 que fué donde dió click, sino que se queda en el PageControl en la misma página


Código Delphi [-]
procedure TForm1.PageControl1Exit(Sender: TObject);
begin
  if PageControl1.ActivePage = TabSheet7 then
    if (Edit1.Text <> '') or (Edit2.Text <> '') then
      if MessageDlg('Desea guardar la información',mtConfirmation, mbOKCancel, 0) = mrOk then
        SaveInfo;

  // Ejecutar el evento del botón donde se haya dado click
  // Cómo identifico en que botón se dió click
  // Cómo hago para que en vez que quedarse en el TabSheet7 se ejecute el evento onclick del botón donde se haya dado click
end;

Neftali [Germán.Estévez] 10-10-2023 10:01:43

Yo creo que estás colocando el código en un evento equivocado, independientemente de que no funcione como esperas.
Creo que tiene más sentido (al menos para mi) moverlo a OnChange/OnChanging.

Badillo 19-10-2023 16:38:05

Saludos.
 
No he logrado resultados positivos ni en OnExit, OnChanging o OnChange.

He puesto banderas, pero nada.

Gracias por las ideas y sugerencias, seguiré buscando y si encuentro como hacerlo lo publicaré.


La franja horaria es GMT +2. Ahora son las 19:54:55.

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