 |
NUOVE CARATTERISTICHE DELLA VERSIONE 6
Questo documento riassume le nuove caratteristiche di FB^3
versione 6.
Carbon
Potete crederci? Ora possiamo compilare codice compatibile con
Carbon! Cosa significa per l'utente? Molto semplicemente che le
vostre applicazioni gireranno sotto Mac OS 9, o a pieno titolo, sotto
Mac OS X.
Ambiente Appearance
Il codice di esecuzione Appearance è ora completamente
funzionante e molto elegante!
|
Lancio di stampa:
Parigi
25 feb. 2002
|
[ritorna all'inizio] |
Finestre Appearance
Finestre Galleggianti
Non c'è bisogno di spendere ore per provare a far stare tutto
dove dovrebbe stare. Le nostre finestre galleggianti rimarranno sul
loro livello. Sono automaticamente nascoste quando la vostra
applicazione passa in secondo piano e mostrate automaticamente quando
vengono davanti (se volete, nel vostro programma, potete cambiare
questo aspetto).
Finestre Foglio

In OS X, una finestra foglio può scendere dalla barra del
titolo di una finestra genitore. Vi mostreremo come.
Finestre con barra strumenti

Questo è notevole! Potete fare clic nel bottone strumenti
nella barra del titolo per aprire o chiudere una barra
strumenti.
Sfondi Theme Appearance

Potete impostare i sofisticati sfondi disponibili in OS X. quando lo
stesso programma gira sotto OS 9, lo sfondo grigio a strisce passa
automaticamente al noto grigio. È tutto gestito da una
semplice nuova sintassi:
DEF SETWINDOWBACKGROUND.
Parametri WINDOW estesi
Chi si è lamentato perché ci sono solo 256 finestre? Con
l'istruzione APPEARANCE WINDOW statement, tale
limite è ora 2,147,483,647.
La categoria di finestra (solitamente chiamata classe di finestra)
può ora essere un intero long - anche un OSType.
Si può impostare la categoria con: DEF
WINDOWCATEGORY(wNum&, category&)
Quando si crea una finestra appearance, si imposta un attributo ed un
parametro classe che determina cose come il livello in cui si muove
la finestra e gli strumenti che sono contenuti nella barra del
titolo. Sarà una finestra galleggiante con il titolo su un
lato? Sarà una finestra documento con un bottone strumenti e
un pulsante zoom orizzontale? Potrà collassare nel dock OS X?
Sarete voi a deciderlo.
Posizioni di finestra
Eravamo abituati a due opzioni: centrare una finestra o calcolare
manualmente la sua posizione in coordinate globali. Le finestre si
possono ora creare o riposizionare usando costanti di sistema con
l'aiuto di due nuovi comandi:
DEF WINDOWREPOSITION e
DEF NEWWINDOWPOSITIONMETHOD
I parametri includono elementi come:
_kWindowCenterOnMainScreen,
_kWindowCascadeOnMainScreen,
_kWindowAlertPositionOnMainScreen
Volete calcolare la posizione delle finestre nel vostro codice?
Possiamo aiutarvi anche qui. La nuova funzione
FBGETSCREENRECT calcola l'area disponibile per
voi.
Shazoooom
Quando la vostra finestra si apre, non accontentatevi della solita
apertura. Fatela comparire da una specifica area dello schermoš come
un bottone che l'utente ha appena premuto. Questo è ora
possibile con la nuova chiamata
DEF TRANSITIONRECT.
Grafica Bufferizzata
La più grande novità di OS X è probabilmente
l'elegante modo in cui le finestre vengono bufferizzate. Tutto viene
fatto fuori schermo (off screen) e portato in vista in modo elegante.
Qualcuno potrebbe chiamarla una buona cosa, ma se volete forzare lo
schermo per mostrare nuove informazioni, potreste andare in contro ad
alcuni problemi. Con FLUSHWINDOWBUFFER, disegnate quello
che volete e poi scaricate il buffer inviandolo allo schermo.
Nuove funzioni WINDOW
Con tutte queste nuove caratteristiche delle finestre, dovete sapere
che vi diamo altri strumenti per scovare quello che cercate. La
funzione estesa WINDOW ora fornisce informazioni
relative non solo all'area del contenuto della finestra ma anche
riguardo l'area della sua struttura. Potete estrarre i puntatori agli
indirizzi della finestra o della grafport (che sono ora cose distinte
nelle API Carbon). Estrarre la classe, gli attributi, la categoria.
È tutto qui.
|
|
[ritorna all'inizio] |
Codice di supporto
Molte delle chiamate toolbox a cui eravamo abituati non funzionano
più come ci si potrebbe aspettare. Niente paura! FB è
già pronto con del codice di supporto per aiutarci. Le
più importanti aggiunte sono FN INVALRECT e
FN VALIDRECT (per sostituire
CALL InvalRect e CALL ValidRect
che Apple ha rimosso dal nuovo Carbon Toolbox). Tali routine
funzioneranno in ogni occasione, da 68K a Carbon, senza lavoro
aggiuntivo da parte vostra.
|
|
[ritorna all'inizio] |
Menu
Menu contestuali
Vi mostreremo come creare un
menu contestuale al volo (è un menu che compare quando fate
control-clic su un'area sensibile di una finestra).
Abbiamo anche creato un nuovo evento
DIALOG(_cntxtMenuClick) in modo che possiate sapere
quando creare e visualizzare il menu.
Posizionamento menu in OS X
Prima tutto era semplice... L'elemento Esci è sempre stato in
fondo al menu Archivio e l'elemento Preferenze in fondo al menu
Composizione. Questo non è più vero in X perché
questi due elementi sono stati spostati nel menu Applicazione. Questo
rappresenta un incubo da programmare. I programmi che girano in OS 9
mettono i menu da una parte e in OS X in un'altra.
Questo è un incubo per i programmatori degli altri linguaggi.
Con FB, lasciamo fare tutto questo all'ambiente di esecuzione.
MENU PREFERENCES muoverà l'elemento
preferenze nella giusta posizione e si assicurerà che la
routine di gestione del menu riceva lo stesso valore di ID di menu e
di elemento sia sotto OS 9 che sotto X. Anche il menu Esci è
gestito in modo automatico.
|
|
[ritorna all'inizio] |
Preferenze
Ci sono solo due motivi per non memorizzare le informazioni in un
file preferenze: il vostro programma è più piccolo
della punta di uno spillo oppure è solamente troppo difficile
farlo.
FB ora fornisce tutto l'aiuto di cui avete bisogno per creare e
mantenere i file preferenze. Dateci un nome di file e un record
preferenze e noi faremo il resto. Le nuove istruzioni sono
GET PREFERENCES (per leggerli dal programma),
PUT PREFERENCES (per registrarle su disco), e
KILL PREFERENCES (per eliminare il file). FB si
cura di tutto il lavoro necessario a individuare la corretta cartella
preferenze in qualsiasi versione del software di sistema anche su
sistemi internazionali (perché, lo sapete, questi stranieri
non chiamano mai i loro file come i nostri).
|
|
[ritorna all'inizio] |
File Header
Se inviate un file a qualcuno e le sue preferenze sono impostate a
valori differenti, il file spesso non funziona correttamente. La
nuova opzione di menu File Header inserisce commenti visibili e
capibili all'inizio della vostra finestra di codice sorgente. I
commenti sono letti dall'editor quando esegue o crea il programma e
sono usati per sostituire temporaneamente le relative preferenze. Il
risultato è che il programma funzionerà
indipendentemente dalle impostazioni delle preferenze sull'altro
computer.
|
|
[ritorna all'inizio] |
Ricerca di Errori
Abbiamo raffinato la ricerca di errori con ogni versione, e la
Versione 6 non è un'eccezione, ma c'è un'incredibile
nuova caratteristica: il controllo di validità delle
toolbox.
Nella programmazione PPC è possibile usare una
toolbox (come certe nuove chiamate toolbox per QuickTime 5) e tutto
funziona perfettamente. Ma non appena lo stesso programma gira su
un'altra macchina che ha QuickTime 4, questo si pianta e noi
rimaniamo a scervellarci per capire cosa sia andato storto.
La nuova soluzione è impostare una preferenza nell'editor che
forza il controllo di ogni chiamata toolbox mentre la vostra
applicazione si avvia. Se c'è qualche occorrenza toolbox
mancante, il programma informerà prudentemente l'utente
dell'errore e gli darà la possibilità di uscire.
|
|
[ritorna all'inizio] |
Cursori
Un cursore vale più di mille parole. È un puntatore che
usiamo al posto delle nostre dita. E abbiamo una manciata piena di
nuovi indicatori.
Cursori animati
I cursori animati costituivano un compito complesso che comportava
l'impostazione di un task VBL o il controllo ravvicinato di un
contatore di tick e l'aggiornamento del puntatore al momento giusto.
Ora possiamo impostare il tipo di cursore a
_themeCursorAnimate e lasciare che se ne occupi il
sistema.
Più scelta
Se siete stanchi dei vecchi cursori a croce, a trave I, a freccia,
gradirete la nuova collezione:

La funzione SYSTEM è anche disponibile per un
aiuto aggiuntivo. Un nuovo parametro (_lastCursType) ci
comunica se il cursore è animato
(_themeCursorAnimate) o statico
(_themeCursorStatic).
|
|
[ritorna all'inizio] |
ON FINDERINFO
Individuare quali file erano stati trascinati sulla nostra
applicazione o dove erano stati oggetto di un doppio-clic è
sempre stato un problema. Con il nostro nuovo vettore
FINDERINFO, potete far sì che l'ambiente di
esecuzione notifichi quando ci sono dei file che devono essere
aperti.
|
|
[ritorna all'inizio] |
File
Tutto è cambiato. Le API Carbon non accettano più come
parametri i numeri di riferimento di volume di file a cui eravamo
abituati. Quindi potete semplicemente buttare via tutto il vostro
codice di gestione file e riscrivere tutto da zero... stiamo
scherzando! L'ambiente di esecuzione Standard BASIC conserva la piena
operatività di tutto il vostro codice conservando una lista
dei corretti valori e mettendoli, in modo trasparente, in funzioni
aggiornate in modo che i vostri programmi possano funzionare senza
modifiche.
Record File Spec
Quando sarete pronti a passare i vostri programmi (e il vostro modo
di pensare) ai nuovi Record File Spec, FB sarà lì con
un vagone di nuove chiamate per aiutarvi. La funzione
FILES$ è stata potenziata per includere parametri
come _FSSpecOpen, _FSSpecOpenPreview e
_FSSpecSave.
Nuove routine di supporto file
Ci sono un sacco di cose che vorreste poter fare ma vi sembrano
troppo complesse. Le nostre nuove routine vi aiuteranno a spostare i
file, a copiarli, a controllare se un file esiste, a mandare un file
nel cestino e altro. C'è anche una routine che cerca in una
cartella la presenza di determinati file.
Funzioni aggiuntive SYSTEM
Sono stati aggiunti nuovi parametri alla funzione
SYSTEM. Uno fornisce il numero di riferimento di volume
del processo in esecuzione e un altro il parentID. Potete usare
questi per creare un record file spec per la cartella
dell'applicazione.
Nuovi parametri OPEN
I record File spec possono essere usati con l'istruzione
OPEN al posto del nome di file usando il simbolo @ come
identificatore.
OPEN "O",#1,@mioRecordFSSpec
|
|
[ritorna all'inizio] |
Campi composizione
Nell'ambiente d'esecuzione Appearance ci sono due tipi di campi
composizione. Il primo è un bottone creato usando l'istruzione
APPEARANCE BUTTON. Questi sono campi in qualche
modo limitati in quanto non possono contenere stili multipli. Sono
particolarmente indicati per usi limitati come finestre di dialogo
che accettino l'inserimento di testo.
Il secondo tipo di campo viene creato con l'istruzione
EDIT FIELD (proprio come ai vecchi tempi, eh?)
Quello che potrebbe sfuggire è che anche questi sono bottoni -
un tipo veramente speciale di bottone. Abbiamo usato lo stesso
meccanismo dei bottoni ma abbiamo sostituito un vero campo
composizione in quello che viene chiamato un pannello utente. I
vantaggi sono enormi come potete vedere leggendo a riguardo dei
bottoni.
Nuovi comportamenti
Ora che siamo entrati nel mondo moderno dobbiamo adottare alcune
pratiche moderne. La prima è fare uso degli rettangoli di
focus. Sono quei rettangoli di evidenziazione che compaiono attorno
ai campi di composizione e agli altri elementi per identificarli come
obiettivo delle azioni di tastiera. Questo, in modo predefinito,
è gestito automaticamente dall'ambiente di esecuzione
Appearance. Ma è possibile modificare le impostazioni
predefinite usando nuovi attributi del campo quando questo viene
creato. Ad esempio, potete dire a Appearance Manager di non disegnare
il focus in un particolare campo con _noDrawFocus.
Potete evitare l'elegante contorno 3D ed usare un bordo semplice con
_usePlainFrame. Potete anche impostare il campo in modo
che diventi grigio automaticamente (o no) quando la finestra viene
disabilitata.
OK. Copia questo
Un nuovo tipo di campo, con un attributo chiamato
_copyOnlyFramed (o _copyOnlyNoFramed), fa
sì che il programma mostri dei dati che l'utente possa
selezionare e copiare, ma non cambiare.
Procedura filtro tastiera
Un solo, potente nuovo parametro è stato aggiunto
all'istruzione EDIT FIELD: un puntatore a procedura.
Alla fine di tutti gli altri parametri si può aggiungere @FN
mioFiltroTasti e ogni pressione di tasto passare alla vostra funzione
prima di essere inserita nel campo. Il vecchio
ON EDIT FN funzionerà ancora, ma una
volta che avrete imparato ad usare il nuovo metodo vedrete che questo
è ben più raffinato!
Disabilitare e altro
Un campo può essere disabilitato usando l'istruzione
EDIT FIELD con un parametro negativo
(EDIT FIELD -1). I numeri di campi, come per i
bottoni e le finestre, sono limitati a circa 2 miliardi. Ed ora un
trucco: i tipi OSType sono in effetti interi long, e
quindi un numero di riferimento ad un campo di composizione
può in effetti essere qualcosa come _"Name".
|
|
[ritorna all'inizio] |
Campi immagine
I nuovi campi immagine sfruttano tutti i vantaggi dei nuovi campi di
composizione oltre a nuovi appositi trucchi. Si possono impostare
nuovi attributi per rendere un'immagine cliccabile e/o invertibile
quando viene cliccata. Un altro parametro rende l'immagine
trasparente in modo che le parti bianche dell'immagine lascino
intravedere lo sfondo.
|
|
[ritorna all'inizio] |
Bottoni
Questo è un mondo completamente nuovo. Ogni cosa è un
bottone. Potete usare l'istruzione
APPEARANCE BUTTON per disegnare immagini, icone,
linee, pannelli, menu pop-up, barre avanzamento, campi data/ora,
slitte, e... ah, già, i bottoni.
L'unione fa la forza
Un nuovo insieme di comandi permette di includere un bottone in un
altro. Il vantaggio in questo caso è che agendo sul bottone
genitore tale azione si estende automaticamente a tutti i bottoni
inclusi.
Prendete i bottoni con i pannelli a
linguetta come esempio. Un singolo pannello corrisponde ad ogni
linguetta (anche i pannelli sono bottoni). Quindi tutti gli elementi
visibili in tale pannello vengono inclusi. Si può ripetere
questa operazione per tutte le linguette. Il risultato finale
è che se si rende visibile un solo pannello tutti i bottoni,
campi, linee, ecc. inclusi vengono automaticamente resi visibili. Un
piccolo frammento di codice nella vostra routine dei bottoni
farà cose incredibili.
FB ci aiuta nel processo di inclusione? Ci potete scommettere. Il
vostro programma usa DEF EMBEDBUTTON per iniziare
il processo. Potete (se serve) trovare chi sia il genitore di un
bottone e indicizzare tutti i bottoni inclusi in un genitore. Questo
aiuta anche a tenere traccia dei bottoni radio.
Nuovi parametri BUTTON
In passato la funzione BUTTON accettava solo un
parametro - il numero di riferimento del bottone. La nuova funzione
BUTTON ne accetta due: il numero di riferimento del
bottone e un selettore per determinare quale dei molti tipi di
informazioni sono richieste dal programma. Ci sono più di una
dozzina di nuovi parametri per estrarre informazioni come i valori
minimo e massimo del controllo, il controllo radice (root) della
finestra, la data o l'ora del controllo (per i bottoni data/ora),
l'handle del menu per menu pop-up e il TEHandle per
controlli di tipo campo composizione.
Fra gli altri strumenti ricordiamo una
potente istruzione chiamata DEF GETBUTTONDATA e
elementi relativi al testo come
DEF GETBUTTONTEXTSELECTION (qualcuno si è
accorto che questi nomi stanno diventando più lunghi della
durata delle batterie del coniglietto della
pubblicità?).
La versione 6 offre lo spettro completo delle possibilità dei
bottoni Appearance Manager. Abbiamo realizzato questo con la nuova
istruzione APPEARANCE BUTTON. Essa dà al
vostro programma l'accesso diretto a tutti i parametri usati nella
chiamata toolbox NewControl e abbiamo fornito ogni
costante dell'ultima documentazione Apple per il vostro piacere. Non
vi diamo uno o due tipi di slitte - vi diamo tutti i tipi che
volete.

Anche i pulsanti di spunta sono un po'
migliorati, accettando una modalità di selezione mista.
Aspetta
Presto o tardi, il vostro Caro Utente dovrà aspettare mentre
il vostro programma processerà qualche tipo di informazione
importante. Avete già visto i cursori animati che possono
essere utilizzati (dita che contano, palle da spiaggia rotanti,
lancette di orologio animate) ma sono disponibili altri tipi di
indicatori. Una piccola area può essere riservata nelle vostre
finestre per le frecce che si inseguono o volete impostare una barra
di avanzamento in una finestra di dialogo. Potrebbe essere più
facile? Sì. Questi indicatori si animano da soli. Wow! Ora
vado a convertire la mia unità moglie in un bottone!
Scusa hai l'ora?
L'inserimento di date e orari è ormai dilagante in tutte le
nuove applicazioni. E ogni programmatore lo tratta in modo
differente. Questo è il motivo per cui abbiamo aggiunto i
bottoni data/ora e tutte le funzioni di utilità necessaria ad
ottenere il contenuto di tali controlli. Puoi creare i controlli che
mostrino e aggiornino automaticamente l'orario (come un orologio o un
calendario). Puoi usare solo mese e anno (come per la validità
delle carte di credito). Potete estrarre ogni parte delle
informazioni dal controllo come il giorno della settimana o l'intero
testo dell'orario selezionato dall'utente.
|
|
[ritorna all'inizio] |
È tutto?
Prendete tutto quello che avete letto e moltiplicatelo per mille
perché queste sono le opzioni che avete realmente. Prendete i
pannelli a linguetta: guardate le immagini e leggete il testo e
pensate, "Wow! Questo è forte!". Ma non vi abbiamo detto che
le linguette possono essere grandi o piccole,dirette a nord, sud,
est, ovest.
Non abbiamo parlato dei nuovi parametri della funzione
SYSTEM come quello che restituisce la velocità
della CPU. Abbiamo saltato a piè pari nuove funzioni di
utilità come FN FBGETCONTROLRECT. Non
abbiamo fatto menzione al fatto che sono disponibili nuovi record,
facilmente accessibili, che forniscono tutte le informazioni che
potete immaginarvi per bottoni e finestre. Abbiamo saltato la parte
relativa ai nuovi messaggi di dialogo che comunicano quando il
cursore è sopra ad un campo immagine o a un campo
composizione. E il supporto di PG:Pro. Ci sono anche centinaia di
nuove chiamate toolbox. Vi ho parlato dei nuovi parametri di colore
per l'istruzione EDIT TEXT?
Se volete conoscere tutte le altre cose che abbiamo saltato, dovete
dare un'occhiata alla Versione 6. Divertitevi!
|
|