Τρίτη 13 Δεκεμβρίου 2022

Αναθεώρηση 20 Έκδοση 11

Έγιναν πολλές αλλαγές, οπότε εδώ θα γράψω μόνο για τις πιο σημαντικές.

1. Από αυτή την αναθεώρηση δουλεύουν και οι Long Long ακέραιοι (64 bit). Στα ελληνικά Μακρύς Μακρύς.


2. Μπήκε η δυνατότητα χρήσης εξωτερικών στοιχείων στις φόρμες. Έχουν ήδη περαστεί πέντε στοιχεία στο περιβάλλον της Μ2000, και έτσι προσθέτουμε το πρόθεμα Μ2000 και τελεία πριν το όνομα του στοιχείου (δείτε τα παραδείγματα). Μπορούμε να φτιάξουμε και πίνακες στοιχείων. Το ιδιαίτερο εδώ είναι ότι προς το παρόν λαμβάνουμε σε όλα τα γεγονότα τιμές με πέρασμα με αναφορά. Αυτό σημαίνει ότι θα βάζουμε το & πριν το όνομα μεταβλητής. Επίσης σημαίνει ότι αν πράγματι είναι με αναφορά τα παραδοτέα, από το αντικείμενο, θα επιστραφούν τιμές αν τις αλλάξουμε. Τα νέα στοιχεία δεν είναι δικά μου και αναφέρονται τα ονόματα αυτών που τα έφτιαξαν στο πηγαίο κώδικα, στο GitHub.

To ucChart, το ucPieChart είναι του Leandro Ascierto., το στοιχείο με τα πολλά σχήματα, είναι του Eduardo δείτε εδώ:  https://github.com/EduardoVB/ShapeEx,  το εκπληκτικό ctxNinePatch, του Vladimir Vissoultchev  (χρησιμοποιεί png αρχεία τύπου 9 patch.) και το "ταχύμετρο" του  Γερμανού Olaf.


Το στοιχείο ucChartArea, έχει γραφτεί στο κώδικα της Μ2000 και για το λόγο αυτό δίνουμε το όνομα M2000.ucChartArea; Αλλιώς αν ήταν "καταχωρημένιο" στον υπολογιστή θα μπορούσαμε να το φορτώνουμε από το σύστημα. Δείτε ότι χρειάζεται να δίνουμε τα στοιχεία σε Collection της VB6.  Οπότε υπάρχει μια συνάρτηση που δίνει αυτόματα δείκτη σε νέα λίστα.


function newCollection {
declare list1 Collection
=list1
}
flush


declare FORM1 form
declare Chart type "M2000.ucChartArea" form FORM1
Method FORM1,"move", 1000, 1000, 14000, 12000
Layer Form1 {Gradient 11, #7777aa}
With Chart,"BackColorOpacity", 0, "title", "Chart Example", "LinesCurve", true
Method Chart,"move", 1000, 1000, 12000, 10000


data  "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio"
Value1=newCollection()
while not empty
method Value1, "add", letter$
end while
Method Chart, "AddAxisItems", Value1
Value1=newCollection()
Data 2,5,7,-10, 5, 10
while not empty
method Value1, "add", number
end while
Method Chart, "AddLineSeries", "2007", Value1, color(255,0,0)
Data 8, 4, 45, -15, 9, 14
Value1=newCollection()
while not empty
method Value1, "add", number
end while
Method Chart, "AddLineSeries", "2008", Value1, color(0,0,255)
Value1=newCollection()
Data 14, 8, 16,4, 24, 3
while not empty
method Value1, "add", number
end while
Method Chart, "AddLineSeries", "2009", Value1, color(0,255,0)
function form1.click {
layer form1 {
Gradient random(7,14), #7777aa
refresh
}
}
function Chart.MouseMove(&A, &B, &X, &Y) {
Print A, B, X, Y
Refresh
}
function Chart.Click() {
Print "Thank you"
refresh
}
METHOD FORM1 "SHOW", 1


declare FORM1 NOTHING








3.'Εφτιαξα  Δυο νέες κλάσεις για πίνακες και λίστες με κλειδιά, που μπορούν να χρησιμοποιούν όποιο τύπο θέλουμε. Η διαφορά με τους πίνακες της Μ2000 είναι ότι εδώ έχουμε πίνακες με ένα τύπο. Πχ 1000 αριθμοί Long (Μακρύς) είναι 4000 bytes συν μια κρυφή δομή των 16 Bytes. Ενώ ο τωρινός πίνακας της Μ2000 είναι τύπου Variant,  με 16 Bytes για το κάθε στοιχείο, άρα 16000 bytes ή τρεις φορές περισσότερα σε σχέση με τους απλούς πίνακες. Υπάρχουν πολλοί λόγοι που φτιάχτηκαν αυτές οι δυο κλάσεις. Ίσως φτιάξω κατάλληλο interface για να γίνουν πολυδιάστατοι όπως της Μ2000. Προς το παρόν ένα αντικείμενο refArray έχει έναν κεντρικό πίνακα που παίρνει πίνακες. Ο κεντρικός είναι ας πούμε οι στήλες. Σε κάθε στήλη μπορούμε ή να βάλουμε μια τιμή (χωρίς πίνακα) ή ένα πίνακα. ενός τύπου, ή έναν Variant (γιατί και αυτό υπάρχει ως τύπος), ή ένα άλλο αντικείμενο, ακόμα και άλλα refArray. Το όνομα σημαίνει πίνακας με αναφορά, γιατί στην ουσία έχουμε έναν δείκτη στο αντικείμενο, και αυτό κρατάει όλους τους διαμορφωμένους πίνακες, σε τύπο και ποσότητηα. Έχει συνάρτηση αντιγραφής  To HashList παίρνει κλειδιά αλφαριθμητικά ή αριθμητικά (ή και τα δύο μαζί, αλλά ένα για κάθε στοιχείο). Αυτός ο τύπος λίστας χρησιμοποιεί το ref Attay. Προς το παρόν μόνο να αυξήσουμε μπορούμε το μέγεθος των πινάκων.


4. Ανανεώθηκε το QR Code (στο δικό του GutHub και εδώ στη Μ2000). Η έκδοση του QR Code με στρογγυλάδες είχε πρόβλημα. Τώρα λειτουργεί σωστά. Αυτή είναι η εικόνα που του έστειλα για να δει το πρόβλημα, και ανταποκρίθηκε γρήγορα, ο προγραμματιστής.




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

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

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