APPUNTI DELPHI 1.0
[Main Menu] [Pop Up Menu] [TDriveComboBox] [TDirectoryListBox] [TFileListBox]
[ListBox] [Memo] [MessageDlg] [InputBox] [Canvas] [Bitmap] [SerialeVBX]
[StringGrid] [PuntatoreMouse] [ProgressBar] [TStringList] [WMclose]
Per far apparire il trattino di sottolineatura per la scelta rapida far precedere la lettera dal simbolo "&".
MAIN MENUPer creare una riga tra una voce e l'altra come nome dare solo un trattino "-".
Per indicare che una voce da accesso a un sottomenu selezionare la voce e premere CTRL e freccia a destra.
Come MAIN MENU, il P.UP M. si attiva premendo il tasto destro del mouse su un controllo che ha la proprietà PopUpMenu impostata con il nome del nostro menu.
POP UP MENUIl P.UP M. appare nel punto in cui si fa click.
Permette di scegliere l'unità disco su cui lavorare, un cambiamento produce l'evento onChange il disco attuale viene riportato come singolo carattere nella proprietà Drive, un errore di accesso al disco deve essere gestito dalla procedura di evento onChange.
TDriveComboBoxCome collegare una DriveComboBox a una DirectoryListBox:
DirectoryListBox1.Drive:=DriveComboBox1.Drive;
Permette di scegliere la directory di lavoro, un cambiamento produce l'evento onChange, la directory attuale viene riportata dalla proprietà Directory, questa restituisce una stringa con il path completo, per la dir.principale è C:\, per la subdir WINDOWS è C:\WINDOWS. Impostando la proprietà Drive è possibile visualizzare l'albero delle directory di un qualsiasi disco.
TDirectoryListBoxCome collegare una DirectoryListBox a una FileListBox:
FileListBox1.Directory:=DirectoryListBox1.Directory;
Per partire da una directory specifica impostare le proprietà Drive e Directory della DirectoryListBox nell'evento OnCreate del Form.
Permette di visualizzare i file contenuti nella directory specificata nella proprietà Directory, la proprietà Mask indica il tipo di file da visualizzare e tipicamente è impostata a *.*, il metodo Update consente di aggiornare la visualizzazione della lista rileggendo la situazione sul disco.
TFileListBoxIl file selezionato
è riportato in: FileListBox1.Items[FileListBox1.ItemIndex]
Il numero di file presenti è: FileListBox1.Items.Count
Il primo elemento è: FileListBox1.Items[0]
L'ultimo elemento è: FileListBox1.Items[Count-1]Se la proprietà MultiSelect è true possono essere selezionati più file, lo stato di selezione di ogni singolo elemento può essere verificato o impostato con:
FileListBox1.Selected[indice]
Aggiunta di un elemento: ListBox1.items.add(STRINGA);
COMPONENTE LISTBOX (Cercare ListBox)
Vuotare la lista: ListBox1.clear;
Numero di elementi: ListBox1.items.count:integer
Indice selezionato: ListBox1.itemindex:integer
Contenuto stringa
selezionata: ListBox1.items.strings[ListBox1.itemindex]:string(Gli indici vanno da 0 a ListBox.items.count - 1)
Aggiunta di un elemento: Memo1.lines.add(STRINGA);
COMPONENTE MEMO (Cercare TMemoBox)
Numero di linee: Memo1.lines.count
Vuotare contenuto memo: Memo1.lines.clear;
Sapere se è stato modificato: Memo1.modified:boolean
Rendere a sola lettura: Memo1.readonly:=true;
Tipodialogo:
function MessageDlg('messaggio',tipodialogo,[bottoni,bottoni],0):word
mtInformation > Lettera i
mtConfirmation > Punto interrogativo
mtWarning > Punto esclamativo in triangolo giallo
mtError > X in cerchio rosso
mtCustom > NullaBottoni:
mbYes mbNo mbOK mbCancel mbAbort mbRetry mbIgnore mbAll
mbHelp mbYesNoCancel mbOkCancel mbAbortRetryIgnoreIl valore ritornato dalla funzione è confrontabile con:
mrNone mrAbort mrYes mrOk mrRetry mrNo mrCancel mrIgnore mrAllSe come bottoni si usano mnYesNoCancel, mbOKCancel o mbAbortRetryIgnore le parentesi quadre non devono essere scritte.
Impostando MsgDlgGlyphs:=false spariscono i bitmap dai bottoni.
Il messaggio può essere una stringa su più righe se si separano le righe con un #13.
function InputBox('intestazione','messaggio','stringa' ):string
FINESTRA DI INPUT PREDEFINITA (Cercare funzione InputBox)Se si preme OK la stringa ritornata è quella visualizzata, se si preme Cancel o Esc o chiusura la stringa è quella specificata nel comando.
I comandi grafici possono essere usati sul CANVAS (tela) di un Form, di un componente Image o di un componente Shape. Disegnare direttamente sul Canvas di un Form non è valido in quanto non è autoridisegnante, se il form viene coperto da un'altra finestra occorre ridisegnare tutto usando l'evento OnPaint (e non funziona neppure tanto bene...) un componente Image invece è autoridisegnante. Usando un componente Image le coordinate usabili vanno da X=0,Y=0 per l'angolo in alto a sinistra a Image1.Width-1,Image1.Height-1 per l'angolo in basso a destra.
GRAFICAOggetto TCanvas.
L'oggetto TCanvas è una superfice di disegno, rappresenta l'area in cui le vostre applicazioni possono disegnare.
(A TCanvas object encapsulates a Windows HDC display context.)
Il modello di riempimento, la penna e il font usati per disegnare sul canvas sono specificati nelle proprietà Brush, Pen e Font. La posizione corrente della penna è specificata dalla proprietà PenPos. Per muovere la penna chiamare il metodo MoveTo.
Per scrivere del testo chiamare il metodo TextOut. Per determinare se il testo è adatto a una particolare area usare TextHeight e TextWidth. Per disegnare una linea dritta chiamare LineTo. Per disegnare una serie di linee dritte chiamare PolyLine. Per disegnare linee curve usare i metodi Arc o Chord.
Voi potete disegnare sul canvas una varietà di figure. Per disegnare un rettangolo chiamare Rectangle, per disegnare un rettangolo con angoli arrotondati chiamare RoundRect. Per disegnare un ellisse chiamare Ellipse, per disegnare una torta chiamare Pie, per disenare un poligono definito da una serie di punti chiamare Polygon. Per riempire un'area rettangolare con il pattern definito da Brush chiamare FillRect, per riempire l'interno di un'area fino ad incontrarne i bordi chiamare FloodFill.
Per emettere un formato grafico come un bitmap o un metafile su un canvas chiamare Draw. Per ridimensionare il formato grafico in una particolare figura quando viene disegnato chiamare StretchDraw. Per fare una copia di un'area rettangolare del canvas usare CopyRect. Quando un canvas viene modificato si produce l'evento OnChange. Immediatamente prima della modifica si produce un evento OnChanging. La proprietà Brush di un oggetto canvas o shape determina quale genere di colore e e pattern il canvas usa per riempire le figure grafiche e lo sfondo.
(Controls also specify an additional brush in their Brush properties, )
(which they use for painting their backgrounds.)
Per i controlli Brush è una proprietà runtime di sola lettura.Riepilogo gerarchia delle proprietà e metodi principali:
Canvas.
Pen.
Color
Width (Larghezza linea in pixel, default 1)
Style (Default psSolid)
Mode (Default pmCopy, xor=pmXor)
Brush.
Color
Style (Default bsSolid, trasparente=bsClear)
Font.
Color
Name
Size
StyleComandi grafici usabili su un Canvas:
MoveTo(X,Y) Sposta la penna in X,Y
LineTO(X,Y) Tira una riga fino a X,Y (esclusi), X,Y
diventano la nuova posizione della penna.Rectangle(X1,Y1,X2,Y2) Disegna un rettangolo con l'angolo in
alto a sinistra nel punto X1,Y1 e l'angolo
in basso a destra nel punto X2-1,Y2-1.TextOut(X,Y,'stringa'); Scrive del testo alla posizione X,Y.
Draw(X,Y,Bitmap); Disegna il Bitmap sul Canvas.
StretchDraw(Trect,Bitmap); Disegna un bitmap dentro il
rettangolo Trect sul Canvas.Pixels[X,Y]:=colore; Imposta un singolo pixel al colore voluto.
Ellipse(X1,Y1,X2,Y2); Disegna un ellisse racchiusa nel
rettangolo specificato dalle coppie di
coordinate e la riempie con il brush
attuale.TextOut(X,Y,'stringa'); Scrive del testo sul Canvas a X,Y.
Per tirare una riga dalla posizione X1,Y1 alla posizione X2,Y2 (X2,Y2 esclusi che diventano la nuova posizione della penna):
MoveTo(X1,Y1); LineTo(X2,Y2);
Per tirare una riga dalla posizione X1,Y1 alla posizione X2,Y2 (compresi X2,Y2 che diventano la nuova posizione della penna):
MoveTo(X1,Y1); LineTo(X2,Y2); Pixels[X2,Y2]:=Pen.Color;
Proprietà Color per Pen, Brush e Font: TColor = -(COLOR_ENDCOLORS + 1)..$02FFFFFF; Il tipo TColor è usato per specificare il colore di un oggetto. E'usato dalla proprietà Color di tutti i componenti e da BackgroundColor di un tab set (TTabset). La unit Graphics contiene pratiche definizioni di costanti per TColor. Queste costanti identificano direttamente l'uno o l'altro dei colori disponibili nella palette di sistema (ad esempio clBlue mappa il colore blu) oppure quelli corrispondenti agli elementi di controllo di sistema definiti nella sezione colori del pannello di controllo di windows (ad esempio clBtnFace identifica il colore di sistema per la superfice dei bottoni).
Le costanti che identificano i colori di sistema sono: clAqua, clBlack, clBlue, clDkGray, clFuchsia, clGray, clGreen, clLime, clLtGray, clMaroon, clNavy, clOlive, clPurple, clRed, clSilver, clTeal, clWhite, e clYellow.
Le costanti che identificano i colori degli elementi di controllo sono: clActiveBorder, clActiveCaption, clAppWorkSpace, clBackground, clBtnFace, clBtnHighlight, clBtnShadow, clBtnText, clCaptionText, clGrayText, clHighlight, clHighlightText, clInactiveBorder, clInactiveCaption, clInactiveCaptionText, clMenu, clMenuText, clScrollBar, clWindow, clWindowFrame, e clWindowText. Se voi specificate Tcolor con uno specifico numero esadecimale a 4 byte invece di usare le costanti definite nella unit Graphics, i 3 byte più bassi rappresentano l'intensità dei tre colori BGR, $00FF0000 rappresenta la massima intensità del blu puro, $0000FF00 è il verde puro, $000000FF è il rosso puro, $00000000 è il nero, $00FFFFFF è il bianco.
(Se il byte più significativo è zero ($00) il colore ottenuto appartiene
( alla palette di sistema (?)
(the color obtained is the closest matching color in the system palette.
(If the highest-order byte is one ($01), the color obtained is the closest
( matching color in the currently realized palette.
(If the highest-order byte is two ($02), the value is matched with the
( nearest color in the logical palette of the current device context.
(To work with logical palettes, you must select the palette with the
(Windows API function SelectPalette. To realize a palette, you must use
(the Windows API function RealizePalette.Per tutti i componenti o oggetti, ad eccezione della Color dialog box, la proprietà Color determina il colore di sfondo sul form o il colore di un oggetto di controllo grafico. Se la proprietà ParentColor di un controllo è true, allora il cambiamento della proprietà Color di un controllo genitore provoca il cambiamento automatico della proprietà Color del controllo stesso. Quando voi assegnate un valore alla proprietà Color di un controllo, la proprietà ParentColor del controllo è automaticamente settata a false.
Questi sono i possibili valori di Color:
clBlack Nero NERO
clMaroon Marrone
clGreen Verde
clOlive Verde oliva
clNavy Blu marino
clPurple Porpora
clTeal Teal
clGray Grigio
clSilver Grigio chiaro
clRed Rosso ROSSO
clLime Verde chiaro VERDE
clBlue Blu BLU
clFuchsia Fucsia MAGENTA
clAqua Acqua CYAN
clWhite Bianco BIANCO
clYellow Giallo GIALLOclBackground Fondo di windows
clActiveCaption Current Barra del titolo della finestra attiva
clInactiveCaption Barra del titolo delle finestre inattive
clMenu Colore di fondo dei menu
clWindow Colore di fondo delle finestre
clWindowFrame Current color of window frames
clMenuText Current color of text on menus
clWindowText Current color of text in windows
clCaptionText Current color of the text on the title bar of the active window
clActiveBorder Current border color of the active window
clInactiveBorder Current border color of inactive windows
clAppWorkSpace Current color of the application workspace
clHighlight Current background color of selected text
clHightlightText Current color of selected text
clBtnFace Current color of a button face
clBtnShadow Current color of a shadow cast by a button
clGrayText Current color of text that is dimmed
clBtnText Current color of text on a button
clInactiveCaptionText Current color of the text on the title bar of an inactive window
clBtnHighlight Current color of the highlighting on a buttonLa seconda metà della lista dei colori sono i colori di sistema di Windows. Il colore che appare dipende dallo schema di colori utente usato da Windows. Gli utenti possono cambiare questi colori usando il pannello di controllo. Il colore attuale che appare può variare da sistema a sistema. Quando voi usate la color dialog box per selezionare un colore, potete assegnare il suo valore alla proprietà Color della dialog box. Voi potete usare il valore contenuto all'interno della proprietà Color e assegnarlo alla proprietà Color di un altro controllo.
Nota: Il valore di Color può essere contenuto in una variabile longint.
Proprietà Pen (Per oggetto TCanvas)
La proprietà Pen è un oggetto di tipo Tpen, determina il genere di penna che il canvas usa per disegnare. L'oggetto TPen è usato per disegnare linee su un canvas (TCanvas) e incapsula HPEN di Windows. Il colore della penna è specificato nella proprietà Color. L'ampiezza in pixel della linea disegnata è specificato nella proprietà Width. Il pattern della linea (solid, dotted, e altro) è specificato dalla proprietà Style. La proprietà Mode specifica il colore della linea in relazione a quello dei pixel sopra cui è tracciata la linea. Per esempio, per colorare una linea del colore specificato nella proprietà Color settare Mode a pmCopy. Per colorare una linea del colore inverso a quello dello schermo settare Mode a pmNot. Quando la penna viene modificata si produce un evento OnChange.Proprietà Style (per oggetto TPen)
TPenStyle = (psSolid, psDash, psDot, psDashDot, psDashDotDot, psClear, psInsideFrame);La proprietà Style determina lo stile in cui la penna traccia le linee. psSolid The pen draws a solid line.
psDash The pen draws a line made up of a series of dashes.
psDot The pen draws a line made up of a series of dots.
psDashDot The pen draws a line made up of alternating dashes and dots.
psDashDotDot The pen draws a line made up of a series of dash-dot-dot combinations.
psClear The pen draws lines made up no visible marks.
psInsideFrame The pen draws lines within the frame of closed shapes that specify a
bounding rectangle.Proprietà Mode (Per oggetto TPen) La proprietà Mode determina come la penna traccia le linee sul canvas.
TPenMode = (pmBlack, pmWhite, pmNop, pmNot, pmCopy, pmNotCopy, pmMergePenNot, pmMaskPenNot, pmMergeNotPen, pmMaskNotPen, pmMerge, pmNotMerge, pmMask, pmNotMask, pmXor, pmNotXor);
La seguente tabella descrive il comportamento della penna per ogni modo.
pmBlack Sempre nero.
pmWhite Sempre bianco.
pmNop Non cambiato.
pmNot Inverso del colore dello schermo.
pmCopy Colore specificato nella proprietà Color.
pmNotCopy Inverso del colore specificato nella proprietà Color.
pmMergePenNot Combination of pen color and inverse of screen color.
pmMaskPenNot Combination of colors common to both pen and inverse
of screen.
pmMergeNotPen Combination of screen color and inverse of pen color.
pmMaskNotPen Combination of colors common to both screen and
inverse of pen.
pmMerge Combination of pen color and screen color.
pmNotMerge Inverse of pmMerge combination of pen color and screen color.
pmMask Combination of colors common to both pen and screen.
pmNotMask Inverse of pmMask combination of colors common to
both pen and screen.
pmXor Combination of colors in either pen or screen, but not both.
pmNotXor Inverse of pmXor combination of colors in either pen or screen,
but not both.Proprietà Brush (per oggetto TCanvas):
property Brush: TBrush;La proprietà Brush è un oggetto di tipo TBrush usato quando vengono riempite figure solide, come rettangoli e ellissi. L'interno di una figura è riempito con un colore o un pattern. TBrush incapsula HBRUSH di Windows. Il colore di riempimento è specificato nella proprietà Color di TBrush. Il pattern è specificato nella proprietà Style. Se è specificato un bitmap dalla proprietà Bitmap, il pattern di riempimento è definito dal bitmap piuttosto che dalla proprietà Style. Se il brush viene modificato si produce l'evento OnChange.
Proprietà Style (per oggetto TBrush)
property Style: TBrushStyle;La proprietà Style di brush determina un pattern di riempimento per gli sfondi di windows o per le figure grafiche. La seguente definizione mostra i possibili valori di Style:
TBrushStyle = (bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal, bsBDiagonal, bsCross, bsDiagCross);
Proprietà Bitmap (per oggetto TBrush)
property Bitmap: TBitmap;La proprietà Bitmap è un oggetto di tipo TBitmap disponibile solo in runtime. Questa proprietà abilita il brush a usare un'immagine bitmap per il riempimento, con la capacità di produrre un effetto di riempimento speciale come un pattern. Il bitmap deve essere alto 8 pixel e largo 8 pixel.
(Vedere oggetto TBitmap).
Proprietà Font (Per oggetto TCanvas)
property Font: TFont;A TFont object defines the appearance of text. TFont encapsulates a Windows HFONT. A TFont object defines a set of characters by specifying their height, font family (typeface) name, and so on. The height is specified by the Height property. The typeface is specified by the Name property. The size in points is specified by the Size property. The color is specified by the Color property. The attributes of the font (bold, italic, and so on) are specified by the Style property. When a font is modified, an OnChange event occurs. In addition to these properties, methods, and events, this object also has the methods that apply to all objects.
Proprietà Size (per oggetto TFont):
property Size: Integer; The Size property is the size of the font in pixels. It is the height of the font plus the font's internal leading. If you are concerned with the height of the font on the screen--the number of pixels the font needs--use the Size property. If you want to specify a font's height using points, use the Height property instead. Delphi calculates Size using this formula: Font.Size = -Font.Height * Font.PixelsPerInch / 72 Therefore, whenever you enter a point size in the Size property, you'll notice the Height property changes to a negative value. Conversely, if you enter a positive Height value, the Size property value changes to a negative value.
Proprietà Style (per oggetto TFont) The Style property determines whether the font is normal, italic , underlined, bold, and so on. These are the possible values:
Value Meaning
fsBold The font is boldfaced.
fsItalic The font is italicized.
fsUnderline The font is underlined.
fsStrikeout The font is displayed with a horizontal line through it.The Style property is a set, so it can contain multiple values. For example, a font could be both boldfaced and italicized.
COME RAPPRESENTARE DEI BITMAP SU UN CANVASMetodo Draw (per oggetto TCanvas)
procedure Draw(X, Y: Integer; Graphic: TGraphic);
Metodo StretchDraw
procedure StretchDraw(const Rect: TRect; Graphic: TGraphic);
L'oggetto TGraphics è un antenato dell'oggetto TBitmap, è quindi possibile creare un Bitmap, usare LoadFromFile per caricare un'immagine grafica da disco e usare Draw o StretchDraw per disegnarla sul Canvas:var Z:TBitmap; Z:=TBitmap.Create; Z.LoadFromFile('nome del file BMP'); ....Canvas.Draw(X,Y,Z); Z.Free;The Draw method draws the graphic specified by the Graphic parameter on the canvas at the location given in the screen pixel coordinates (X, Y). Graphics can be bitmaps, icons, or metafiles.This method draws the graphic specified by the Graphic parameter in the rectangle specified by the Rect parameter. Use this method to stretch or resize a graphic to the size of the rectangle.
Proprietà PenPos (Per oggetto TCanvas).
PenPos: TPoint; La proprietà PenPos è la posizione corrente di disegno della penna.
(The PenPos property is the current drawing position of the pen.)
Voi dovreste usare il metodo MoveTo per impostare la posizione corrente, piuttosto che cambiare direttamente PenPos.Tipo TPoint.
TPoint = record X: Integer; Y: Integer; end;Proprietà ClipRect (Per oggetto TCanvas).property ClipRect: TRect;
Proprietà a sola lettura, specifica un rettangolo con bordi clipping. Il rettangolo specificato con ClipRect definisce i bordi esterni dell'area di disegno del canvas. Un disegno con coordinate esterne al ClipRect viene tagliato e non appare sullo schermo. Per esempio, il ClipRect del canvas di un form ha le stesse dimensioni dell'area del form.
Tipo TRect.
TRect = record case Integer of 0: (Left, Top, Right, Bottom: Integer); 1: (TopLeft, BottomRight: TPoint); end;Delphi 1 non dispone di un componente per gestire le comunicazioni seriali, pertanto è necessario usare il componente VBX di Visual Basic MSCOMM.VBX.
COMUNICAZIONI SERIALIIl controllo comunicazioni fornisce due modi per trattare le comunicazioni:
Il metodo event driven è un modo estremamente efficace e potente per gestire l'interazione con la porta seriale.
Event-driven communications is a very powerful method for handling serial port interactions.
In molte situazioni voi volete notificare il momento in cui un evento avviene, come quando arriva un carattere o avviene un cambiamento delle linee carrier detect (CD) o request to send (RTS).
In many situations you want to be notified the moment an event takes place, as when a character arrives or a change occurs in the Carrier Detect (CD) or Request To Send (RTS) lines.
In casi simili voi dovete usare l'evento OnComm del controllo per catturare le gestire questi eventi di comunicazione.
In such cases, you would use the communications control's OnComm event to trap and handle these communications events.
l'evento OnComm riconosce e gestisce inoltre gli errori di comunicazione.
The OnComm event also detects and handles communications errors.
Per la lista di tutti i possibili eventi ed errori di comunicazione vedere la proprietà CommEvent.
For a list of all possible events and communications errors, see the CommEvent property.
Voi potete inoltre sondare eventi e errori controllando il valore della proprietà CommEvent dopo ogni funzione critica del vostro programma.
You can also poll for events and errors by checking the value of the CommEvent property after each critical function of your program.
(This may be preferable if your application is small and self-contained.)
(For example, if you are writing a simple phone dialer, it may not make
( sense to generate an event after receiving every character, because
( the only characters you plan to receive are the OK response from
(the modem.Ogni controllo comunicazione che voi usate corrisponde a una porta seriale. Se nella vostra applicazione vi è necessario accedere solo a una porta dovete usare solo un controllo comunicazione. L'indirizzo della porta e dell'interrupt si può cambiare con il pannello di controllo di windows.
Each communications control you use corresponds to one serial port. If you need to access more than one serial port in your application, you must use more than one communications control. The port address and interrupt address can be changed from the Windows Control Panel.
Benchè il controllo comunicazione abbia molte proprietà importanti, queste sono le poche con cui dovete avere inizialmente familiarità.
Although the communications control has many important properties, there are a few that you should be familiar with first.
Properties Description
CommPort Sets and returns the communications port number.
Settings Sets and returns the baud rate, parity, data bits, and
stop bits as a string.
PortOpen Sets and returns the state of a communications port.
Inoltre opens and closes a port.
Input Returns and removes characters from the receive buffer.
Output Writes a string of characters to the transmit buffer.Il valore attuale delle costanti di evento ed errore è definito nel file VisualBasic CONSTANT.TXT oppure nel file CONSTANT.H incluso con il visual control pack.
The actual values of the event and error constants are defined in the Visual Basic CONSTANT.TXT file or the CONSTANT.H file included with the Visual Control Pack.
Quando create e distribuite applicazioni che usano il controllo comunicazione, dovete installare il file MSCOMM.VBX nella directory \SYSTEM di windows. Il kit di setup incluso con visual basic dispone di uno strumento per aiutarvi a scrivere programmi di setup che installano correttamente le vostre applicazioni.
When you create and distribute applications that use the communications control, you should install the file MSCOMM.VBX in the customer's Microsoft Windows \SYSTEM subdirectory. The Setup Kit included with Visual Basic provides tools to help you write setup programs that install your applications correctly.
RIEPILOGO PORTA SERIALE
Comm1.InBufferSize:=1024 ' Dimensioni buffer di input
Comm1.RThreshold:=1 ' Abilita evento OnOnComm per ogni
' chr$
Comm1.CommPort:=1 ' Specifica la porta 1 o 2
Comm1.Settings:='9600,n,8,2' ' Protocollo
Comm1.PortOpen:=true ' Apre la porta, DTR va alto
Comm1.Output:=chr(45) ' Trasmette chr$ o stringa
Fn Comm1.InBufferCount:integer ' Nr di chr$ ricevuti nel buffer
Fn Comm1.Input:string ' Legge stringa dal buffer
Comm1.Break:=true ' Attiva segnale di break
Comm1.Break:=false ' Disattiva segnale di break
Comm1.PortOpen:=false ' Chiude portaTenendo RThreshold=0 non avviene l'evento OnOnComm e la porta deve essere gestita da programma. Con RThreshold=N avviene OnOnComm ogni N chr$ ricevuti.
RowCount,ColCount:longint Definiscono il numero di righe e colonne.
USO GRIGLIA DI STRINGHE (Componente TStringGrid)
FixedRows,FixedCols:integer Numero di righe e colonne fisse di titolo.
GridLineWidth:integer Spessore linee griglia, 0=nessuna griglia.
DefaultColWidth:integer Larghezza colonne in pixel.
DefaultRowHeight:integer Altezza righe in pixel.
ColWidths[index]:integer Imposta o riporta larghezza di una singola
colonna, index=0 è la prima colonna a sinistra.
RowHeights[index]:integer Imposta o riporta l'altezza di una singola
riga, index=0 è la prima riga in alto.
Top,Left,Width,Height Dimensioni dell'area che visualizza la griglia,
se la griglia è più grande di quest'area è
possibile visualizzare le barre di scorrimento
impostando VscrollBar, le eventuali righe e colonne
fixed non scorrono.
Cells[X,Y: Integer]: string; Imposta o riporta la stringa contenuta in una
singola cella, la prima cella in alto a sinistra è
[0,0], l'ultima in basso a destra è
[ColCount-1,RowCount-1].
Font Definisce il tipo di testo visualizzato nelle cellePer impostare le dimensioni dell'area di visualizzazione uguali a quelle della griglia:
t:=0; for h:=0 to stringgrid1.colcount-1 do t:=t+stringgrid1.colwidths[h]+1; stringgrid1.width:=t+1; t:=0; for h:=0 to stringgrid1.rowcount-1 do t:=t+stringgrid1.rowheights[h]+1; stringgrid1.height:=t+1;Suggerimento: Per visualizzare COURRIER NEW height -12 usare celle alte 20 e larghe 8*chr (circa).BorderStyle bsNone o bsSingle
COLORI:
Azzurrino: $00dfc064
Con l'image editor è possibile creare file .CUR, la funzione LoadCursor però sembra non funzionare. Un'alternativa è creare due array di 144 byte contenenti la descrizione del cursore e usare la funzione CreateCursor:
CAMBIARE IL CURSORE DEL MOUSE:function CreateCursor(Instance: THandle; Xhotspot, Yhotspot, Width, Height: Integer; ANDbitPlane, XORbitPlane: Pointer):HCursor; Un cursore è codificato in 32 righe e 36 colonne per un totale di 144 byte. La prima riga è composta da 36 bit in 4 gruppi di 8+1, il nono bit di ogni gruppo non viene visualizzato, pertanto l'area grafica effettiva è di 32*32 pixel: ........X........X........X........X per 32 righe.
I primi 4.5 byte degli array ANDbitPlane^ e XORbitPlane^ decrivono i pixel della prima riga del cursore.
AND XOR Pixel 0 0 Nero 0 1 Bianco 1 0 Trasparente 1 1 ReverseUna volta creati gli array è ad esempio possibile attivare il cursore nel seguente modo:Screen.Cursors[5]:=CreateCursor(HInstance,5,7,32,32, ANDbitPlane,XORbitPlane); Form1.Cursor:=5;Esempio:(*------------------------------------------------------------------------ Creazione cursore mano1, indice nella lista cursori=5 I=area non usabile, 0=pixel nero, .=pixel bianco blank=pixel trasparente, r=pixel reverse -----------------------------------------------------------------------*) procedure CreaCursoreMano1; type Tdati1=array[1..144] of byte; Tstring36=string[36]; const CCursDesc:array[1..32] of Tstring36=( ' I I I I', ' I I I I', ' I I I I', ' I I I I', ' I I I I', ' I I I I', ' 00 I I I I', ' 0..0 I I I I', ' 0..0 I I I I', ' 0..0 I I I I', ' 0..00I0 00 00 I I I', ' 0..0.I.0..0..0I I I', ' 0..0.I.0..0..0I I I', ' 0..0.I.0..0..0I I I', ' 0..0.I.0..0..0I I I', '0000..0.I.0..0..0I I I', '0..0....I.......0I I I', '0..0....I.......0I I I', '0..0....I.......0I I I', '0..0....I.......0I I I', '0.......I.......0I I I', '0.......I.......0I I I', ' 0......I.......0I I I', ' 0.....I......0 I I I', ' 0....I......0 I I I', ' 00000I0000000 I I I', ' I I I I', ' I I I I', ' I I I I', ' I I I I', ' I I I I', ' I I I I' ); var andbit,xorbit:^Tdati1; h,t,xorb,andb,p,esp:integer; ch:char; begin new(andbit); new(xorbit); esp:=128; p:=1; for h:=1 to 32 do for t:=1 to 36 do begin ch:=CCursDesc[h][t]; if ch=' ' then begin andb:=1; xorb:=0 end else if ch='0' then begin andb:=0; xorb:=0 end else if ch='.' then begin andb:=0; xorb:=1 end else if ch='r' then begin andb:=1; xorb:=1 end; if andb=1 then andbit^[p]:=andbit^[p] or esp else andbit^[p]:=andbit^[p] and (esp xor 255); if xorb=1 then xorbit^[p]:=xorbit^[p] or esp else xorbit^[p]:=xorbit^[p] and (esp xor 255); if esp=0 then begin esp:=128; inc(p) end else esp:=esp div 2; end; Screen.Cursors[5]:=CreateCursor(HInstance,5,7,32,32,andbit,xorbit); dispose(andbit); dispose(xorbit); end;In questo esempio il 100 è il valore massimo da rappresentare (0..100%) ed è preso da una scrollbar, la barra viene cancellata e ridisegnata ogni volta.
Usare una casella image per rappresentare una barra analogica:procedure TForm1.ScrollBar1Change(Sender: TObject); var pos:longint; begin with image1.canvas do begin pen.color:=clblack; brush.color:=clwhite; rectangle(0,0,image1.width,image1.height); pos:=(100-scrollbar1.position); pos:=pos*(image1.width-1) div 100; if pos>1 then begin pen.color:=clgreen; brush.color:=clgreen; rectangle(1,1,pos,image1.height-1); end; end; end;Lista di stringhe ordinata oppure no, può essere trasferita/caricata direttamente con una assegnazione alla/dalla proprietà Items di una ListBox o alla/dalla proprietà Lines di una MemoBox, dispone di metodi per il caricamento/salvataggio da/su disco.
OGGETTO TSTRINGLIST:Gli elementi sono numerati a partire da 0, l'indice massimo è Count-1.
Dichiarazione istanza: var StringList1:TStringList;
Istanziazione (in onCreate): StringList1:=TStringList.Create;
Distruzione (in onDestroy): StringList1.Free;
Numero elementi: StringList1.Count:integer
Cancellazione elementi: StringList1.Clear;
Aggiunta elemento: StringList1.Add('stringa');
Cancellazione elemento N: Stringlist.Delete(indice);
Inserimento in posiz.N: StringList1.Insert(indice,'stringa');
Spostamento da indice1 a indice2: StringList1.Move(indice1,indice2);
Scambio tra indice1 e indice2: StringList1.Exchange(indice1,indice2);
Ritorna l'indice di una
stringa(-1=non trovato): StringList1.IndexOf('stringa'):integer;
Cerca una stringa: StringList1.Find('stringa',var indice):boolean;
Accesso diretto alla Nesima stringa: StringList1.Strings[indice]
Ordina alfabericamente: StringList1.Sort;
Controlla se è ordinata: StringList1.Sorted:Boolean;
Setta controllo duplicazione
(solo per sorted): StringList1.Duplicates:=modo;
modo =(dupIgnore, dupAccept, dupError)
Carica da un file: StringList1.LoadFromFile('path e nome');
Salva in un file: StringList1.SaveToFile('path e nome');Sono inoltre disponibili ulteriori proprietà e metodi per l'inclusione di oggetti (es:BitMap) e l'aggiunta diretta degli elementi di un altra TstringList (AddStrings).
Nella sezione protected del form scrivere:
INTERCETTARE IL MESSAGGIO DI CHIUSURA FINESTRA:protected
procedure WMClose(var M:TWMClose); message WM_Close;
{Chiusura con X, intercettando il messaggio WM_Close !}
procedure TForm1.WMClose(var M:TWMClose);
begin
if memo1.modified then begin
......
end;
if not memo1.modified then inherited;
end;
Pagina realizzata da Claudio Fin
Ultimo aggiornamento 22-9-2000