Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   No logro Levantar un SpeedButton (https://www.clubdelphi.com/foros/showthread.php?t=57922)

darkerbyte 02-07-2008 02:10:33

No logro Levantar un SpeedButton
 
Se van a reir cuando les cuente mi problema, pero no le he encontrado solución y ya me desesperó. Así que les estaré muy agradecido si me ayudan.
El problema es este.
En un Panel tengo 4 Speedbuttons(SB). Estos tienen las propiedades

AllowAllUp:=true;
GropuIndex:=1;

Los dos primeros SB realizan sus respectivas funciones (algunas consultas). El problema lo tengo con el SB3 y SB4. Cuando el usuario presione el SB3 este traerá un form con el procedimiento

Código Delphi [-]
procedure TFormMain.SB3Click(Sender: TObject);
begin
if FormFecha.ShowModal= mrOk then begin //Procedimientos para efectuar una cosulta utilizando las fechas que //el usuario proporciona (...) end else SB3.down:=false;
end;

Ahora, supongamos que el usuario hace click sobre el SB1, este realiza su función y queda en estado presionado. Cuando el usuario hace clicl sobre el sb3 y aparece la ventana, no tengo ningun problema si el usuario hace click en aceptar. El SB3 se pone en down y el SB1 se levanta.
Pero cuando el usuario decide cancelar, por ende se cierra la ventana modal pero el boton SB3 se queda presionado junto con el SB1 y lo que quiero es que si el usuario decide cancelar la accion, el SB3 se levante y quede presionado solo el SB1.

Esto mismo me pasa con el SB4 que funciona similar.

:( Como ven? me podrían dar algo de luz?

Espero haber sido suficientemente claro
Desde ya, muchas gracias por su ayuda.

kuan-yiu 02-07-2008 08:22:32

Hay algo que no me cuadra.
El funcionamiento de estos botones hace que cuando pulses uno el otro "se levante". Tu función no debería interferir nunca en ese funcionamiento, como mucho "maquillarlo", porque de lo contrario no te recomiendo usar la propiedad "GropuIndex" sino emular tú mismo ese comportamiento para que se ajuste a tus necesidades.
Te recomiendo que repases tu código, seguro que tocas la propiedad "down" de los botones alguna otra vez y puede que ahí esté el problema.

Khronos 02-07-2008 10:16:04

Hola darkerbyte con el poco codigo que das no te puedo decir al 100% cual es el problema, pero si dices que al cerrar el formulario modal el SB3 y el SB1 se quedan presionados, podrias hacer algo asi:

Código Delphi [-]
procedure TFormularioModal.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
   MainForm.SB3.down:=false;
end;

Espero que te sirva de algo, salu2

darkerbyte 02-07-2008 15:08:51

Gracias por su ayuda
 
Probé con las soluciones que me dieron, y les agradezco mucho, aunque no funcionaron.
Estuve analizando más el código. Y esto es lo que encontré.
Cuando el usuario hace click sobre SB3 y aparece la ventana modal y el usuario cancela la ventana, cambio la propiedad down pero todo esto está dentro del el procedimiento OnClick de SB3 y es cuando termina este procedimiento que se activa la propiedad down del botón por lo que no sirve de nada cambiarla dentro de este mismo proceso. Lo que en teoría hay que hacer es que una funcion fuera de esta cambie el estado. Lo que hice fue lanzar un hilo que revise el estado de los botones y lo ponga correctamente.
Se que no es la solución mas óptima, pero caramba, esta funcionado y ya me desesperaron esos 4 SB

Si alguien tiene otra idea de por que pasa este fenómeno y/o tiene una solución mas apropiada les agradeceré un montón que me la pasen.

Thank's a lot :cool:


La franja horaria es GMT +2. Ahora son las 11:21:20.

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