fbpx
Welcome, Guest
Username: Password: Remember me
  • Page:
  • 1

TOPIC: Porting VO Forms to Winform or WPF

Porting VO Forms to Winform or WPF 4 days 23 hours ago #11670

  Jamal's Avatar Topic Author Jamal Offline Posts: 172
There is a product by Paul Piko called Facelift Professional 2 for VO which ported VO datawindows and dialogs to WinForms, WPF in C#, VB.NET and (X#, but not fully since X# was still being developed), however , it has not been maintained for several years and no longer compatible with VS 2019. I contacted Paul and he replied quickly, but indicated other development project took him away from the the xBase world.

I've used the xPorter which is great at converting VO code but VO datawindow and dialog are not true Winforms or WPF forms. I could not even copy/paste the created VO controls on new Winforms controls I guess since they are not compatible. I know I can create the Winforms manually, but the task becomes very tedious.

Therefore, I see this as a big obstacle in migrating VO to Winforms (at least), and the questions will we ever see a similar tool like Facelift integrated in VS or be part of the xPorter?

Jamal

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 4 days 23 hours ago #11672

  wriedmann's Avatar wriedmann Away Posts: 1850
Hi Jamal,

Robert is planning to add a VO GUI classes compatible WInForms based library:
www.xsharp.info/articles/updated-bandol-release-schedule
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 4 days 21 hours ago #11674

  Jamal's Avatar Topic Author Jamal Offline Posts: 172
Hi Wolfgang,

That's not exactly what I am talking about. The proposal is to port the VO generated a datawindow or dialog resource entity from from a VO AEF and convert to Winform or WPF.

Please see the samples that Paul Piko provides:

VO resource before:
RESOURCE WinOrder DIALOGEX  4, 3, 456, 289
STYLE	WS_CHILD
FONT	8, "MS Shell Dlg"
BEGIN
	CONTROL	"Order No:", WINORDER_SC_ORDERNO, "Static", WS_CHILD, 13, 8, 39, 10
	CONTROL	"Order Date:", WINORDER_SC_ORDERDATE, "Static", WS_CHILD, 236, 8, 48, 10
	CONTROL	"Name:", WINORDER_SC_BILLNAME, "Static", WS_CHILD, 13, 38, 30, 10
	CONTROL	"Address 1:", WINORDER_SC_BILLADD1, "Static", WS_CHILD, 13, 50, 43, 10
	CONTROL	"Address 2:", WINORDER_SC_BILLADD2, "Static", WS_CHILD, 13, 62, 39, 10
	CONTROL	"Address 3:", WINORDER_SC_BILLADD3, "Static", WS_CHILD, 13, 75, 45, 9
	CONTROL	"Postal Code:", WINORDER_SC_BILLPOST, "Static", WS_CHILD, 13, 87, 49, 10
	CONTROL	"Phone:", WINORDER_SC_BILLPHONE, "Static", WS_CHILD, 13, 99, 33, 10
	CONTROL	"Name:", WINORDER_SC_DELIVNAME, "Static", WS_CHILD, 236, 38, 38, 10
	CONTROL	"Address 1:", WINORDER_SC_DELIVADD1, "Static", WS_CHILD, 236, 50, 36, 10
	CONTROL	"Address 2:", WINORDER_SC_DELIVADD2, "Static", WS_CHILD, 236, 62, 36, 10
	CONTROL	"Address 3:", WINORDER_SC_DELIVADD3, "Static", WS_CHILD, 236, 75, 36, 9
	CONTROL	"Postal Code:", WINORDER_SC_DELIVPOST, "Static", WS_CHILD, 236, 87, 50, 10
	CONTROL	"Phone:", WINORDER_SC_DELIVPONE, "Static", WS_CHILD, 236, 99, 36, 10
	CONTROL	"Comment:", WINORDER_SC_ORDCOMMENT, "Static", WS_CHILD, 8, 121, 36, 10
	CONTROL	"Shipping:", WINORDER_SC_SHIPPING, "Static", WS_CHILD, 348, 221, 31, 10
	CONTROL	"Tax:", WINORDER_SC_TAX, "Static", WS_CHILD, 348, 235, 36, 9
	CONTROL	"Discount:", WINORDER_SC_DISCOUNT, "Static", WS_CHILD, 348, 249, 32, 10
	CONTROL	"Orderno:", WINORDER_ORDERNO, "Edit", ES_READONLY|ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 68, 8, 54, 11, WS_EX_CLIENTEDGE
	CONTROL	"Orderdate:", WINORDER_ORDERDATE, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 291, 8, 45, 11, WS_EX_CLIENTEDGE
	CONTROL	"Billname:", WINORDER_BILLNAME, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 68, 38, 148, 11, WS_EX_CLIENTEDGE
	CONTROL	"Billadd1:", WINORDER_BILLADD1, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 68, 50, 148, 11, WS_EX_CLIENTEDGE
	CONTROL	"Billadd2:", WINORDER_BILLADD2, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 68, 62, 148, 11, WS_EX_CLIENTEDGE
	CONTROL	"Billadd3:", WINORDER_BILLADD3, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 68, 75, 148, 11, WS_EX_CLIENTEDGE
	CONTROL	"Billpost:", WINORDER_BILLPOST, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 68, 87, 54, 11, WS_EX_CLIENTEDGE
	CONTROL	"Billphone:", WINORDER_BILLPHONE, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 68, 99, 101, 11, WS_EX_CLIENTEDGE
	CONTROL	"Delivname:", WINORDER_DELIVNAME, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 291, 38, 148, 11, WS_EX_CLIENTEDGE
	CONTROL	"Delivadd1:", WINORDER_DELIVADD1, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 291, 50, 148, 11, WS_EX_CLIENTEDGE
	CONTROL	"Delivadd2:", WINORDER_DELIVADD2, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 291, 62, 148, 11, WS_EX_CLIENTEDGE
	CONTROL	"Delivadd3:", WINORDER_DELIVADD3, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 291, 75, 55, 11, WS_EX_CLIENTEDGE
	CONTROL	"Delivpost:", WINORDER_DELIVPOST, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 291, 87, 55, 11, WS_EX_CLIENTEDGE
	CONTROL	"Delivphone:", WINORDER_DELIVPHONE, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 291, 99, 101, 11, WS_EX_CLIENTEDGE
	CONTROL	"Ordcomment:", WINORDER_ORDCOMMENT, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 44, 121, 404, 11, WS_EX_CLIENTEDGE
	CONTROL	"Shipping:", WINORDER_SHIPPING, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 396, 221, 40, 11, WS_EX_CLIENTEDGE|WS_EX_RIGHT
	CONTROL	"Tax:", WINORDER_TAX, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 396, 235, 40, 11, WS_EX_CLIENTEDGE|WS_EX_RIGHT
	CONTROL	"Discount:", WINORDER_DISCOUNT, "Edit", ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 396, 249, 40, 11, WS_EX_CLIENTEDGE|WS_EX_RIGHT
	CONTROL	"", WINORDER_WINORDER_DETAIL, "static", WS_CHILD|WS_BORDER, 8, 136, 441, 81
	CONTROL	"Billing", WINORDER_GROUPBOX1, "Button", BS_GROUPBOX|WS_GROUP|WS_CHILD, 6, 25, 219, 90
	CONTROL	"Delivery", WINORDER_GROUPBOX2, "Button", BS_GROUPBOX|WS_GROUP|WS_CHILD, 229, 25, 219, 90
	CONTROL	"Add", WINORDER_PBADDLINE, "Button", WS_TABSTOP|WS_CHILD, 180, 221, 40, 12
	CONTROL	"Delete", WINORDER_PBDELETELINE, "Button", WS_TABSTOP|WS_CHILD, 244, 221, 40, 12
	CONTROL	"Total:", WINORDER_SC_TOTAL, "Static", WS_CHILD, 348, 263, 32, 10
	CONTROL	"Total", WINORDER_TOTAL, "Edit", ES_READONLY|ES_AUTOHSCROLL|WS_TABSTOP|WS_CHILD|WS_BORDER, 396, 263, 40, 11, WS_EX_CLIENTEDGE|WS_EX_RIGHT
END

After FaceLift:
// This code was originally generated by Facelift Pro
// http://www.piko.com.au/facelift

#using System
#using System.Collections.Generic
#using System.ComponentModel
#using System.Data
#using System.Drawing
#using System.Text
#using System.Windows.Forms

	
BEGIN NAMESPACE Orders

PARTIAL CLASS WinOrder INHERIT System.Windows.Forms.UserControl
        
    PRIVATE INSTANCE components := null AS System.ComponentModel.IContainer

    PROTECT oDCSC_ORDERNO AS System.Windows.Forms.Label
    PROTECT oDCSC_ORDERDATE AS System.Windows.Forms.Label
    PROTECT oDCSC_BILLNAME AS System.Windows.Forms.Label
    PROTECT oDCSC_BILLADD1 AS System.Windows.Forms.Label
    PROTECT oDCSC_BILLADD2 AS System.Windows.Forms.Label
    PROTECT oDCSC_BILLADD3 AS System.Windows.Forms.Label
    PROTECT oDCSC_BILLPOST AS System.Windows.Forms.Label
    PROTECT oDCSC_BILLPHONE AS System.Windows.Forms.Label
    PROTECT oDCSC_DELIVNAME AS System.Windows.Forms.Label
    PROTECT oDCSC_DELIVADD1 AS System.Windows.Forms.Label
    PROTECT oDCSC_DELIVADD2 AS System.Windows.Forms.Label
    PROTECT oDCSC_DELIVADD3 AS System.Windows.Forms.Label
    PROTECT oDCSC_DELIVPOST AS System.Windows.Forms.Label
    PROTECT oDCSC_DELIVPONE AS System.Windows.Forms.Label
    PROTECT oDCSC_ORDCOMMENT AS System.Windows.Forms.Label
    PROTECT oDCSC_SHIPPING AS System.Windows.Forms.Label
    PROTECT oDCSC_TAX AS System.Windows.Forms.Label
    PROTECT oDCSC_DISCOUNT AS System.Windows.Forms.Label
    PROTECT oDCORDERNO AS System.Windows.Forms.TextBox
    PROTECT oDCORDERDATE AS System.Windows.Forms.TextBox
    PROTECT oDCBILLNAME AS System.Windows.Forms.TextBox
    PROTECT oDCBILLADD1 AS System.Windows.Forms.TextBox
    PROTECT oDCBILLADD2 AS System.Windows.Forms.TextBox
    PROTECT oDCBILLADD3 AS System.Windows.Forms.TextBox
    PROTECT oDCBILLPOST AS System.Windows.Forms.TextBox
    PROTECT oDCBILLPHONE AS System.Windows.Forms.TextBox
    PROTECT oDCDELIVNAME AS System.Windows.Forms.TextBox
    PROTECT oDCDELIVADD1 AS System.Windows.Forms.TextBox
    PROTECT oDCDELIVADD2 AS System.Windows.Forms.TextBox
    PROTECT oDCDELIVADD3 AS System.Windows.Forms.TextBox
    PROTECT oDCDELIVPOST AS System.Windows.Forms.TextBox
    PROTECT oDCDELIVPHONE AS System.Windows.Forms.TextBox
    PROTECT oDCORDCOMMENT AS System.Windows.Forms.TextBox
    PROTECT oDCSHIPPING AS System.Windows.Forms.TextBox
    PROTECT oDCTAX AS System.Windows.Forms.TextBox
    PROTECT oDCDISCOUNT AS System.Windows.Forms.TextBox
    PROTECT oSFWinOrder_DETAIL AS System.Windows.Forms.UserControl
    PROTECT oDCGroupBox1 AS System.Windows.Forms.GroupBox
    PROTECT oDCGroupBox2 AS System.Windows.Forms.GroupBox
    PROTECT oCCpbAddLine AS System.Windows.Forms.Button
    PROTECT oCCpbDeleteLine AS System.Windows.Forms.Button
    PROTECT oDCSC_TOTAL AS System.Windows.Forms.Label
    PROTECT oDCTotal AS System.Windows.Forms.TextBox

    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    /// true if managed resources should be disposed; otherwise, false.

    PROTECTED VIRTUAL METHOD Dispose( disposing AS LOGIC ) AS VOID
        IF disposing && components != NULL
            components:Dispose()
        ENDIF
        SUPER:Dispose( disposing )
        RETURN
    
   
    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>

    PRIVATE METHOD InitializeComponent() AS VOID

        SELF:oDCSC_ORDERNO := System.Windows.Forms.Label{}
        SELF:oDCSC_ORDERDATE := System.Windows.Forms.Label{}
        SELF:oDCSC_BILLNAME := System.Windows.Forms.Label{}
        SELF:oDCSC_BILLADD1 := System.Windows.Forms.Label{}
        SELF:oDCSC_BILLADD2 := System.Windows.Forms.Label{}
        SELF:oDCSC_BILLADD3 := System.Windows.Forms.Label{}
        SELF:oDCSC_BILLPOST := System.Windows.Forms.Label{}
        SELF:oDCSC_BILLPHONE := System.Windows.Forms.Label{}
        SELF:oDCSC_DELIVNAME := System.Windows.Forms.Label{}
        SELF:oDCSC_DELIVADD1 := System.Windows.Forms.Label{}
        SELF:oDCSC_DELIVADD2 := System.Windows.Forms.Label{}
        SELF:oDCSC_DELIVADD3 := System.Windows.Forms.Label{}
        SELF:oDCSC_DELIVPOST := System.Windows.Forms.Label{}
        SELF:oDCSC_DELIVPONE := System.Windows.Forms.Label{}
        SELF:oDCSC_ORDCOMMENT := System.Windows.Forms.Label{}
        SELF:oDCSC_SHIPPING := System.Windows.Forms.Label{}
        SELF:oDCSC_TAX := System.Windows.Forms.Label{}
        SELF:oDCSC_DISCOUNT := System.Windows.Forms.Label{}
        SELF:oDCORDERNO := System.Windows.Forms.TextBox{}
        SELF:oDCORDERDATE := System.Windows.Forms.TextBox{}
        SELF:oDCBILLNAME := System.Windows.Forms.TextBox{}
        SELF:oDCBILLADD1 := System.Windows.Forms.TextBox{}
        SELF:oDCBILLADD2 := System.Windows.Forms.TextBox{}
        SELF:oDCBILLADD3 := System.Windows.Forms.TextBox{}
        SELF:oDCBILLPOST := System.Windows.Forms.TextBox{}
        SELF:oDCBILLPHONE := System.Windows.Forms.TextBox{}
        SELF:oDCDELIVNAME := System.Windows.Forms.TextBox{}
        SELF:oDCDELIVADD1 := System.Windows.Forms.TextBox{}
        SELF:oDCDELIVADD2 := System.Windows.Forms.TextBox{}
        SELF:oDCDELIVADD3 := System.Windows.Forms.TextBox{}
        SELF:oDCDELIVPOST := System.Windows.Forms.TextBox{}
        SELF:oDCDELIVPHONE := System.Windows.Forms.TextBox{}
        SELF:oDCORDCOMMENT := System.Windows.Forms.TextBox{}
        SELF:oDCSHIPPING := System.Windows.Forms.TextBox{}
        SELF:oDCTAX := System.Windows.Forms.TextBox{}
        SELF:oDCDISCOUNT := System.Windows.Forms.TextBox{}
        SELF:oSFWinOrder_DETAIL := Orders.WinOrder_DETAIL{}
        SELF:oDCGroupBox1 := System.Windows.Forms.GroupBox{}
        SELF:oDCGroupBox2 := System.Windows.Forms.GroupBox{}
        SELF:oCCpbAddLine := System.Windows.Forms.Button{}
        SELF:oCCpbDeleteLine := System.Windows.Forms.Button{}
        SELF:oDCSC_TOTAL := System.Windows.Forms.Label{}
        SELF:oDCTotal := System.Windows.Forms.TextBox{}

        SELF:SuspendLayout()

        //
        // oDCSC_ORDERNO
        //

        SELF:oDCSC_ORDERNO:Location := System.Drawing.Point{21, 15}
        SELF:oDCSC_ORDERNO:Name := "SC_ORDERNO"
        SELF:oDCSC_ORDERNO:Text := "Order No:"
        SELF:oDCSC_ORDERNO:Size := System.Drawing.Size{59, 16}

        SELF:oDCSC_ORDERNO:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_ORDERDATE
        //

        SELF:oDCSC_ORDERDATE:Location := System.Drawing.Point{356, 15}
        SELF:oDCSC_ORDERDATE:Name := "SC_ORDERDATE"
        SELF:oDCSC_ORDERDATE:Text := "Order Date:"
        SELF:oDCSC_ORDERDATE:Size := System.Drawing.Size{72, 16}

        SELF:oDCSC_ORDERDATE:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_BILLNAME
        //

        SELF:oDCSC_BILLNAME:Location := System.Drawing.Point{10, 21}
        SELF:oDCSC_BILLNAME:Name := "SC_BILLNAME"
        SELF:oDCSC_BILLNAME:Text := "Name:"
        SELF:oDCSC_BILLNAME:Size := System.Drawing.Size{45, 16}

        SELF:oDCSC_BILLNAME:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_BILLADD1
        //

        SELF:oDCSC_BILLADD1:Location := System.Drawing.Point{10, 41}
        SELF:oDCSC_BILLADD1:Name := "SC_BILLADD1"
        SELF:oDCSC_BILLADD1:Text := "Address 1:"
        SELF:oDCSC_BILLADD1:Size := System.Drawing.Size{65, 16}

        SELF:oDCSC_BILLADD1:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_BILLADD2
        //

        SELF:oDCSC_BILLADD2:Location := System.Drawing.Point{10, 61}
        SELF:oDCSC_BILLADD2:Name := "SC_BILLADD2"
        SELF:oDCSC_BILLADD2:Text := "Address 2:"
        SELF:oDCSC_BILLADD2:Size := System.Drawing.Size{59, 16}

        SELF:oDCSC_BILLADD2:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_BILLADD3
        //

        SELF:oDCSC_BILLADD3:Location := System.Drawing.Point{10, 81}
        SELF:oDCSC_BILLADD3:Name := "SC_BILLADD3"
        SELF:oDCSC_BILLADD3:Text := "Address 3:"
        SELF:oDCSC_BILLADD3:Size := System.Drawing.Size{68, 16}

        SELF:oDCSC_BILLADD3:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_BILLPOST
        //

        SELF:oDCSC_BILLPOST:Location := System.Drawing.Point{10, 101}
        SELF:oDCSC_BILLPOST:Name := "SC_BILLPOST"
        SELF:oDCSC_BILLPOST:Text := "Postal Code:"
        SELF:oDCSC_BILLPOST:Size := System.Drawing.Size{74, 16}

        SELF:oDCSC_BILLPOST:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_BILLPHONE
        //

        SELF:oDCSC_BILLPHONE:Location := System.Drawing.Point{10, 121}
        SELF:oDCSC_BILLPHONE:Name := "SC_BILLPHONE"
        SELF:oDCSC_BILLPHONE:Text := "Phone:"
        SELF:oDCSC_BILLPHONE:Size := System.Drawing.Size{49, 16}

        SELF:oDCSC_BILLPHONE:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_DELIVNAME
        //

        SELF:oDCSC_DELIVNAME:Location := System.Drawing.Point{11, 21}
        SELF:oDCSC_DELIVNAME:Name := "SC_DELIVNAME"
        SELF:oDCSC_DELIVNAME:Text := "Name:"
        SELF:oDCSC_DELIVNAME:Size := System.Drawing.Size{56, 16}

        SELF:oDCSC_DELIVNAME:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_DELIVADD1
        //

        SELF:oDCSC_DELIVADD1:Location := System.Drawing.Point{11, 41}
        SELF:oDCSC_DELIVADD1:Name := "SC_DELIVADD1"
        SELF:oDCSC_DELIVADD1:Text := "Address 1:"
        SELF:oDCSC_DELIVADD1:Size := System.Drawing.Size{54, 16}

        SELF:oDCSC_DELIVADD1:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_DELIVADD2
        //

        SELF:oDCSC_DELIVADD2:Location := System.Drawing.Point{11, 61}
        SELF:oDCSC_DELIVADD2:Name := "SC_DELIVADD2"
        SELF:oDCSC_DELIVADD2:Text := "Address 2:"
        SELF:oDCSC_DELIVADD2:Size := System.Drawing.Size{54, 16}

        SELF:oDCSC_DELIVADD2:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_DELIVADD3
        //

        SELF:oDCSC_DELIVADD3:Location := System.Drawing.Point{11, 81}
        SELF:oDCSC_DELIVADD3:Name := "SC_DELIVADD3"
        SELF:oDCSC_DELIVADD3:Text := "Address 3:"
        SELF:oDCSC_DELIVADD3:Size := System.Drawing.Size{54, 16}

        SELF:oDCSC_DELIVADD3:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_DELIVPOST
        //

        SELF:oDCSC_DELIVPOST:Location := System.Drawing.Point{11, 101}
        SELF:oDCSC_DELIVPOST:Name := "SC_DELIVPOST"
        SELF:oDCSC_DELIVPOST:Text := "Postal Code:"
        SELF:oDCSC_DELIVPOST:Size := System.Drawing.Size{74, 16}

        SELF:oDCSC_DELIVPOST:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_DELIVPONE
        //

        SELF:oDCSC_DELIVPONE:Location := System.Drawing.Point{11, 121}
        SELF:oDCSC_DELIVPONE:Name := "SC_DELIVPONE"
        SELF:oDCSC_DELIVPONE:Text := "Phone:"
        SELF:oDCSC_DELIVPONE:Size := System.Drawing.Size{54, 16}

        SELF:oDCSC_DELIVPONE:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_ORDCOMMENT
        //

        SELF:oDCSC_ORDCOMMENT:Location := System.Drawing.Point{13, 199}
        SELF:oDCSC_ORDCOMMENT:Name := "SC_ORDCOMMENT"
        SELF:oDCSC_ORDCOMMENT:Text := "Comment:"
        SELF:oDCSC_ORDCOMMENT:Size := System.Drawing.Size{54, 16}

        SELF:oDCSC_ORDCOMMENT:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_SHIPPING
        //

        SELF:oDCSC_SHIPPING:Location := System.Drawing.Point{523, 361}
        SELF:oDCSC_SHIPPING:Name := "SC_SHIPPING"
        SELF:oDCSC_SHIPPING:Text := "Shipping:"
        SELF:oDCSC_SHIPPING:Size := System.Drawing.Size{47, 16}

        SELF:oDCSC_SHIPPING:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_TAX
        //

        SELF:oDCSC_TAX:Location := System.Drawing.Point{523, 383}
        SELF:oDCSC_TAX:Name := "SC_TAX"
        SELF:oDCSC_TAX:Text := "Tax:"
        SELF:oDCSC_TAX:Size := System.Drawing.Size{54, 16}

        SELF:oDCSC_TAX:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCSC_DISCOUNT
        //

        SELF:oDCSC_DISCOUNT:Location := System.Drawing.Point{523, 406}
        SELF:oDCSC_DISCOUNT:Name := "SC_DISCOUNT"
        SELF:oDCSC_DISCOUNT:Text := "Discount:"
        SELF:oDCSC_DISCOUNT:Size := System.Drawing.Size{48, 16}

        SELF:oDCSC_DISCOUNT:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCORDERNO
        //

        SELF:oDCORDERNO:Location := System.Drawing.Point{103, 15}
        SELF:oDCORDERNO:Name := "ORDERNO"
        SELF:oDCORDERNO:Text := ""
        SELF:oDCORDERNO:Size := System.Drawing.Size{82, 18}

        //
        // oDCORDERDATE
        //

        SELF:oDCORDERDATE:Location := System.Drawing.Point{438, 15}
        SELF:oDCORDERDATE:Name := "ORDERDATE"
        SELF:oDCORDERDATE:Text := ""
        SELF:oDCORDERDATE:Size := System.Drawing.Size{68, 18}

        //
        // oDCBILLNAME
        //

        SELF:oDCBILLNAME:Location := System.Drawing.Point{92, 21}
        SELF:oDCBILLNAME:Name := "BILLNAME"
        SELF:oDCBILLNAME:Text := ""
        SELF:oDCBILLNAME:Size := System.Drawing.Size{222, 18}

        //
        // oDCBILLADD1
        //

        SELF:oDCBILLADD1:Location := System.Drawing.Point{92, 41}
        SELF:oDCBILLADD1:Name := "BILLADD1"
        SELF:oDCBILLADD1:Text := ""
        SELF:oDCBILLADD1:Size := System.Drawing.Size{222, 18}

        //
        // oDCBILLADD2
        //

        SELF:oDCBILLADD2:Location := System.Drawing.Point{92, 61}
        SELF:oDCBILLADD2:Name := "BILLADD2"
        SELF:oDCBILLADD2:Text := ""
        SELF:oDCBILLADD2:Size := System.Drawing.Size{222, 18}

        //
        // oDCBILLADD3
        //

        SELF:oDCBILLADD3:Location := System.Drawing.Point{92, 81}
        SELF:oDCBILLADD3:Name := "BILLADD3"
        SELF:oDCBILLADD3:Text := ""
        SELF:oDCBILLADD3:Size := System.Drawing.Size{222, 18}

        //
        // oDCBILLPOST
        //

        SELF:oDCBILLPOST:Location := System.Drawing.Point{92, 101}
        SELF:oDCBILLPOST:Name := "BILLPOST"
        SELF:oDCBILLPOST:Text := ""
        SELF:oDCBILLPOST:Size := System.Drawing.Size{82, 18}

        //
        // oDCBILLPHONE
        //

        SELF:oDCBILLPHONE:Location := System.Drawing.Point{92, 121}
        SELF:oDCBILLPHONE:Name := "BILLPHONE"
        SELF:oDCBILLPHONE:Text := ""
        SELF:oDCBILLPHONE:Size := System.Drawing.Size{152, 18}

        //
        // oDCDELIVNAME
        //

        SELF:oDCDELIVNAME:Location := System.Drawing.Point{93, 21}
        SELF:oDCDELIVNAME:Name := "DELIVNAME"
        SELF:oDCDELIVNAME:Text := ""
        SELF:oDCDELIVNAME:Size := System.Drawing.Size{222, 18}

        //
        // oDCDELIVADD1
        //

        SELF:oDCDELIVADD1:Location := System.Drawing.Point{93, 41}
        SELF:oDCDELIVADD1:Name := "DELIVADD1"
        SELF:oDCDELIVADD1:Text := ""
        SELF:oDCDELIVADD1:Size := System.Drawing.Size{222, 18}

        //
        // oDCDELIVADD2
        //

        SELF:oDCDELIVADD2:Location := System.Drawing.Point{93, 61}
        SELF:oDCDELIVADD2:Name := "DELIVADD2"
        SELF:oDCDELIVADD2:Text := ""
        SELF:oDCDELIVADD2:Size := System.Drawing.Size{222, 18}

        //
        // oDCDELIVADD3
        //

        SELF:oDCDELIVADD3:Location := System.Drawing.Point{93, 81}
        SELF:oDCDELIVADD3:Name := "DELIVADD3"
        SELF:oDCDELIVADD3:Text := ""
        SELF:oDCDELIVADD3:Size := System.Drawing.Size{82, 18}

        //
        // oDCDELIVPOST
        //

        SELF:oDCDELIVPOST:Location := System.Drawing.Point{93, 101}
        SELF:oDCDELIVPOST:Name := "DELIVPOST"
        SELF:oDCDELIVPOST:Text := ""
        SELF:oDCDELIVPOST:Size := System.Drawing.Size{82, 18}

        //
        // oDCDELIVPHONE
        //

        SELF:oDCDELIVPHONE:Location := System.Drawing.Point{93, 121}
        SELF:oDCDELIVPHONE:Name := "DELIVPHONE"
        SELF:oDCDELIVPHONE:Text := ""
        SELF:oDCDELIVPHONE:Size := System.Drawing.Size{152, 18}

        //
        // oDCORDCOMMENT
        //

        SELF:oDCORDCOMMENT:Location := System.Drawing.Point{67, 199}
        SELF:oDCORDCOMMENT:Name := "ORDCOMMENT"
        SELF:oDCORDCOMMENT:Text := ""
        SELF:oDCORDCOMMENT:Size := System.Drawing.Size{606, 18}

        //
        // oDCSHIPPING
        //

        SELF:oDCSHIPPING:Location := System.Drawing.Point{595, 361}
        SELF:oDCSHIPPING:Name := "SHIPPING"
        SELF:oDCSHIPPING:Text := ""
        SELF:oDCSHIPPING:Size := System.Drawing.Size{60, 18}

        //
        // oDCTAX
        //

        SELF:oDCTAX:Location := System.Drawing.Point{595, 383}
        SELF:oDCTAX:Name := "TAX"
        SELF:oDCTAX:Text := ""
        SELF:oDCTAX:Size := System.Drawing.Size{60, 18}

        //
        // oDCDISCOUNT
        //

        SELF:oDCDISCOUNT:Location := System.Drawing.Point{595, 406}
        SELF:oDCDISCOUNT:Name := "DISCOUNT"
        SELF:oDCDISCOUNT:Text := ""
        SELF:oDCDISCOUNT:Size := System.Drawing.Size{60, 18}

        //
        // oSFWinOrder_DETAIL
        //

        SELF:oSFWinOrder_DETAIL:Location := System.Drawing.Point{13, 223}
        SELF:oSFWinOrder_DETAIL:Name := "WinOrder_DETAIL"
        SELF:oSFWinOrder_DETAIL:Text := "WinOrder_DETAIL"
        SELF:oSFWinOrder_DETAIL:Size := System.Drawing.Size{662, 132}

        //
        // oDCGroupBox1
        //

        SELF:oDCGroupBox1:Location := System.Drawing.Point{11, 42}
        SELF:oDCGroupBox1:Name := "GroupBox1"
        SELF:oDCGroupBox1:Text := "Billing"
        SELF:oDCGroupBox1:Size := System.Drawing.Size{328, 146}

        //
        // oDCGroupBox2
        //

        SELF:oDCGroupBox2:Location := System.Drawing.Point{345, 42}
        SELF:oDCGroupBox2:Name := "GroupBox2"
        SELF:oDCGroupBox2:Text := "Delivery"
        SELF:oDCGroupBox2:Size := System.Drawing.Size{328, 146}

        //
        // oCCpbAddLine
        //

        SELF:oCCpbAddLine:Location := System.Drawing.Point{271, 361}
        SELF:oCCpbAddLine:Name := "pbAddLine"
        SELF:oCCpbAddLine:Text := "Add"
        SELF:oCCpbAddLine:Size := System.Drawing.Size{60, 20}

        SELF:oCCpbAddLine:FlatStyle := System.Windows.Forms.FlatStyle.System
        SELF:oCCpbAddLine:UseVisualStyleBackColor := TRUE

        //
        // oCCpbDeleteLine
        //

        SELF:oCCpbDeleteLine:Location := System.Drawing.Point{367, 361}
        SELF:oCCpbDeleteLine:Name := "pbDeleteLine"
        SELF:oCCpbDeleteLine:Text := "Delete"
        SELF:oCCpbDeleteLine:Size := System.Drawing.Size{60, 20}

        SELF:oCCpbDeleteLine:FlatStyle := System.Windows.Forms.FlatStyle.System
        SELF:oCCpbDeleteLine:UseVisualStyleBackColor := TRUE

        //
        // oDCSC_TOTAL
        //

        SELF:oDCSC_TOTAL:Location := System.Drawing.Point{523, 429}
        SELF:oDCSC_TOTAL:Name := "SC_TOTAL"
        SELF:oDCSC_TOTAL:Text := "Total:"
        SELF:oDCSC_TOTAL:Size := System.Drawing.Size{48, 16}

        SELF:oDCSC_TOTAL:FlatStyle := System.Windows.Forms.FlatStyle.System

        //
        // oDCTotal
        //

        SELF:oDCTotal:Location := System.Drawing.Point{596, 429}
        SELF:oDCTotal:Name := "Total"
        SELF:oDCTotal:Text := ""
        SELF:oDCTotal:Size := System.Drawing.Size{60, 18}

        // 
        // WinOrder
        // 
        SELF:AutoScaleDimensions := System.Drawing.SizeF{6, 13}
        SELF:AutoScaleMode := System.Windows.Forms.AutoScaleMode.Font

        SELF:ClientSize := System.Drawing.Size{686, 471}
        
        SELF:Controls:Add(SELF:oDCSC_ORDERNO)

        SELF:Controls:Add(SELF:oDCSC_ORDERDATE)

        SELF:oDCGroupBox1:Controls:Add(SELF:oDCSC_BILLNAME)

        SELF:oDCGroupBox1:Controls:Add(SELF:oDCSC_BILLADD1)

        SELF:oDCGroupBox1:Controls:Add(SELF:oDCSC_BILLADD2)

        SELF:oDCGroupBox1:Controls:Add(SELF:oDCSC_BILLADD3)

        SELF:oDCGroupBox1:Controls:Add(SELF:oDCSC_BILLPOST)

        SELF:oDCGroupBox1:Controls:Add(SELF:oDCSC_BILLPHONE)

        SELF:oDCGroupBox2:Controls:Add(SELF:oDCSC_DELIVNAME)

        SELF:oDCGroupBox2:Controls:Add(SELF:oDCSC_DELIVADD1)

        SELF:oDCGroupBox2:Controls:Add(SELF:oDCSC_DELIVADD2)

        SELF:oDCGroupBox2:Controls:Add(SELF:oDCSC_DELIVADD3)

        SELF:oDCGroupBox2:Controls:Add(SELF:oDCSC_DELIVPOST)

        SELF:oDCGroupBox2:Controls:Add(SELF:oDCSC_DELIVPONE)

        SELF:Controls:Add(SELF:oDCSC_ORDCOMMENT)

        SELF:Controls:Add(SELF:oDCSC_SHIPPING)

        SELF:Controls:Add(SELF:oDCSC_TAX)

        SELF:Controls:Add(SELF:oDCSC_DISCOUNT)

        SELF:Controls:Add(SELF:oDCORDERNO)

        SELF:Controls:Add(SELF:oDCORDERDATE)

        SELF:oDCGroupBox1:Controls:Add(SELF:oDCBILLNAME)

        SELF:oDCGroupBox1:Controls:Add(SELF:oDCBILLADD1)

        SELF:oDCGroupBox1:Controls:Add(SELF:oDCBILLADD2)

        SELF:oDCGroupBox1:Controls:Add(SELF:oDCBILLADD3)

        SELF:oDCGroupBox1:Controls:Add(SELF:oDCBILLPOST)

        SELF:oDCGroupBox1:Controls:Add(SELF:oDCBILLPHONE)

        SELF:oDCGroupBox2:Controls:Add(SELF:oDCDELIVNAME)

        SELF:oDCGroupBox2:Controls:Add(SELF:oDCDELIVADD1)

        SELF:oDCGroupBox2:Controls:Add(SELF:oDCDELIVADD2)

        SELF:oDCGroupBox2:Controls:Add(SELF:oDCDELIVADD3)

        SELF:oDCGroupBox2:Controls:Add(SELF:oDCDELIVPOST)

        SELF:oDCGroupBox2:Controls:Add(SELF:oDCDELIVPHONE)

        SELF:Controls:Add(SELF:oDCORDCOMMENT)

        SELF:Controls:Add(SELF:oDCSHIPPING)

        SELF:Controls:Add(SELF:oDCTAX)

        SELF:Controls:Add(SELF:oDCDISCOUNT)

        SELF:Controls:Add(SELF:oSFWinOrder_DETAIL)

        SELF:Controls:Add(SELF:oDCGroupBox1)

        SELF:Controls:Add(SELF:oDCGroupBox2)

        SELF:Controls:Add(SELF:oCCpbAddLine)

        SELF:Controls:Add(SELF:oCCpbDeleteLine)

        SELF:Controls:Add(SELF:oDCSC_TOTAL)

        SELF:Controls:Add(SELF:oDCTotal)

        SELF:Name := "WinOrder"
        SELF:Text := "Orders"
        SELF:ResumeLayout(false)

        RETURN

END CLASS


END NAMESPACE

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 4 days 21 hours ago #11675

  Jamal's Avatar Topic Author Jamal Offline Posts: 172
Please sse attached FaceLift samples as provided by Paul Piko.
Attachments:

Please Log in or Create an account to join the conversation.

Last edit: by Jamal.

Porting VO Forms to Winform or WPF 4 days 15 hours ago #11676

  Chris's Avatar Chris Offline Posts: 1459

Jamal wrote: Therefore, I see this as a big obstacle in migrating VO to Winforms (at least), and the questions will we ever see a similar tool like Facelift integrated in VS or be part of the xPorter?


That's pretty easy actually, especially in XIDE (VIDE back then) there has been a feature to create a Windows Form out of a VO window since many years ago. For VS it is a little more complicated, but still should not be difficult. But of course this can only serve as a very starting point, because none of the existing VO GUI code (that has to do with the GUI) can be reused in WinForms...
XSharp Development Team
chris(at)xsharp.eu

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 4 days 12 hours ago #11677

  Jamal's Avatar Topic Author Jamal Offline Posts: 172

Chris wrote: That's pretty easy actually, especially in XIDE (VIDE back then) there has been a feature to create a Windows Form out of a VO window since many years ago..


Hi Chris,

Do you mean there was a feature and it longer exists in XIDE?
I've looked and cannot find such a feature in XIDE.

Jamal

Please Log in or Create an account to join the conversation.

Last edit: by Jamal.

Porting VO Forms to Winform or WPF 4 days 10 hours ago #11678

  wriedmann's Avatar wriedmann Away Posts: 1850
Hi Jamal,
I agree with Chris that such a functionality is not too hard to write.
I was interested too in Facelift, but transporting only the windows to WinForms is only a small part of work.
Therefore I see the alternate GUI classes a better tool for a migration.
Since they are based on Windows Forms, a mix of native Windows Forms forms and windows moved over from the VO GUI classes should be possible.
But (and that is valid for both methods) the bBrowser is a very important component of my applications, and I have my doubts about its migration.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 3 days 17 hours ago #11680

  Chris's Avatar Chris Offline Posts: 1459
Hi Jamal,

It was a little hidden on purpose back then :). You need to first port the VO windows (their AEF) into an X# project, open that project, create a new WinForms app, create a new windows form and in the designer at the toolbar, select Form Designer Commands->Import from VO window, now a dialog will open with the available VO windows in the project to import from.

It is a bit clumpy, but it was not a much requested feature, so I never improved it, actually had completely forgotten about myself until I saw your post which reminded me of it :)

Jamal wrote:

Chris wrote: That's pretty easy actually, especially in XIDE (VIDE back then) there has been a feature to create a Windows Form out of a VO window since many years ago..


Hi Chris,

Do you mean there was a feature and it longer exists in XIDE?
I've looked and cannot find such a feature in XIDE.

Jamal

XSharp Development Team
chris(at)xsharp.eu

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 3 days 13 hours ago #11682

  Jamal's Avatar Topic Author Jamal Offline Posts: 172
Hi Chris,

I tried to follow the steps you outlined, but it is not clear and thus it is a no go! This is not important right now.
What is important FaceLift equivalent is needed which is part of the X# product.

I am surprised that was not a popular requested feature; it's possible that other developers did not embrace Vulcan.NET at the time or even X# until now, but Paul Piko did and created the FaceLift product. However, Vulcan.NET is no longer here and X# was not ready for prime time and FaceLift is not longer maintained . Now that X# is a more mature .NET development tool, for me at least, it's critical as I do not wish to use the old migrated xPorted VO data windows in a .NET app which look plain :evil:Therefore a product like FaceLift is a necessity to make the migration to real .NET or WPF forms.

FaceLift does not convert VO code to .NET, just the forms which is what is needed. XPorter does a great job converting VO code; now combine both into one TOOL and you have a winner. I understand not all controls will equivalents (those can have placeholders) and some code changes are needed to access the properties of native .NET controls.

Jamal

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 3 days 11 hours ago #11684

  wriedmann's Avatar wriedmann Away Posts: 1850
Hi Jamal,
personally I don't see any bigger problem "translating" a VO window to a WinForms window in the manner as Facelift has done it - or better, it seems to be an relatively easy task compared to all the other things that the development team has done on the compiler and the runtime.
But nearly all VO applications I have seen had a lot of business logic in the window classes, and that code is hard to move over to Windows Forms (or even harder to WPF).
When searching a migration strategy for my own applications I had also contacted Paul about FaceLift, but had discarded this way.
I'm not much more interested in the alternate GUI classes.

But if you are so interested in a window translator tool: why don't write such a tool ourself? After all, X# should not only be a project of the current team. but should involve also us users.

Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 3 days 3 hours ago #11686

  Chris's Avatar Chris Offline Posts: 1459
Gyus,

It should be easier to add this functionality to VOXporter. Will do that, will make it optionally create an extra solution/project with all the window definitions in it.
XSharp Development Team
chris(at)xsharp.eu

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 3 days 3 hours ago #11687

  wriedmann's Avatar wriedmann Away Posts: 1850
Hi Chris,
that would be very helpful for someone, I think.
But maybe you could add some mapping configuration, for example to map SingleLineEdit to TextBoxEx.
Dou you are reading the ressource or the class or both?
In the ressource inherited classes are not visible, only in the class.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 3 days 2 hours ago #11690

  Chris's Avatar Chris Offline Posts: 1459
Hi Wolfgnag,

VOXporter reads directly the binary entity of the windows, so it does not need to read the resource or the class code for this. The same happens in the feature inside XIDE, which also has direct access to the WED "binaries".
XSharp Development Team
chris(at)xsharp.eu

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 3 days 2 hours ago #11692

  wriedmann's Avatar wriedmann Away Posts: 1850
Hi Chris,
thank you very much!
Maybe I could use this feature as well in the future....
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 3 days 1 hour ago #11693

  Jamal's Avatar Topic Author Jamal Offline Posts: 172
Hi Chris,

That's great!! I am sure many will find it a very valuable productivity feature of VOXPorter.

Thanks!
Jamal

Chris wrote: Gyus,

It should be easier to add this functionality to VOXporter. Will do that, will make it optionally create an extra solution/project with all the window definitions in it.

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 2 days 13 hours ago #11704

  Chris's Avatar Chris Offline Posts: 1459
Hi Jamal,

Jamal wrote: Hi Chris,

That's great!! I am sure many will find it a very valuable productivity feature of VOXPorter.

Thanks!
Jamal

Chris wrote: Gyus,

It should be easier to add this functionality to VOXporter. Will do that, will make it optionally create an extra solution/project with all the window definitions in it.


OK, I have now implemented this feature, it will be available in the next release! :)
XSharp Development Team
chris(at)xsharp.eu

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 2 days 11 hours ago #11706

  wriedmann's Avatar wriedmann Away Posts: 1850
Hi Chris,
great, thank you!
Will test it out.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy

www.riedmann.it - docs.xsharp.it

Please Log in or Create an account to join the conversation.

Porting VO Forms to Winform or WPF 1 day 20 hours ago #11714

  ohernandez@sistemas-liasa.com's Avatar Offline Posts: 26
Hi Chris,
Thank You, this will help a lot in the migration to x#.

Oscar Hdz.

Please Log in or Create an account to join the conversation.

  • Page:
  • 1