Ideas

septembre 25, 2017

Convertir BMP a JPG

//Lo primero es incluir la cabecera <jpeg.hpp> #include <jpeg.hpp> //Crea un botón y dentro de éste escribe el siguiente código. Graphics::TBitmap *bmp=new Graphics:: TBitmap(); TJPEGImage *jpg […]
septembre 25, 2017

Cómo almacenar imágenes en campos GRAPHICS de Paradox.

Para cargar una imagen en el campo ‘Graphics’ desde un fichero puedes utilizar el método ‘LoadFromFile()’ del propio campo. El siguiente ejemplo está adaptado de la […]
septembre 25, 2017

Imagen de fondo en un formulario MDI

Para colocar una imagen en el área cliente de un formulario MDI (esto es, un formulario que tenga la propiedad ‘FormStyle = fsMDIForm’) se utiliza una […]
septembre 25, 2017

Ejecutar un Wav

Para reproducir un archivo de sonido WAV desde Builder podemos usar la función PlaySound. La ayuda de esta función no esta integrada en el IDE del […]
septembre 25, 2017

Crear un DSN de MsAccess

//--------------------------------------------------------------------------- // CrearDSNAccess // Esta función crea un Nombre de Origen de Datos para poder establecer una // conexión via ODBC con una base de datos […]
septembre 25, 2017

Obtener la lista de impresoras de Windows

Un ejemplo que te asigna la lista de impresoras a un ComboBox que se llama Lista: Lista->Items->Assign (Printer()->Printers); La lista de impresoras está en la propiedad […]
septembre 25, 2017

Enviar eMail desde el cliente de correo predetermidado

Puede invocar la ventana « Nuevo Mensaje » o « Componer Mensaje » del programa de correo electrónico predeterminado usando la función API ShellExecute declarada en la unidad ShellApi, simplemente […]
septembre 25, 2017

Abrir el navegador por defecto

String St = "http://www.grupoalbor.com"; ShellExecute(Handle,"open",St.c_str(),0,0,SW_SHOW); ¿Cómo se podría hacer a traves de una función? void OpenURL(void) { (32 >= (int)ShellExecute(NULL, "open", "http://www.grupoalbor.com",NULL, NULL, SW_SHOWNORMAL)); }
septembre 22, 2017

Limitar el movimiento del ratón a una zona de un formulario

TRect Rectangulo ; Rectangulo.Left=10; // {Izquierda} Rectangulo.Right=300; // {Derecha} Rectangulo.Top=10; // {Arriba} Rectangulo.Bottom=300; // {Abajo} ClipCursor(&Rectangulo); Para quitar la zona, basta con poner: ClipCursor(NULL);  
septembre 22, 2017

Cómo ejecutar un programa y esperar a que termine

El código siguiente es una función que permite ejecutar un programa y esperar a que termine, obteniendo el código de retorno. int WinExecAndWait32(AnsiString FileName, int Visibility) […]
septembre 22, 2017

Cómo detectar si nuestra aplicación está ejecutándose

Unas de las muchas formas, de detectar si nuestra aplicación ya esta funcionando, y por lo tanto evitar dobles arranques, es utilizando un semáforo binario, llamado […]
septembre 22, 2017

Rotación de un texto

Ejemplo sacado en parte de pag.901. Guia de Desarroyo c++ Builder 5: // Una Encapsulacion de la VCL de WIN32 LOGFONT // La Estructura LOGFONT define […]
septembre 22, 2017

Calcular el tamaño que nos ocupa un directorio

Podemos hacer lo siguiente: void __fastcall TForm1::Button1Click(TObject *Sender) { TSearchRec sr; double tamanyo=0; int iAttributes = 0; if (FindFirst("c:\\windows\\*.*", iAttributes, sr) == 0) { tamanyo += […]
septembre 22, 2017

Activar y desactivar el refresco de un formulario.

Puede ser Interesante evitar la actualización de un formulario (o de un control) para evitar parpadeos, acelerar procesos evitando el repintado de algún control, etc. Usando […]
septembre 22, 2017

Cómo realizar un enlace URL desde un TLabel

Puede ocurrir que nos interese realizar un enlace desde nuestra aplicación a una determinada dirección de Internet. De tal forma, cuando pinche en una determinada zona […]
septembre 22, 2017

Iconos para componentes VCL

La creación de iconos para nuestros componentes VCL es muy sencilla, ya que tanto Delphi como C++ Builder disponen de una herramienta, llamada Image Editor, que […]
septembre 22, 2017

Arrancar servidor de Interbase/Firebird desde programa

Hace poco me ví en la necesidad de arrancar el Servidor de Interbase/Firebird (en mi caso Firebird) si este estuviera desconectado al arrancar mi aplicación. En […]
septembre 22, 2017

Cómo hacer un Insert o un Update

Se puede usar el Tquery tranquilamente poniendo query.requestlive := false y usando query.Execsql Por ejemplo: var q: Tquery; q := query.create(nil); with q do begin requestlive […]
septembre 22, 2017

SQL con campos fecha.

Nunca pases una fecha en forma literal, porque las bases de datos, segun como esten configuradas, pueden tener un formato default de fecha u otro. Por […]
septembre 22, 2017

Realizar búsquedas en cualquier lugar de un campo.

Si buscas la palabra en cualquier parte del comentario: Select comentario from tabla where comentario likes ‘%GRAFICAS%’ Al principio : ‘GRAFICAS%’ Al final : ‘%GRAFICAS’ En […]
septembre 22, 2017

Comprobar la existencia de un disquette en la unidad.

function HayDisquete(var Razon: Integer): Boolean; var Handle: THandle; FindData: TWin32FindData; begin Razon := NO_ERROR; { Al menos, de momento } FillChar(FindData, SizeOf(TWin32FindData), 0); Handle := Windows.FindFirstFile(PChar('A:\*.*'), […]
septembre 22, 2017

Conocer el tipo de Windows que se está utilizando y su versión.

procedure TForm1.Button1Click(Sender: TObject); var versionSO:TOSVersionInfo; Cvalor:Cardinal; Evalor:Extended; begin VersionSO.dwOSVersionInfoSize:=SizeOf(VersionSO); GetVersionEx(VersionSO); // Versión StringGrid1.Cells[0,0]:='Versión'; EValor:=VersionSO.dwMajorVersion; StringGrid1.Cells[1,0]:=Format('%2n',[EValor]); // Plataforma StringGrid1.Cells[0,1]:='Plataforma'; CValor:=VersionSO.dwPlatformId; case Cvalor of 0 : StringGrid1.Cells[1,1]:='Sobre Windows […]
septembre 22, 2017

Conocer el tipo de procesador.

Utilizo wProcessorLevel aunque el problema es que está preparada para procesadores de tipo Intel. En estos se puede « afinar » más con el uso conjunto de wProcessorRevision, […]
septembre 22, 2017

Obtener información sobre las memorias.

Doy por supuesto que existe un StringGrid donde voy depositando los datos. procedure TForm1.Button1Click(Sender: TObject); var Memoria:TMemoryStatus; Evalor:Extended; begin // Datos de memoria Memoria.dwLength:=SizeOf(Memoria); GlobalMemoryStatus(Memoria); StringGrid1.Cells[0,1]:='Datos […]
septembre 22, 2017

Cómo acceder a múltiples unidades de CD-Audio

En caso de que tengamos un equipo con múltiples lectores de CD-ROM, al usar MCI para reproducir indicando el dispositivo genérico cdaudio siempre se usará la […]
septembre 22, 2017

Cómo saber el ID de un CD-ROM

Los CD disponen de un código, llamado UPC, que permite reconocer de forma única cada título. En el caso de los CD de audio esto puede […]
septembre 22, 2017

Qué necesito hacer para lanzar mi cliente y acceder a mi servidor a través de DCOM

Un setup que normalmente funciona es la instalación del Service Pack 3 en las terminales con NT 4.0. Si se va a utilizar cualquier aplicación cliente […]
septembre 22, 2017

Sobre OCX-Active X

Un archivo .OCX es servidor Ole (una dll especializada que define servicios de automatización OLE) que como tal debe ser registrado. A los OCX se los […]
septembre 22, 2017

Modelos de componentes en entornos distribuidos

DCOM es una extensión del modelo COM para entornos distribuidos y, como tal, cuenta con las mismas características, ventajas y desventajas de COM. Este modelo está […]
septembre 22, 2017

De las aplicaciones monolíticas a traspasar el umbral de las dos capas

Actualmente existen básicamente tres sistemas o modelos de desarrollo de aplicaciones: monolítico, cliente/servidor y distribuido. El primero es el sistema tradicional que, con el tiempo, ha […]
septembre 22, 2017

Algo llamado CORBA

CORBA es una arquitectura que facilita la interoperabilidad entre componentes distribuidos, desarrollados en diferentes lenguajes y que se ejecutan sobre distintas plataformas y sistemas operativos. CORBA […]
septembre 22, 2017

Creación de un documento Excel desde Delphi 5

En la pestaña Server se encuentra el componente ExcellApplication que es el que debemos utilizar para acceder a sus utilidades. El rango (Range) es un objeto […]
septembre 22, 2017

Creación de un documento Excel desde Delphi 5

En la pestaña Server se encuentra el componente ExcellApplication que es el que debemos utilizar para acceder a sus utilidades. El rango (Range) es un objeto […]
septembre 22, 2017

¿Cómo hacer para que el cliente instale las tablas en el lugar que elija sin interferir a la aplicación?

En el proceso de la creación de instalación del programa se utilizará el InstallShield (aunque hay otras posibilidades que no vienen con los paquetes de Delphi). […]
septembre 22, 2017

Selección de impresora con Quick Report tras la previsualización.

var PrinterSettings: TQuickRepPrinterSettings; en ese caso tendrás que asignarle en el OnPreview lo siguiente: With TFCustomPreview.Create(Self) do begin QRPreview1.QRPrinter := QuickRep1.QRPrinter; PrinterSettings := QuickRep1.PrinterSettings; Show; end; […]
septembre 22, 2017

Abrir el cajón portamonedas.

var nPrn:TextFile; abrir:string; begin AssignFile(nPrn, 'LPT1'); Rewrite(nPrn); WriteLn(nPrn,cadena); //cadena:='chr(27)+... dependiendo de la impresora' CloseFile(nPrn); end
septembre 22, 2017

Uso del componente TQRMemo en un informe

Estoy utilizando una tabla Paradox con Delphi 3 y los componentes Quick Report. El problema que tengo es que no puedo imprimir un campo memo variable […]
septembre 22, 2017

Exportar a un fichero la salida de un Quick Report

Se ha de utilizar ExportToFilter del QReport. Hay que poner en uses el QRExport o QRExtra, dependiendo de la versión de Quick Report. A continuación se […]
septembre 22, 2017

Cómo detectar si existe alguna impresora definida.

procedure TForm1.Button1Click(Sender: TObject); var Device, Driver, Port : array [0..255] of Char; Modo : Integer; begin Printer.GetPrinter(Device,Driver,Port,Modo); If Device <> '' then ShowMessage(Device) else ShowMessage('Sin definir […]
septembre 22, 2017

Validar un código de barras en EAN8 / EAN13

Function IsValidEAN(EANCode: String): Boolean; Var CheckSum1: String; Tmp, Tmp2: Integer; VerifyDigit: Integer; LectDigit: String; Begin // En principio, el valor por defecto en FALSE para IsValidEAN […]
septembre 22, 2017

cular la letra del NIF según el Nº del DNI

function NIF(DNI: String): Char; begin Result := Copy('TRWAGMYFPDXBNJZSQVHLCKET',StrToInt(DNI) mod 23+1,1)[1]; end;
septembre 22, 2017

Calcular la letra del NIF según el Nº del DNI

function NIF(DNI: String): Char; begin Result := Copy('TRWAGMYFPDXBNJZSQVHLCKET',StrToInt(DNI) mod 23+1,1)[1]; end;
septembre 22, 2017

Validación del CIF

Uniendo todos los mensajes aparecidos hasta el momento sobre el tema de la validación del CIF, he hecho un algoritmo entre todos ellos, que creo que […]
septembre 22, 2017

Cómo cambiar un parámetro de búsqueda en ejecución.

En tiempo de ejecución no hay problema en el cambio de parámetros. Poe ejemplo, un campo común a varias tablas y se precisa cambiar de una […]
septembre 22, 2017

De las aplicaciones monolíticas a traspasar el umbral de las dos capas

Actualmente existen básicamente tres sistemas o modelos de desarrollo de aplicaciones: monolítico, cliente/servidor y distribuido. El primero es el sistema tradicional que, con el tiempo, ha […]
septembre 22, 2017

SQL con campos fecha.

Nunca pases una fecha en forma literal, porque las bases de datos, segun como esten configuradas, pueden tener un formato default de fecha u otro. Por […]
septembre 22, 2017

Realizar búsquedas en cualquier lugar de un campo.

Si buscas la palabra en cualquier parte del comentario: Select comentario from tabla where comentario likes ‘%GRAFICAS%’ Al principio : ‘GRAFICAS%’ Al final : ‘%GRAFICAS’ En […]
septembre 22, 2017

Obtener información sobre las memorias.

Doy por supuesto que existe un StringGrid donde voy depositando los datos. procedure TForm1.Button1Click(Sender: TObject); var Memoria:TMemoryStatus; Evalor:Extended; begin // Datos de memoria Memoria.dwLength:=SizeOf(Memoria); GlobalMemoryStatus(Memoria); StringGrid1.Cells[0,1]:='Datos […]
septembre 22, 2017

Cómo acceder a múltiples unidades de CD-Audio

En caso de que tengamos un equipo con múltiples lectores de CD-ROM, al usar MCI para reproducir indicando el dispositivo genérico cdaudio siempre se usará la […]
septembre 22, 2017

Qué necesito hacer para lanzar mi cliente y acceder a mi servidor a través de DCOM

Un setup que normalmente funciona es la instalación del Service Pack 3 en las terminales con NT 4.0. Si se va a utilizar cualquier aplicación cliente […]
septembre 22, 2017

Creación de un cliente CORBA con Delphi 4

Pasos que hay que dar: 1. Añadir el módulo CorbaObj a la cláusula Uses. 2. Llamar a CorbaInitialize; antes de realizar ninguna operación con CORBA. 3. […]
septembre 22, 2017

Creación de un servidor CORBA con Delphi 4

Veamos lo sencillo que resulta crear un servidor CORBA utilizando Borland Delphi 4, servidor que posteriormente responderá a peticiones de uno o más clientes. Lógicamente se […]
septembre 22, 2017

Modelos de componentes en entornos distribuidos

DCOM es una extensión del modelo COM para entornos distribuidos y, como tal, cuenta con las mismas características, ventajas y desventajas de COM. Este modelo está […]
septembre 22, 2017

Comunicación entre capas. DCOM, Java RMI y CORBA

El principal problema que plantea el desarrollo de aplicaciones distribuidas es la comunicación entre los diferentes componentes que la forman. Se asume que hay una conexión […]
septembre 22, 2017

De las aplicaciones monolíticas a traspasar el umbral de las dos capas

Actualmente existen básicamente tres sistemas o modelos de desarrollo de aplicaciones: monolítico, cliente/servidor y distribuido. El primero es el sistema tradicional que, con el tiempo, ha […]
septembre 22, 2017

Algo llamado CORBA

CORBA es una arquitectura que facilita la interoperabilidad entre componentes distribuidos, desarrollados en diferentes lenguajes y que se ejecutan sobre distintas plataformas y sistemas operativos. CORBA […]
septembre 22, 2017

Creación de un documento Excel desde Delphi 5

En la pestaña Server se encuentra el componente ExcellApplication que es el que debemos utilizar para acceder a sus utilidades. El rango (Range) es un objeto […]
septembre 22, 2017

¿Cómo automatizo Word 7?

Se puede acceder a cualquiera de los interfaces expuestos en el servidor de automatización de Word, que pueden ser encontrados cargando MSWORD8.OLB en Delphi que a […]
septembre 22, 2017

Creación de un documento Excel desde Delphi 5

En la pestaña Server se encuentra el componente ExcellApplication que es el que debemos utilizar para acceder a sus utilidades. El rango (Range) es un objeto […]
septembre 22, 2017

Bases de datos y objetos OLE

Estoy construyendo una aplicación en Delphi que accede a una base de datos ACCESS. Tengo definido en esta base de datos un campo de tipo OLE, […]
septembre 22, 2017

¿Cómo hacer para que el cliente instale las tablas en el lugar que elija sin interferir a la aplicación?

En el proceso de la creación de instalación del programa se utilizará el InstallShield (aunque hay otras posibilidades que no vienen con los paquetes de Delphi). […]
septembre 22, 2017

Validar un código de barras en EAN8 / EAN13

function EsEan(CodigoEan : String) : Boolean; var CheckSum, DigitoOrig : String; i, Digito, Longitud : Integer; begin Longitud := Length(CodigoEan); // Comprobar que no hay menos […]
septembre 22, 2017

Selección de impresora con Quick Report tras la previsualización.

var PrinterSettings: TQuickRepPrinterSettings; en ese caso tendrás que asignarle en el OnPreview lo siguiente: With TFCustomPreview.Create(Self) do begin QRPreview1.QRPrinter := QuickRep1.QRPrinter; PrinterSettings := QuickRep1.PrinterSettings; Show; end; […]
septembre 22, 2017

Abrir el cajón portamonedas.

var nPrn:TextFile; abrir:string; begin AssignFile(nPrn, 'LPT1'); Rewrite(nPrn); WriteLn(nPrn,cadena); //cadena:='chr(27)+... dependiendo de la impresora' CloseFile(nPrn); end
septembre 22, 2017

Uso del componente TQRMemo en un informe

Estoy utilizando una tabla Paradox con Delphi 3 y los componentes Quick Report. El problema que tengo es que no puedo imprimir un campo memo variable […]
septembre 22, 2017

Cómo detectar si existe alguna impresora definida.

procedure TForm1.Button1Click(Sender: TObject); var Device, Driver, Port : array [0..255] of Char; Modo : Integer; begin Printer.GetPrinter(Device,Driver,Port,Modo); If Device <> '' then ShowMessage(Device) else ShowMessage('Sin definir […]
septembre 22, 2017

Obtener el camino de las carpetas de sistema

Para añadir un elemento al escritorio de Windows, al menú Programas o a la carpeta de Inicio, no hay mas que crear el archivo o acceso […]
septembre 22, 2017

Cómo cambiar la resolución de pantalla desde el programa

function DynamicResolution(X, Y: word): BOOL; var lpDevMode: TDeviceMode; begin Result := EnumDisplaySettings(nil, 0, lpDevMode); if Result then begin lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT; lpDevMode.dmPelsWidth := X; […]
septembre 22, 2017

Obtener y/o cambiar el estado de Insert.

Utilizamos el valor de las teclas virtuales según su estado en el buffer, considerando que está activado cuando la función GetKeyBoardState devuelve 1. Si queremos cambiarla […]
septembre 22, 2017

Cómo ejecutar una aplicación externa.

Muy simple, tan solo acordarse de incluir en Uses la ShellApi. Hay varias opciones, esta es una válida: ShellExecute(Self.handle,’Open’,’Compresor’,’Parámetros de compresón’,nil, SW_SHOWNORMAL); Para ejecutar, por ejemplo, […]
septembre 22, 2017

Cambiar valores de fecha y hora de Windows desde el programa

Podría no ser este un ejemplo del API de Windows en sentido estricto, lo incluyo por dos motivos, se utiliza una variable del tipo TsystemTime, que […]
septembre 22, 2017

Crear un DSN de sistema desde Delphi.

Este ejemplo es para un DSN de Access. procedure TForm1.Button1Click(Sender: TObject); var Reg:TRegistry; Path:String; begin Path:=’c:\Neptuno.mdb’; Reg:=TRegistry.Create; Try Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey(‘\Software\ODBC\ODBC.INI\jose’,True); Reg.WriteString(‘DBQ’,Path); Reg.WriteString(‘Driver’,’c:\windows\system\odbcjt32.dll’); Reg.WriteInteger(‘DriverId’,25); Reg.WriteString(‘FIL’,’MS Access;’); Reg.WriteInteger(‘SafeTransactions’,0); […]
septembre 22, 2017

Conocer la ubicación del ejecutable

ExtractFilePath(Application.ExeName) o ExtractFilePath(ParamStr(0))
septembre 22, 2017

Cómo saber sobre que control está situado el ratón

Pon dos TLabels en tu form (Label1 y Label2). Pon un TPopupMenu, asociandolo a la form. Pon este código en el evento OnPopUp del PopUpMenu procedure […]
septembre 22, 2017

Conocer el tipo de procesador

La función GetSystemInfo() proporciona información sobre el sistema. Su utilización es simple, tan solo precisa utilizar la estructura System_info, y para ello se le pasa como […]
septembre 22, 2017

Obtención del tamaño de un archivo grande (sin utilizar Size)

Para no utilizar Size que no funcionará en discos grandes ya que se producirá una excepción al intentar meter en un ‘integer’ el tamaño del archivo […]
septembre 22, 2017

Cómo saber si la barra de tareas está con « autohide » o no.

uses ShellAPI ; Function BarraEscondida : Boolean ; var AppBarData : TAppBarData ; begin AppBarData.cbsize := SizeOf(AppBarData) ; Result := ((SHAppBarMessage(ABM_GetState,AppBarData) and (Abs_AutoHide) > 0)) ; […]
septembre 22, 2017

Ejecutar una utilidad Windows.

De la misma forma que se hace con un programa externo, solo es conocer su nombre. Se puede utilizar ShellExecute(handle,‘open’,‘calc.exe’,nil,nil,sw_shownormal); Teniendo cuidado en incluir en Uses […]
septembre 22, 2017

Activar o detener la reproducción de sonido.

Para detener la reproducción tan sólo hay que llamar de nuevo a la función facilitando Nil como primer parámetro. Tras insertar dos botones en un formulario, […]
septembre 22, 2017

Cómo conseguir tiempos de espera exactos en Windows.

No utilizando un « timer » tradicional, cuya exactitud no es muy buena debida a dos causas: la naturaleza multimedia de Windows y el hecho de que la […]
septembre 22, 2017

¿Cómo puedo apagar el ordenador o hacer un reset desde mi programa?

Utilizando Windows 95 o 98 if ExitWindowsEx (0,0) = 0 then showmessage ('No puedo reiniciar Windows); if ExitWindowsEx (1,0) = 0 then showmessage ('No puedo cerrar […]
septembre 22, 2017

Obtención del tamaño de un archivo

Para ello tenemos que introducir la unidad ShellApi Uses ShellApi; Llamamos a la función que hemos denominada Tamanyo(), ya que no es culpa nuestra que las […]
septembre 22, 2017

Ejemplo del sentido de una aplicación utilizando varios hilos

Imaginemos que estamos creando una aplicación que va a ejecutarse en un servidorpara atender peticiones de clientes. Esta aplicación podría ser un servidor de bases de […]
septembre 22, 2017

¿Qué son aplicaciones multihilo?

Explicado muy básicamente: son aplicaciones que ejecutan simultáneamente varios procedimientos. Es decir, en lugar de ejecutarse de principio a fin de manera secuencial, el hilo principal, […]
septembre 22, 2017

Notificación de cambios en un directorio

Os escribo de nuevo para ver si me podeis orientar sobre un pequeño tema que estoy realizando en Delphi 3.0 para Win’95. Lo que pretendo es […]
septembre 22, 2017

Imagen de fondo en un formulario MDI.

Para colocar una imagen en el área cliente de un formulario MDI (esto es, un formulario que tenga la propiedad ‘FormStyle = fsMDIForm’) se utiliza una […]
septembre 22, 2017

Añadir barras a un TeeChart en ejecución

procedure TForm1.Button1Click(Sender: TObject); var MiSerie:TBarSeries; begin MiSerie:=TBarSeries.Create(Self); With MiSerie do begin ParentChart:=Chart1; // o como se llame, del tipo TChart Add(VarBarra1,'', clRed); // VarBarra es tu […]
septembre 22, 2017

Cambiar el formato de fecha con independencia del Panel de Control

procedure TForm1.Button1Click(Sender: TObject); var FormatoFecha: PChar; ErrorCode: DWORD; ErrorMessage: Pointer; begin FormatoFecha:='dd/MM/yyyy'; if not SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE,FormatoFecha) then begin file://si no se produce la modificación mostrar mensaje […]
septembre 22, 2017

Cómo saber cual es la edad de una persona en años, meses y dias, al dia de hoy.

* Función para calcular edad */ function Edad(Fecha:TDateTime):String; var A, AA, M, MM, D, DD: Word; Anio, Mes, Dia: double; begin DecodeDate(Fecha, A, M, D); DecodeDate(Date, […]
septembre 22, 2017

Cómo saber si un año es bisiesto

procedure TForm1.Button1Click(Sender: TObject); begin if IsLeapYear(2001) then showmessage('bisiesto') else showmessage('No bisiesto') end;
septembre 22, 2017

Qué día de la semana le corresponde a cualquier fecha.

Por ejemplo, para saber en qué día cae el 14 de octubre del 2002 procedure TForm1.Button1Click(Sender: TObject); var dia:byte; begin dia:=DayOfWeek(encodedate(2002,10,14)); case dia of 1: Showmessage('Domingo'); […]
septembre 22, 2017

Obtención del día de la semana

caption := LongDayNames[DayOfWeek(date)]
septembre 22, 2017

Cómo convertir un formato de tipo fecha a una cadena de caracteres

Para transformar la fecha de sistema a una cadena de tipo String, del tipo día – mes – año ShowMessage(FormatDateTime('ddmmyyyy',date)); Para transformar cualquier fecha, pero con […]
septembre 22, 2017

Cómo comprobar y obtener las partes de una fecha

¿Que función me permite comprobar que el dato que se introduce en un campo fecha es válido?. ¿Que función me da el año, mes, dia de […]
septembre 22, 2017

Realizar una pausa.

La función similar a Delay() de Pascal, en Delphi es Sleep(msegundos).
septembre 22, 2017

Calculo de la letra del N.I.F

Consideramos el número del DNI como un string: dni:='123456789'; showmessage(copy('TRWAGMYFPDXBNJZSQVHLCKET',StrToInt(dni) mod 23 + 1,1));
septembre 22, 2017

Cómo hacer un Array de Componentes

var EditArray : Array [1..20] of TEdit; procedure TForm1.FrmCreate(Sender: TObject); var n : integer; begin for n := Low(EditArray) to High(EditArray) do begin EditArray[n] := TEdit.Create(self); […]
septembre 22, 2017

Cálculo del dígito de control en una cuenta corriente.

Un número de cuenta corriente se compone de 20 dígitos: BBBBSSSSddCCCCCCCCCC Donde B son los cuatro dígitos del banco, S los cuatro de la sucursal, d […]
septembre 22, 2017

Cambiar el foco entre componentes.

Para para pasar el foco al componente siguiente de quien lo tiene: SendMessage(Form1.Handle, WM_NEXTDLGCTL, 0, 0) Para pasarlo al anterior: SendMessage(Form1.Handle, WM_NEXTDLGCTL, 0, 0)
septembre 22, 2017

Variables globales a toda la aplicación.

Si quieres que una variable pueda ser utilizada por todas las forms de tu apliacion, haz lo siguiente: Create una Unit (File-New-Unit) y pon tus variables […]
septembre 22, 2017

Ocultar aplicación en la barra de tareas.

procedure TfrmMain.BtnHideFromTaskBarClick(Sender: TObject); begin ShowWindow( Application.Handle, SW_HIDE ); SetWindowLong( Application.Handle, GWL_EXSTYLE, GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW); ShowWindow( Application.Handle, SW_SHOW ); end;
septembre 22, 2017

Cambiar el Tab por Enter en todo el programa.

1- se define un procedimiento que se le tiene que asignar en el on create de la siguiente forma: procedure TFInicial.FormCreate(Sender: TObject); begin Application.OnMessage := AppMessage; […]
septembre 22, 2017

Hallar el número de la semana en que se encuentra una fecha

function NumSemana(Fecha:string):integer; var PrimerDia:TDate; DiaDelPrimerDia:integer; begin {Calculamos primer dia del año} PrimerDia:=StrToDate('01/01/'+Copy(Fecha,7,2)); {Calculamos dia de la semana que empieza por lunes} If DayOfWeek(PrimerDia)-1 =0 then DiaDelPrimerDia:=7 […]
septembre 22, 2017

Añadir puntos de miles a un número.

procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin i:=2538456; Label1.Caption:=FormatFloat('#,',i); end;
septembre 22, 2017

Pasar los datos de un TTreeView a una tabla.

Este ejemplo, lo he tomado de una aplicación propia. Me basé en un ejemplo de Francisco Charte. Al guardar los datos en la tabla (he utilizado […]
septembre 22, 2017

Pasar datos desde una tabla a un TTreeView.

Este ejemplo, lo he tomado de una aplicación propia. Me basé en un ejemplo de Francisco Charte. Al guardar los datos en la tabla (he utilizado […]
septembre 22, 2017

Rotación de un texto.

Uses Windows, Graphics; procedure AngleTextOut(Canvas: TCanvas; const Text: String; x, y, angle: Integer); var LogFont : TLogFont; SaveFont : TFont; begin SaveFont := TFont.Create; SaveFont.Assign(Canvas.Font); GetObject(SaveFont.Handle, […]
septembre 22, 2017

Conocer el tamaño en bytes de un fichero de texto.

procedure TForm1.Button1Click(Sender: TObject); Var Fichero: File; Tamanyo: Integer; Begin Try AssignFile(Fichero,'c:\elfichero.txt'); Reset(Fichero,1); Tamanyo := FileSize(Fichero); CloseFile(Fichero); showmessage(FloattoStr(Tamanyo)); Except showmessage('Error'); End; End;
septembre 22, 2017

Enviar caracteres a cualquier componente.

procedure TForm1.Button1Click(Sender: TObject); begin sendmessage(Edit1.Handle, WM_Char, 65,0) end;
septembre 22, 2017

Adaptarse a la resolución actual

Me gustaría saber cómo hay que programar una aplicación Delphi para que se pueda ejecutar en diferentes configuraciones gráficas (640*480, 800*600, diferentes resoluciones de color, etc..), […]
septembre 22, 2017

Pasar parámetros a un ejecutable.

Por supuesto hay que probar desde fuera del Entorno para que no lance una excepción, en realidad se se capturan dentro del procedimiento que los vaya […]
septembre 22, 2017

Copias de ficheros.

El hecho de copiar un fichero, directorio o lo que sea es fácil, como si es todo un disco duro, hay muchas opciones. Si quieres que […]
septembre 22, 2017

Modificar el color del hint y conseguir que desaparezca sin mover el ratón.

procedure TForm1.FormActivate(Sender: TObject); begin Application.HintColor:=clBlue; // Ventana de mensajes en azul Application.HintPause:=1000; // Espera 1000 msg antes de mostrar el mensaje Application.HintHidePause:=2000; // A los 2000 […]
septembre 22, 2017

Cómo hacer que se visualice una pantalla de presentación (Splash)

Tan sólo se trata de abrir el .dpr de la aplicación e introducir un par de líneas. FormSplash := TFormSplash.Create(nil); FormSplash.Update; Personalmente me gusta cerrarla transcurrido […]
septembre 22, 2017

Leer y cambiar la posición del ratón.

Se obtiene la posición con: var position:tpoint begin GetCursorPos(position) Y en position.x y position.y tienes las coordenadas del ratón en la pantalla. Para posicionarlo en un […]
septembre 22, 2017

Cómo saber si el usuario tiene seleccionados la opcion de fuentes pequeñas normal o grandes.

Consulta la propiedad PixelsPerInch del objeto Screen. En versiones previas a Windows 98 tan sólo se podía elegir entre fuentes grandes y pequeñas, casos en los […]
septembre 22, 2017

Cómo pasar un menú a un árbol o TTreeView.

Este procedimiento hace lo que quieres. Tan sólo tienes que llamarlo pasando como parámetros el menú a copiar y el TTreeView destino. No elimina cualquier contenido […]
septembre 22, 2017

Cómo programar una utilidad sin formularios.

Programándolo en el dpr, por ejemplo, muestro un mensaje sin form: program Project1; uses Forms,Dialogs; {$R *.RES} begin Showmessage('Hola'); Application.Initialize; Application.Run; end. Tras crear una aplicación, […]
septembre 22, 2017

Cómo usar las diferentes versiones de Delphi (definiciones condicionales).

VER80 – Delphi 1 VER90 – Delphi 2 VER100 – Delphi 3 VER120 – Delphi 4 VER130 – Delphi 5 Por ejemplo lo siguiente compilaría en […]
septembre 22, 2017

¿Cómo sé lo que está tecleándose en el grid?

Puedes ver lo que está tecleándose en un TDBGrid miranto en el control TInPlaceEdit del TDBGrid. Hay que tener cuidado y asegurarse de que se crea […]
septembre 22, 2017

Búsqueda de archivos

El problema con las rutinas es que no buscan un archivo por extensión sino por nombre pero es bastante simple hacer el cambio apropiado y buscar […]
septembre 22, 2017

Constante integer demasiado larga’ en operaciones matemáticas

Cuando a una función matemática (así las contenidad en math.pas) se le asigna un valor, se considera a éste de tipo ‘integer’ por defecto. Para que […]
septembre 22, 2017

Posicionar el ratón en un punto del form

Posicionarlo en un lugar de la pantalla es facil SetCursorPos(x,y) Pero al ser x e y las coordenadas en relación a la pantalla completa, no solo […]
septembre 22, 2017

¿Cómo puedo programar la configuración de los puertos COM bajo Windows 95?

procedure TForm1.Button1Click(Sender: TObject); var CommPort : string; hCommFile : THandle; Buffer : PCommConfig; size : DWORD; begin CommPort := 'COM1'; {Open the comm port} hCommFile := […]
septembre 22, 2017

Cómo escribir en el puerto COM1 o COM2

Los puertos COM en Windows se tratan de manera similar a otros dispositivos (archivos en disco, pipes, etc.). Como cualquier otro dispositivo, un puerto necesita un […]
septembre 22, 2017

Conocer el nombre del usuario activo.

function CurrentUserName:String; var u: array[0..127] of Char; sz:DWord; begin sz:=SizeOf(u); GetUserName(u,sz); Result:=u; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(CurrentUsername); end;
septembre 22, 2017

Como hacer para lanzar automáticamente la conexión a Internet

Si el ordenador cuenta tan sólo con una cuenta de conexión a Internet, que es lo habitual, puede utilizarse la función InternetAutoDial() para llamar y conectar […]
septembre 22, 2017

Lectura del puerto de impresora desde Delphi

Estoy trabajando en Delphi 3.0, y necesito leer un dato del puerto paralelo, no he encontrado una funcion propia de Delphi o informacion sobre un control […]
septembre 22, 2017

Marcar un número de teléfono.

implementation {$R *.DFM} var hCommFile : THandle; // Botón para establecer la comunicación procedure TForm1.Button1Click(Sender: TObject); var NumeroTfno : string; PuertoCom : string; numero : cardinal; […]
septembre 22, 2017

Elementos con diferentes colores en un ListBox

El control ListBox dispone de una propiedad, llamada Style, que nos permite seleccionar el estilo. Si elegimos el estilo lbOwnerDrawFixed el control genera un evento OnDrawItem […]
septembre 22, 2017

Obtener la posición del cursor en un TRichEdit o Tmemo

Los controles TMemo y TRichEdit no disponen de propiedad ni método alguno que facilite la posición actual del cursor, por lo que es preciso usar algunos […]
septembre 22, 2017

Cómo cambiar el color del foco en un DBGrid

Pon la propiedad DefaultDrawing a False y en el evento OnDrawColumnCell pon este codigo: if gdSelected in State then DbGrid1.Canvas.Brush.Color := clYellow; if gdFocused in State […]
septembre 22, 2017

Formulario transparente.

En el evento onCreate del mismo se puede poner: Brush.Style := bsClear; En realidad lo que hace es tomar como fondo lo que hubiese en pantalla, […]
septembre 22, 2017

Grid con celdas de varias lineas

* Pon un TStringGrid (StringGrid1) en tu form * Pon este código en el evento OnDrawCell del StringGrid: procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Integer; Rect: TRect; […]
septembre 22, 2017

Crear matriz de componentes en ejecución

Este es un ejemplo utilizando Label, se crea la matriz de etiquetas, de la misma forma podríamos cambiar el componente. implementation Var Etiquetas : Array [1..8] […]
septembre 22, 2017

Cambiar el color de las filas en un StringGrid.

Utiliza un código similar al siguiente en el evento OnDrawCell’: procedure TLo_Que_Sea.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var S: String; begin if ((0 […]
septembre 22, 2017

Simular la pulsación de una tecla sobre un componente sin saber quien tiene el foco.

var x,tecla:integer begin for x:=0 to ComponentCount-1 do if (Componentes[x] is TEdit) and (TEdit(Components[x]).Focused=True)then PostMessage(TEdit(Components[x]).handle,WM_KEYDOWN,tecla,0); Donde « tecla » almacenará VK_RETURN, VK_LEFT, o la virtual que se quiera. […]
septembre 22, 2017

Para qué sirve y para qué no sirve TmaskEdit.

Cuando se pretende dar un formato a la visualización de una variable numérica, lo último probablemente que se puede utilizar es TmaskEdit. Perfecto, tiene sus comodines […]
septembre 22, 2017

Cómo borrar un campo de una tabla en Oracle.

Oracle no te permite borrar un campo de una tabla. Deberás recrear tu tabla sin ese campo. Lo que suelo hacer es renombrar la tabla (con […]
septembre 22, 2017

Hacer transacciones entre dos tablas.

Supongamos que tenes una base de nombre BASE. Todas tus querys y tables deben estar relacionadas con BASE. El bloque de codigo de una transaccion podria […]
septembre 22, 2017

Cómo puedo guardar el contenido de un TtreeView en una tabla Paradox

procedure Tform1.GuardarClick(Sender: TObject); var N:byte; Begin // Borro el contenido de la tabla TablaX.Active:=True; while not TablaX.Eof do begin TablaX.delete; end; TablaX.Active:=False; // ejecuto un pack […]
septembre 22, 2017

Copiar información de un campo memo de una tabla a otro campo memo de otra tabla

Aquí hay un ejemplo de uso de un TBlobStream: procedure TForm1.Button1Click(Sender: TObject); var BS1, BS2: TBlobStream; begin BS1 := TBlobStream.Create(Table1Notes,bmRead); try Table2.Edit; BS2 := TBlobStream.Create(Table2MyBlob,bmReadWrite); try […]
septembre 22, 2017

Evitar la petición de usuario y palabra de paso.

Utilizando un TDataBase y especificando la propiedad LoginPrompt a False.
septembre 22, 2017

Cómo Obtener la lista de Impresoras de Windows.

Un ejemplo que te asigna la lista de impresoras a un ComboBox que se llama Lista: Lista->Items->Assign (Printer()->Printers); La lista de impresoras está en la propiedad […]
septembre 22, 2017

Convertir BMP a JPG

//Lo primero es incluir la cabecera <jpeg.hpp> #include <jpeg.hpp> //------------------------------------------------------------------------------------- //Crea un botón y detron de este escribe el siguiente código. Graphics::TBitmap *bmp=new Graphics:: TBitmap(); TJPEGImage […]
septembre 22, 2017

Qué día de la semana le corresponde a cualquier fecha.

Por ejemplo, para saber en qué día cae el 14 de octubre del 2002 void __fastcall TForm1::Button1Click(TObject *Sender) { BYTE dia; dia=DayOfWeek(EncodeDate(2002,10,14)); switch(dia) { case 1: […]
septembre 22, 2017

Llamada a internet.

String St = « http://www.wbuilder.f2s.com »; ShellExecute(Handle, »open »,St.c_str(),0,0,SW_SHOW); Como se podría hacer a traves de una función ?? void OpenURL(void) { (32 >= (int)ShellExecute(NULL, « open », « http://www.wbuilder.f2s.com »,NULL, NULL, SW_SHOWNORMAL)); }
septembre 22, 2017

Crear y eliminar un botón en ejecución.

Este Ejemplo muestra como crear un boton y como luego eliminarlo todo en tiempo de ejecucion. Como ejemplo, ponemos unos botones de prueba, en concreto 5 […]
septembre 22, 2017

Para limitar el movimiento del cursor del raton a una zona de un formulario.

TRect Rectangulo ; Rectangulo.Left=10; // {Izquierda} Rectangulo.Right=300; // {Derecha} Rectangulo.Top=10; // {Arriba} Rectangulo.Bottom=300; // {Abajo} ClipCursor(&Rectangulo);   Para aquitar la zona, basta con poner ClipCursor(NULL);
septembre 22, 2017

Cómo realizar una espera programada

A veces, nos interesa realizar una determinada espera controlada. Usando la función Api GetTickCount(void) sería una de la formas para realizar esto, para ello crearemos un […]
septembre 22, 2017

Cómo realizar un enlace URL desde un TLabel.

Puede ocurrir que nos interese realizar un enlace desde nuestra aplicación a una determinada dirección de Internet. De tal forma, cuando pinche en una determinada zona […]
septembre 22, 2017

Activar y desactivar el refresco de un formulario.

Puede ser Interesante evitar la actualización de un formulario ( o de un control ) para evitar parpadeos, acelerar procesos evitando el repintado de algún control, […]
septembre 22, 2017

Cómo detectar si nuestra aplicación está ejecutándose.

Unas de las muchas formas, de detectar si nuestra aplicación ya esta funcionando, y por lo tanto evitar dobles arranques, es utilizando un semáforo binario, llamado […]
septembre 22, 2017

Rotación de un Texto.

// Ejemplo sacado en parte de pag.901. Guia de Desarroyo c++ Builder 5 TLogFont logFont; // Una Encapsulacion de la VCL de WIN32 LOGFONT // La […]
septembre 22, 2017

Si necesitamos calcular el tamaño que nos ocupa un directorio.

Podemos hacer lo siguiente: void __fastcall TForm1::Button1Click(TObject *Sender) { TSearchRec sr; double tamanyo=0; int iAttributes = 0; if (FindFirst("c:\\windows\\*.*", iAttributes, sr) == 0) { tamanyo += […]
septembre 22, 2017

Como almacenar imágenes en Campos de Tipo GRAPHICS en base de datos Paradox.

  Para cargar una imagen en el campo ‘Graphics’ desde un fichero puedes utilizar el método ‘LoadFromFile()’ del propio campo. El siguiente ejemplo está adaptado de […]
septembre 22, 2017

Cómo ejecutar un programa y esperar a que termine

El código siguiente es una función que permite ejecutar un programa y esperar a que termine, obteniendo el código de retorno. int WinExecAndWait32(AnsiString FileName, int Visibility) […]
septembre 22, 2017

¿Cómo ejecutar un WAV?

Para reproducir un archivo de sonido WAV desde Builder podemos usar la función PlaySound. La ayuda de esta función no esta integrada en el IDE del […]
septembre 22, 2017

Creación de un acceso directo

Para crear un acceso directo es necesario crear un objeto COM de la Shell de Windows, obteniendo un puntero a la interfaz IShellLink. Esta interfaz cuenta […]
septembre 22, 2017

Obtener el camino de las carpetas de sistema

Para añadir un elemento al escritorio de Windows, al menú Programas o a la carpeta de Inicio, no hay mas que crear el archivo o acceso […]
septembre 22, 2017

Cómo cambiar la resolución de pantalla desde el programa

function DynamicResolution(X, Y: word): BOOL; var lpDevMode: TDeviceMode; begin Result := EnumDisplaySettings(nil, 0, lpDevMode); if Result then begin lpDevMode.dmFields := DM_PELSWIDTH Or DM_PELSHEIGHT; lpDevMode.dmPelsWidth := X; […]
septembre 22, 2017

Obtener el nombre de usuario.

Se obtiene a través de la función del API de Windows, GerUserName. procedure TForm1.Button1Click(Sender: TObject); var buffer : array[0..255] of char; Tambuffer : DWORD; begin Tambuffer […]
septembre 22, 2017

Capturar teclas de todas las aplicaciones Windows

Mucha gente me pregunta acerca de la posibilidad de que nuestra aplicacion Delphi capture las pulsaciones de teclas del usuario, aunque el usuario no las haga […]
septembre 22, 2017

Compartir carpetas en Windows.

En principio es tan sencillo o tan complicado como usar la función de la API de Windows « NetShareAdd ». La preguntas es: ¿dónde está esta función? Pues […]
septembre 22, 2017

Copiar, Mover, Borrar o Renombrar archivos.

Si queremos hacer una operación de este tipo al estilo Windows, el siguiente ejemplo mueve un fichero que indicamos a la unidad A: utilizando la función […]
septembre 22, 2017

Activar o detener la reproducción de sonido.

Para detener la reproducción tan sólo hay que llamar de nuevo a la función facilitando Nil como primer parámetro. Tras insertar dos botones en un formulario, […]
septembre 22, 2017

Ejemplo del sentido de una aplicación utilizando varios hilos

Imaginemos que estamos creando una aplicación que va a ejecutarse en un servidorpara atender peticiones de clientes. Esta aplicación podría ser un servidor de bases de […]
septembre 22, 2017

Cambiar el formato de fecha con independencia del Panel de Control

procedure TForm1.Button1Click(Sender: TObject); var FormatoFecha: PChar; ErrorCode: DWORD; ErrorMessage: Pointer; begin FormatoFecha:='dd/MM/yyyy'; if not SetLocaleInfo(LOCALE_SYSTEM_DEFAULT, LOCALE_SSHORTDATE,FormatoFecha) then begin file://si no se produce la modificación mostrar mensaje […]
septembre 22, 2017

Cómo saber cual es la edad de una persona en años, meses y dias, al dia de hoy.

* Función para calcular edad */ function Edad(Fecha:TDateTime):String; var A, AA, M, MM, D, DD: Word; Anio, Mes, Dia: double; begin DecodeDate(Fecha, A, M, D); DecodeDate(Date, […]
septembre 22, 2017

Cómo saber si un año es bisiesto

procedure TForm1.Button1Click(Sender: TObject); begin if IsLeapYear(2001) then showmessage('bisiesto') else showmessage('No bisiesto') end;
septembre 22, 2017

Hallar el número de la semana en que se encuentra una fecha

function NumSemana(Fecha:string):integer; var PrimerDia:TDate; DiaDelPrimerDia:integer; begin {Calculamos primer dia del año} PrimerDia:=StrToDate('01/01/'+Copy(Fecha,7,2)); {Calculamos dia de la semana que empieza por lunes} If DayOfWeek(PrimerDia)-1 =0 then DiaDelPrimerDia:=7 […]
septembre 22, 2017

Pasar los datos de un TTreeView a una tabla.

Este ejemplo, lo he tomado de una aplicación propia. Me basé en un ejemplo de Francisco Charte. Al guardar los datos en la tabla (he utilizado […]
septembre 22, 2017

Rotación de un texto.

Uses Windows, Graphics; procedure AngleTextOut(Canvas: TCanvas; const Text: String; x, y, angle: Integer); var LogFont : TLogFont; SaveFont : TFont; begin SaveFont := TFont.Create; SaveFont.Assign(Canvas.Font); GetObject(SaveFont.Handle, […]
septembre 22, 2017

Eliminar la aplicación al salir de ella.

(Julio García) procedure SalirYBorrarExe; var NombreBat : string; FicheroBat : TStringList; begin NombreBat := ExtractFilePath(Application.ExeName)+'Borrar.bat'; FicheroBat := TStringList.Create(); FicheroBat.Clear; FicheroBat.Add(':BorrarExe'); FicheroBat.Add('del "' + Application.ExeName + '"'); […]
septembre 22, 2017

Simular la pulsación de una tecla cualquiera en el control activo de un form. No sé cual es el control que tiene el foco.

( José Luis Freire) var x,tecla:integer begin for x:=0 to ComponentCount-1 do if (Componentes[x] is TEdit) and (TEdit(Components[x]).Focused=True)then PostMessage(TEdit(Components[x]).handle,WM_KEYDOWN,tecla,0); Donde tecla almacenará VK_RETURN, VK_LEFT, o la […]
septembre 22, 2017

¿Cómo puedo programar la configuración de los puertos COM bajo Windows 95?

(De las Faq’s de Borland) procedure TForm1.Button1Click(Sender: TObject); var CommPort : string; hCommFile : THandle; Buffer : PCommConfig; size : DWORD; begin CommPort := 'COM1'; {Open […]
septembre 22, 2017

Cómo escribir en el puerto COM1 o COM2

Los puertos COM en Windows se tratan de manera similar a otros dispositivos (archivos en disco, pipes, etc.). Como cualquier otro dispositivo, un puerto necesita un […]
septembre 22, 2017

Conocer el nombre del usuario activo.

(Borland) function CurrentUserName:String; var u: array[0..127] of Char; sz:DWord; begin sz:=SizeOf(u); GetUserName(u,sz); Result:=u; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(CurrentUsername); end;
septembre 22, 2017

Crear matriz de componentes en ejecución

(José Luis Freire) Este es un ejemplo utilizando Label, se crea la matriz de etiquetas, de la misma forma podríamos cambiar el componente. implementation Var Etiquetas […]