Πέμπτη 24 Μαρτίου 2016

Χρήση ListBox με εξωτερικό πίνακα!

Στο παράδειγμα παρακάτω έχουμε ένα ListBoc που δεν του δίνουμε στοιχεία εσωτερικά αλλά εξωτερικά. Χρειάζεται να ρυθμίσουμε τρία πράγματα; Την ιδιότητα External, το γεγονός ListCount() που διαβάζει τον αριθμό στοιχείων που θα λογαριάζει με το μπάρα ολίσθησης και το γεγονός External() που παρέχει το στοιχείο που θα τυπωθεί, και ένα αλφαριθμητικό για να το γράψουμε. Αυτό το γεγονός το καλεί το Listbox κάθε φορά που θα χρειαστεί να εμφανίσει στοιχεία. (παρόμοια εργασία γίνεται εσωτερικά στο κώδικα του διερμηνευτή για να δουλεύει το EdtiBox, αλλά εκεί είναι πιο προχωρημένο, το Listbox του παρέχει το χώρο για να γράψει το EditBox, ενώ εδώ το γράψιμο το αναλαμβάνει το Listbox) (σκοπεύω να δώσω και τη σχεδίαση στο χώρο του στοιχείου, να δουλεύει σαν στιγμιαίο επίπεδο, που θα φτιάχνεται και θα γράφεται). Αυτή η ρουτίνα που δίνει το στοιχείο για εμφάνιση πρέπει να το κάνει γρήγορα! Αν παίζουμε γρήγορα το μπάρα ολίσθησης δεν υπάρχει πρόβλημα φόρτου, γιατί εσωτερικά το Listbox έχει σύστημα με ρολόγια (timers) και ενώ εκτελεί τη μεταφορά "νοητά" στην πράξη τις ενδιάμεσες τιμές τις αφήνει ανά τακτά χρονικά διαστήματα (μικρά). Έτσι ή γρήγορα ή αργά, το ίδιο "στοιχίζει" σε φόρτο.

Declare Simple Form
With Simple, "Title" as myTitle$
Layer Simple {
      Linespace 60
      Font "Arial Black"
      Window 16, 8000,6000
      Cls 1,0
     Cursor 0, height div 2
      Report 2,"Hello World"
}


Declare Listbox1 Listbox Form Simple
With Listbox1, "External", True, "DisplayLines", 8, "Center", true
Method Listbox1, "move", 1000,1000,6000,4000
With ListBox1 , "transparent", true
Dim A$(5)
A$(0)="Hello","Alfa","Beta","Zeta","Ok"


Method Simple, "Show"
With Simple,"Sizable", True
Function Simple.Unload {
      Keyboard "!"
}
Function Listbox1.Color {
      Read New &rgb
      rgb=#2255FF ' complimentary color
}
Function Listbox1.ListCount {
      Read New &AA
      AA=5
}
Function ListBox1.External {
      Read new bb, &c$
      c$=a$(bb)
}
Function Listbox1.DblClick {
            Read ListIndex
            a1$= A$(ListIndex)
            Mytitle$= a1$
}


Function Simple.Resize {
Layer Simple {
      Mode 16
      Cls 1,0
      Cursor 0, height div 2
      Report 2,"Hello World"
      Method Listbox1, "Refresh"
}
}
a$=Key$ \\ no loop just wait a key, in console only


Declare Simple Nothing


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

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

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