Delphi - Home Page del Laboratorio di Informatica dell`Armellini

Transcript

Delphi - Home Page del Laboratorio di Informatica dell`Armellini
Appunti di Borland Delphi 7
1/29
Delphi
Ambiente integrato di programmazione grafica
Oltre la normale barra del menù distinguiamo 4 aree:
•
•
•
•
Barra Veloce
Palette dei componenti
L’object Inspector
La form
-1-
Appunti di Borland Delphi 7
Una avvertenza iniziale:
il salvataggio va fatto subito e in una cartella ad hoc per l’applicazione da svolgere.
Cioè:
sono in 5G, creo la cartella “calcolatrice”, salvo dal menu File di Delphi con “Salva tutto”
Mi chiederà un nome da dare al “progetto” ed uno da dare alla “Unit”.
E’ consigliabile inizialmente confermare le proposte che ci fa di “project1.dpr” e “unit1.pas”
Ma attenzione, il sistema ci propone di salvarlo in “documenti”, che nei nostri computer è protetta,
va tutto salvato invece nella cartella da noi predisposta.
Ora l’applicazione è già in grado di funzione, attraverso l’icona
creando l’eseguibile “project1.exe”
“compila ed esegue”
Noi abbiamo salvato 2 file, ma i file creati saranno 8.
Attenzione, se non applicate rigorosamente questa procedura iniziale vi è un alto rischio di perdere
tutto il lavoro che svolgerete o avrete svolto.
-2-
Appunti di Borland Delphi 7
Cosa c’è nella Unit
Cosa c’è nel Project
-3-
Appunti di Borland Delphi 7
Componente Button
Si trova nella palette Standard
Proprietà:
Caption
Name
esempio Button1.caption:=’clicca’;
esempio Button1.name:=’Click1’;
non è possibile cambiare il colore dell’oggetto Button (usare componente BitBtn)
Eventi:
esempio:
procedure TForm1.Button1Click(Sender: TObject);
begin
showmessage (‘questo è il mio primo click!’);
end;
Componente Label
Si trova nella palette Standard
Proprietà:
Caption
Name
Autosize
Color
Size
Font.Color
label
Font.Style
Visibile
esempio Label1.caption:=’Buongiorno’;
Label1.name:=’Etichetta_Buongiorno’;
a ‘false’ quando deve rispettare quella disegnata da noi sulla form
Label1.color:=clred; imposta rosso lo sfondo della label
Label1.Font.Size:=15;
Label1.Font.Color:=clblue; imposta blu il colore del carattere della
Label1.Font.Style:=[fsBold];
Label1.Font.Style:=[fsBold,fsItalic];
Label1.Font.Style:=[];
Label1.Visible:=false;
Eventi:
è raro cliccare su una label ma è possibile, cosi come è possibile dare il doppio clic
e tutti gli eventi indicati in figura
procedure TForm1.Label1DblClick(Sender: TObject);
begin
Label1.font.size:= Label1.font.size+10;
end;
-4-
Appunti di Borland Delphi 7
Metodi di conversione dei valori
Se in una label devo inserire un valore numerico, ho bisogno di convertire in stringa un intero
Ad esempio, devo inserire nella label il valore della grandezza del carattere di un bottone:
Label1.Caption:=inttostr(Button1.Font.Size);
il passaggio opposto invece:
Button1.Font.Size:=strtoint(Label1.Caption);
Per convertire invece la data odierna in una label:
Label1.Caption:=datetostr(date);
E l’ora attuale del computer
Label1.Caption:=timetostr(time);
Ma anche una variabile dichiarata real può essere direttamente trasformata in stringa
Label1.Caption:=floattostr(x);
-5-
Appunti di Borland Delphi 7
Componente RadioGroup
Si trova nella palette Standard
Proprietà
Caption
già visto
Name
già visto
Items
E’ l’elenco delle scelte presenti nella radiogroup. In genere si riempie in fase di
Progettazione. Altrimenti in fase di programma è possibile con
radiogroup1.Items.Add(<stringa>);
ItemIndex
se vale -1 nessuna scelta è stata impostata
0 è la prima scelta della Radiogroup; 1 la seconda, e cosi via
Alcuni Metodi
s:=radiogroup1.items[i];
nella stringa s assegno l’elemento i della radiogroup;
s:=radiogroup1.items[radiogroup1.itemindex] ;
nella stringa s assegno l’elemento selezionato della radiogroup
Esempio di Evento:
procedure TForm1.RadioGroup1Click(Sender: TObject);
begin
case radiogroup1.itemindex of
0:label1.Font.style:=[];
1:label1.Font.style:=[fsbold];
2:label1.Font.style:=[fsitalic];
end;
end;
-6-
Appunti di Borland Delphi 7
Componente Combobox
Si trova nella palette Standard
Il componente combobox ripete esattamente tutte le proprietà
precedenti del componente Radiogroup cosi come i metodi
attraverso cui individuo le scelte selezionate
Esempio di Evento:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
case combobox1.itemindex of
0:label1.Font.style:=[];
1:label1.Font.style:=[fsbold];
2:label1.Font.style:=[fsitalic];
end;
end;
Il componente Edit
Il componente può essere utilizzato per l'ingresso di dati dall'esterno, come una finestra di input.
Il suo contenuto può essere raccolto attraverso la
proprietà Text che è una stringa e utilizzata attraverso un evento buttonclick
Ma esiste anche la possibilità di prendere il valore attraverso un invio da tastiera, attivando l'evento
KeyDown e il parametro Key
Esempio di evento:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var s:string;
begin
if key=VK_return then
s:=edit1.text;
…..
-7-
Appunti di Borland Delphi 7
Componente SpinEdit
Si trova nella palette Sample
Proprietà
MinValue
imposto il limite inferiore del componente
MaxValue
imposto il limite inferiore del componente
Increment
al clic si incrementa o decrementa di un valore standard
Value
è il valore attuale indicato dall’edit
Eventi
procedure TForm1.SpinEdit1Change(Sender: TObject);
begin
end;
-8-
Appunti di Borland Delphi 7
Anche la Form è un oggetto con attributi ed eventi
Cliccando in un punto qualsiasi della form, nell’object inspector compaiono alcuni attributi da
segnalare:
Attributi
Top
Left
Width
Height
Color
Caption
Border Style
Form Style
Icon
WindowState
la distanza della form dai limiti verticali dello schermo
la distanza della form dal bordo sinistro dello schermo
la larghezza della form
l’altezza della Form
il colore della Form
La scritta che compare nell’intestazione della finestra
La gestione dei bordi della finestra (pulsanti compresi)
Che tipo di finestra abbiamo rispetto alla struttura gerarchica
l’icona associata alla finestra nella barra di intestazione
Finestra normale, allargata a tutto schermo, ridotta ad icona
Eventi
procedure TForm1.FormActivate(Sender: TObject);
begin
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
Form Create e Form Activate gestiscono quelle operazioni necessarie al momento dell’avvio
dell’applicazione: La Create avviene una sola volta, l’activate avviene ogni qualvolta la finestra
ritorna in primo piano.
Per creare una nuova finestra ( La Form2), si va sul Menù File e si clicca su New>Form.
Nasce una form2 e una unit2 che vanno salvate.
Da programma per attivare la form2 va creato un evento in cui inserire:
Form2.show;
Ora la unit1 sarà cosi modificata:
var
Form1: TForm1;
implementation
uses Unit2;
-9-
Appunti di Borland Delphi 7
Il componente ColorGrid
Nella palette Sample troviamo il componente ColorGrid
Attributi
ForegroundColor
BackgroundColor
Colore di sfondo
Colore di primo piano
Eventi
procedure TForm1.ColorGrid1Change(Sender: TObject);
begin
label1.Color:=colorgrid1.BackgroundColor;
label1.Font.color:= colorgrid1.ForegroundColor;
end;
-10-
Appunti di Borland Delphi 7
Il componente Main Menu
Si trova nella palette Standard
E’ un componente non visibile.
Bisogna cliccarci sopra e si apre
una finestra da riempire con la
barra del menù e le voci riferite
a ciascuna tendina del menù.
A fianco la figura descrive un
barra del menù in costruzione.
Con un doppio clic su ciascuna
voce si attiva la procedura
corrispondente cosi come si fa
per un qualsiasi bottone
Il componente Image
Si trova nella palette Additional.
Si può impostare l’immagine in fase di progettazione seguendo l’attributo il percorso indicato dal
clic … sull’attributo Picture
Si deve scegliere su disco un file .bmp, meglio ancora un file .jpg
Con questa operazione l’immagine viene incorporata nel file .exe dell’eseguibile del programma
Esistono altri modi per caricare l’immagine durante l’esecuzione:
Image1.picture.loadfromfile(‘Figura.jpg’);
Meglio ancora se preceduta da:
if fileexists(‘Figura.jpg’) then
Image1.picture.loadfromfile(‘Figura.jpg’);
in modo da evitare errori che provano un crash del programma.
Il file viene cercato nella directory corrente.
Quando un’immagine non corrispondente alle dimensioni della cornice dell’image utilizzare
la proprietà Stretch ponendola a true
-11-
Appunti di Borland Delphi 7
Il componente ListBox
Il componente Listbox si trova nella palette standard
Aggiungere un elemento nella lista :
listbox1.items.add (<stringa>)
Cancellare un elemento dalla lista :
listbox1.items.delete(<integer>);
Estrarre da una posizione della lista:
<stringa>:=listbox1.items[<integer>];
La lunghezza della lista:
<integer>:=listbox1.items.count;
Cancellare un’intera lista:
listbox1.clear;
Caricare nella lista un file di testo
listbox1.Items.loadfromfile('kkk.txt');
Salvare la lista in un file di testo
listbox1.Items.savetofile('kkk.txt');
Estrarre una stringa dalla posizione corrente (selezionata) della lista:
<string>:=listbox1.items[listbox1.itemindex];
La posizione dell’elemento selezionato della ListBox
<integer>:=listbox1.itemindex;
-12-
Appunti di Borland Delphi 7
Tre possibilità per fare la barra delle icone
•
•
•
Toolbar e Toolbutton
Panel e BitBtn
Panel e SpeedButton
Componente Panel e BitBtn
Il componente Panel è sulla palette standard
Il componente BitBtn si trova nella palette additional
Il componente SpeedButton si trova nella palette additional
Tra i componenti BitBtn e SpeedButton non vi sono significative differenze,
entrambi i bottoni possono contenere testo ed immagini, e colorare il testo del bottone
Il componente Panel si colloca sotto il menù attraverso la proprietà
Proprietà Panel:
Align: impostarla ad alTop
Tenendo selezionato il panel selezionare il componente BitBtn nella palette additional e cliccare dentro il
panel, sistemando la dimensione del bottone
Proprietà BitBtn:
Caption: un eventuale nome del bottone
Glyph: una eventuale immagine del bottone
Si possono avere sia una scritta, sia un’immagine sul bottone.
L’immagine deve essere un .bmp
Posso anche passare un'immagine da un bottone ad un altro:
BitBtn1.Glyph:=BitBtn9.Glyph;
Per trovare file formato icona visitare http://icone.goldenweb.it
Oppure : www.clker.com
Oppure: www.iconarchive.com
-13-
Appunti di Borland Delphi 7
I Componenti ToolBar e Toolbutton
Inserire una ToolBar nella Form prelevandola dalla Palette Win32
La Toolbar automaticamente si dispone nella parte alta della Form
Nella Toolbar è possibile inserire dei bottoni di comando a cui associare una procedure e una icona
Si clicca con il destro sulla Toolbar scegliendo New Button e, se serve, New Separator. Ogni bottone è un
oggetto di tipo toolbutton e si distingue dall'altro oltre che dal Name, da una proprietà ImageIndex che parte
da 0 per il primo bottone ed è progressiva.
ImageList
Se vogliamo ora inserire delle Icone nei bottoni, utilizziamo il componente non visibile ImageList della Palette
Win32.
Selezionamo ImageList nella Form e facciamo clic di destra scegliendo ImageListEditor e quindi Add
Vi sono delle immagini di file BMP o ICO già predisposte nella sottodirectory (in genere)
…\programmi\borland\delphi\images\buttons. Inserirne un numero pari al numero dei bottoni inseriti nella
ToolBar
Ora selezionare la Toolbar e nella proprietà Images associare il componente ImageList1. Se tutto è stato
fatto correttamente i bottoni assumeranno un'immagine.
Hint e ShowInt
Per evidenziare una scritta di suggerimento su un bottone, o un qualsiasi altro oggetto, bisogna impostare la
proprietà ShowHint dell'oggetto a true ed impostare l'etichetta della scritta che deve comparire nella
proprietà Hint
La forma del Cursore
La forma del cursore è definita dalla proprietà Cursor, normalmente impostata a crDefault. In corrispondenza
di un bottone o di un qualsiasi oggetto legato ad un evento si può impostare a crHandPoint
-14-
Appunti di Borland Delphi 7
I componenti Opendialog e Savedialog
Per richiamare un file in una memo o in una listbox
Memo1.lines.loadfromfile(‘c:\winword\prova.txt’);
Oppure Listbox1.items.loadfromfile(‘c:\winword\prova.txt’);
Per richiamare un file attraverso una finestra di dialogo occorre inserire nella
form il componente non visuale Opendialog che si trova nella palette Dialogs
quindi:
if Opendialog1.execute
then memo1.lines.loadfromfile(opendialog1.filename);
viceversa per salvare:
if Savedialog1.execute
then memo1.lines.savetofile(savedialog1.filename);
Per impostare FileNome e TipoFile nella finestra che si apre:
Opendialog1.filter:=’file di testo (TXT) | *.txt’;
Per impostare una directory predefinita nella finestra che si apre:
Opendialog1.initialdir:=’c:\winword’
-15-
Appunti di Borland Delphi 7
Messaggi di Dialogo
Messaggio su cui si può solo confermare:
•
SHOWMESSAGE(‘Non hai inserito il tuo nome…’);
Messaggio con più risposte:
•
MESSAGEDLG(‘Vuoi uscire?’,mtconfirmation,[mbNo,mbYes,mbCancel],0)
Al posto di mtconfirmation si puo’ utilizzare:
Mterror
Mtinformation
Mtwarning
Mtcustom
Oltre a mbYes,mbNo,MbCancel si può usare:
MbOk
MbHelp
MbAbort
MbRetry
MbIgnore
MbAll
La risposta è un Word tipo:
MrYes
MrNo
MrCancel
…………
Il risultato si testa con:
If messagedlg(…………)=mrYes then ……….else ……….
Oppure
X:=messagedlg(……….);
If x=mrYes then …….else if x=mrNo then ……..else …….
Un tipico messaggio di dialogo, questo è un mtWarning
-16-
Appunti di Borland Delphi 7
Orologio ed Animazioni
il Time e il componente Timer
Catturare l’ora del computer
<string>:=timetostr(time)
Calcolare un tempo trascorso
<string>:=timetostr(strtotime(t2)-strtotime(t1))
t1 e t2 sono stringhe
Catturare la Data del Computer
<string>:=datetostr(date)
Il componente Timer
Il time è una funzione che ci fornisce l’ora di questo istante: se voglio vederla la devo convertire nel
tipo stringa
Il Timer è un componente, serve ad animare altri componenti dell’animazione. Per esempio l’ora
del computer: Infatti l’ora del computer legata ad un clic del computer mi fa vedere l’ora in
quell’istante, non mi fa vedere l’ora che si aggiorna in ogni istante
Il componente Timer serve a questo.
Si seleziona dalla palette System, si sceglie e si pone nella Form,
è un componente non visuale.
Se si clicca due volte sul componente Timer si predispone la procedura Tform1.Timer1Timer.
procedure TForm1.Timer1Timer(Sender: TObject);
begin
……….
end;
Qui si scrivono le righe di programma relative all'oggetto per esempio da muovere.
Esso può essere la funzione time, ma anche un’immagine, una label, un bottone.
La procedura viene eseguita continuamente come se fosse un ciclo.
A quale velocità si muove la foto o l'oggetto in questione?
Lo decido impostando la proprietà Interval del componente Timer,
per default è 1000,
ma possiamo ridefinirlo e modificarlo anche da programma.
Se sarà 0 l'immagine sarà ferma.
Se sara 1 velocissima
Se sarà 5000 lentissima
-17-
Appunti di Borland Delphi 7
Il Componente Mediaplayer
Per rendere operativo il componente MediaPlayer è necessario in primo luogo assegnare un valore
all’attributo
Filename
Es: Mediaplayer1.filename:=’Video.avi’;
I Metodi
Play e Pause possono essere utilizzati attraverso propri bottoni oppure attivando il
mediaplayer.
Il Mediaplayer si attiva a sua volta solo se il filename è assegnato e se il mediaplayer è aperto:
Mediaplayer.open;
Il video si attiva nella parte alta del video
Se vogliamo invece inquadrarlo dentro un componente, va invece attivata la proprietà Display
Ad esempio nella procedura:
procedure TForm1.MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
begin
MediaPlayer1.display:=panel1;
end;
Per centrare perfettamente l’immagine nel panel va usato il metodo Displayrec
mediaplayer1.Displayrect:=rect(5,5,100,100);
I valori vanno in realtà generalizzati rispetto alle dimensioni del componente che conterrà il video
(es: Panel)
La lunghezza del file che si sta utilizzando è data da:
mediaplayer1.TrackLength[0]);
Ci è utile quando lavoriamo il componente Trackbar che serve a dare lo scorrimento del video
Infatti la trackbar ha un attributo
trackbar1.Max:=mediaplayer1.TrackLength[0];
e un attributo position legato allo scorrimento del video
trackbar1.Position:=mediaplayer1.position;
Ma per il funzionamento della Trackbar ci sarà bisogno di un componente Timer
-18-
Appunti di Borland Delphi 7
Mediaplayer e gestione di file e directory
Per inserire i componenti presenti nella finestra:
Dalla palette System
Componente Mediaplayer
Metodi Open, Play, Pause
Proprietà Display
Dalla palette Win 3.1
Componente DirectoryListBox
Proprietà FileList (si inserisce collegamento alla filelistbox)
Componente FileListBox
Proprietà
Componente FilterCombobox
Proprietà FileList (si inserisce collegamento alla filelistbox)
Proprietà Filter ( si inserisce il tipo di file da vedere)
Componente DriveComboBox
Proprietà DirList (si inserisce collegamento alla directoryListBox)
Dalla palette Win32
Componente Trackbar
Proprietà Min - Max – Position
Stabilire una connessione tra Trackbar.position e Mediaplayer.position recuperando in
particolare la lunghezza dal file multimediale (mediaplayer.tracklength[0])
Problematiche connesse
Mediaplayer e panel stabilire il collegamento
Mediaplayer e displayrect
Label ed extractfilename(mediaplayer1.filename);
-19-
Appunti di Borland Delphi 7
Mediaplayer: trackbar e visualizzazione del tempo
Come trasformare I tempi del file audio/video in minuti e secondi
Per trasformare il mediaplayer1.position va diviso x 1000 e x 60
Minuti= mediaplayer1.position div 1000 div 60
I secondi sono il resto di questa divisione ma anch’essi vanno divisi x 1000
Secondi= (mediaplayer1.position -(Minuti*1000*60)) div 1000
Per visualizzare il tutto va fatta la conversione in stringa
Per mediaplayer.tracklength[0]) va fatta la stessa operazione
Come muovere la trackbar in modo sincronizzato con il video
Nel timer quando la position si modifica va neutralizzato l’evento trackbarChange
Per poi essere immediatamente reinserito.
trackbar1.OnChange:=nil;
trackbar1.Position:=mediaplayer1.position;
trackbar1.OnChange:=trackbar1change;
Nella procedura TForm1.TrackBar1Change(Sender: TObject);
Quando muovo la trackbar il mediaplayer va fermato
Mediaplayer1.Stop;
Il mediaplayer sincronizzato alla trackbar
Mediaplayer1.position:=trackbar1.Position;
Il mediaplayer rimesso in esecuzione
mediaplayer1.Play;
-20-
Appunti di Borland Delphi 7
Catturare il clic di un oggetto
Vogliamo cliccare su un componente (es. una label) in un insieme di componenti ed
individuare all’interno di una sola procedura che vale per tutti i componenti, quale è stato
quello effettivamente cliccato.
Non vogliamo quindi né fare tanti eventi per ciascun componente, né farne uno solo con
magari all’interno una “case” che individua l’oggetto cliccato.
Primo esercizio:
Abbiamo 4 label (ma potrebbero essere 20…): li distinguiamo dando alla proprietà tag un
valore diverso da 1 a 4 nella fase di progettazione.
Cliccando su una label inseriamo in un edit il valore della sua tag utilizzando un evento
che vale per tutte le label.
Come prendere il tag del componente cliccato se la procedura è uguale per tutti?
Edit1.text:=inttostr((Sender as tlabel).tag);
Il Sender individua l’oggetto di tipo label nel suo complesso (è un parametro passato nella
procedura) e il tag distingue tra le diverse label
procedure TForm1.Label1Click(Sender: TObject);
begin
edit1.text:=inttostr((sender as tlabel).tag) ;
end;
-21-
Appunti di Borland Delphi 7
Esercizio 2
Cliccare su una label e fargli cambiare colore, come se il clic la evidenziasse.
Cliccare su un’altra label che a sua volta si evidenzia ma facendo tornare al colore
normale quella precedentemente evidenziata
E’ necessario creare un array di Tlabel
etic:array[1..4]of tlabel;
E al momento dell’avvio dell’applicazione associare l’array alle label
procedure TForm1.FormCreate(Sender: TObject);
begin
etic[1]:=label1;
etic[2]:=label2;
etic[3]:=label3;
etic[4]:=label4;
end;
L’associazione può ancora meglio essere realizzata con un ciclo che utilizza
FindComponent:
for i:=1 to 4 do
etic[i]:= tlabel(FindComponent('label'+inttostr(i)));
-22-
Appunti di Borland Delphi 7
Uso di (Sender as label).tag e di un array di label
1. Creo 4 label ( ma posso considerare come fossero 50)
2. Come posso distinguerle una dall’altra: taggandole da 1 a 4
Cioè attributo label1.tag:=1; ….;label4.tag:=4;
3. Clicco sulla label, in una nuova label (label5 ad esempio) deve visualizzarsi la
tag della label cliccata; l’evento label1Click avrà quindi all’interno
label5.caption:=inttostr(label1.tag);
4. L’evento label1Click sarà l’evento associato a tutte e 4 le OnClick delle label .
Ma il risultato sarà comunque 1 sulla label5.caption
5. Devo generalizzare la label che clicco e non farla essere la label1, come?
sostituendo label5.caption:=inttostr(label1.tag) con
label5.caption:=inttostr((sender as tlabel).tag) ;
6. Ora ho bisogno di considerare il tag come l’indice di un array di label
Definisco l’array di label con nome etic di tipo label
etic:array[1..4]of tlabel;
Associo ogni label ad un elemento dell’array
etic[1]:=label1;
etic[2]:=label2;
etic[3]:=label3;
etic[4]:=label4;
Correggo il mio onclick
x:=(sender as tlabel).tag;
etic[x].color:=clred;
7. Ora però i colori devono cambiare al momento del click, lasciando
selezionato solo il cliccato
Utilizzo una nuova variabile k che contiene il valore precedente di x (cioè
ricorda la penultima label cliccata, la rimette azzurra, mentre rossa diventa
l’ultima cliccata (k:=x; prima di x:=(sender as tlabel).tag;)
Attenzione: x e k sono globali e x va inizializzato a 1 (nel formCreate)
8. Posso generalizzare l’associazione etic[..]:=label.. ?
Si utilizzando un nuovo metodo:
for i:=1 to n do
etic[i]:= tlabel ( FindComponent ( ‘label’ + inttostr (i)));
-23-
Appunti di Borland Delphi 7
Utilizzo della Paint Box
Dalla palette System selezionare il componente Paint Box
La paintBox è assolutamente trasparente. Quindi il colore lo darà la Form.
(cambiare quindi il colore della Form)
Sistemare un Panel nel Top della Form
e dare alla PaintBox la proprietà Align =AlClient
Impostare i colori
•
¶
PaintBox1.Canvas.Pen.Color:=clred;
•
¶
PaintBox1.Canvas.brush.Color:=clblue;
•
Tracciare una riga
•
¶
paintbox1.Canvas.MoveTo(i,j);
•
¶
paintbox1.Canvas.LineTo(form1.paintbox1.width,j);
•
Realizzare un cerchio (o punto, o ellisse)
•
¶
•
Utilizzare gli eventi che catturano le coordinate del mouse
•
¶
•
(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
paintbox1.Canvas.ellipse(x,y,x+10,y+10);
procedure TForm1.PaintBox1MouseDown
Cancellare tutto sulla PaintBox
¶
PaintBox1.repaint;
-24-
Appunti di Borland Delphi 7
Gestione di una tabella
con Delphi
Utilizzo dei componenti
Table
DataSource
Dbedit
Metodi:
Table1.first
Table1.last
Table1.prior
Table1.next
Esistono inoltre
(per gestire da programma le funzioni del dbNavigator)
Table1.insert
(per inserire un nuovo record)
Table1.delete
(per cancellare un record)
Table1.Moveby()
Table1.Fieldcount
Table1.RecordCount
Table1.RecNo
Table1.bof
Table1.eof
Servono per gestire la testa e la coda del file di database come classicamente avviene per la gestione
di un qualsiasi file
-25-
Appunti di Borland Delphi 7
La corretta impostazione dei componenti
indispensabili per gestire una tabella
Componente Table
Active=true
DataBase=<un alias disponibile o una directory>
TableName=<scegliere nell’elenco>
Componente Data Source
DataSet=Table1
Componente DBNavigator
DataSource=DataSource1
ShowInt=true
Componente DBGrid
DataSource=DataSource1
Componente DBEdit
DataSource=DataSource1
DataField=<scegliere il campo desiderato nell’elenco>
Altre Proprietà del componente Table
Filter=(esempio) Nome=’PAOLO’
Filtered=true
Indexfieldnames=<scegliere il campo desiderato nell’elenco>
Altri Metodi
Table1.FieldCount
Table1..RecordCount
Table1.RecNo
-26-
Appunti di Borland Delphi 7
Utilizzo dei componenti DBNavigator e DBGrid
Creare una applicazione di data base facendo riferimento ad una tabella di dati presente sul disco a vostro
piacere inserendo i seguenti componenti:
•
•
•
•
Table
DataSource
DBNavigator
Dbgrid
Utilizzare un componente Combobox in cui automaticamente al momento dell’avvio
dell’applicazione si inseriscano tutti i campi del database
Deve essere sempre aggiornato il contatore dei record della tabella e l’indice del record corrente
Deve essere possibile “filtrare” e vedere nella tabella dei dati i soli record che corrispondono al
valore riferito al campo della combobox selezionato
Per utilizzare i campi nel componente combobox possiamo far riferimento al nome dei
campi utilizzando questa riga di programma:
table1.fields[i].fieldname
in cui i è il campo iesimo della tabella, il primo campo corrisponde alla posizione zero
Per l’uso dei filtri si possono guardare le proprietà della componente Table, Filtered e filter
-27-
Appunti di Borland Delphi 7
Uso del Componente Query
Impostazioni
Data Source1: Data Set= Query1
Query1
: active=true (puo’ essere attivata solo dopo aver impostato la proprietà sql
: databasename=<percorso>
Dbgrid1
: Datasource=Datasource1
DbNavigator: Datasource=Datasource1
Button1
Agisce sul codice sql del componente query.
con query1.close si chiude una query
con query1.open si lancia una query
con query.sql.clear si cancella il testo della query
con query.sql.add si imposta una query
Button2
Con l’altro bottone invece si agisce su un componente Memo, qui si scrive la query in linguaggio
sql, cliccando il bottone la query va in esecuzione
-28-
Appunti di Borland Delphi 7
Utilizzo di una Memo
Caricamento di un file di testo in una Memo
Memo1.lines.loadfromfile(<nomefile>)
Aggiunta di una riga ad una memo
Memo1.lines.add(<stringa>)
Cancellare il contenuto di una memo
Memo1.clear;
Selezionare tutto il testo di una memo
Memo1.selecAll
Rendere visibile/invisibile una memo
Memo1.visible:=<boolean>
Inserire una barra di scorrimento verticale nella Memo
Dalle proprietà oppure Memo1.scrollbars:=ssvertical
Per calcolare il numero di righe di una Memo
<integer>:=memo1.lines.count
Per modificare il testo in una memo i riferimenti sono a:
Memo1.font.name
Memo1.font.color
Memo1.font.size
Memo1.font.style
Oppure utilizzare dalla Dialogs il componente Fontdialog
Per prelevare una linea da una Memo
<stringa>:=Memo1.lines[<integer>]
Per tagliare e copiare un testo selezionato
Memo1.cuttoclipboard
Memo1.copytoclipboard
Per incollare in una memo
Memo1.pastefromclipboard
Spostare il Focus sulla Memo
Memo1.setfocus
Individuare la posizione del cursore nella Memo
<integer>:=Memo1.selstart
La lunghezza del testo selezionato
<integer>:=Memo1.sellength
-29-