Ver Mensaje Individual
  #4  
Antiguo 06-12-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Reputación: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Lo del botón es sencillo: usa un SpeedButton (paleta Additional) con su propiedad GroupIndx = 1 y su propiedad AllowAllUp = true;

Lo del típico icono con la agujita pinchada será muy típico pero no sé a qué te refieres.

En cuanto a que los de los mensajes de la VCL te sobrepasa en realidad no es tan difícil. Es cuestión de armarse de paciencia y trazar la aplicación a través de la VCL. Para ello, en Project|Options|Compiler seleccionas la opción "Use Debug DCUs".

Lo que yo hice fue poner un punto de ruptura en la línea

FormStyle := fsStayOnTop

y a partir de ahí comencé a trazar el programa con F7. De lo primero que te das cuenta es de que el cambio de estilo provoca una reconstrucción de la ventana, es decir, primero debe destruirse y volverse a crear, así que en un momento dado durante el trazado desaparece la ventana.

Entonces busco si pasa por algún método que pueda redefinir para ahí poner Visible := false de manera que no se muestre en la nueva posición al momento de reconstruirse y la muestre yo mismo hasta que la cambie de lugar.

Desafortunadamente no hay tal método, mejor dicho sí lo hay pero ocurre antes de que cambie la propiedad FormStyle de manera que al poner Visible := true se genera el consabido error de que no se puede esconder una ventana MDIChild.

Entonces sigo trazando hasta ver aparecer de nuevo a la ventana y así me doy cuenta que ocurre justo después de la línea (en el código de la VCL):

Perform(CM_SHOWINGCHANGED, 0, 0);

Entonces es cuando hago el manejador de CM_SHOWINGCHANGED y veo que el inherited no hace gran cosa sino llamar a la función ShowWindow (o SetWindowPos, no recuerdo bien) de la API de Windows así que nada más había que deshabilitarla y ahora sí llamarla nosotros mismos cuando estuvieramos listos.

Te comento esto para que te des una idea de por donde buscar este tipo de cosas en un futuro.

// Saludos
Responder Con Cita