Boletín Pascal #31 - 10-ENE-2002
INDICE
1. UNAS PALABRAS DEL EDITOR
2. RESOLVIENDO ECUACIONES LINEALES CON DELPHI USANDO EL METODO DE GAUSS
3. HACIENDO UNA APLICACION CLIENTE TCP/IP (CON CODIGO DE EJEMPLO)...
4. DISEÑANDO APLICACIONES DELPHI CON SKINS
5. FOROS
6. DELPHI EN LA RED
- Componentes, librerías y aplicaciones
. Shareware/Comercial
. Freeware
- Artículos, trucos y consejos
- Tutoriales
- Otros enlaces
________________________________________________________________________
1. UNAS PALABRAS DEL EDITOR
Pido disculpas por la demora en la publicación de esta edición, pero he
tenido algunos problemas personales estas semanas, afortunadamente
resueltos a esta altura. Bien, esta edición será breve porque estoy casi
de vacaciones y la estoy preparando casi a las apuradas.
Me gustaría agradecer a todos aquellos que están ayudando a conseguir
más suscriptores. Espero que en el futuro se traduzca en más contribu-
ciones al boletín par hacerlo más interesante. A propósito, si has
solucionado algún problema particular de programación, me gustaría
invitarte a compartir tu código en este boletín como Victory Fernandes,
S.S.B. Magesh Puvananthiran y Charl Linssen están haciendo en esta
edición. Mi agradecimiento hacia ellos. En la próxima edición tendremos
material de Alirio Gavidia.
También me gustaría agradecer a Dave Murray por hacerse cargo de la
sección "Delphi en la red", trayéndoles enlaces a nuevo contenido Delphi
en la Internet. Hay muchas cosas interesantes para esta edición. Me
gustaría recomendarles el tutorial "How To Ask Questions The Smart Way".
Saludos,
Ernesto De Spirito
eds2008 @ 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-2006 y C++ Builder 3-6. http://www.jfactivesoft.com/spindex.htm
________________________________________________________________________
2. RESOLVIENDO ECUACIONES LINEALES CON DELPHI USANDO EL METODO DE GAUSS
Victory Fernandes <victory @ e-net.com.br> nos envía su aplicación
MatriX Versión 1.2 para resolver sistemas de ecuaciones lineales usando
el método de Gauss para reducción de matrices. El código fuente es
demasiado grande para ser adjuntado a este boletín, pero puede descar-
garse de esta ubicación:
http://www.latiumsoftware.com/download/GaussSRC.zip (~174Kb)
El ejecutable compilado también está disponible para descarga:
http://www.latiumsoftware.com/download/Gauss.zip (~421Kb)
Ambas descargas incluyen un archivo ReadMe (en inglés y portugués)
explicando el proyecto.
________________________________________________________________________
3. HACIENDO UNA APLICACION CLIENTE TCP/IP (CON CODIGO DE EJEMPLO)...
Por S.S.B. Magesh Puvananthiran <sesba @ hotmail.com>
Algún código de muestra...
==========================
Este artículo pretende mostrarles cómo podemos usar el componente
TClientSocket en Delphi como un cliente TCP/IP contra cualquier servidor
TCP/IP. El servidor puede estar escrito en Delphi usando el componente
TServerSocket o cualquier pieza de código que actúe como servidor
TCP/IP. En mi caso, estoy interactuando con un código Java que actúa
como servidor TCP/IP.
En mi proyecto simplemente le envío un puñado de bytes a ese servidor
Java y este servidor lee los bytes y realiza algunas tareas, enviando un
puñado diferente de bytes como respuesta al cliente Delphi.
En este artículo, permítanme darles algún código de ejemplo que usé en
aquel proyecto debido a que algunas personas me pidieron que les
enviara el código fuente para esta comunicación por sockets enviándome
emails separados. Aprecio su interés. ¡Aquí les va! ¡Disfrútenlo!
Mi proyecto usa casi nueve formularios y todos ellos necesitan inte-
ractuar con el servidor Java al menos una vez, así que agregué un
DataModule y puse allí un componente TClientSocket. El siguiente es el
código para eso:
unit DataMod;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp, OleServer;
type
TdmDataModule = class(TDataModule)
csClientSocket: TClientSocket;
procedure csClientSocketError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
procedure csClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure DataModuleDestroy(Sender: TObject);
private
{ Private declarations }
public
FWaiting : boolean;
{ Public declarations }
end;
var
dmDataModule: TdmDataModule;
implementation
{$R *.DFM}
procedure TdmDataModule.csClientSocketRead(Sender: TObject;
Socket: TCustomWinSocket);
// Reading data back from server thru socket
var
Buffer : array [0..4095] of char;
BytesReceived : integer;
MemoryStream : TMemoryStream;
begin
while FWaiting do
begin
MemoryStream := TMemoryStream.Create;
try
// This time delay depends on the network traffic and also you
// can put the time delay between reads. I've just put some 200
// milliseconds for my application before it starts from the
// server.
Sleep(200);
while True do
begin
BytesReceived := Socket.ReceiveBuf(Buffer,SizeOf(Buffer));
if (BytesReceived <= 0) then
Break
else
begin
MemoryStream.Write(Buffer,BytesReceived);
end;
end;
FWaiting := False;
MemoryStream.Position := 0;
// XMLResponse is a global StringList I'm using in my
// application to convert the bytes received into string
// You can use other ways to get the contents of a MemoryStream
XMLResponse.LoadFromStream(MemoryStream);
finally
MemoryStream.Free;
end;
end;
end;
procedure TdmDataModule.csClientSocketError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
// Whenever you get a specific type of error while running the client
// you will be given a messagedlg showing that the error has occured;
// at that time you have to check whether the server is running
// correctly or not and if needed make the server run properly and
// then say OK.
// Then csClientSocket.Open will try to reconnect to the server. So at
// this time if some transaction is in the middle you have to send the
// same stuff again after reconnecting.
begin
case ErrorEvent of
eeGeneral :
begin
if MessageDlg('Error Connecting to Java server!' + #13 +
'Check the server status and try again!!',
mtInformation, [mbOk], 0) = mrOk then
csClientSocket.Open
end;
eeConnect :
begin
if MessageDlg('Error Connecting to Java server?' + #13 +
'Check the server status and try again!!',
mtInformation, [mbOk], 0) = mrOk then
csClientSocket.Open
end;
eeSend :
begin
if MessageDlg('Error Connecting to Java server?' + #13 +
'Check the server status and try again!!',
mtInformation, [mbOk], 0) = mrOk then
csClientSocket.Open
end;
eeReceive :
begin
if MessageDlg('Error Connecting to Java server?' + #13 +
'Check the server status and try again!!',
mtInformation, [mbOk], 0) = mrOk then
csClientSocket.Open
end;
eeAccept :
begin
if MessageDlg('Error Connecting to Java server?' + #13 +
'Check the server status and try again!!',
mtInformation, [mbOk], 0) = mrOk then
csClientSocket.Open
end;
end;
end;
procedure TdmDataModule.DataModuleDestroy(Sender: TObject);
begin
// Closing the socket connection
csClientSocket.Close;
end;
end.
Una vez que ha terminado con el DataModule, puede incluir este
DataModule en las unidades en donde necesite interactuar con el
servidor, consiguientemente evitando escribir código para leer datos
devueltos por el servidor en varios lugares del proyecto.
Pueden establecer la dirección del Host y el número de puerto (Port)
del servidor para comunicarse en tiempo de ejecución usando parámetros
en línea de órdenes (asumo que la gente Delphi conoce acerca de los
parámetros en línea de órdenes o en línea de comandos).
Entonces, en el evento FormCreate del formulario principal del proyecto,
escriban el siguiente código para conectarse al servidor, es decir,
establezcan la dirección IP y el número de puerto del servidor en el
componente TClientSocket y establezcan Active en True.
// Connecting to the Java server on a particular port
try
with dmDataModule.csClientSocket do
begin
if Active then Active := False;
// Getting the Address or Host Name of the server through the
// runtime parameters
Host := ParamStr(1);
// Getting the Port Number of the server at which the server
// listens through the runtime parameters
Port := StrToInt(ParamStr(2));
// Making the connection active
Active := True;
end;
except on ESocketError do
begin
MessageDlg('Unable to Connect to Java Server ' + #13 +
'Please Try Again!', mtInformation, [mbOk], 0);
exit;
end;
end;
Una vez que estén conectados al servidor, pueden usar los métodos
SendText y SendStream del TClientSocket para enviar datos al servidor.
Por ejemplo:
procedure Send;
begin
// Checking whether the socket connection is ready or not
// If not , the error handling part of the TClientSocket will be
// activated
if csClientSocket.Active then
begin
// Sending the text through the socket connection
csClientSocket.Socket.SendText('The string to send');
// Setting a flag to wait until the server sends the response back
dmDataModule.FWaiting := True;
while dmDataModule.FWaiting then
Application.ProcessMessages;
end;
end;
________________________________________________________________________
4. DISEÑANDO APLICACIONES DELPHI CON SKINS
Por Charl Linssen <charl @ atomasoft.com>
Hola amigos. Escribí este tutorial para gente que esté intentando
escribir una aplicación Delphi con skins. ¿Por qué hacer eso? Bueno,
tomen WinAmp por ejemplo, un reproductor MP3 que la mayoría de nosotros
conocemos. El programa esta 100% "skinned", y aunque esté probablemente
escrito en C/C++ pueden ver directamente que no hay TButtons en el
formulario principal. Obviamente, esto se hace porque se ve muy bien.
Pero desafortunadamente, también incrementa el tamaño de archivo (y el
tiempo de descarga). Consiguientemente, uno debería hacer una aplicación
con skins solamente cuando realmente le agrega algo al programa. Por
cada botón, etiqueta y cualquier otra cosa, tienen que tener una imagen.
También otra imagen para el OnClick, y quizás todavía otra más para el
OnMouseMove.
De nuevo, cuando no sea necesario, no hagan su aplicación con skins.
Pero si piensan 'bla, bla, vayamos al código' no los molestaré más con
mis consejos.
Si desean hacer su aplicación con skins, también se pueden sacar de
encima las ventanas estándar de forma rectangular. Eso se puede hacer
bastante fácil especificando puntos (X,Y) y llamando al procedimiento
SetWindowRgn:
const RgnPoints : array[1..12] of TPoint =
((X:9;Y:6), (X:177;Y:6), (X:184;Y:13),
(X:9;Y:49),(X:4;Y:43), (X:4;Y:11)); { Just a sample: this will
probably look like hell :) }
var Rgn : HRGN;
begin
Rgn := CreatePolygonRgn(RgnPoints, High(RgnPoints), ALTERNATE);
SetWindowRgn(Handle, Rgn, True);
end;
Ahora, este código no debería ser muy difícil de entender. Por cada
RgnPoint se dibuja una línea desde RgnPoints[I-1] a RgnPoints[I].
Desde la última coordenada -en este caso (4,11)- se dibuja una línea
hasta la primera (9,6). Esto puede ser un poco difícil de entender,
pero simplemente cópienlo y péguenlo en la parte final del evento
FormCreate (el arreglo RgnPoints debería estar donde se declara Form1).
Volviendo al verdadero "skinning"
=================================
Cuando hago una aplicación con skins, simplemente coloco un TImage en el
formulario con la imagen de fondo, y luego coloco todos los componentes
sobre él. Puede que también quieran considerar un TImage, sobre él un
TPanel, y sobre el panel sus componentes. Esto puede ser útil para
algunas cosas. Por supuesto, al hacer esto, no se puede cambiar el
tamaño del formulario, pero eso se puede arreglar fácilmente por ejemplo
tomando imágenes separadas para la parte superior izquierda, superior
derecha, inferior izquierda e inferior derecha, y luego usando el evento
OnPaint para dibujar todo lo necesario entre las imágenes.
Bueno, esto es todo por ahora amigos. Espero que encuentre tiempo para
escribir tutoriales más útiles. Si tienen alguna pregunta acerca de
éste, siéntanse libres de enviarme un email a <charl @ atomasoft.com>.
También asegúrense de visitar mi sitio en http://www.FutureAI.com
(trata sobre Inteligencia Artificial).
Cya!
// Charl
________________________________________________________________________
5. FOROS
Delphi
======
Foro abierto
------------
Si estás en la etapa de aprendizaje o si no te agradan los foros
discriminados por niveles, este foro es para ti.
http://espanol.groups.yahoo.com/group/delphi-abierto
Para suscribirte, también puedes hacerlo desde la web o por email:
http://espanol.groups.yahoo.com/group/delphi-abierto/join
delphi-abierto-subscribe@gruposyahoo.com
Nivel Intermedio
----------------
Si sabes mucho de Delphi, pero aún te falta largo trecho para ser un
gurú, tal vez prefieras participar en el foro para programadores en
Delphi de nivel intermedio:
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
Nivel Avanzado
--------------
Si te crees un gurú, y quieres estar en un foro sólo para gurús, lo más
probable es que en realidad no necesites estar en un foro, pero bueno,
por si acaso, este es nuestro foro para programadores en Delphi de
nivel avanzado:
http://espanol.groups.yahoo.com/group/delphi-avanzado
Para suscribirte, también puedes hacerlo desde la web o por email:
http://espanol.groups.yahoo.com/group/delphi-avanzado/join
delphi-avanzado-subscribe@yahoogroups.com
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
------------------
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).
________________________________________________________________________
6. DELPHI EN LA RED
Por Dave Murray
Componentes, librerías y aplicaciones
=====================================
Shareware/Comercial
-------------------
* CoolDBUtilities v. 1.04a - For Delphi 2-6 and BCB 3-5
Ever released major updates of your programs or databases they use?
Tired to send megabytes over the Internet? Tired to update fields or
indixes manually? Just try CoolDBUtilities package for these purposes
and all these time consuming tasks will be more like fun than work.
Update, check, rebuild, pack and sort your databases, and more...
http://www.cooldev.com/cd_products.html#CoolDBUtilities
* HierarchyTree v. 1.03 by Cooldev.com
You can use HierarchyTree package to visually build the hierarchies.
Easy way to show relations between various items. No coding required.
Variety of ways to display hierarchy members. Features include
run-time drag-n-drop support, scrolling, ability to print, save and
load the controls. For Delphi 3-6 and BCB 3-5.
http://www.cooldev.com/cd_products.html#HierarchyTree
* EasyCompression Library v.1.11 by AidAim Software. SW $55, SWS $95.
Easy in use stream replacements with transparent compression and
encryption. One stream is used for both compression and decompression,
better ratio than WinZip and WinRar, no DLL, small footprint 45K-100K,
full sources, strong encryption-Rijndael, comprehensive help and
demos. http://www.aidaim.com/products/products.php#ECL
* Discover for Delphi - by Cyamon Software. Shareware ($30)
Discover is an analysis tool that shows interactively, in real-time
and directly in the source code which code blocks have executed at
least once and which have never been executed. No source code
modifications are required and Discover can export coverage data.
http://www.cyamon.com/discover1.htm
Freeware
--------
* CoolDBDialogs v. 1.01 by Sonket Dev and CoolDev.com
The package contains five dialogs to work with your databases. It's
small but neat and easy to use piece of code with some nice advanced
features like design time preview etc. For Delphi 3-5 and BCB 3-4.
Requires CoolControls (http://www.cooldev.com/cd_products.html#CoolControls).
http://www.versiontracker.com/dyn/moreinfo/win/29989
* DUnit 5.0
A testing framework inspired by JUnit Java framework designed for
Extreme Programming. The library also includes a port of the Java
Collections library using Delphi interfaces.
http://dunit.sourceforge.net/
* Delphi Fundamentals 2.0
Collection of Delphi code units. Includes maths, strings, datetime,
streams and now internet libraries.
http://fundementals.sourceforge.net/
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 22 "Transactions in Delphi ADO database development" explains
how to to insert, delete or update a lot of records collectively so
that either all of them get executed or if there is an error then none
is executed at all. This chapter will show you how to post or undo a
series of changes made to the source data in a single call.
http://delphi.about.com/library/weekly/aa010202a.htm
* How Borland embedded Mozilla in Kylix 2 - by Darren Kosinski
Explains how the Mozilla browser was used to provide the HTML preview
feature within the Kylix 2 IDE. Borland investigated a few different
ways of embedding Mozilla and ultimately settled on a simple solution
that can be used to embed almost any application within another.
http://community.borland.com/article/0,1410,28199,00.html
* Access and control a NT service - by Bertrand Goetzmann
The unit in this article shows how we can start or stop an NT service
or getting the location of its binary implementation from Delphi.
http://www.delphi3000.com/articles/article_2960.asp
* Populate column of DBGrid PickList for easy data entry - by S Issac
A function to populate the DBGrid PickList to have auto selection of
added field value when the grid is used to display a table.
http://www.delphi3000.com/articles/article_2961.asp
* Panel showing Enabled/Disabled in Children - by Daniel Wischnewski
Component code that simply extends the Delphi Panel to properly show
the Enabled State (True/False) within its children.
http://www.delphi3000.com/articles/article_2962.asp
* How to get field values of a dataset as comma text? - by Sunish Issac
Getting the unique field values (strings) as comma text can be a big
advantage in populating any TStrings descendant. These functions
implement this with respect to a table and also on TBDEDataset.
http://www.delphi3000.com/articles/article_2963.asp
* How to print a file through the printer port? - by Sven Kissner
http://www.swissdelphicenter.ch/torry/showcode.php?id=940
* How to Prevent Windows Shut Down? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=939
* How to hide minimized MDI child windows? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=938
* How to change each button's hint on the TDBNavigator? - by S János
http://www.swissdelphicenter.ch/torry/showcode.php?id=918
* How to Save/Load a TStringGrid to/from a file? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=941
* Always operate numeric keypad as if NumLock is engaged? - by P Below
http://www.swissdelphicenter.ch/torry/showcode.php?id=953
* How to get a TFont's property from a font handle? - by P Below
http://www.swissdelphicenter.ch/torry/showcode.php?id=952
* How to search for text in a TListview? - by Thomas Stutz
http://www.swissdelphicenter.ch/torry/showcode.php?id=947
* How to change resource strings at run-time? - by P Below
http://www.swissdelphicenter.ch/torry/showcode.php?id=946
* How to copy the clipboard to a stream and restore it again? - P Below
http://www.swissdelphicenter.ch/torry/showcode.php?id=945
* How to read a binary file + display byte values as ASCII? - P Below
http://www.swissdelphicenter.ch/torry/showcode.php?id=944
* How to fastly retrieve the high-order word from 32bit var? - Martin
http://www.swissdelphicenter.ch/torry/showcode.php?id=942
* How to read data from another MDIChild form? - by Carlos Borrero
http://www.swissdelphicenter.ch/torry/showcode.php?id=849
* System Tray Delphi Part 2 - by Zarko Gajic
Once you have placed a program's icon in the Tray, it's time to show
a popup menu near the icon and have the icon reflect the state of
your application - even animate if you want to!
http://delphi.about.com/library/weekly/aa122501a.htm
* How to create/read from a structured storage file - by Colin Pringle
How to create a structured storage file Part 2 shows how to read a
structured storage file using COM.
http://www.delphi3000.com/articles/article_2939.asp
* Right-aligned Edit Field - by Daniel Wischnewski
Editbox component which alows you to right-align the text.
http://www.delphi3000.com/articles/article_2940.asp
* How to use (Win)DOS routines in win32 console apps - P Koutsogiannis
Have you ever tried to use the gotoxy or keypress function in your
Win32 applications?
http://www.delphi3000.com/articles/article_2941.asp
* Taking a screen shot - by Daniel Wischnewski
Sometimes you want to take a screen shot, however Windows becomes
very slow with big data amounts. The solution is to make many small
screen shots and paste the result together. It's not light speed,
however often faster than taking the whole screen at once.
http://www.delphi3000.com/articles/article_2942.asp
* Custom statusbar shows hints without any coding - by Kevin Gallagher
A statusbar component that show tooltips/hints automatically in all
versions of Delphi. (Delphi 6 already has this.)
http://www.delphi3000.com/articles/article_2946.asp
* How to use extended Windows dialogs - by Mike Shkolnik
How to use Windows's dialogs from shell32.dll.
(Find Files, Find Computer, Select Icon, Shutdown, etc)
http://www.delphi3000.com/articles/article_2947.asp
* "Barcode" checksum by modulus 10 - by Mike Shkolnik
How can I calculate a checksum by modulus 10 used in barcodes?
http://www.delphi3000.com/articles/article_2948.asp
* Adding Explorer Bar - by Khalid A.
Creating custom Explorer Bars (Band object) within IE 5+.
http://www.delphi3000.com/articles/article_2950.asp
* Adding Explorer MenuItem - by Khalid A.
Creating custom Explorer MenuItem band object in IE 5+.
http://www.delphi3000.com/articles/article_2951.asp
* Adding Explorer ToolBar Btn - by Khalid A.
Adding a custom toolbar button to IE 5+.
http://www.delphi3000.com/articles/article_2954.asp
* How to really make a resource file - by Martin Ellis
Creating a sort of uncompressed Zip file to store all the files
required for a game or other program that requires additional files.
http://www.delphi3000.com/articles/article_2955.asp
* Change user password for specified server/domain? - S Grossenbacher
http://www.swissdelphicenter.ch/torry/showcode.php?id=925
* How to show controls with rounded corners? - by P. Below
http://www.swissdelphicenter.ch/torry/showcode.php?id=921
* How to Toggle Caps Lock & Num Lock? - by Thai Huynh
http://www.swissdelphicenter.ch/torry/showcode.php?id=926
* How to get the text of a StatusBar? - by Thomas Stutz
Getts the text in a status bar in any window, even other apps.
http://www.swissdelphicenter.ch/torry/showcode.php?id=935
* How to list all app's ctrls & menus in a TTreeView? - by Martin
http://www.swissdelphicenter.ch/torry/showcode.php?id=922
* Check if control is partially covered by another window - by B Sateli
http://www.swissdelphicenter.ch/torry/showcode.php?id=931
Tutoriales
==========
* How To Ask Questions The Smart Way - by Eric S. Raymond
The answers you get to technical questions depends as much on the way
you ask the questions as on the difficulty of the answer. This guide
teaches you how to ask questions in a way that is likely to get you a
satisfactory answer.
http://linuxmafia.com/faq/Essays/smart-questions.html
* Delphi For Fun
Delphi tutorials with full source based around solving interesting
puzzles or problems. Includes simple animated physics programs,
Towers of Hanoi, a Maze generator, etc.
http://www.delphiforfun.org/Programs/
* Primer on Multithreading - by Martin Harvey
Online guide, explains most of the basics and a few more advanced
techniques. Also available as an HTML Help file.
http://www.pergolesi.demon.co.uk/prog/threads/ToC.html
* Implementing Professional Drag & Drop Support in VCL/CLX applications
A BorCon 2001 and BorCon UK 2001 paper by Brian Long.
Explores simple VCL/CLX drag & drop, before progressing into more
troublesome tasks, such as adding custom drag images to the drag
cursor (as done by Windows Explorer when dragging files and folders.
http://www.blong.com/Conferences/BorCon2001/DragAndDrop/4114.htm
* Deep Sea Fishing In Delphi - by Brian Long
VCL Secrets And Practical Use Of The Win32 API, a DCon 2000 tutorial.
Uncovers gems from the VCL/RTL that are less well known, but
potentially very useful.
http://www.blong.com/Conferences/DCon2000/DeepSeaFishing/Fishing.htm
* Web Development in Delphi - by Madrigal Technologies
An overview of using WebBroker to produce web-based applications.
http://www.madrigal.com.au/papers/webdev/delphi/delphi.htm
* Scripting your Delphi Applications - by Madrigal Technologies
This tutorial covers the MS ActiveScript control, the interfaces it
exposes and ways to exploit its features in Delphi applications.
http://www.madrigal.com.au/papers/scripting/scripting.htm
* Writing Solid Delphi Code - by Madrigal Technologies
(aka Fundamentals of Bug Prevention in Delphi) This tutorial covers a
selection of proven techniques that you can use to avoid introducing
bugs into your software. They range from automated unit testing to
smaller tips and tricks. Included is the source code for an automated
unit testing framework used in the article.
http://www.madrigal.com.au/papers/solidcode/page1.htm
Otros enlaces
=============
* BDE Support page
Provides a single repository for BDE support information, tools, and
links to other BDE-related content on the web.
http://www.bdesupport.com/index.html
* The Helpware Group
Support for MS HTML Help 1.x and MS Help 2.0, FrontPage and Delphi.
Also includes the Delphi HTML Help Kit (Freeware) - Add 3 lines of
code to your main form and you have successfully converted your
entire application from WinHelp to HTML Help.
http://helpware.net/index.html
* Componenti C Builder / Delphi
Library of freeware components for C Builder and Delphi.
http://www.ciemmesoft.com/componenti/defaulting.asp
* Microtower
A site of resources for game development, focusing on topics related
to Delphi, DelphiX, DirectX and and alternative APIs. Includes a
message board to share you knowledge with other developers, links to
related sites and DMX a shareware VCL wrapper for DirectX.
http://www.microtower.com/
________________________________________________________________________
¡TÚ PUEDES AYUDARNOS!
Por favor danos una mano y ayúdanos a llegar a los 10.000 suscriptores
en los próximos meses. Una forma en que puedes ayudarnos es enviando
este enlace a tus amigos:
http://www.latiumsoftware.com/es/pascal/index.php
Otra forma es votándonos en alguno de estos rankings para darle más
visibilidad a nuestro sitio web y aumentar así el número de suscrip-
ciones al boletín:
http://www.programmingpages.com/?r=latiumsoftwarecomenpascal
http://top100borland.com/in.php?who=20
http://www.lawebdelprogramador.com/buscar/votar.php?id=615
Por favor vota. Son sólo unos segundos para ti que REALMENTE pueden
hacer la diferencia. Necesitamos tu ayuda para poder continuar.
________________________________________________________________________
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/es/file.php?id=p31
________________________________________________________________________
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: eds2008 @ 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) 2002 por Ernesto De Spirito. Todos los derechos reservados
________________________________________________________________________
|