como es un .rar muy grande que pesa unos 540mb que no se puede subir aqui los invito a descargarlo desde mi canal de telegram que esta en la firma de este POST.]]>| Component | Versión | Ubicación / Location |
| ---------------------------------------------------------------------| ----------------------------- |
| Harbour | 3.2.1dev (r2609180937), ©1999-2025 | C:\hmg.3.7\harbour64\bin |
| GCC | x86_64-posix-seh-rev1, MinGW-Builds 16.1.0 | C:\hmg.3.7\mingw64\bin |
| HB_COMPILER | mingw64 → libs en LIB-64 | |
| ---------------- | ---------------------------------------------------- | ----------------------------- |
| Harbour | 3.2.1dev (r2609180937), ©1999-2025 | C:\hmg.3.7\harbour\bin |
| GCC | i686-ucrt-posix-dwarf r3 (Brecht Sanders) 14.2.0 | C:\hmg.3.7\mingw\bin |
| HB_COMPILER | mingw → libs en lib | |
| ---------------- | ---------------------------------------------------- | ----------------------------- |
Ejecutar / Run : C:\hmg.3.7\BuildLib32.bat
Ejecutar / Run : C:\hmg.3.7\BuildLib64.bat
Ejecutar / Run : C:\hmg.3.7\BuildIDE.bat
Ejecutar / Run : C:\hmg.3.7\ide\unicode.exe
Los scripts de construcción de libhmgxx.a tiene barra de progreso como asi tambien la construccion del IDE , ya no es un proceso silencioso
The libhmgxx.a construction scripts have a progress bar as well as the construction of the IDE, but it is not a silent process
Nuevo / New : Toolbutton solo accesible desde NewForm()
nuevo / New : ToolTip
ejemplos / Sample : C:\hmg.3.7\samples\Controls\ToolTip\ToolTip_Styles
Reference : file:///C:/hmg.3.7/doc/data/settooltipstyle.htm
Nuevo / New : MessageBox
Ejemplo / Sample : C:\hmg.3.7\samples\Controls\MessageBox\MessageBox_Styles
Reference : file:///C:/hmg.3.7/doc/data/SetMsgBoxModern.htm
ANSI declarado Obsoleto.
ANSI declared obsolete.
Se elimino Tooltip de la solapa configuracion del inspector de proyecto en Unicode , molesta y tiene mala lectura. Por ende al crear un proyecto nuevo se agregan al .hbc
sino se puede copiar desde aqui : C:\hmg.3.7\source\unicode\Config.hbc
If I delete Tooltip from the Unicode configuration of the project inspector, it is annoying and has bad reading. Why do you want to create a new project? Add to .hbc
You can copy it from here: C:\hmg.3.7\source\unicode\Config.hbc
como es un .rar muy grande que pesa unos 540mb que no se puede subir aqui los invito a descargarlo desde mi canal de telegram que esta en la firma de este POST.]]>| Component | Versión | Ubicación / Location |
| ---------------------------------------------------------------------| ----------------------------- |
| Harbour | 3.2.1dev (r2609180937), ©1999-2025 | C:\hmg.3.7\harbour64\bin |
| GCC | x86_64-posix-seh-rev1, MinGW-Builds 16.1.0 | C:\hmg.3.7\mingw64\bin |
| HB_COMPILER | mingw64 → libs en LIB-64 | |
| ---------------- | ---------------------------------------------------- | ----------------------------- |
| Harbour | 3.2.1dev (r2609180937), ©1999-2025 | C:\hmg.3.7\harbour\bin |
| GCC | i686-ucrt-posix-dwarf r3 (Brecht Sanders) 14.2.0 | C:\hmg.3.7\mingw\bin |
| HB_COMPILER | mingw → libs en lib | |
| ---------------- | ---------------------------------------------------- | ----------------------------- |
Ejecutar / Run : C:\hmg.3.7\BuildLib32.bat
Ejecutar / Run : C:\hmg.3.7\BuildLib64.bat
Ejecutar / Run : C:\hmg.3.7\BuildIDE.bat
Ejecutar / Run : C:\hmg.3.7\ide\unicode.exe
Los scripts de construcción de libhmgxx.a tiene barra de progreso como asi tambien la construccion del IDE , ya no es un proceso silencioso
The libhmgxx.a construction scripts have a progress bar as well as the construction of the IDE, but it is not a silent process
Nuevo / New : Toolbutton solo accesible desde NewForm()
nuevo / New : ToolTip
ejemplos / Sample : C:\hmg.3.7\samples\Controls\ToolTip\ToolTip_Styles
Reference : file:///C:/hmg.3.7/doc/data/settooltipstyle.htm
Nuevo / New : MessageBox
Ejemplo / Sample : C:\hmg.3.7\samples\Controls\MessageBox\MessageBox_Styles
Reference : file:///C:/hmg.3.7/doc/data/SetMsgBoxModern.htm
ANSI declarado Obsoleto.
ANSI declared obsolete.
Se elimino Tooltip de la solapa configuracion del inspector de proyecto en Unicode , molesta y tiene mala lectura. Por ende al crear un proyecto nuevo se agregan al .hbc
sino se puede copiar desde aqui : C:\hmg.3.7\source\unicode\Config.hbc
If I delete Tooltip from the Unicode configuration of the project inspector, it is annoying and has bad reading. Why do you want to create a new project? Add to .hbc
You can copy it from here: C:\hmg.3.7\source\unicode\Config.hbc
Attachments
Attachments
Attachments
Attachments
Attachments
Attachments
Attachments
Attachments
Code: Select all
C:\Proyectos\UniversalUpdater\TEST\Demo.cmdCode: Select all
C:\Proyectos\UniversalUpdater\TEST\Demo.cmdCode: Select all
C:\Proyectos\UniversalUpdater\TEST\Demo.cmdCode: Select all
C:\Proyectos\UniversalUpdater\TEST\Demo.cmdCode: Select all
ON KEY F1 ACTION { ... ,... }
ON KEY F6 ACTION { ... ,... }
ON KEY F12 ACTION { ... ,... }
Code: Select all
ON KEY F1 ACTION { ... ,... }
ON KEY F6 ACTION { ... ,... }
ON KEY F12 ACTION { ... ,... }
Attachments
Attachments
]]>RegWrite( cKey + "UserDebuggerHotKey", 47 ) // F12
MsgInfo( "need Re-boot to use F12" )
...
ON KEY F12 OF Win_1 ACTION Win_1.Release
]]>RegWrite( cKey + "UserDebuggerHotKey", 47 ) // F12
MsgInfo( "need Re-boot to use F12" )
...
ON KEY F12 OF Win_1 ACTION Win_1.Release
Attachments
BseIndia API.rar (1670.91 KiB)Attachments
BseIndia API.rar (1670.91 KiB)Code: Select all
https://github.com/BennyThadikaran/BseIndiaApipero esto implica instalar Pyton en su ultima versión.An Unofficial Python Api for BSE India stock exchange.
Code: Select all
https://github.com/BennyThadikaran/BseIndiaApipero esto implica instalar Pyton en su ultima versión.An Unofficial Python Api for BSE India stock exchange.
Code: Select all
https://gemini.google.comCode: Select all
Describe the use of this.:
oHttp := CreateObject( "WinHttp.WinHttpRequest.5.1" )Code: Select all
https://gemini.google.comCode: Select all
Describe the use of this.:
oHttp := CreateObject( "WinHttp.WinHttpRequest.5.1" )Code: Select all
C:\Proyectos\Sample\ClientServerVFP\ThreeTierSPT\threetier.exeCode: Select all
cd C:\Proyectos\Sample
read C:\Proyectos\Sample\ClientServerVFP\ThreeTierSPTCode: Select all
C:\Proyectos\Sample\ClientServerVFP\ThreeTierSPT\threetier.exeCode: Select all
cd C:\Proyectos\Sample
read C:\Proyectos\Sample\ClientServerVFP\ThreeTierSPTAttachments
Attachments
Attachments
Attachments
Code: Select all
#pragma BEGINDUMP
#include <hbapi.h>
#include <hbapiitm.h>
#include <hbvm.h>
#include <locale.h>
#if defined(__WIN32__) || defined(_WIN32)
#include <windows.h>
#include <io.h>
#include <fcntl.h>
#endif
#include <gtk/gtk.h>
#pragma ENDDUMPCode: Select all
#pragma BEGINDUMP
#include <hbapi.h>
#include <hbapiitm.h>
#include <hbvm.h>
#include <locale.h>
#if defined(__WIN32__) || defined(_WIN32)
#include <windows.h>
#include <io.h>
#include <fcntl.h>
#endif
#include <gtk/gtk.h>
#pragma ENDDUMPCode: Select all
sources=.\Source\Bridge.cCode: Select all
# Workspace project build options.
# Uncomment and complete only the options required by this project.
# Keep one option per line.
inc=yes
head=native
gt=gtwin
gui=no
# syslibs=
libpaths=C:\GTK4\lib
# Librerías necesarias de GTK4
libs=gtk-4
libs=gobject-2.0
libs=glib-2.0
libs=gio-2.0
libs=gdk_pixbuf-2.0
libs=cairo
# Rutas de inclusión de cabeceras y bibliotecas
incpaths=C:\GTK4\include\gtk-4.0
incpaths=C:\GTK4\include\glib-2.0
incpaths=C:\GTK4\lib\glib-2.0\include
incpaths=C:\GTK4\include\pango-1.0
incpaths=C:\GTK4\include\harfbuzz
incpaths=C:\GTK4\include\cairo
incpaths=C:\GTK4\include\gdk-pixbuf-2.0
incpaths=C:\GTK4\include\graphene-1.0
incpaths=C:\GTK4\lib\graphene-1.0\include
incpaths=C:\GTK4\include\gtk-4.0\gtk
sources=.\Source\Bridge.c
# hbcs=
# frameworks=
# prgflags=
# cflags=
# resflags=
# ldflags=
#pflags=
# psources=
# requests=
# instfiles=
# instpaths=
# autohbcs=
# plugins=
# mt=yes
# winuni=yes
# run=yes
# debug=yes
# opt=yes
# map=yes
# strip=yes
# cpp=yes
# warn=max
# compr=maxCode: Select all
sources=.\Source\Bridge.cCode: Select all
# Workspace project build options.
# Uncomment and complete only the options required by this project.
# Keep one option per line.
inc=yes
head=native
gt=gtwin
gui=no
# syslibs=
libpaths=C:\GTK4\lib
# Librerías necesarias de GTK4
libs=gtk-4
libs=gobject-2.0
libs=glib-2.0
libs=gio-2.0
libs=gdk_pixbuf-2.0
libs=cairo
# Rutas de inclusión de cabeceras y bibliotecas
incpaths=C:\GTK4\include\gtk-4.0
incpaths=C:\GTK4\include\glib-2.0
incpaths=C:\GTK4\lib\glib-2.0\include
incpaths=C:\GTK4\include\pango-1.0
incpaths=C:\GTK4\include\harfbuzz
incpaths=C:\GTK4\include\cairo
incpaths=C:\GTK4\include\gdk-pixbuf-2.0
incpaths=C:\GTK4\include\graphene-1.0
incpaths=C:\GTK4\lib\graphene-1.0\include
incpaths=C:\GTK4\include\gtk-4.0\gtk
sources=.\Source\Bridge.c
# hbcs=
# frameworks=
# prgflags=
# cflags=
# resflags=
# ldflags=
#pflags=
# psources=
# requests=
# instfiles=
# instpaths=
# autohbcs=
# plugins=
# mt=yes
# winuni=yes
# run=yes
# debug=yes
# opt=yes
# map=yes
# strip=yes
# cpp=yes
# warn=max
# compr=maxCode: Select all
1. Archivos de Entrada y Fuentes
sources=: Lista de archivos fuente a incluir (archivos .prg, .c, .cpp, .rc, etc.).
headers=: Lista de cabeceras .ch que se incluirán de forma estándar.
libs=: Librerías adicionales a enlazar (equivalente a la opción -l).
syslibs=: Librerías de sistema que se enlazan antes de las librerías comunes.
frameworks=: Frameworks de macOS a vincular (solo para plataforma Darwin/macOS).
hbcs=: Incluye o anida otros archivos .hbc por nombre.
requests=: Lista de funciones o símbolos para forzar su inclusión en el ejecutable (fuerza el enlazado/linkeo).
2. Rutas de Búsqueda
incpaths=: Directorios donde buscar archivos de cabecera (.h, .ch).
libpaths=: Directorios adicionales donde buscar archivos de librería (.lib, .a).
instpaths=: Rutas de destino para copiar o instalar los archivos generados.
instfiles=: Archivos adicionales que se deben copiar a las rutas de instpaths=.
3. Modos de Compilación y Opciones Booleanas (yes / no)
gui=: Define el tipo de aplicación (yes = GUI / subsistema Windows, no = consola/STD).
mt=: Habilita el soporte multihilo de Harbour (yes = -mt, no = monohilo).
debug=: Agrega información de depuración (yes / no).
inc=: Activa la compilación incremental (yes / no).
shared=: Genera/vincula librerías dinámicas (yes) o estáticas (no).
fullstatic=: Enlaza todas las librerías de forma totalmente estática (yes / no).
cpp=: Fuerza o selecciona el modo C++ (yes, no o def).
winuni=: Selecciona el modo Unicode/WIDE en Windows (yes / no).
strip=: Elimina los símbolos de depuración del binario final (yes / no).
run=: Ejecuta el binario automáticamente al finalizar la compilación (yes / no).
map=: Genera un archivo .map del enlazador (yes / no).
optim=: Activa las optimizaciones del compilador C (yes / no).
4. Banderas Específicas para Herramientas (Flags)
prgflags=: Banderas que se pasan directamente al compilador de Harbour (harbour.exe).
cflags=: Banderas que se pasan al compilador C (gcc, msvc, etc.).
ldflags= / ldflags+=: Banderas que se pasan al enlazador (linker).
resflags=: Banderas para el compilador de recursos (windres / rc).
warn=: Nivel de advertencias del compilador C (max, yes, low, no, def).
compr=: Compresión del ejecutable con UPX (yes, no, min, max).
5. Configuración de Terminal / GT (Graphic Terminal)
gt=: Selecciona el controlador GT a enlazar (ej. gtwin, gtwvt, gtgui).
gtdef=: Define cuál controlador GT de la lista será el predeterminado en tiempo de ejecución.
nodefgt=: Evita vincular los controladores GT predeterminados (yes / no).
6. Metadatos del Paquete y Control
name=: Nombre del paquete o biblioteca.
description=: Descripción breve del paquete.
version=: Versión del paquete (ej. 1.0.0).
licences=: Lista de licencias aplicables al proyecto.
echo=: Muestra un texto en la consola de compilación.
skip=: Salta el procesamiento del resto del archivo .hbc si se cumple una condición.
stop=: Detiene el proceso de compilación enviando un mensaje opcional.Code: Select all
1. Input and source files
sources=: List of source files to include (.prg, .c, .cpp, .rc files, etc.).
headers=: List of .ch headers to be included by default.
libs=: Additional libraries to load (equivalent to the -l option).
syslibs=: System libraries linked before common libraries.
frameworks=: macOS frameworks to link (Darwin/macOS platform only).
hbcs=: Include or add other .hbc files by name.
requests=: List of functions or symbols to force their inclusion in the executable.
2. Search paths
incpaths=: Directories to search for header files (.h, .ch).
libpaths=: Additional directories to search for library files (.lib, .a).
instpaths=: Destination paths for copying or installing generated files.
instfiles=: Additional files to be copied to the paths specified in instpaths=.
3. Compilation modes and boolean options (yes / no)
gui=: Defines the application type (yes = GUI / Windows subsystem, no = console/STD).
mt=: Enables Harbour multithreading support (yes = -mt, no = single-threaded).
debug=: Adds debugging information (yes / no).
inc=: Enables incremental compilation (yes / no).
shared=: Generates/links dynamic libraries (yes) or static ones (no).
fullstatic=: Links all libraries fully statically (yes / no).
cpp=: Selects C++ mode (yes; no is the default).
winuni=: Selects Unicode/WIDE mode on Windows (yes / no).
strip=: Removes debug symbols from the final binary (yes / no).
run=: Automatically executes the binary after compilation finishes (yes / no).
map=: Generates a .map file (yes / no).
optim=: Enables C compiler optimizations (yes / no).
4. Specific Tool Flags
prgflags=: Flags passed directly to the Harbour compiler (harbour.exe).
cflags=: Flags passed to the C compiler (gcc, msvc, etc.).
ldflags= / ldflags+=: Flags passed to the linker.
resflags=: Flags for the resource compiler (windres / rc).
warn=: C compiler warning level (max, yes, low, no, def).
compr=: Executable compression using UPX (yes, no, min, max).
5. Terminal / GT (Graphic Terminal) Configuration
gt=: Selects the GT driver to link (e.g., gtwin, gtwvt, gtgui).
gtdef=: Defines which GT driver from the list will be the default at runtime.
nodefgt=: Prevents linking default GT drivers (yes / no).
6. Package Metadata and Control
name=: Name of the package or library.
description=: Brief description of the package.
version=: Package version (e.g., 1.0.0).
licences=: List of licenses applicable to the project.
echo=: Displays text in the build console.
skip=: Skips processing the remainder of the .hbc file if a condition is met.
stop=: Stops the build process, optionally displaying a message.
Code: Select all
1. Archivos de Entrada y Fuentes
sources=: Lista de archivos fuente a incluir (archivos .prg, .c, .cpp, .rc, etc.).
headers=: Lista de cabeceras .ch que se incluirán de forma estándar.
libs=: Librerías adicionales a enlazar (equivalente a la opción -l).
syslibs=: Librerías de sistema que se enlazan antes de las librerías comunes.
frameworks=: Frameworks de macOS a vincular (solo para plataforma Darwin/macOS).
hbcs=: Incluye o anida otros archivos .hbc por nombre.
requests=: Lista de funciones o símbolos para forzar su inclusión en el ejecutable (fuerza el enlazado/linkeo).
2. Rutas de Búsqueda
incpaths=: Directorios donde buscar archivos de cabecera (.h, .ch).
libpaths=: Directorios adicionales donde buscar archivos de librería (.lib, .a).
instpaths=: Rutas de destino para copiar o instalar los archivos generados.
instfiles=: Archivos adicionales que se deben copiar a las rutas de instpaths=.
3. Modos de Compilación y Opciones Booleanas (yes / no)
gui=: Define el tipo de aplicación (yes = GUI / subsistema Windows, no = consola/STD).
mt=: Habilita el soporte multihilo de Harbour (yes = -mt, no = monohilo).
debug=: Agrega información de depuración (yes / no).
inc=: Activa la compilación incremental (yes / no).
shared=: Genera/vincula librerías dinámicas (yes) o estáticas (no).
fullstatic=: Enlaza todas las librerías de forma totalmente estática (yes / no).
cpp=: Fuerza o selecciona el modo C++ (yes, no o def).
winuni=: Selecciona el modo Unicode/WIDE en Windows (yes / no).
strip=: Elimina los símbolos de depuración del binario final (yes / no).
run=: Ejecuta el binario automáticamente al finalizar la compilación (yes / no).
map=: Genera un archivo .map del enlazador (yes / no).
optim=: Activa las optimizaciones del compilador C (yes / no).
4. Banderas Específicas para Herramientas (Flags)
prgflags=: Banderas que se pasan directamente al compilador de Harbour (harbour.exe).
cflags=: Banderas que se pasan al compilador C (gcc, msvc, etc.).
ldflags= / ldflags+=: Banderas que se pasan al enlazador (linker).
resflags=: Banderas para el compilador de recursos (windres / rc).
warn=: Nivel de advertencias del compilador C (max, yes, low, no, def).
compr=: Compresión del ejecutable con UPX (yes, no, min, max).
5. Configuración de Terminal / GT (Graphic Terminal)
gt=: Selecciona el controlador GT a enlazar (ej. gtwin, gtwvt, gtgui).
gtdef=: Define cuál controlador GT de la lista será el predeterminado en tiempo de ejecución.
nodefgt=: Evita vincular los controladores GT predeterminados (yes / no).
6. Metadatos del Paquete y Control
name=: Nombre del paquete o biblioteca.
description=: Descripción breve del paquete.
version=: Versión del paquete (ej. 1.0.0).
licences=: Lista de licencias aplicables al proyecto.
echo=: Muestra un texto en la consola de compilación.
skip=: Salta el procesamiento del resto del archivo .hbc si se cumple una condición.
stop=: Detiene el proceso de compilación enviando un mensaje opcional.Code: Select all
1. Input and source files
sources=: List of source files to include (.prg, .c, .cpp, .rc files, etc.).
headers=: List of .ch headers to be included by default.
libs=: Additional libraries to load (equivalent to the -l option).
syslibs=: System libraries linked before common libraries.
frameworks=: macOS frameworks to link (Darwin/macOS platform only).
hbcs=: Include or add other .hbc files by name.
requests=: List of functions or symbols to force their inclusion in the executable.
2. Search paths
incpaths=: Directories to search for header files (.h, .ch).
libpaths=: Additional directories to search for library files (.lib, .a).
instpaths=: Destination paths for copying or installing generated files.
instfiles=: Additional files to be copied to the paths specified in instpaths=.
3. Compilation modes and boolean options (yes / no)
gui=: Defines the application type (yes = GUI / Windows subsystem, no = console/STD).
mt=: Enables Harbour multithreading support (yes = -mt, no = single-threaded).
debug=: Adds debugging information (yes / no).
inc=: Enables incremental compilation (yes / no).
shared=: Generates/links dynamic libraries (yes) or static ones (no).
fullstatic=: Links all libraries fully statically (yes / no).
cpp=: Selects C++ mode (yes; no is the default).
winuni=: Selects Unicode/WIDE mode on Windows (yes / no).
strip=: Removes debug symbols from the final binary (yes / no).
run=: Automatically executes the binary after compilation finishes (yes / no).
map=: Generates a .map file (yes / no).
optim=: Enables C compiler optimizations (yes / no).
4. Specific Tool Flags
prgflags=: Flags passed directly to the Harbour compiler (harbour.exe).
cflags=: Flags passed to the C compiler (gcc, msvc, etc.).
ldflags= / ldflags+=: Flags passed to the linker.
resflags=: Flags for the resource compiler (windres / rc).
warn=: C compiler warning level (max, yes, low, no, def).
compr=: Executable compression using UPX (yes, no, min, max).
5. Terminal / GT (Graphic Terminal) Configuration
gt=: Selects the GT driver to link (e.g., gtwin, gtwvt, gtgui).
gtdef=: Defines which GT driver from the list will be the default at runtime.
nodefgt=: Prevents linking default GT drivers (yes / no).
6. Package Metadata and Control
name=: Name of the package or library.
description=: Brief description of the package.
version=: Package version (e.g., 1.0.0).
licences=: List of licenses applicable to the project.
echo=: Displays text in the build console.
skip=: Skips processing the remainder of the .hbc file if a condition is met.
stop=: Stops the build process, optionally displaying a message.
Code: Select all
inc=yes
head=native
gt=gtwin
gui=no
Code: Select all
rem SET gtdrivers=-gtgui -gtwin
SET gtdrivers=-gtwin -gtgui
SET runafterbuild=.t.
SET debug=Code: Select all
inc=yes
head=native
gt=gtwin
gui=no
Code: Select all
rem SET gtdrivers=-gtgui -gtwin
SET gtdrivers=-gtwin -gtgui
SET runafterbuild=.t.
SET debug=Code: Select all
#include "hmg.ch"
#include "inipublic.prg"
#include "config.prg"
SET AUTOPEN Off
SET BELL Off
SET BROWSESYNC On
SET CODEPAGE TO SPANISH
SET CONSOLE Off
SET CURSOR Off
SET DATE TO BRIT
SET DELETED On
SET DELIMITERS Off
SET ECHO Off
SET EPOCH TO 1990
SET MULTIPLE Off WARNING
SET NAVIGATION EXTENDED
SET SAFETY Off
SET SCOREBOARD Off
SET SOFTSEEK On
SET TALK Off
SET WRAP On
FUNCTION Main()
REQUEST HB_LANG_ESWIN
REQUEST HB_CODEPAGE_ESWIN
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")
HB_LANGSELECT( "ES" )
HB_SetCodePage("ESWIN")
SET DATE TO BRIT
DECLARE WINDOW MainWin
DECLARE WINDOW pnlLeft
DECLARE WINDOW pnlCenter
DECLARE WINDOW pnlRight
IniPublic()
LoadConfig()
nMainWidth := GetDesktopWidth()
nMainHeight := GetDesktopHeight() - 30
nLeftWidth := nMainWidth * nPctLeft / 100
nCenterWidth := nMainWidth * nPctCenter / 100
nRightWidth := nMainWidth * nPctRight / 100
nColPnlCenter := nLeftWidth
nColPnlRight := nLeftWidth + nCenterWidth
DEFINE WINDOW MainWin ;
AT 0,0 ;
WIDTH nMainWidth HEIGHT nMainHeight ;
MAIN ;
TITLE "INFOFARMA TDI" ;
NOMAXIMIZE NOSIZE
DEFINE WINDOW pnlLeft ;
ROW 0 ;
COL 0 ;
WIDTH nLeftWidth ;
HEIGHT nMainHeight ;
WINDOWTYPE PANEL ;
BACKCOLOR aColorBack ;
ONMOUSEMOVE MenuHover()
END WINDOW
DEFINE WINDOW pnlCenter ;
ROW 0 COL nColPnlCenter ;
WIDTH nCenterWidth ;
HEIGHT nMainHeight ;
WINDOWTYPE PANEL ;
BACKCOLOR aColorPanel
END WINDOW
DEFINE WINDOW pnlRight ;
ROW 0 COL nColPnlRight ;
WIDTH nRightWidth ;
HEIGHT nMainHeight ;
WINDOWTYPE PANEL ;
BACKCOLOR aColorBack
END WINDOW
InitMenuData()
RedrawLeftMenu()
END WINDOW
MainWin.Center
MainWin.Activate
RETURN NIL
//==================================================================
// Inicialización de la estructura de datos del menú
//==================================================================
PROCEDURE InitMenuData()
aMenuEstructura := { ;
{ "id" => "Admin", "titulo" => "Administradores", "items" => { ;
{ "id" => "lblItem_Articulos", "caption" => "Artículos", "msg" => "abre el módulo de artículos" }, ;
{ "id" => "lblItem_Tipos", "caption" => "Tipos", "msg" => "abre el módulo de tipos" }, ;
{ "id" => "lblItem_Marcas", "caption" => "Marcas", "msg" => "abre el módulo de marcas" }, ;
{ "id" => "lblItem_DCIs", "caption" => "DCIs", "msg" => "abre el módulo de DCIs" }, ;
{ "id" => "lblItem_Proveedores", "caption" => "Proveedores", "msg" => "abre el módulo de proveedores" }, ;
{ "id" => "lblItem_Clientes", "caption" => "Clientes", "msg" => "abre el módulo de clientes" }, ;
{ "id" => "lblItem_Usuarios", "caption" => "Usuarios", "msg" => "abre el módulo de usuarios" }, ;
{ "id" => "lblItem_Movimientos", "caption" => "Movimientos", "msg" => "abre el módulo de movimientos" }, ;
{ "id" => "lblItem_CfgVisual", "caption" => "Configuración Visual", "msg" => "abre configuración visual" }, ;
{ "id" => "lblItem_Temas", "caption" => "Temas", "msg" => "abre temas" } ;
} }, ;
{ "id" => "Compras", "titulo" => "Compras", "items" => { ;
{ "id" => "lblItem_Facturas", "caption" => "Facturas", "msg" => "abre facturas" }, ;
{ "id" => "lblItem_Faltantes", "caption" => "Faltantes", "msg" => "abre faltantes" }, ;
{ "id" => "lblItem_Precios", "caption" => "Precios", "msg" => "abre precios" }, ;
{ "id" => "lblItem_Pagos", "caption" => "Pagos", "msg" => "abre pagos" } ;
} }, ;
{ "id" => "Ventas", "titulo" => "Ventas", "items" => { ;
{ "id" => "lblItem_Ventas", "caption" => "Ventas", "msg" => "abre ventas" }, ;
{ "id" => "lblItem_NCs", "caption" => "Notas de Crédito", "msg" => "abre notas de crédito" }, ;
{ "id" => "lblItem_Cobros", "caption" => "Cobros", "msg" => "abre cobros" } ;
} }, ;
{ "id" => "Servicios", "titulo" => "Servicios", "items" => { ;
{ "id" => "lblItem_Cargos", "caption" => "Cargos/Descargos", "msg" => "abre cargos/descargos" }, ;
{ "id" => "lblItem_Kardex", "caption" => "Kardex", "msg" => "abre kardex" }, ;
{ "id" => "lblItem_Observatorio", "caption" => "Observatorio", "msg" => "abre observatorio" }, ;
{ "id" => "lblItem_Controlados", "caption" => "Controlados", "msg" => "abre controlados" } ;
} } ;
}
RETURN
//==================================================================
// Construcción / Redibujado dinámico del Menú Lateral
//==================================================================
PROCEDURE RedrawLeftMenu()
LOCAL nW, nY, i, j
LOCAL hSec, hSub
LOCAL nTitleHeight := 38
LOCAL nItemHeight := 28
LOCAL cTitId, cSubId
// 1. Eliminar controles previamente creados en pnlLeft
FOR i := 1 TO LEN( aControlesCreados )
IF _IsControlDefined( aControlesCreados[i], "MainWin" )
DoMethod( "MainWin", aControlesCreados[i], "RELEASE" )
ENDIF
NEXT
aControlesCreados := {}
hMenuItems := hb_Hash()
nW := nLeftWidth - ( nMenuLeftMargin * 2 )
nY := 0
// 2. Iterar secciones principales
FOR i := 1 TO LEN( aMenuEstructura )
hSec := aMenuEstructura[i]
cTitId := "lblTit_" + hSec["id"]
AddMenuTitle( cTitId, hSec["titulo"], nY, nW, nTitleHeight, hSec["id"] )
AADD( aControlesCreados, cTitId )
nY += nTitleHeight
// Si la sección actual está activa, desplegar sus subelementos
IF cSeccionActiva == hSec["id"]
FOR j := 1 TO LEN( hSec["items"] )
hSub := hSec["items"][j]
cSubId := hSub["id"]
AddMenuItem( cSubId, " " + hSub["caption"], nY, nW, nItemHeight, hSub["msg"] )
AADD( aControlesCreados, cSubId )
nY += nItemHeight
NEXT
ENDIF
NEXT
RETURN
//==================================================================
// Control de apertura/cierre de secciones (Efecto Acordeón)
//==================================================================
PROCEDURE ToggleSeccion( cSecId )
IF cSeccionActiva == cSecId
cSeccionActiva := "" // Si se vuelve a hacer clic en la abierta, se cierra
ELSE
cSeccionActiva := cSecId // Abre la nueva y automáticamente cierra las demás
ENDIF
RestoreHover()
cMenuHover := ""
RedrawLeftMenu()
RETURN
//==================================================================
// Métodos de Creación y Eventos
//==================================================================
PROCEDURE AddMenuTitle( LblName, cText, nY, nW, nH, cSecId )
@ nY, nMenuLeftMargin LABEL &LblName OF pnlLeft ;
VALUE cText ;
WIDTH nW HEIGHT nH ;
FONT cMenuFontName SIZE ( nMenuFontSize + 1 ) BOLD ;
FONTCOLOR aMenuTitleFore ;
BACKCOLOR aMenuTitleBack ;
ACTION ToggleSeccion( cSecId )
hMenuItems[ LblName ] := { ;
"name" => LblName, ;
"row" => nY, ;
"col" => nMenuLeftMargin, ;
"width" => nW, ;
"height" => nH, ;
"fore" => aMenuTitleFore, ;
"back" => aMenuTitleBack, ;
"hoverFore" => {255,255,255}, ;
"hoverBack" => {60,90,140} }
RETURN
PROCEDURE AddMenuItem( LblName, cText, nY, nW, nH, cMsg )
@ nY, nMenuLeftMargin LABEL &LblName OF pnlLeft ;
VALUE cText ;
WIDTH nW HEIGHT nH ;
FONT cMenuFontName SIZE nMenuFontSize ;
FONTCOLOR aMenuItemsFore ;
BACKCOLOR aMenuItemsBack ;
ACTION MsgInfo( cMsg )
hMenuItems[ LblName ] := { ;
"name" => LblName, ;
"row" => nY, ;
"col" => nMenuLeftMargin, ;
"width" => nW, ;
"height" => nH, ;
"fore" => aMenuItemsFore, ;
"back" => aMenuItemsBack, ;
"hoverFore" => {255,255,255}, ;
"hoverBack" => {80,120,180} }
RETURN
PROCEDURE MenuHover()
LOCAL nRow := 0
LOCAL nCol := 0
LOCAL cName
LOCAL hItem
LOCAL aKeys
LOCAL i
IF EMPTY( hMenuItems )
RETURN
ENDIF
aKeys := HB_HKeys( hMenuItems )
HMG_GetCursorPos( pnlLeft.Handle, @nRow, @nCol )
FOR i = 1 TO LEN( aKeys )
cName := aKeys[i]
hItem := hMenuItems[ cName ]
IF nRow >= hItem["row"] .AND. ;
nRow <= hItem["row"] + hItem["height"] .AND. ;
nCol >= hItem["col"] .AND. ;
nCol <= hItem["col"] + hItem["width"]
IF cMenuHover != cName
RestoreHover()
ApplyHover( cName )
cMenuHover := cName
ENDIF
RETURN
ENDIF
NEXT
RestoreHover()
cMenuHover := ""
RETURN
PROCEDURE ApplyHover( cName )
LOCAL hItem
IF !EMPTY( cName ) .AND. HB_HHasKey( hMenuItems, cName )
hItem := hMenuItems[ cName ]
SetProperty( "MainWin", hItem["name"], "BACKCOLOR", hItem["hoverBack"] )
SetProperty( "MainWin", hItem["name"], "FONTCOLOR", hItem["hoverFore"] )
ENDIF
RETURN
PROCEDURE RestoreHover()
LOCAL hItem
IF !EMPTY( cMenuHover ) .AND. HB_HHasKey( hMenuItems, cMenuHover )
hItem := hMenuItems[ cMenuHover ]
IF _IsControlDefined( hItem["name"], "MainWin" )
SetProperty( "MainWin", hItem["name"], "BACKCOLOR", hItem["back"] )
SetProperty( "MainWin", hItem["name"], "FONTCOLOR", hItem["fore"] )
ENDIF
ENDIF
RETURN
Code: Select all
#include "hmg.ch"
#include "inipublic.prg"
#include "config.prg"
SET AUTOPEN Off
SET BELL Off
SET BROWSESYNC On
SET CODEPAGE TO SPANISH
SET CONSOLE Off
SET CURSOR Off
SET DATE TO BRIT
SET DELETED On
SET DELIMITERS Off
SET ECHO Off
SET EPOCH TO 1990
SET MULTIPLE Off WARNING
SET NAVIGATION EXTENDED
SET SAFETY Off
SET SCOREBOARD Off
SET SOFTSEEK On
SET TALK Off
SET WRAP On
FUNCTION Main()
REQUEST HB_LANG_ESWIN
REQUEST HB_CODEPAGE_ESWIN
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")
HB_LANGSELECT( "ES" )
HB_SetCodePage("ESWIN")
SET DATE TO BRIT
DECLARE WINDOW MainWin
DECLARE WINDOW pnlLeft
DECLARE WINDOW pnlCenter
DECLARE WINDOW pnlRight
IniPublic()
LoadConfig()
nMainWidth := GetDesktopWidth()
nMainHeight := GetDesktopHeight() - 30
nLeftWidth := nMainWidth * nPctLeft / 100
nCenterWidth := nMainWidth * nPctCenter / 100
nRightWidth := nMainWidth * nPctRight / 100
nColPnlCenter := nLeftWidth
nColPnlRight := nLeftWidth + nCenterWidth
DEFINE WINDOW MainWin ;
AT 0,0 ;
WIDTH nMainWidth HEIGHT nMainHeight ;
MAIN ;
TITLE "INFOFARMA TDI" ;
NOMAXIMIZE NOSIZE
DEFINE WINDOW pnlLeft ;
ROW 0 ;
COL 0 ;
WIDTH nLeftWidth ;
HEIGHT nMainHeight ;
WINDOWTYPE PANEL ;
BACKCOLOR aColorBack ;
ONMOUSEMOVE MenuHover()
END WINDOW
DEFINE WINDOW pnlCenter ;
ROW 0 COL nColPnlCenter ;
WIDTH nCenterWidth ;
HEIGHT nMainHeight ;
WINDOWTYPE PANEL ;
BACKCOLOR aColorPanel
END WINDOW
DEFINE WINDOW pnlRight ;
ROW 0 COL nColPnlRight ;
WIDTH nRightWidth ;
HEIGHT nMainHeight ;
WINDOWTYPE PANEL ;
BACKCOLOR aColorBack
END WINDOW
InitMenuData()
RedrawLeftMenu()
END WINDOW
MainWin.Center
MainWin.Activate
RETURN NIL
//==================================================================
// Inicialización de la estructura de datos del menú
//==================================================================
PROCEDURE InitMenuData()
aMenuEstructura := { ;
{ "id" => "Admin", "titulo" => "Administradores", "items" => { ;
{ "id" => "lblItem_Articulos", "caption" => "Artículos", "msg" => "abre el módulo de artículos" }, ;
{ "id" => "lblItem_Tipos", "caption" => "Tipos", "msg" => "abre el módulo de tipos" }, ;
{ "id" => "lblItem_Marcas", "caption" => "Marcas", "msg" => "abre el módulo de marcas" }, ;
{ "id" => "lblItem_DCIs", "caption" => "DCIs", "msg" => "abre el módulo de DCIs" }, ;
{ "id" => "lblItem_Proveedores", "caption" => "Proveedores", "msg" => "abre el módulo de proveedores" }, ;
{ "id" => "lblItem_Clientes", "caption" => "Clientes", "msg" => "abre el módulo de clientes" }, ;
{ "id" => "lblItem_Usuarios", "caption" => "Usuarios", "msg" => "abre el módulo de usuarios" }, ;
{ "id" => "lblItem_Movimientos", "caption" => "Movimientos", "msg" => "abre el módulo de movimientos" }, ;
{ "id" => "lblItem_CfgVisual", "caption" => "Configuración Visual", "msg" => "abre configuración visual" }, ;
{ "id" => "lblItem_Temas", "caption" => "Temas", "msg" => "abre temas" } ;
} }, ;
{ "id" => "Compras", "titulo" => "Compras", "items" => { ;
{ "id" => "lblItem_Facturas", "caption" => "Facturas", "msg" => "abre facturas" }, ;
{ "id" => "lblItem_Faltantes", "caption" => "Faltantes", "msg" => "abre faltantes" }, ;
{ "id" => "lblItem_Precios", "caption" => "Precios", "msg" => "abre precios" }, ;
{ "id" => "lblItem_Pagos", "caption" => "Pagos", "msg" => "abre pagos" } ;
} }, ;
{ "id" => "Ventas", "titulo" => "Ventas", "items" => { ;
{ "id" => "lblItem_Ventas", "caption" => "Ventas", "msg" => "abre ventas" }, ;
{ "id" => "lblItem_NCs", "caption" => "Notas de Crédito", "msg" => "abre notas de crédito" }, ;
{ "id" => "lblItem_Cobros", "caption" => "Cobros", "msg" => "abre cobros" } ;
} }, ;
{ "id" => "Servicios", "titulo" => "Servicios", "items" => { ;
{ "id" => "lblItem_Cargos", "caption" => "Cargos/Descargos", "msg" => "abre cargos/descargos" }, ;
{ "id" => "lblItem_Kardex", "caption" => "Kardex", "msg" => "abre kardex" }, ;
{ "id" => "lblItem_Observatorio", "caption" => "Observatorio", "msg" => "abre observatorio" }, ;
{ "id" => "lblItem_Controlados", "caption" => "Controlados", "msg" => "abre controlados" } ;
} } ;
}
RETURN
//==================================================================
// Construcción / Redibujado dinámico del Menú Lateral
//==================================================================
PROCEDURE RedrawLeftMenu()
LOCAL nW, nY, i, j
LOCAL hSec, hSub
LOCAL nTitleHeight := 38
LOCAL nItemHeight := 28
LOCAL cTitId, cSubId
// 1. Eliminar controles previamente creados en pnlLeft
FOR i := 1 TO LEN( aControlesCreados )
IF _IsControlDefined( aControlesCreados[i], "MainWin" )
DoMethod( "MainWin", aControlesCreados[i], "RELEASE" )
ENDIF
NEXT
aControlesCreados := {}
hMenuItems := hb_Hash()
nW := nLeftWidth - ( nMenuLeftMargin * 2 )
nY := 0
// 2. Iterar secciones principales
FOR i := 1 TO LEN( aMenuEstructura )
hSec := aMenuEstructura[i]
cTitId := "lblTit_" + hSec["id"]
AddMenuTitle( cTitId, hSec["titulo"], nY, nW, nTitleHeight, hSec["id"] )
AADD( aControlesCreados, cTitId )
nY += nTitleHeight
// Si la sección actual está activa, desplegar sus subelementos
IF cSeccionActiva == hSec["id"]
FOR j := 1 TO LEN( hSec["items"] )
hSub := hSec["items"][j]
cSubId := hSub["id"]
AddMenuItem( cSubId, " " + hSub["caption"], nY, nW, nItemHeight, hSub["msg"] )
AADD( aControlesCreados, cSubId )
nY += nItemHeight
NEXT
ENDIF
NEXT
RETURN
//==================================================================
// Control de apertura/cierre de secciones (Efecto Acordeón)
//==================================================================
PROCEDURE ToggleSeccion( cSecId )
IF cSeccionActiva == cSecId
cSeccionActiva := "" // Si se vuelve a hacer clic en la abierta, se cierra
ELSE
cSeccionActiva := cSecId // Abre la nueva y automáticamente cierra las demás
ENDIF
RestoreHover()
cMenuHover := ""
RedrawLeftMenu()
RETURN
//==================================================================
// Métodos de Creación y Eventos
//==================================================================
PROCEDURE AddMenuTitle( LblName, cText, nY, nW, nH, cSecId )
@ nY, nMenuLeftMargin LABEL &LblName OF pnlLeft ;
VALUE cText ;
WIDTH nW HEIGHT nH ;
FONT cMenuFontName SIZE ( nMenuFontSize + 1 ) BOLD ;
FONTCOLOR aMenuTitleFore ;
BACKCOLOR aMenuTitleBack ;
ACTION ToggleSeccion( cSecId )
hMenuItems[ LblName ] := { ;
"name" => LblName, ;
"row" => nY, ;
"col" => nMenuLeftMargin, ;
"width" => nW, ;
"height" => nH, ;
"fore" => aMenuTitleFore, ;
"back" => aMenuTitleBack, ;
"hoverFore" => {255,255,255}, ;
"hoverBack" => {60,90,140} }
RETURN
PROCEDURE AddMenuItem( LblName, cText, nY, nW, nH, cMsg )
@ nY, nMenuLeftMargin LABEL &LblName OF pnlLeft ;
VALUE cText ;
WIDTH nW HEIGHT nH ;
FONT cMenuFontName SIZE nMenuFontSize ;
FONTCOLOR aMenuItemsFore ;
BACKCOLOR aMenuItemsBack ;
ACTION MsgInfo( cMsg )
hMenuItems[ LblName ] := { ;
"name" => LblName, ;
"row" => nY, ;
"col" => nMenuLeftMargin, ;
"width" => nW, ;
"height" => nH, ;
"fore" => aMenuItemsFore, ;
"back" => aMenuItemsBack, ;
"hoverFore" => {255,255,255}, ;
"hoverBack" => {80,120,180} }
RETURN
PROCEDURE MenuHover()
LOCAL nRow := 0
LOCAL nCol := 0
LOCAL cName
LOCAL hItem
LOCAL aKeys
LOCAL i
IF EMPTY( hMenuItems )
RETURN
ENDIF
aKeys := HB_HKeys( hMenuItems )
HMG_GetCursorPos( pnlLeft.Handle, @nRow, @nCol )
FOR i = 1 TO LEN( aKeys )
cName := aKeys[i]
hItem := hMenuItems[ cName ]
IF nRow >= hItem["row"] .AND. ;
nRow <= hItem["row"] + hItem["height"] .AND. ;
nCol >= hItem["col"] .AND. ;
nCol <= hItem["col"] + hItem["width"]
IF cMenuHover != cName
RestoreHover()
ApplyHover( cName )
cMenuHover := cName
ENDIF
RETURN
ENDIF
NEXT
RestoreHover()
cMenuHover := ""
RETURN
PROCEDURE ApplyHover( cName )
LOCAL hItem
IF !EMPTY( cName ) .AND. HB_HHasKey( hMenuItems, cName )
hItem := hMenuItems[ cName ]
SetProperty( "MainWin", hItem["name"], "BACKCOLOR", hItem["hoverBack"] )
SetProperty( "MainWin", hItem["name"], "FONTCOLOR", hItem["hoverFore"] )
ENDIF
RETURN
PROCEDURE RestoreHover()
LOCAL hItem
IF !EMPTY( cMenuHover ) .AND. HB_HHasKey( hMenuItems, cMenuHover )
hItem := hMenuItems[ cMenuHover ]
IF _IsControlDefined( hItem["name"], "MainWin" )
SetProperty( "MainWin", hItem["name"], "BACKCOLOR", hItem["back"] )
SetProperty( "MainWin", hItem["name"], "FONTCOLOR", hItem["fore"] )
ENDIF
ENDIF
RETURN
Code: Select all
example1: 4r1k1/5ppp/8/8/Q7/8/5PPP/4R1K1 b - - 0 1
example2: 8/5pk1/4p1p1/3pP1P1/p1pP1K2/PpP5/1P6/8 b - - 3 52
example3: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
Code: Select all
ON KEY ESCAPE OF Form_Ajedrez ACTION CancelSelection() // Cancelar selección
ON KEY CONTROL+Y OF Form_Ajedrez ACTION ( Redo() )
ON KEY CONTROL+Z OF Form_Ajedrez ACTION ( Undo() )
ON KEY CONTROL+N OF Form_Ajedrez ACTION ( NewGame() )
ON KEY CONTROL+E OF Form_Ajedrez ACTION ( ExportFEN() )
ON KEY CONTROL+I OF Form_Ajedrez ACTION ( ImportFEN() )
ON KEY CONTROL+P OF Form_Ajedrez ACTION ( ExportPGN() )
ON KEY CONTROL+O OF Form_Ajedrez ACTION ( ImportPGN() )
ON KEY CONTROL+G OF Form_Ajedrez ACTION ( SaveGame() )
ON KEY CONTROL+S OF Form_Ajedrez ACTION ( SaveGame() )
ON KEY CONTROL+A OF Form_Ajedrez ACTION ( LoadGame() )
ON KEY CONTROL+L OF Form_Ajedrez ACTION ( LoadGame() )
ON KEY CONTROL+M OF Form_Ajedrez ACTION ( ShowMonitorWindow() )
ON KEY CONTROL+T OF Form_Ajedrez ACTION ( RunIntegrityTests() )
ON KEY CONTROL+C OF Form_Ajedrez ACTION ( CopyFENToClipboard() )
ON KEY CONTROL+V OF Form_Ajedrez ACTION ( PasteFENFromClipboard() )
ON KEY CONTROL+H OF Form_Ajedrez ACTION ( Test_Syzygy_Directo() )
ON KEY CONTROL+J OF Form_Ajedrez ACTION ( DownloadMissingSyzygy() )
Code: Select all
example1: 4r1k1/5ppp/8/8/Q7/8/5PPP/4R1K1 b - - 0 1
example2: 8/5pk1/4p1p1/3pP1P1/p1pP1K2/PpP5/1P6/8 b - - 3 52
example3: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
Code: Select all
ON KEY ESCAPE OF Form_Ajedrez ACTION CancelSelection() // Cancelar selección
ON KEY CONTROL+Y OF Form_Ajedrez ACTION ( Redo() )
ON KEY CONTROL+Z OF Form_Ajedrez ACTION ( Undo() )
ON KEY CONTROL+N OF Form_Ajedrez ACTION ( NewGame() )
ON KEY CONTROL+E OF Form_Ajedrez ACTION ( ExportFEN() )
ON KEY CONTROL+I OF Form_Ajedrez ACTION ( ImportFEN() )
ON KEY CONTROL+P OF Form_Ajedrez ACTION ( ExportPGN() )
ON KEY CONTROL+O OF Form_Ajedrez ACTION ( ImportPGN() )
ON KEY CONTROL+G OF Form_Ajedrez ACTION ( SaveGame() )
ON KEY CONTROL+S OF Form_Ajedrez ACTION ( SaveGame() )
ON KEY CONTROL+A OF Form_Ajedrez ACTION ( LoadGame() )
ON KEY CONTROL+L OF Form_Ajedrez ACTION ( LoadGame() )
ON KEY CONTROL+M OF Form_Ajedrez ACTION ( ShowMonitorWindow() )
ON KEY CONTROL+T OF Form_Ajedrez ACTION ( RunIntegrityTests() )
ON KEY CONTROL+C OF Form_Ajedrez ACTION ( CopyFENToClipboard() )
ON KEY CONTROL+V OF Form_Ajedrez ACTION ( PasteFENFromClipboard() )
ON KEY CONTROL+H OF Form_Ajedrez ACTION ( Test_Syzygy_Directo() )
ON KEY CONTROL+J OF Form_Ajedrez ACTION ( DownloadMissingSyzygy() )
Attachments
Attachments
Attachments
Attachments
Code: Select all
example1: 4r1k1/5ppp/8/8/Q7/8/5PPP/4R1K1 b - - 0 1
example2: 8/5pk1/4p1p1/3pP1P1/p1pP1K2/PpP5/1P6/8 b - - 3 52
example3: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
Code: Select all
ON KEY ESCAPE OF Form_Ajedrez ACTION CancelSelection() // Cancelar selección
ON KEY CONTROL+Y OF Form_Ajedrez ACTION ( Redo() )
ON KEY CONTROL+Z OF Form_Ajedrez ACTION ( Undo() )
ON KEY CONTROL+N OF Form_Ajedrez ACTION ( NewGame() )
ON KEY CONTROL+E OF Form_Ajedrez ACTION ( ExportFEN() )
ON KEY CONTROL+I OF Form_Ajedrez ACTION ( ImportFEN() )
ON KEY CONTROL+P OF Form_Ajedrez ACTION ( ExportPGN() )
ON KEY CONTROL+O OF Form_Ajedrez ACTION ( ImportPGN() )
ON KEY CONTROL+G OF Form_Ajedrez ACTION ( SaveGame() )
ON KEY CONTROL+S OF Form_Ajedrez ACTION ( SaveGame() )
ON KEY CONTROL+A OF Form_Ajedrez ACTION ( LoadGame() )
ON KEY CONTROL+L OF Form_Ajedrez ACTION ( LoadGame() )
ON KEY CONTROL+M OF Form_Ajedrez ACTION ( ShowMonitorWindow() )
ON KEY CONTROL+T OF Form_Ajedrez ACTION ( RunIntegrityTests() )
ON KEY CONTROL+C OF Form_Ajedrez ACTION ( CopyFENToClipboard() )
ON KEY CONTROL+V OF Form_Ajedrez ACTION ( PasteFENFromClipboard() )
ON KEY CONTROL+H OF Form_Ajedrez ACTION ( Test_Syzygy_Directo() )
ON KEY CONTROL+J OF Form_Ajedrez ACTION ( DownloadMissingSyzygy() )
Code: Select all
example1: 4r1k1/5ppp/8/8/Q7/8/5PPP/4R1K1 b - - 0 1
example2: 8/5pk1/4p1p1/3pP1P1/p1pP1K2/PpP5/1P6/8 b - - 3 52
example3: rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
Code: Select all
ON KEY ESCAPE OF Form_Ajedrez ACTION CancelSelection() // Cancelar selección
ON KEY CONTROL+Y OF Form_Ajedrez ACTION ( Redo() )
ON KEY CONTROL+Z OF Form_Ajedrez ACTION ( Undo() )
ON KEY CONTROL+N OF Form_Ajedrez ACTION ( NewGame() )
ON KEY CONTROL+E OF Form_Ajedrez ACTION ( ExportFEN() )
ON KEY CONTROL+I OF Form_Ajedrez ACTION ( ImportFEN() )
ON KEY CONTROL+P OF Form_Ajedrez ACTION ( ExportPGN() )
ON KEY CONTROL+O OF Form_Ajedrez ACTION ( ImportPGN() )
ON KEY CONTROL+G OF Form_Ajedrez ACTION ( SaveGame() )
ON KEY CONTROL+S OF Form_Ajedrez ACTION ( SaveGame() )
ON KEY CONTROL+A OF Form_Ajedrez ACTION ( LoadGame() )
ON KEY CONTROL+L OF Form_Ajedrez ACTION ( LoadGame() )
ON KEY CONTROL+M OF Form_Ajedrez ACTION ( ShowMonitorWindow() )
ON KEY CONTROL+T OF Form_Ajedrez ACTION ( RunIntegrityTests() )
ON KEY CONTROL+C OF Form_Ajedrez ACTION ( CopyFENToClipboard() )
ON KEY CONTROL+V OF Form_Ajedrez ACTION ( PasteFENFromClipboard() )
ON KEY CONTROL+H OF Form_Ajedrez ACTION ( Test_Syzygy_Directo() )
ON KEY CONTROL+J OF Form_Ajedrez ACTION ( DownloadMissingSyzygy() )
Attachments
Attachments