Boletín Pascal #29
Los ejemplos completos de código fuente de este número están disponibles para descargar.
![]() |
![]() |
Boletín Pascal #29 - 04-DIC-2001 INDICE 1. UNAS PALABRAS DEL EDITOR 2. AGREGANDO TOOLTIPS A UN TLISTBOX 3. FOROS 4. NOTICIAS 5. TRUCOS Y CONSEJOS - Usando translucencias en formularios con Delphi 5 - ¿Cómo evitar adentrarse en los fuentes de la VCL al presionar F7? - Calculando la diferencia en años entre dos fechas - Usando un formulario de login en nuestra aplicación 6. DELPHI EN LA RED - Artículos, trucos y consejos - Componentes, librerías y aplicaciones . Freeware . Shareware/Comercial - Tutoriales - Otros enlaces ________________________________________________________________________ 1. UNAS PALABRAS DEL EDITOR En esta edición me complace darle la bienvenida al boletín a tres nuevos autores, Robert Baker, Frederico Pissarra y Alejandro Rufino, quienes han contribuido sus respectivos artículos para esta publicación. A propósito, si has resuelto un problema particular y deseas compartir tu código en el boletín, te invito a que me escribas. Este boletín sólo puede crecer en contenidos gracias a tu colaboración. El artículo de Alejandro Rufino, "Aplicaciones Distribuidas", se adjunta en el archivo MIDAS.DOC. Este boletín llegó a los 5000 suscriptores, pero queremos duplicar ese número en los próximas meses. ¿Nos darías una mano? Si piensas que este boletín es útil, envíales este enlace a tus amigos para que lo conozcan: http://www.latiumsoftware.com/es/pascal/index.php Otra forma en que puedes ayudarnos es votándonos en alguno de estos rankings para darle más visibilidad a nuestro sitio web y aumentar así el número de suscripciones a este boletín: http://www.sandbrooksoftware.com/cgi-bin/TopSite2/rankem.cgi?id=latium http://news.optimax.com/topdelphi/links.exe/click?id=70C517ECAE6E http://www.programmingpages.com/?r=latiumsoftwarecomenpascal http://www.top219.org/cgi-bin/vote.cgi?delphi&83 http://top100borland.com/in.php?who=20 http://top200.jazarsoft.com/delphi/rank.php3?id=latium http://213.65.224.200/cgi-bin/toplist.cgi/hits?Id=80 http://www.programacion.net/votar-enlace.php?id=474 http://www.lawebdelprogramador.com/buscar/enlace.php?id=615 Por favor vota. Son sólo unos segundos para ti que REALMENTE pueden hacer la diferencia. Sin tu ayuda, el boletín no podrá continuar. Saludos, Ernesto De Spirito eds2004 @ latiumsoftware.com ________________________________________________________________________ JfControls Lib. Multilenguaje. Multiapariencia. Skins. Privilegios. Más de 40 componentes integrados y personalizables. Múltiples problemas de programación resueltos. Administración centralizada de recursos. Para Delphi 3-7 y C++ Builder 3-6. http://www.jfactivesoft.com/spindex.htm ________________________________________________________________________ 2. AGREGANDO TOOLTIPS A UN TLISTBOX Por Robert Baker Cimba Solutions http://www.cimba.com ¿Alguna vez has deseado ver el contenido completo de una entrada de un ListBox si la misma es más ancha que el ListBox? Normalmente, si estás utilizando cuadros de lista en sus programas y los elementos del cuadro de lista (listbox) son más anchos que el ancho del listbox, dichos elementos será "acortados." Esto podría ocasionar que información importante se pierda visualmente. Este artículo provee un método para evitar que esto sea un problema importante, exhibiendo una ayuda tipo tooltip (ayuda de herramientas) sobre los elementos que son más anchos que el listbox. La clave de este problema es el objeto de THintWindow. Éste es el mismo objeto que se utiliza en la Barra de Tareas de Windows o en la Bandeja de Iconos para desplegar una pista (hint) si el ratón se mueve sobre un icono por un breve tiempo. El componente TTreeView de la VCL provee esta capacidad incorporada, mientras que el componente de TListBox no. Nosotros seremos responsables de crear, mostrar y destruir el THintWindow por nosotros mismos. Para comenzar, inicia un nuevo proyecto y agrega al formulario un TListBox (llamado lstProducts) y un componente TButton (llamado btnOK). Ubica y dimensiona los componentes como sea necesario. Necesitarás agregar manualmente la siguiente definición a la sección privada de la definición del formulario principal: ThisHintWindow : THintWindow; Éste es el objeto que utilizaremos para proveer las pistas de los elementos de la lista. En el gestor del evento de OnCreate() del formulario principal, necesi- taremos hacer tres cosas: (a) definir un método para asegurarnos que estamos mostrando la pista sobre el componente correcto, (b) crear la ventana de la pista, y (c) establecer el color de la ventana de la pista. a. Definir un método para asegurarnos que estamos mostrando la pista sobre el componente correcto. Hacemos esto estableciendo el gestor del evento OnShowHint() al procedimiento que deseamos utilizar: Application.OnShowHint := CheckHint; La definición del procedimiento CheckHint() es la siguiente: procedure TfrmMain.CheckHint(var HintStr: string; var CanShow: Boolean; var HintInfo: THintInfo); begin if (HintInfo.HintControl = lstProducts) then HintInfo.HintPos.y := HintInfo.HintPos.y - 24; end; Queremos cerciorarnos que estemos mostrando la pista sobre el componente correcto, el listbox lstProducts. b. Crear la ventana de la pista. Simplemente llama al constructor Create para la ventana de la pista, usando el formulario principal como el dueño: ThisHintWindow := THintWindow.Create(Self); c. Establecer el color de la ventana de la pista. Cuando se muestra la ventana de la pista, deseamos cerciorarnos de que esté mostrada en los colores definidos por el usuario usando las propiedades de la Apariencia de la Pantalla en el Panel de Control de Windows. Esto se hace usando la constante predefinida clInfoBk de Delphi: ThisHintWindow.Color := clInfoBk; Ahora desearemos mostrar la ventana de la pista cuando el ratón esté sobre sobre los elementos de listbox que son más anchos que éste. Los demás, los elementos más cortos, están bien como están. Nos encargaremos de mostrar la ventana de la pista en el gestor del evento OnMouseMove() del listbox, y abajo están los pasos básicos. Primero necesitamos obtener el elemento que está debajo del cursor del ratón, y las líneas siguientes logran eso: ThePoint.x := X; ThePoint.y := Y; Index := ListBox.ItemAtPos(ThePoint, true); Index nos devolverá el índice con base cero del elemento del listbox, o –1 si no está sobre un elemento. Si estamos sobre un elemento más ancho que el listbox, debemos definir las esquinas superior izquierda e inferior derecha del rectángulo que será usado como las dimensiones de la ventana de la pista. if ListBox.Canvas.TextWidth(ListBox.Items[Index]) > ListBox.Width then begin ScreenPointUpperLeft.x := ListBox.ItemRect(Index).left - 1; ScreenPointUpperLeft.y := ListBox.ItemRect(Index).top - 3; ScreenPointLowerRight.x := ScreenPointUpperLeft.x + ThisHintWindow.Canvas.TextWidth(ListBox.Items[Index]) + 7; ScreenPointLowerRight.y := ScreenPointUpperLeft.y + ThisHintWindow.Canvas.TextHeight(ListBox.Items[Index]) + 2; ScreenRect.TopLeft := ListBox.ClientToScreen(ScreenPointUpperLeft); ScreenRect.BottomRight := ListBox.ClientToScreen(ScreenPointLowerRight); Una vez que tengamos las dimensiones del rectángulo definidas, podemos finalmente mostrar la ventana de la pista: ThisHintWindow.ActivateHint(ScreenRect, ListBox.Items[Index]); end; Mientras el cursor del ratón continúe moviéndose sobre el elemento, la pista será mostrada. Si el cursor del ratón se mueve a otro elemento "largo", la ventana todavía será mostrada, pero su contenido será substituido por el texto del elemento bajo el cursor. Puedes preguntar: "¿cómo y cuando hace la ventana de la pista desaparece?" Hacer que la pista se vaya es la parte fácil. Hay dos condiciones en las cuales quisiéramos que la ventana de la pista no fuera mostrada: cuando movemos el cursor del ratón a un elemento que sea más corto que el ancho del listbox, y también cuando movemos el cursor del ratón totalmente fuera del listbox. Para hacer esto, sin embargo, necesitamos un cierto código adicional que nos diga si el cursor del ratón está sobre un componente específico en el formulario: function TfrmMain.IsMouseOverControl(Control: TWinControl): Boolean; var P: TPoint; begin // Obtener las coordenadas de la posición actual del ratón GetCursorPos(P); // El ratón está sobre el control si: (a) el control está definido Y // creado, (b) es un control "ventana", y (c) el manejador (handle) // del control es el mismo del control pasado como parámetro Result := Assigned(Control) and IsWindow(Control.Handle) and (WindowFromPoint(P) = Control.Handle); end; Podemos usar esta función para determinar si el cursor del ratón está actualmente sobre el listbox o no. Si no estamos sobre el listbox, queremos destruir la ventana de la pista. Hacemos esto llamando al procedimiento ReleaseHandle() de la ventana de la pista: if not IsMouseOverControl(lstProducts) and (ThisHintWindow<>nil) then ThisHintWindow.ReleaseHandle; Podemos hacer esto porque este procedimiento se utiliza específicamente para las ventanas de la pista que se activan que llamando al procedi- miento ActivateHint(), lo que hicimos arriba en el gestor de evento OnMouseMove(). Cerrando... Como puedes ver, mostrar una pista para cualquier elemento del listbox que sea demasiado ancho es bastante trivial usando la técnica de arriba. El tamaño predeterminado de un listbox cuando se suelta sobre un formu- lario es bastante pequeño. Si tienes apremios de espacio, este método se puede utilizar para evitar que la información en tus programas se pierda (visualmente hablando). ________________________________________________________________________ IBAdmin 3.22 - Complete Interbase SQL tool - Una poderosa herramienta de administración y desarrollo para manejar servidores y bases de datos Interbase. IBAdmin provee muchas capacidades para ayudarle en el diseño y gestión de su base de datos. Diseñe visualmente la estructura de su BD con el "Database Designer", administre usuarios y permisos con el "Grant Manager", o emplee el "SQL Debugger" para depurar procedimientos almacenados y triggers. Disfrute de una edición confortable de código con Code-Insight y Code Completion. >> http://www.sqlly.com/ibadmin2.htm ________________________________________________________________________ 3. FOROS Delphi ====== El foro para programadores en Delphi de nivel intermedio continúa creciendo y cerró el mes pasado con casi 32 mensajes diarios: http://espanol.groups.yahoo.com/group/delphi-intermedio Para suscribirte, también puedes hacerlo desde la web o por email: http://espanol.groups.yahoo.com/group/delphi-intermedio/join delphi-intermedio-subscribe@gruposyahoo.com Puedes configurar tu suscripción a los foros para convertir o no los mensajes a formato HTML, o para no recibir los mensajes en tu email (podrás ver los mensajes en la web). Componentes =========== Este es un foro para la búsqueda/recomendación de componentes de software (componentes VCL y CLX, objetos ActiveX, librerías DLL, objetos compartidos, etc.), así como utilidades, tutoriales, información, etc.: http://espanol.groups.yahoo.com/group/componentes De nuevo, puedes suscribirte desde la web o -más fácil- por email: http://espanol.groups.yahoo.com/group/componentes/join componentes-subscribe@yahoogroups.com ________________________________________________________________________ 4. NOTICIAS Gacetilla: Terminus Network Manager ----------------------------------- Por César Tapia Hace un tiempo atrás se propuso en el foro delphi-intermedio desarrollar un programa entre todos/as, para aprender y colaborar. Se hizo una votación y salió elegido este proyecto: http://terminus.sourceforge.net Es un programa escrito por mí, pero que aún está en una fase alpha (como se deduce viendo la página), por lo que hay mucho trabajo que hacer. ¿Qué es Terminus? Pues mi idea es que sea un gestor y administrador de redes. Primeramente tendría la capacidad de autodetectar la configu- ración de la red (qué ordenadores hay, qué sistemas operativos usan, etc.). También debería ser capaz de acceder a los servicios que ofrezca cada máquina: Telnet, SSH, FTP... y conseguir información sobre ella: escaneo de puertos... Para más inri, debería ser multiplataforma, esto es, que sea compilable en Delphi (de momento Delphi 5) y Kylix. Obviamente habrá que reescribir completamente trozos de código (con {$ifdef linux}), pero me parece una forma bonita de ver las diferencias entre sistemas operativos. La licencia del programa es la GPL. El desarrollo de este programa, se hará desde una lista propia. Puedes suscribirte en esta dirección: http://lists.sourceforge.net/lists/listinfo/terminus-desarrollo Si no dispones de acceso HTTP, puedes suscribirte enviando un mensaje a <terminus-desarrollo-request@lists.sourceforge.net> escribiendo en la línea de asunto: subscribe [contraseña] [digest/nodigest] [address=dir@email] Por ejemplo, el asunto "subscribe topsecret" (sin las comillas) nos suscribirá con la contraseña "topsecret" en modo "nodigest" (predeter- minado) y usando la dirección de email que usemos como remitente. Por más información, escribir "help" (sin las comillas) en la línea de asunto. El código del programa lo tienes aquí (135 Kb): http://prdownloads.sourceforge.net/terminus/terminus-0.0.5.src.zip Y el programa compilado (de momento sólo para Windows, 450 Kb): http://prdownloads.sourceforge.net/terminus/terminus-0.0.5.zip Te invito a que te suscribas y participes en el desarrollo del programa. Un saludo, y muchas gracias. Cesar Tapia tapia@eitig.com tapia@users.sourceforge.net ------------------------------- http://www.eitig.com http://terminus.sourceforge.net Actualizaciones de FreeCLX disponibles para descarga ---------------------------------------------------- Mark Duncan, de I&D de Kylix, ha actualizado FreeCLX. Los usuarios de Kylix 1 pueden obtener muchas de las correcciones de errores de CLX incluidas con Kylix 2 en esta descarga beta pública. http://community.borland.com/article/0,1410,28033,00.html Nuevo: JfControls Grid ---------------------- JfActiveSoft ha lanzado JfControls Grid, agregando cuatro nuevos compo- nentes (TJfDbGrid, TJfDbLookupComboBox, TJfGrid y TJfTree) a sus conocida Librería JfControls. ADVERTENCIA: SI ERES IMPRESIONABLE POR SKINS, COLORES, DEGRADADOS, IMAGENES Y FORMAS, NO SIGAS ESTE ENLACE: http://www.jfactivesoft.com/spchargrid.htm ¡NO NOS HACEMOS RESPONSABLES DE LAS CONSECUENCIAS! Descarga del driver dbExpress de base de datos PostgreSQL para Kylix 2 ---------------------------------------------------------------------- Como un incentivo para registrar el producto, los usuarios de Kylix 2 tendrán acceso a la descarga del driver dbExpress de base de datos PostgreSQL/RedHat después de la registración. http://community.borland.com/article/0,1410,28013,00.html Help & Manual 3.01 ------------------ Esta gran herramienta de autoría de documentación y ayuda ahora viene con exportación nativa a PDF, salida HTML mejorada, editor de imágenes integrado, docenas de nuevas característica y una interfaz de usuario más amistosa. http://www.helpandmanual.com/hmtour.htm PE Explorer 1.6 disponible -------------------------- Heaventools Ltd. anuncia una nueva versión de su herramienta de solución de problemas para ejecutables para Windows de 32 bits. PE Explorer viene equipado con Visual Resource Editor, Quick Function Syntax Lookup, Dependency Scanner, Section Editor y Disassembler. http://www.heaventools.com ________________________________________________________________________ 5. TRUCOS Y CONSEJOS Usando translucencias en formularios con Delphi 5 ================================================= Por Frederico Pissarra Hay nuevas propiedades en los formularios de Delphi 6 que permiten usar opciones de translucencia (alphablending). ¿Cómo hacer esto en Delphi 5? Para habilitar translucencia en los TForm de Delphi 5 , simplemente usa las siguientes líneas: unit Unit1; interface type TForm1 = class(TForm) ... aquí van los miembros ... public constructor Create(AOwner : TComponent); override; end; implementation {------------------------------------------------------- ALPHA_VALUE determina el nivel de translucencia. 0 = transparencia total, 255 = opaco --------------------------------------------------------} const ALPHA_VALUE = 128; {------------------------------------------------------- Constantes y funciones Win32 faltantes -------------------------------------------------------} const WS_EX_LAYERED = $00080000; const LWA_ALPHA = 2; function SetLayeredWindowAttributes(Handle : HWND; crKey : TColor; bAlpha : Byte; dwFlags : DWORD) : Boolean; stdcall; external 'user32.dll'; constructor TForm1.Create(AOwner: TComponent); var vi : _OSVERSIONINFO; oldStyle : DWORD; begin inherited Create(AOwner); GetVersionEx(vi); if vi.dwMajorVersion >= 5 then { Win2000 o superior?! } begin oldStyle := GetWindowLong(Self.Handle, GWL_EXSTYLE); SetWindowLong(Self.Handle, GWL_EXSTYLE, oldStyle or WS_EX_LAYERED); SetLayeredWindowAttributes(Self.Handle, clBlack, ALPHA_VALUE, LWA_ALPHA); RedrawWindow(Self.Handle, nil, 0, RDW_ERASE or RDW_INVALIDATE or RDW_FRAME or RDW_ALLCHILDREN); end; end; end. Nota que esto sólo funcionará en Windows 2000 o XP. ------------------ Nota del Editor: Puedes encontrar un artículo relacionado en la MSDN Library: http://msdn.microsoft.com/library/en-us/dnwui/html/layerwin.asp ¿Cómo evitar adentrarse en los fuentes de la VCL al presionar F7? ================================================================= Un pequeño truco: Cuando presionas F7 normalmente te adentras en el código fuente de la VCL. Si deseas inhabilitar esta característica, desmarca la casilla de verificación "Use Debug DCUs" en el grupo de opciones de compilación en tus opciones de proyecto. Calculando la diferencia en años entre dos fechas ================================================= La manera más fácil de obtener la diferencia en años entre dos fechas es restarlas para así obtener la diferencia en días, y después dividir el resultado por 365,25 (aproximadamente el número promedio de días por año), truncando el resultado final a un número entero: function YearsDiff(StartDate: TDateTime; EndDate: TDateTime): word; begin Result := Trunc((EndDate - StartDate) / 365.25); end; Cuando no requieres precisión, esa función está muy bien, pero bajo ciertas circunstancias fallará por un año en algunas fechas aniversario. Por ejemplo, si StartDate es 15-JUL-2000 y EndDate es 15-JUL-2007, la función devolvería 6 en vez de 7. La razón es que entre esas dos fechas los años tienen ~365.143 días de promedio y esa pequeña diferencia hace la diferencia en algunas fechas aniversario (pero por ejemplo funcionará bien el 15-JUL-2008). Si necesitas precisión, puedes utilizar la siguiente función: function YearsDiff(StartDate: TDateTime; EndDate: TDateTime): word; var y1, m1, d1: word; y0, m0, d0: word; TempDate: TDateTime; Inverse: boolean; begin Inverse := EndDate < StartDate; if Inverse then begin TempDate := StartDate; StartDate := EndDate; EndDate := TempDate; end; DecodeDate(StartDate, y0, m0, d0); DecodeDate(EndDate, y1, m1, d1); Result := y1 - y0; if m0 > m1 then Dec(Result) else if m0 = m1 then if d0 > d1 then Dec(Result) else if d0 = d1 then if Frac(StartDate) > Frac(EndDate) then Dec(Result); if Inverse then Result := -Result; end; Usando un formulario de login en nuestra aplicación =================================================== Antes de cargar nuestro formulario principal deseemos mostrar un diálogo de login, pero si creamos el formulario de login primero, será tomado como nuestro formulario principal, y si luego lo cerramos o lo ocul- tamos, nuestra aplicación terminará. El truco es crear el formulario de login "manualmente" en nuestro archivo de programa para evitar que se convierta en nuestro formulario principal: program Project1; uses Forms, Controls, Unit1 in 'Unit1.pas' {frmMain}, Unit2 in 'Unit2.pas' {frmLogin}; {$R *.RES} begin Application.Initialize; // Creamos el formulario de login "manualmente" (sin usar // CreateForm) frmLogin := TfrmLogin.Create(nil); // Mostramos el formulario para obtener la respuesta del usuario if frmLogin.ShowModal <> mrOK then frmLogin.Free; // Falló el login ==> Terminamos el programa // El login resultó. Creamos el formulario principal Application.CreateForm(TfrmMain, frmMain); // Recién ahora podemos liberar el formulario de login frmLogin.Free; Application.Run; end. Nuestro formulario de login puede tener un par cuadros de texto (para el nombre de usuario y la contraseña) y un par de botones (Aceptar y Cancelar). El gestor del evento OnClick del botón Aceptar podría ser como el siguiente: procedure TfrmLogin.btnOKClick(Sender: TObject); begin // Validación muy simple por propósitos de ejemplo if (edtUsername.Text = 'username') and (edtPassword.Text = 'password') then begin ModalResult := mrOk; // Valor a devolver por ShowModal Hide; // No podemos usar Close pues terminaría nuestra aplicación // Ocultar el formulario es suficiente para hacer que // ShowModal regrese end else begin MessageDlg('Nombre de usuario o contraseña inválidos.', mtError, [mbOk], 0); edtUsername.SetFocus; end; end; Tras haber comprobado que el nombre de usuario y la contraseña son válidos, debemos establecer la propiedad ModalResult del formulario a mrOK para indicar este hecho (será el valor devuelto por ShowModal) y debemos ocultar el formulario (permitiendo que ShowModal regrese) en vez de cerrarlo porque si liberásemos el único formulario que tenemos, nuestra aplicación terminará (a propósito, esta es la razón por la que liberamos el formulario login recién después de crear nuestro formulario principal en el archivo de programa). ________________________________________________________________________ 6. DELPHI EN LA RED Por Dave Murray Artículos, trucos y consejos ============================ * Delphi Database Programming Course - by Zarko Gajic Free online database programming course for beginner Delphi developers focused on ADO techniques. http://delphi.about.com/library/weekly/aa010101a.htm A new chapter has been added in the last two weeks: Chapter 20 "From ADO Query to HTML" shows how to export your data to HTML using Delphi and ADO. This is the first step in publishing your database on the Internet - see how to create a static HTML page from an ADO query. http://delphi.about.com/library/weekly/aa112701a.htm * Hungarian peanut butter - by Clay Shannon Introduces and explains Hungarian notation, and proposes an Object Pascal-specific variant thereof. http://community.borland.com/article/0,1410,27983,00.html * A passive debugging solution for CLX - by Chee Wee Chua Debugging cross-platform applications is easy with this useful code. http://community.borland.com/article/0,1410,27837,00.html * Writing custom data to executable files - by Daniel Polistchuck Think you can't tweak with your project after it's compiled? Check out these useful techniques for adding custom data to your EXE in Win32 and Linux. http://community.borland.com/article/0,1410,27979,00.html * Mining Delphi's demo programs - by Clay Shannon Precious nuggets of elegant code are to be found in the free source code on your Delphi CD. http://community.borland.com/article/0,1410,27984,00.html * Custom Component Editors - by Peter Morris How to write property editors, from simple ones to an advanced editor which include minimal use of the IFormDesigner interface. http://www.undu.com/Articles/011126f.html * Get File From the Net - by Zarko Gajic Create a Delphi application that downloads files from the Internet. If your program relies on Packages or DLLs then deploying new versions of your libraries takes time & effort. The Internet provides a fairly easy way to accomplish this task. Adding an auto-update option to your apps could be the best way to keep them up to date. http://delphi.about.com/library/weekly/aa013001a.htm * Using the XML Features of SQL Server 2000: Part V - by Alex Fedorov Completes the series by sharing several ways to insert, update, and delete SQL data by using <sql> templates, updategrams or XML Bulkload without relying on data-access components. //www.delphimag.com/features/2001/12/di200112af_f/di200112af_f.asp * Enable/Disable control & all owned controls - by Christian Cristofori With these simple procedures you can enable and disable a control and all controls owned or parented by it. (Make sure you read the notes!) http://www.delphi3000.com/articles/article_2866.asp * How to add an Icon to a Statusbar - by Colin Pringle http://www.delphi3000.com/articles/article_2869.asp * How to List Functions in a DLL - by Colin Pringle http://www.delphi3000.com/articles/article_2873.asp * How to extract icons from files using shell32.dll - by Colin Pringle http://www.delphi3000.com/articles/article_2874.asp * Printing a TStringGrid - by Bradley Baumann A component that prints the selected lines of a TStringGrid. http://www.delphi3000.com/articles/article_2878.asp * Simplest way to download a file from the net - by Bradley Baumann Seem not many people know about the great URLMon (included with delphi)... The simplest way to download a file from the Internet. http://www.delphi3000.com/articles/article_2879.asp * Hiding the caption bar & keeping border style - by Alain Gosselin This is a way to hide the caption bar of a form but keep the border visible. http://www.delphi3000.com/articles/article_2881.asp * Interface It! - by Jimmy Tharpe A quick guide to the ins and outs of interfaces in Delphi. http://community.borland.com/article/0,1410,27825,00.html * Delphi WebBroker apps and OmniHTTPd - by Dave Nottage Describes fixes and issues associated with running WebBroker apps with the OmniHTTPd Web server. http://community.borland.com/article/0,1410,27752,00.html * FreeCLX updates available for download - by John Kaster Kylix 1 users can get many of the Kylix 2 CLX bug fixes in this public beta download. http://community.borland.com/article/0,1410,28033,00.html * SOAP and DataSnap papers - by Bob Swart Different ways for a SOAP server app to use a SOAP Data Module to "export" datasets to a SOAP client using SoapConnection component. http://community.borland.com/article/0,1410,27952,00.html * Introducing the WebSnap Pack - by Jimmy Tharpe A walk through of techniques used in the free WebSnap Pack, which extends WebSnap by re-implementing some interfaces and takes advantage of some presently un-documented features. http://community.borland.com/article/0,1410,27905,00.html * Using a Windows XP Manifest in Delphi - by Michael A. Allen How to include an XP manifest in a Delphi project to allow your application to use comctl32.dll version 6 and share the themed look and feel of Windows XP. http://delphi.about.com/library/bluc/text/uc111601a.htm * How to write an Outlook AddIn? - by Andreas Rumsch http://www.swissdelphicenter.ch/en/showcode.php?id=881 * How to execute actions when the program is Idle? - by Andreas Rumsch http://www.swissdelphicenter.ch/en/showcode.php?id=887 * How to establish a connection to the internet? - by Andreas Rumsch http://www.swissdelphicenter.ch/en/showcode.php?id=886 * How to publish to the web using Frontpage? - by Andreas Rumsch http://www.swissdelphicenter.ch/en/showcode.php?id=888 * How to read a delimited textfile into a StringGrid? - by Loïs Bégué http://www.swissdelphicenter.ch/en/showcode.php?id=873 * How to obtain list of charsets supported by a font? - Steve Schafer http://www.swissdelphicenter.ch/en/showcode.php?id=892 * How to check and install MyODBC driver - by Jani Kleindienst How can I check if MySQL ODBC driver is installed & how can I install it from my Delphi application? http://www.delphi3000.com/articles/article_2839.asp * Simple guide to ADO - by Hans Pieters A flexible and high performance connection to a range of databases. http://www.delphi3000.com/articles/article_2845.asp * Functions to work with icons - by Christian Cristofori Functions to work with icons in DLL, EXE and ICO files. http://www.delphi3000.com/articles/article_2853.asp * Programming a Mail-Slot - by Christian Kuttler How two applications can communicate using a Mailslot. http://www.delphi3000.com/articles/article_2857.asp * BDE Safe Configuration check - by Erwin Molendijk Running the BDE in a safe mode (known config) requires some settings in the BDE Administrator tool. This unit checks if the BDE has been configured correctly (LocalShare=True, NetDir=\\..., etc). Also a unique PrivDir will be created and cleaned up every time. http://www.delphi3000.com/articles/article_2859.asp * Using the Decision Cube without the BDE - by Mark Shapiro The TDecisionCube component that ships with Delphi Client-Server or Enterprise does not work well with non-BDE datasets. But we can change that! http://community.borland.com/article/0,1410,27848,00.html * Using XMLMapper and XML Transforms with Kylix 2 Enterprise - by John Kaster This article describes the new Borland technology for transforming XML documents into dataset representations for easy modification. http://community.borland.com/article/0,1410,28010,00.html * Flicker-Free Graphics in Delphi! - by Mattias Ekstrand Using virtual screens to avoid flickering in graphics animations. http://www.undu.com/Articles/011126a.html Componentes, librerías y aplicaciones ===================================== Freeware -------- * ZLPortIO driver interface unit v.1.50 - by SpecoSoft.com This library allows your application direct access to port I/O under all versions of Windows. With it you can easily control any hardware from your application. Source included, Delphi 3 - 6. http://www.specosoft.com * TVideoCapture v.1.09 - by Egor Averchenkov VideoCapture component to capture video and bitmaps. Requires DirectShow, to capture single frames you need DirectX 8. Source included, Delphi 5 only. http://www.torry.net/vcl/mmedia/video/eavcap.zip * JB Credit Card Validator - by JBDC Group Credit card validation component, works with all major credit cards. Source included, Delphi 5 and 6. http://jbdc.far.ru * TPJSysInfo Component and Routines v.1.1 - by Peter Johnson A system information component and associated routines. Information provided is: Computer info - user name and computer name, System folders - windows, system and temp folder, OS info - name, platform, service packs, version numbers etc. Source included, Delphi 3 and 4. http://www.pjsoft.contactbox.co.uk/ * Innerfuse Pascal Script v.2.78 - by Carlo Kok With Innerfuse Pascal Script you can make your applications scripting enabled. It allows you to add your own functions to the script engine so it can be used by the script code and you can call functions that are declared inside the script from the outside. It has a library to support DLLs directly or indirectly. It also supports procedural variables and classes. Source included, Delphi 2 - 6. http://carlo-kok.com * GExperts GExperts is a set of Open Source tools that increase the productivity of Delphi and C++Builder programmers by adding features to the IDE. Includes: Editor Experts that can find matching delimiters, insert unit headers, etc,; IDE enhancements that add a Windows menu and show some menu items hidden in D4 and D5; Palette enhancements that add multi-line tabs or add tabs to the context menu; and much more. http://www.gexperts.org * Jedi Graphics Freeware open source translations of DirectX header files, with sample programs and links to other sites with DirectX info. http://delphi-jedi.org/delphigraphics/jedi-index.htm * Indy - Internet Direct Freeware open source internet components, as used in Delphi 6. http://www.nevrona.com/Indy/ Shareware/Comercial ------------------- * Tips System version 2.04b Let your application look more professional with the Tips System. It can be used as ordinal tips or "message of the day" dialog but you can also give your users power to add, remove, hide or edit tips with the Tips Editor. Features include advanced graphics, multilanguage support, event for each button and more. For D2-6, BCB1/3-5. Also OCX. http://www.cooldev.com/tipssystem.html Registration includes HtmlTools: http://www.cooldev.com/htmltools.html * Cool PSetting Cool PSetting is the final word in application state management. MRU lists, windows that "remember" their positions and sizes, and powerful options and preferences dialogs. Supports saving application state information in the Registry, in a file, in BLOB fields, or you can use your own custom save and restore procedures. Data can be encrypted. http://www.cooldev.com/coolpsetting.html * AfalinaSoft XL Report 4.0 Template-based Excel reporting & data analyzing with 1 line of code: Master-detail and multiple-sheet reports, Pivot tables, VBA macros. TDataset ancestors + custom data. Native VCL code, IDE integration. Delphi 4-6; Excel 97, 2K, XP. Very fast. Demo and docs. Source code. http://www.afalinasoft.com/xl-report/index.htm * GmPrintSuite v2.22 - by Murt Software. Shareware ($49) GmPrintSuite is a custom report writing/print preview set of components with full zooming, extensive printing functions, Thumbnail functionality and much more! Check out the demo for several examples of it's use. http://www.murtsoft.com/download.htm Tutoriales ========== * Introducción a la OOP - por Pablo Castagnino Una rápida intro al mundo de la programación orientada a objetos. Trataremos temas como qué es un objeto, una clase, constructores y destructores, herencia, visibilidad, polimorfismo, etc. http://webs.sinectis.com.ar/alvadel/articulos/oop.htm * Delphi 5 Quick Start - by Borland http://www.borland.com/techpubs/delphi/delphi5/ * Teach Yourself Delphi 4 in 21 Days http://www.kaposnet.hu/books/tysdelphi4/index.htm * Matlus - The Delphi Apostle Tutorials about emerging technologies and how they relate to Delphi. Technologies include: TCP/IP, ISAPI, HTTP, SOAP/XML/WebServices and N-tier Applications and Thin Clients. http://www.matlus.com * Classic Delphi Examples of how many useful functions can be programmed in Delphi. Written for D5 but with full source can be easily modified for other versions. Several examples are done as components and some include owner-draw code. Useful for intermediate Delphi programmers as well as beginners. http://www.govst.edu/users/gsmpati/delphi * How to re-compile DelphiX and UnDelphiX in Delphi 6 http://turbo.gamedev.net/delphixd6.asp Otros enlaces ============= * Delphiladero Delphiladero es el lugar donde aprender Delphi será más fácil, el lugar en donde Delphi habla nuestro idioma. No sólo eso, será también el lugar en donde tus ideas tengan un espacio para que todos las conozcan. Te invito a participar de este emprendimiento. http://webs.sinectis.com.ar/alvadel/ * Jolt Awards Software Development Magazine has just opened the nominations for the 12th Annual Jolt Software Excellence Awards. Have you used a software technology or tool that you think other developers need to know about? Is there a software-related book you simply couldn't put down? Completing the nomination form takes about 3 mins. http://www.sdmagazine.com/jolts/joltform.htm * Delphi Gamer This site lists games developed in Delphi and resources such as DelphiX and Direct X tutorials to help you develop games. http://www.savagesoftware.com.au/DelphiGamer/indexf.php * Delphree Open Source Initiative Delphree's goal is to encourage and provide support for Open Source development. Delphree activities are primarily focused on Delphi, but other Borland development platforms are supported as well. http://delphree.clexpert.com/pages/lastchanges.htm * Merlin's Delphi Forge A huge Delphi FAQ. http://www.codefield.com/merlinsforge/ ________________________________________________________________________ Si no has recibido el archivo con el código fuente completo de los ejemplos que se presentan en este boletín, puedes descargarlo de la siguiente dirección: http://www.latiumsoftware.com/descarga/p0029.zip ________________________________________________________________________ Página principal: http://www.latiumsoftware.com/es/pascal/index.php Página del grupo: http://espanol.groups.yahoo.com/group/boletin-pascal/ Para suscribirse / apuntarse: boletin-pascal-subscribe@gruposyahoo.com Para cancelar / removerse: boletin-pascal-unsubscribe@gruposyahoo.com Para reportar problemas con la suscripción: eds2004 @ latiumsoftware.com ________________________________________________________________________ Este boletín se provee "TAL Y COMO ESTA", sin garantía de ninguna clase. Su uso implica la aceptación de nuestros términos de licencia y de la ausencia de garantía que puedes leer en nuestro sitio web. Allí también encontrarás una nota sobre marcas registradas. Te animamos a que redis- tribuyas este boletín, siempre y cuando lo hagas en forma completa (incluyendo la información de copyright), sin modificaciones y de manera gratuita. Los artículos son copyright de sus respectivos autores y se reproducen aquí con el permiso de los mismos. ________________________________________________________________________ Latium Software http://www.latiumsoftware.com/es/index.php Copyright (c) 2001 por Ernesto De Spirito. Todos los derechos reservados ________________________________________________________________________ |
Los ejemplos completos de código fuente de este número están disponibles para descargar.
![]() |
¿Errores? ¿Omisiones? ¿Comentarios? Por favor contáctanos!






