Para usar una dll externa es necesario setear la preferencia del modelos
"Compiler Flags" = /r:binmylibrary1.dll /r:binmylibrary2.dll .....
Luego generar y compilar
Existen dos formas de llamar a una aplicación externa
a.Teniendo el código externo en la carpeta del modelo, (supongamos 'afvbateria.cs'), con la siguiente estructura:
using GeneXus.Application;
using com.genexus;
....
namespace GeneXus.Programs
{
public class afvbateria{
...
public afvbateria(IGxContext context, int hnd, ModelContext jContext):this(){... }
....
public void execute(ref string var1, ref int var2....){.....}
...
}
}
b. Si el archivo cs referencia la librería externa, es necesario hacer lo indicado en el punto 1
c. Llamamos al componente con el siguiente código
Event 'DynCall'
call('afvbateria', &var1, &var2....)
EndEvent // 'DynCall'
a. Teniendo la dll externa en el directorio del modelo (supongamos 'afvLibrary.dll')
b. Agregar afvLibrary.dll a las Compiler Flags (ver punto 1)
c. Hacer la llamada con el siguiente código
csharp MyLibraryNamespace.MyClass form = new MyLibraryNamespace.MyClass();
csharp form.execute([!&var1!], [!&var2!]...);
Para cambiar el cursor es necesario usar el siguiente código:
Csharp System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
Csharp System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
Para cambiar el icono es necesario copiar el mismo al directorio del modelo y agregar a la propiedad "Compiler Flags" /win32icon:customicon.ico
A veces es necesario compactar la base de datos pues la misma crece significativamente guardando información que luego no será utilizada.
Para eso se puede utilizar el siguiente código para hacer un backup de la base de datos
&src = "sampledb.sdf"
&dest = "sampledb.sdf.tmp"
&dbconn = GetDataStore("Default")
&password = &dbconn.UserPassword
&dbconn.Disconnect()
csharp System.Data.SqlServerCe.SqlCeEngine engine = new System.Data.SqlServerCe.SqlCeEngine("Data Source=" + [!&src!] + ";Password=" + [!&password!]);
csharp engine.Compact("Data Source=" + [!&dest!] + ";Password=" + [!&password!]);
csharp engine.Dispose();
Para generar un "beep" copie el siguiente código
Event 'beep'
Do 'Beep'
EndEvent // 'beep'
Sub 'Beep'
csharp Beep();
csharp }
csharp [System.Runtime.InteropServices.DllImport("coredll", EntryPoint="MessageBeep", SetLastError=true)]
csharp private static extern void MessageBeep(uint type);
csharp public static void Beep(){
csharp MessageBeep(0xffffffff);
/*
Default = 0xFFFFFFFF,
Asterisk = 0x00000040, //Sound played during an Asterisk Message Box.
Exclamation = 0x00000030,// Sound played during an Exclamation Message Box.
Question = 0x00000020, // Sound played during a Question Message Box.
Hand = 0x00000010,// Sound played during a Hand Message Box.
/ *
Endsub
Se puede hacer por medio del siguiente código
Event 'Sip'
csharp SIP.Show();
EndEvent // 'Sip'
Event 'Nosip'
csharp SIP.Hide();
EndEvent // 'Nosip'