Κυριακή 3 Απριλίου 2016

Αναθεώρηση 199 - ComboBox (ένας τύπος) και Lambda

Παρακάτω είναι το παράδειγμα με το ComboBox. Είναι ο τύπος με το textbox με τιμή από μια λίστα. Σε άλλη αναθεώρηση θα βάλω και το Editable Combobox με AutoComplete (όπως έχει ένα στο παράθυρο Ρυθμίσεις)

Επιπλέον έφτιαξα lambda συναρτήσεις, που κρατούν κάποιες non local μεταβλητές (προς το παρόν όχι πίνακες).


item$={alfa
            delta
            gamma
            beta
            }


declare form1 form
declare combo1 combobox form form1
declare text1 textbox form form1
With combo1,"label","Combo1", "ListText",Item$, "listtext" as list$, "list" as list$(), "text" as combo1$
With combo1,"Find" as Find()
Method combo1,"Sort"
combo1$=list$(find("gam*"))


Method combo1,"Move", 1000,1000,6000,600
Method text1, "Move", 1000,2900,6000,600


With text1, "left" as left, "text" as text1.text$
Print left
Method form1, "show"
function form1.unload {
      Keyboard "!"
      show
}
Function combo1.dblclick {
        text1.text$=list$
}
Function combo1.click {
        text1.text$=list$
}
Function combo1.scroll {
        text1.text$=list$(number-1)
}
Function combo1.move {
        text1.text$=list$(number-1)
}
a$=key$
declare Text1 nothing
declare combo1 nothing
declare form1 nothing




Εδώ είναι η Lambda (υπάρχουν δυο, μια για αλφαριθμητικά και μια για νούμερα και άλλα αντικείμενα, αλλά και οι δύο δίνουν παίορνουν και δίνουν Lambda συναρτήσεις.


f=Lambda ->number+3
L=Lambda -> number**2
Def Twice(z)=Lambda z ->z(z(number))
Dim G(10)
G(2)=Twice(f)
G(3)=Twice(L)
K=Twice(L)
Print Type$(G(2))
Print G(2)(7) \\13
Print G(2)(8) \\14
Print G(3)(3), K(3) \\ 81 , 81
Dim KL()
KL()=G() \\ copy array, produce new objects
Print KL(3)(2) \\ 16


KL(3)=G(2) \\ change function
Print Kl(3)(7) \\13
KL(1)=L
Print KL(1)(10) \\ 100
Print KL(1)(KL(1)(10)) \\ 10000


Group Alfa {
      Dim AA(10)
      Module GetFunc {
            read where, .AA(where), KL
      }
      Function PlayMe {
            =.AA(number)(number)
      }
}
Alfa.AA(2)=L
Print Alfa.AA(2)(2)
Alfa.GetFunc 3, twice(F), 1000
Print Alfa.PlayMe(3, 7)




Def A$(A1$)= lambda$ A1$ ->{
            Read X%
            Let B$="", L=Len(A1$)
            While X%<>0 {
                  B$=Mid$(A1$,X% mod L+1,1)+B$
                  X%/=L
            }
            =B$
}
Hx$=A$("0123456789ABCDEF")
Oct$=A$("01234567")
Bin$=A$("01")
M=256
Print Hx$(M) \\ 100
Print Oct$(M) \\400
Print Bin$(M) \\100000000
Dim A$(10)
Stack New {
      Data Hx$, Oct$, Bin$
      For I=0 to 2 : Read A$(I) : Next I
}
For I=0 to 2 {
      Print A$(I)(1000) \\ 3E8,  1750,  11111010000
}



Δεν υπάρχουν σχόλια:

Δημοσίευση σχολίου

You can feel free to write any suggestion, or idea on the subject.