Archivo de la categoría: Windows API

Barra de Progreso Infinitas.

Ventana con barra de progreso infinita

Estaba dando una de mis recurrentes revisiones al ClubDelphi. Cuando me encontré con un hilo en dónde un colega pedía un sugerencia para medir mediante un TProgressBar el proceso de conexión al servidor de Base de datos. A cómo ya sabrán algunos, medir cuánto tardará en establecerse una conexión, es cómo tratar de determinar el movimiento de las partículas cuánticas.

Por eso, le he sugerido cambiar de paradigma y utilizar una barra de progreso infinita (tienen varios nombres, pero así las conozco yo). Nunca había intentado hacer una, pero dando una pequeña hojeada a MSDN, veo que no es tan difícil de conseguirla con Delphi. A continuación el código necesario:

procedure TForm1.FormCreate(Sender: TObject);
var
    CS: Cardinal;
begin
    CS := GetWindowLong(Self.ProgressBar1.Handle, GWL_STYLE);
    CS := CS or PBS_MARQUEE;
    SetWindowLong(Self.ProgressBar1.Handle, GWL_STYLE, CS);
    SendMessage(Self.ProgressBar1.Handle, PBM_SETMARQUEE, Integer(True), 0);
end;

Para utilizar el código anterior, debes agregar la unidad CommCtrl a la sección de Uses de tu unidad. Es esa unidad está definida las constantes PBM_SETMARQUEE y PBS_MARQUEE.
Referencias:

http://msdn.microsoft.com/en-us/library/windows/desktop/bb760816(v=vs.85).aspx

http://msdn.microsoft.com/en-us/library/windows/desktop/bb760820(v=vs.85).aspx#PBS_MARQUEE

http://msdn.microsoft.com/en-us/library/windows/desktop/bb760842(v=vs.85).aspx

PD: El código requiere de la versión 6 de los Common Controls de Windows. Por lo que sólo se ejecutará en Windows XP y posteriores. Además, requiere que tu aplicación tenga activo los temas visuales.

[ACTUALIZACIÓN]: A cómo oportunamente apunta Román, Delphi 7 no trae definidas las constantes PBM_SETMARQUEE y PBS_MARQUEE. Así que hay que declararlas.

const
  PBS_MARQUEE = $08;
  PBM_SETMARQUEE = WM_USER+10;
Anuncios
Etiquetado ,

Sayonara Delphi

Esta es una despedida oficial por mi parte al desarrollo Delphi. He meditado durante el fin de semana el estado actual de la industria y he llegado a la conclusión que seguir desarrollando (por el momento) aplicaciones Win32 no tiene sentido. Comparto la opinión del director de Valve que Windows 8 es un desastre para una industria ya de por si golpeada.

Pero no es precisamente Windows 8 el causante de mi decisión. Es el nuevo paradigma, la nube, imposible de ignorar, el que me ha forzado a tomar la decisión. Confieso que desde hace meses he estado haciendo EXCLUSIVAMENTE desarrollos para la Web y después de todo este tiempo me he convencido de no querer volver a desarrollar usando Delphi.

Delphi es un gran lenguage y herramienta. Disfruté moldear y hackear cosas con él. Creo que Delphi hace divertido el desarrollo para Win32. Pero de la diversión no se come y pensando en mi futuro he decidido irme 100% a la nube.

Por supuesto que volar hacia la nube no implica necesariamente dejar el desarrollo nativo. Pero por el momento, mis proyectos actuales corren perfectamente en un explorador. Por mi parte, desarrollar versiones nativas de mis aplicaciones es un esfuerzo innecesario.

Por eso, en el futuro cercano no pienso desarrollar para tabletas (iOS, Android, WinRT). Creo que, dependiendo del caso, desarrollar para una tableta puede ser contraproducente, inclusive podría ser como ponerte la soga en el cuello dependiendo del caso. En este sentido, se me vienen las ganas de trolear el estado actual de la industria del Software, pero hacerlo ahora no tiene sentido.

A Delphi le debo mucho. Aprendí muchas cosas de él. Y siempre le haré el honor con que mis desarrollos estén influenciados por su genial estructura, la VCL.

Tampoco estoy diciendo que a partir de ahora no escribiré una línea más en Delphi. Simplemente, no haré nada serio con él. Talvez sólo travesear cosas. Puede ser que uno que otro día haga una pequeña unidad con alguna utilidad. Pero nada más que eso. Sinceramente, ya no me veo desarrollando un nuevo proyecto completo con Delphi.

Por último compañeros, los animo a embarcarse en la nube, en el desarrollo Web como parte de nuestra evolución. Cuando vienes de Delphi es un poco complicado y confuso todas esas mezclas de Python/PHP/Ruby – Javascript – CSS – HTML, etc. Con Delphi nos acostumbramos a utilizar un solo lenguaje para hacerlo todo. Creo que es ésa costumbre la que nos reciente la primera vez que nos encontramos con la Web. Pero al final del día, es una experiencia gratificante personal y profesionalmente. Te sorprenderá la facilidad con la que lograrás cosas muy difíciles de hacer si utilizaras exclusivamente Delphi.

Fue un placer haber intercambiado experiencias y código Delphi con todos ustedes compañeros. Con esta transición profesional también me paso a Linux oficialmente (Ubuntu y su maravilloso Unity). Sayonara Windows! :)

Saludos,
Christopher

Usando las funciones de la Barra de Tareas de Windows 7

Acabo de leer en el blog de la JEDI Windows API que un grupo de desarrollares están creando un set de componentes para implementar desde Delphi las nuevas funcionalidades brindadas por la nueva barra de tareas en Windows 7. Un inconveniente es que estos componentes están basados en la implementación JEDI de la api de Windows. Por esto puede ser que sea un poco complicado utilizarlos para desarrollares noveles. Aúnque la recomiendo porque es muchísimo más completa que la que trae Delphi.

Estaré atento a este proyecto y cuando llegue a entenderlo e implementarlo es casi seguro que les comentaré y brindaré un pequeño tutorial. Por el momento solo he leído la documentación MSDN al respecto, y creanme, no está muy complicado trabajar con la genial barra de herramientas de Windows 7.

Pueden revisar el código de los mencionados componentes desde este enlace.

Etiquetado