Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #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
Poder: 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
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 03:00: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
Copyright 1996-2007 Club Delphi