Por fin a base de código y comiando desde C#, he logrado hacer que muestre en modo visual el F#, normalmente es en consola, pero bueno.
Quiero lograr de alguna vez por todas, que al pulsar el botón abrir, en el momento que lo pulses, dice el mensaje "Abriendo...".
Cuando la bandeja del lector se abrió del todo, dice, "Abierto.".
Logro que abra y cierre la bandeja pero no que muestre los mensajes.
¿Alguna idea?
Sigo dándole caña, me cansé.
Código Visual F#:
Código:
// En Opciones de Lector_Form_fs en el Explorador de soluciones.
// Con el segundo botón del ratón, en Tipo de salida: Aplicación Windwos.
open System
open System.Text
open System.Windows.Forms // Añadir refrencias.
open System.Drawing // Añadir referencias.
open System.Runtime.InteropServices
// Importar librería o dll externo.
[<DllImport("winmm.dll")>]
extern int mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
int uReturnLength, IntPtr hwndCallback)
let rt = StringBuilder(127)
// Método necesario para admitir el Diseñador. No se puede modificar
// el contenido de este método con el editor de código.
let form = new Form()
let label_Mensaje = new Label()
let groupBox_Bandeja = new GroupBox()
let button_Abrir = new Button();
let button_Cerrar = new Button();
groupBox_Bandeja.SuspendLayout()
form.SuspendLayout()
// groupBox_Bandeja
groupBox_Bandeja.Controls.Add(button_Abrir) // Añadir botones en el
groupBox_Bandeja.Controls.Add(button_Cerrar) // groupBox_Bandeja.
groupBox_Bandeja.Location <- Point(22, 118)
groupBox_Bandeja.Name <- "groupBox_Bandeja"
groupBox_Bandeja.Size <- Size(227, 90)
groupBox_Bandeja.TabIndex <- 0
groupBox_Bandeja.TabStop <- false
groupBox_Bandeja.Text <- "Bandeja:"
// button_Abrir
button_Abrir.Location <- Point(26, 39)
button_Abrir.Name <- "button_Abrir"
button_Abrir.Size <- Size(75, 23)
button_Abrir.TabIndex <- 0
button_Abrir.Text <- "&Abrir"
button_Abrir.UseVisualStyleBackColor <- true
// button_Cerrar
button_Cerrar.Location <- Point(129, 39)
button_Cerrar.Name <- "button_Cerrar"
button_Cerrar.Size <- Size(75, 23)
button_Cerrar.TabIndex <- 1
button_Cerrar.Text <- "&Cerrar"
button_Cerrar.UseVisualStyleBackColor <- true
// label_Mensaje
label_Mensaje.AutoSize <- true
//label_Mensaje.Font <- Font("Microsoft Sans Serif", 36, FontStyle.Bold, GraphicsUnit.Point, ((byte)(0)))
label_Mensaje.Location <- Point(12, 9)
label_Mensaje.Name <- "label_Mensaje"
label_Mensaje.Size <- Size(52, 55)
label_Mensaje.TabIndex <- 1
label_Mensaje.Text <- "?"
form.Controls.Add(label_Mensaje) // Añadir en el formulario.
// Crear formulario.
let AutoScaleDimensions = new Size(6, 13)
form.AutoScaleMode <- AutoScaleMode.Font
form.BackColor <- Color.FromArgb(((int)(((byte)(114)))), ((int)(((byte)(54)))), ((int)(((byte)(161))))) // Color violeta.
let ClientSize = new Size(284, 261)
form.Controls.Add(groupBox_Bandeja) // Añadir en el formulario.
form.Name <- "Form1"
form.StartPosition <- FormStartPosition.CenterScreen
form.Text <- "Visual F# 2017"
groupBox_Bandeja.ResumeLayout(false)
form.ResumeLayout(false)
form.PerformLayout()
//----------------------------------------------------------------------------------
// Abrir la bandeja.
let mensajeA abr = label_Mensaje.Text <- "Abriendo..."
let abr = label_Mensaje.Click.Add(mensajeA)
Application.DoEvents()
let button_Abrir_Click abrir = mciSendString("set CDAudio door open", rt, 127, IntPtr.Zero) |> ignore
let abrir = button_Abrir.Click.Add(button_Abrir_Click)
let mensajeAbierto2 ao = label_Mensaje.Text <- "Abierto."
let ao = label_Mensaje.Click.Add(mensajeAbierto2)
// Cerrar la bandeja.
let button_Cerrar_Click cerrar = mciSendString("set CDAudio door closed", rt, 127, IntPtr.Zero) |> ignore
let cerrar = button_Cerrar.Click.Add(button_Cerrar_Click)
[<STAThread>]
Application.Run(form)
// Con el segundo botón del ratón, en Tipo de salida: Aplicación Windwos.
open System
open System.Text
open System.Windows.Forms // Añadir refrencias.
open System.Drawing // Añadir referencias.
open System.Runtime.InteropServices
// Importar librería o dll externo.
[<DllImport("winmm.dll")>]
extern int mciSendString(string lpstrCommand, StringBuilder lpstrReturnString,
int uReturnLength, IntPtr hwndCallback)
let rt = StringBuilder(127)
// Método necesario para admitir el Diseñador. No se puede modificar
// el contenido de este método con el editor de código.
let form = new Form()
let label_Mensaje = new Label()
let groupBox_Bandeja = new GroupBox()
let button_Abrir = new Button();
let button_Cerrar = new Button();
groupBox_Bandeja.SuspendLayout()
form.SuspendLayout()
// groupBox_Bandeja
groupBox_Bandeja.Controls.Add(button_Abrir) // Añadir botones en el
groupBox_Bandeja.Controls.Add(button_Cerrar) // groupBox_Bandeja.
groupBox_Bandeja.Location <- Point(22, 118)
groupBox_Bandeja.Name <- "groupBox_Bandeja"
groupBox_Bandeja.Size <- Size(227, 90)
groupBox_Bandeja.TabIndex <- 0
groupBox_Bandeja.TabStop <- false
groupBox_Bandeja.Text <- "Bandeja:"
// button_Abrir
button_Abrir.Location <- Point(26, 39)
button_Abrir.Name <- "button_Abrir"
button_Abrir.Size <- Size(75, 23)
button_Abrir.TabIndex <- 0
button_Abrir.Text <- "&Abrir"
button_Abrir.UseVisualStyleBackColor <- true
// button_Cerrar
button_Cerrar.Location <- Point(129, 39)
button_Cerrar.Name <- "button_Cerrar"
button_Cerrar.Size <- Size(75, 23)
button_Cerrar.TabIndex <- 1
button_Cerrar.Text <- "&Cerrar"
button_Cerrar.UseVisualStyleBackColor <- true
// label_Mensaje
label_Mensaje.AutoSize <- true
//label_Mensaje.Font <- Font("Microsoft Sans Serif", 36, FontStyle.Bold, GraphicsUnit.Point, ((byte)(0)))
label_Mensaje.Location <- Point(12, 9)
label_Mensaje.Name <- "label_Mensaje"
label_Mensaje.Size <- Size(52, 55)
label_Mensaje.TabIndex <- 1
label_Mensaje.Text <- "?"
form.Controls.Add(label_Mensaje) // Añadir en el formulario.
// Crear formulario.
let AutoScaleDimensions = new Size(6, 13)
form.AutoScaleMode <- AutoScaleMode.Font
form.BackColor <- Color.FromArgb(((int)(((byte)(114)))), ((int)(((byte)(54)))), ((int)(((byte)(161))))) // Color violeta.
let ClientSize = new Size(284, 261)
form.Controls.Add(groupBox_Bandeja) // Añadir en el formulario.
form.Name <- "Form1"
form.StartPosition <- FormStartPosition.CenterScreen
form.Text <- "Visual F# 2017"
groupBox_Bandeja.ResumeLayout(false)
form.ResumeLayout(false)
form.PerformLayout()
//----------------------------------------------------------------------------------
// Abrir la bandeja.
let mensajeA abr = label_Mensaje.Text <- "Abriendo..."
let abr = label_Mensaje.Click.Add(mensajeA)
Application.DoEvents()
let button_Abrir_Click abrir = mciSendString("set CDAudio door open", rt, 127, IntPtr.Zero) |> ignore
let abrir = button_Abrir.Click.Add(button_Abrir_Click)
let mensajeAbierto2 ao = label_Mensaje.Text <- "Abierto."
let ao = label_Mensaje.Click.Add(mensajeAbierto2)
// Cerrar la bandeja.
let button_Cerrar_Click cerrar = mciSendString("set CDAudio door closed", rt, 127, IntPtr.Zero) |> ignore
let cerrar = button_Cerrar.Click.Add(button_Cerrar_Click)
[<STAThread>]
Application.Run(form)
Saludos.
PD: ¿Por qué Microsoft no hizo o hace una buena plantilla para crear formularios Windwos o WPF como se hace con C# y VB .net? Está dedicado a modo consola, pero en Visual, hay que programar todo.