303 45 7MB
Russian Pages 586 Year 2002
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Copyright 2002 од.
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Содер а ие ....................................................................................................................................2 .........................................................................................................................................3 ............................................................................................................................5 1. ....................................................................8 1.1 . ....................................................................8 1.2 . ..............................................................................8 1.3 . ................................................................................................................12 1.4 . ................................................................................12 1.5 . ...............................................................................16 2. . ................................................................................................19 2.1 . .......................................................................................19 2.2 . ........................................................................................................................21 2.3 ................................................................................................23 2.4 .............................................................................25
2
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
веде ие
Э
ё
ё ,
К
.
Delphi. .
, , ,
,
,
,
Windows
. .
.
,
,
,
. . К
, ,
, ,
30% . 30%
70%. ,
,
-
.
,
,
.
.
.
,
. ,
,
,
. ,
ё
,
ё
, ,
.
–
. .
. .
, , Delphi».
,
Delphi – ).
Pascal (
« , ,
Delphi
, , .Э
,
ё
.
ё
.
ё
. ,
,
,
.
, ,
.
, ё
, . Э ,
, .
,
, .
. ,
ё . К
, ,
.К
, «
, ».
, 3
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] , /
. Э
,
ё
. , ,
. , -
.
,
,
-
.
4
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Стр
т ра
и и .
, , Глава 1. «О
, ов ые ри ци ы ра оты о . , ё ё , ). А , . К , . , . , , . . , . Глава 2. «Маши ая ате ати а». . Э , . К -
.
ьютера». Э ё,
.Э (
, ё, ,
. ё – «
. -
».
, ,
Глава 3. «О олоч а Delphi».
. Delphi 6, Delphi 6
. Delphi
ё
,
,
.К ,
,
. , ,
Delphi. Х ё
. Глава 4. « из аль ая одель Delphi». Delphi. ё , . Глава 5. «О овы язы а ро ра ирова ия в Delphi». Delphi , , ё ё , Delphi. Глава 6. «Ра ота о о е та и». . , . А Windows, . Глава 7. «Палитра о о е тов Standard». Standard . , , . ё
.
, .А
. Х .
. 5
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Глава 8. « чи
я ,
ро ра
ировать». ,
, Delphi Глава 9. «Созда ие ра очих рило е и ». З . . , . З , . Глава 10. «О ов ые риё ы оди а». . , , , . ё , ё , ( ), .
. Э ,
. . ,
, ,
.
, .
Глава 11. «О зор до ол итель ых о о е тов Delphi». , ё , Delphi . , . Глава 12. «Графиче ие воз о о ти Delphi». З ё, . , Delphi . Глава 13. «Печать Delphi». Э . , . Глава 14. «Delphi и азы да ых». , Delphi , . . MS Access . Глава 15. «Созда ие отчёт о ти». З , Excel . Глава 16. «Ра ота DBF, Paradox и XML аза и да ых». , , Access. З BDE dbExpress. Глава 17. «Пото и». Windows – , . . Глава 18. « и а иче ие и лиоте и». ё , . , , . Глава 19. «Разра от а о тве ых о о е тов». ё , VCL , Delphi . Глава 20. «М льти едиа». Э . , Delphi . 6
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Глава 21. «Графи а OpenGL». – OpenGL DirectX. OpenGL, DirectX «Д а я».
Глава 22. «OLE, COM, ActiveX». OLE, COM ActiveX. .
,
,
, . Глава 23. «Б фер о
е а». К
а
«К .
ё
»
«В
а
»
,
. , , Глава 24. « о ол итель ая и фор ация». Э . К . З
. , , ё
,
Delphi, Глава 25. «С лош ая ,
, ра ти а». . Э
. ё
,
.
7
Глава 1. О
ов ые ри ци ы ра оты о
1.1
ьютера .
,
К
-
,
:«
,
ё
.
. !!!».
:). К
, ,
– .
.
К
( ё .
,
:
ё
)
.
,
,
.К ,
-
.Ч
,
. ё
, Э ,
. .К
,
, .
ё,
. . ,
. .
1.2
К
. .
.
. , . ,
А
, ,
«
ё
». 0, , . .
) « « » bit. 1, . . « 8 .
. ( »
ё
, ».
8? 8-
,
, 010000111. ,
255.
, 1. 2.
: = =
. .
,
. 135, .
ё
0 ,
.
1.
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ,
,
.
519578246.
,
.
К
,
,
, ,
6. К
, . . 5, 1, 9, 5, 7, 8, 2, 4 , . ё
, ?
. А
,
?
10 ( .
)
?
:
, 10 46). 2*10 8*103= 8000 (
4*101= 40 ( 8*10 3 519578246. А 1 (2
:
.
6*100=6.
2*102=200 ( .
8246)
, 4*10
.З
). К
,
,
.
З
ё
. ,
0 9,
0
- 010000111. З
.
6
1 246).
,
ё ,
1
10, , . . 2 2(
21
. (1*2 =1). 0
2+1=3)
. .
: (1*20)+(1*21)+(1*22)+(0*23)+(0*24) +(0*25) +(0*26) +(1*27) +(0*28)=135. ,
,
135. .
135 2, 16 0 ( 2/2=1 ё 10000111.
2.
67
33
1 (
1( 0111). 0(
8/2=4 0000111). 1
1( , . . 11). , 111). 16 0 (00111). 4/2=2 , . . (
1).
67 33 2,
2, 8 0 (000111).
, . ,
, 9
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] . ). ,
. .
Та
а 1. Та
е ятич ое 0 1 2 3 4 5 6 7 8 9 10 а
я
я
воич ое 0 1 10 11 100 101 110 111 1000 1001 1010 х
х
ё
.
, 2
16-
(
«A»
) 10, « » 26
, 16
160 = 10. 1 – е ятич ое 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
воич ое 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 10010 10011 10100
.
.
. К ( ), . 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. 11 . . , 1A ? ё . . «A» , 161 =16. 10+16=26. Ше т адцатерич ое 0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 10
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Та
а 2. Та
ш
На
а
а
а , а
а а
я
х,
х
я
ш
а
а
аа , шё #, а я а Delphi, ,
а C++ а а а а
а
х
а
я (
Assembler , 13h. Н
я
я
я ш я), , я х я ах, а h, а а , а а а х
а ш а а , #13. В я
а
. ё
.
. ,
, .
,
87-
.
1,
.
,
.
ё
. З
.
ё
,
, . ,
.Ч К
-
.
.
З
Windows
(
).
« ,
->
»
«
->
->
».
:
В ш
.
ё
а
я
а
,
: 11
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] • • • •
Hex – Dec – Oct – Bin –
. . . . – ?
,
,
А
–
.
.
,
.
Н
а
а
аа я а . Е а х, ё а ях ш
-
а
. Н а х
а
х
а ш а ш я а
1.3
.В
а ёш я а а
ш
ха
а а ,
, а а а а я
а
а а я.
. . .
ё
,
.
.
. Э
я
. К
.
, ё
, .
,
,
,
.
,
, .
.
. , ,
. ё
: #03C3. .
«
, , 1+
2». ,
-
: «
, ?». –
.
,
. , .
.
.
1.4
.
12
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
К
,
-
,
,
. .
,
, -
,
-
. , .
. ,
. .
-
?А
,
8BC3.
.Э
,
. . .
,
-
,
.
. "
ebx
,
?
, -
,
.
а
а
аш
х
ах Assembler
. Э ,
,
.
.А
. ,
,
eax". -
"
".
Assembler, ,
,
,
. : "mov eax, ebx".
,
. ,
. К .
Assembler
. А
-
, , 13
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] , ,
,
. .А
,
, ,
.
Assembler
, . , .
.
Assembler
, .
,
. .К
,
,
. З
,
,
Assembler
. , ,
,
Assembler
,
.
,
,
, . .
Assembler . , ADA, FoxPro, Fortran, Basic, Pascal . , . . , , Visual Basic. Э
30 1. К 2. Ч
. Pascal,
: ? -
? .К ,
,
.
,
ё ,
. ,
. ,
?
, : "Ч
-
,
Assembler. К
. . ?".
, Pascal, Basic Assembler
, . ,
,
. Э
Assembler ,
, ,
Assembler. . . « . К
, .
Assembler
,
», ,
Assembler ,
.
Assembler
, (
, ). ,
, .
14
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Object Pascal .
++, Pascal
. .
.
,
.
.
,
-
, . . (
. А
-
). . Э
. ,
. ,
. Borland,
Microsoft. К
, ,
, C++ Builder. Э .
Delphi, Kylix
MFC, , ?Ч .
-
.
. К
-
, ?
,
.
, .
Delphi.
,
Borland.
, C++ Builder. К .
Delphi, JBuilder, Kylix , ,
.
,
-
.
,
.
+
,
Borland. .
.
. : "К
?". ,
.
Visual C++
.К
Microsoft .
? 1.
, ,
: , Delphi
C++ Builder. ,
2.
Visual C++ Delphi ,
,
, Watcome C C++ Builder.
Assembler.
. 3.
,
,
Assembler. ,
. А .
. (
,
) - Delphi.
15
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
1.5
. ,
(
: Се е т – 16 ,
) (
.
,
,
64 ). .
32-
4
. ё-
. •
• •
Се Се
, .
е т да ых – е т те а –
. (
)
.
К
, ё
, е и тр –
.
. .
32-
32,
32-
.
: е т ода –
Се
, ,
32-
.
32.
ё
. 2*32=64 ё 16 ,
К
.
, . 16, 32
32-
. . (
).
–
,
–
,
32
.
.
АХ (16
–
EAX. ).
АХ,
– 32 ,
, АХ.
, . . #21CD52B,
АХ
АХ
,
16
,
D52B. , ,
32-
16-
« », « ». 16
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Се
е т ые ре и тры - CS, DS, SS •
):
ё,
ES. (
е и тр CS . е и тр DS -
•
•
ё
,
. е и тр SS .З е и тр ES.
•
ё
,
. ё
,
. .
,
ё
.
,
, ( ). е и тры о ще о . 16-
а аче ия EAX, EBX, ECX , 16-
DX.
ё ё
.
32AX, BX, CX ,
. ,
EAX E Х
EAX
.
,
-
. , е и тровые у а атели ESP И де
EDX,
ые ре и тры SI
, .
DI. Э
EBP. SP . BP – .
,
,
.
Е
а ш я
а я а а. ) я
ш я
а а
а
а
.Н ,
х
а ах (а
а а
а
ш
а
а
х, а ш , а а аа а
.
,
.
,
. ,
. ,
CS .
( ).
(
.
-
) ,
.
С а
а а
х,
ха
а.
а
а
а х
а
.В а .Т
а а
, 17
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] а
ая
а.
а
ё
а, а
, CS
ё
ё
.
– EIP. Э
.
х
,
,
. ,
. ,
.
, ,
.
, . .
, ,
EAX
EBX – .
,
,
–
,
. ,
.
18
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Глава 2. Маши
ая ате ати а.
,
. , -
.
–
,
. .
ё
,
. ,
.
2.1
. . Delphi , Delphi:
Мате атиче ая о ерация * / Sqr Sqrt + :=
. . О и а ие
К К
а
Delphi. 2+2*2 ,
,
.З
.
☺.
,
–
.
а
а
,
.
6, .
, : (2+2)*2=8.
, . Пере е
ая –
: .Ч
, .
F:=5. З З
F.
, +
ё
, 5.
«
». .
G. G:=F.
, F
G
5.
19
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] F:=10/2. Э
-
.А
,
:
:
F:=5; G:=10; F:=G/2; И я ере е ,
о
, : Str,
MyPeremen.
( (
а ёш а а
Ти
ере е
). Str1, Str2, Str3
),
а а а ш а , ая i b. Ж а я а а я
,
а
о –
, «Т
а
.
я а а
а. К а а я,
а
а. В
.
(
х», ,
. .
. –
).
Delphi
, . :
азва ие ти а Integer
О и а ие
о ол итель ая и фор ация , ,
.
Real . String . Boolean
). Э
( а
Э
. ,
true
false .
х Delphi
. К
ё .
20
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Стро и –
. ,
, ‘
,
Delphi
’. .
Str – т к вая Str:=’П ив т!!!’
ая.
. .
2.2
-
.
-
, .
,
. 1. 2. 3. 4. 5.
: С а В В У В
. . 2.
1 а а .
2. ,
ё
. -
.
, . , ,
. ,
. : –
-
-
-
З
/
21
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ё
,
,
.
,
,
. -
(
ё
.
,
, ,
-
)
. ,
2-
:
1
2
R, C1, C2
3
C1
4
C2
R:= C1*C2
5
R
ё
.
.
,
ё
. , . –
ё , ,
.
,
В
– .
1
R, C1 2
.
2.
R ,
Т Ч 2
, ё я
, .
ё
ё
. ,
. –
,
1
–
,
2. 1
R. –
. 22
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Э
-
ё
,
, .
,
-
, .
2.3
. .Ч
? Э «
, «
», «
»
». Мате атиче ая о ерация = >
F
R
7
R := R * Index; 6
Index:=Index+1; 23
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
,
.Э
, .
F
ё
(F!).
1*1. З
. F, F,
, 1*2*3*4*…*F.
,
, *
2.
. 3.
,
. Э . . , 1. Э 2.
.
.
,
-
,
ё
, : . : F, R ё
, . Index -
.
3.
,
ё 5,
4. З
ё
. 1? 1
5. « ё
. (index)
ё
– ? 5.
. 5!.
1.
ё
Index. F – .R–
»,
6. 1. 1
ё
, ,
5,
,
6.
6. З З
R:=R*Index. , R:=1*1. 1, , R index 1 (Index:=Index+1), Index (Index:=1+1). 5. ё Index>F. Index 2, .З , З ё R:=R*Index (R:=1*2), R ё (Index:=Index+1), Index 5. … . . , . , .
Index=1 .
R=1. , 2
ё
6. 2. 3.
-
, ,
.
–
-
.
. ё
,
,
-
,
R:=1*2*3*4*5. .
,
. -
.
ё
-
.
,
ё
1 F. -
,
, .
, 24
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ,
-
.
.
,
,
.
2.4
. , .
-
ё
, .
: Нача
а
ы.
П ы : F, R, Index – т Нача к F:=5; R:=1; Index:=1;
е ые чи
а;
а
т1 5 вы ять Нача цик а R:=R*INDEX; INDEX:=INDEX+1; К ц цик а Выве ти а К цк а
а
е е е
R.
ё . ,
, ,
, , .
,
: 1. 2. 3. 4. З 5. З 6. 7.
. (
,
,
). .
1
5.
ё .
. ,
. .
ё
,
,
,
. -
ё
. 25
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ё
,
.
-
.
ё
, Э
. ё
,
. ,
ё
. ,
.
: К -
,
,
,
,
.
,
. . «
No, . . « , .
,
ё »-
,
).
, ,
ё
».
, , «NO» (
,
, , : «I don’t have». .
.
,
. ,
, .
. ,
. ,
ё .
. ё
, ,
, ,
,
. ,
,
.
26
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 3. 3.1. 3.2 З 3.3 3.4 3.5
Delphi. .....................................................................................27 Delphi 6. ...........................................................................................................27 Windows 2000. .......................................................................36 Delphi 6. .............................................................................................................38 . ....................................................................................................................39 Delphi 6.............................................................................................................40
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Глава 3.
ачаль ые веде ия о Delphi.
D
elphi –
. , .
ё
,
,
.
,
, .
ё.
, : Delphi 6.
1. К 2. Ч 3. , ё Delphi
. ,
Delphi 6. Delphi, ,
ё.
.
-
.
,
ё .
,
ё
.
,
3.1.
Delphi 6. Delphi 6. ,
.
,
,
,
, -
.
27
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
3.1 А
Delphi 6 ё , Install
а
а
а
.
CD-ROM. .
, Delphi 6. install.exe
setup.exe. Delphi 6. .
. “Next” («
Н
яа Edition
1.
х
»),
а х ша , я а Delphi. В Standard , .
.
я Professional ё а
а
.Э Enterprise а
Borland Delphi 6, Enterprise
Edition.
28
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
2. 3.
я
3.2
а
а
Delphi 6.
.
) (Serial Number)
(
, (Authorization Key).
,
Delphi 6. .
ё
( ), : «I accept the terms in the license agreement» ( ) «next».
.
,
29
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
4. ,
аш
3.3
я.
,
Delphi 6.
,
. ,
.
.
,
,
, ё
.
Р
3.4
а
а
а
Delphi 6.
30
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
5. • •
– •
:
.
Typical – .
Compact – Custom –
,
,
.
,
.
.
.
,
. ,
«Custom»
.
а
3.5
а
а
.
«Next» :
Р
З
3.6 У
,
а
а
а.
,
. «
а
: « ».
». ё
: «З «
»,
», «
» , 31
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] , Assembler . Э . Delphi « », .
6. • •
•
-
.
Delphi ё «
,
, »
, . Delphi
«
»,
Delphi
, ё
.
,
, : ё
Install on Local Hard Drive – Install Entire Feature on Local Hard Drive ё . , . . Do not Install – . ё,
Р
а
3.7
, , • Program Files – Э Delphi . o Main Program Files – ,
.
,
ё
.
Delphi.
, ,
,
.
. ,
. . , Delphi, . 32
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] o Image Editor – , o SQL Builder –
(
) . ш
).
а . o WinSight32 – а а а . o Sample Programs – o VCL Source –
ё
а а
SQL а
( ,
.
ш
ё
Delphi. VCL. .
VCL. o Internet Controls – Internet. o Sample ActiveX Controls – ActiveX. o Debug Library Files – . o ITE – . o DbExpress – . o Microsoft Office Controls – Microsoft Office. o Help Files – Delphi. o Indy – Internet. Shared Files – . o Microsoft SDK Help Files – Microsoft. З WinAPI Microsoft. o Image Files – , . o Sample Data Files – . Э Delphi. , . Delphi, . o Debugger – . BDE – . , ё . ADO DbExpress. Х , (Paradox, DBF) . Database Desktop – . Э (Paradox, DBF).
•
• •
7.
BDE, ,
.
, ,
BDE.
Borland
. Delphi 6, dbExpress.
ё,
Borland ё ADO.
.
. ,
BDE,
,
.
,
, .
, .
(
– : DAO 3.0 (
MS Office 97).
, DAO MS Office 95), DAO 3.5 , 33
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] MS Office. Driver”.
Office 2000,
3.8
8.
ё , VisiBroker/CORBA Support”. .
а
а
.
ё
“DAO 3.5 (MS Access 97)
а
а
х
CORBA – ё “No CORBA,
34
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Р
3.9
9.
а
CORBA.
Microsoft Office.
«Microsoft Office Controls»,
.
3.10 В
10.
Microsoft Office.
–
.
,
.
, «I accept the
terms in the license agreement» (
)
«next». .
,
11. З
К
, Delphi. ё
,
. Х
.
• • • •
: Program Files – Shared Files – BDE and SQL Links – Database Desktop -
. . BDE. Database Desktop.
,
, .
BDE, .
35
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
12. 13.
,
а
3.11
а
:« ?».
Borland
, ,
.
.
ё
CD-ROM
. setup.exe . Э «
».
ё
« ».
» «
« ,
».
: «%USERPROFILE%» Tmp Temp.
.
Windows 2000.
.
-
Delphi 6 ё ,
“Next”.
Windows 2000 Delphi 5. ,
ё
. ё
,
ё
3.2 З
«
.
. ,
ё
3.11. З ,
«%USERPROFILE%\Local Settings\Temp». Delphi. . 36
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
Э а
а
х
Delphi 6
а
я я а я
3.12
.
я InstallShield
Delphi, а а
ш
а
.
. .
37
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
3.3
Delphi 6.
Delphi 6. -> Borland Delphi 6 -> Delphi 6.
Р
3.13 За
Borland Delphi 6
,
Р . 3.14 Г а
->
3.14.
Delphi 6.
38
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 1)
,
ё
.
: ,
. 2)
. •
•
: Properties –
. , . З .
Events – .Э
3) 4)
.
. . ё
Delphi. ё
Object TreeView,
.
3.4
. Delphi 6.
ё
. ,
.
«File»
•
New –
• • • •
o Application – o CLX Application – o Data Module – o Form – o Frame – o Unit – Open – Open Project – Reopen – Save –
:
,
ё
. ,
,
: .
CLX Data Module – . . .
. .
Delphi 6 . . . 39
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] • • • • • • • •
Save As – Save Project As – Save All – Close – Close All – Use Unit – Print – Exit – .
.
ё. .
ё. . .
,
. Модуль –
,
Ч
.
. ,
,
,
. ,
.Х
. «Edit»
, .
, ,
ё
.
ё
, .
К .
• • • • • • •
-
.
ё
ё
ё
ё ё
, ,
.
. :
Undo – Redo – Cut – Copy – Paste – Delete – Select All –
. . . . . .
ё. ,
,
, Shift .
ё
, .
,
,
.
3.5
Delphi 6
Delphi
. , -
Options ( :
-
. ,
Tools
). Preferences ( •
Autosave options – o Editor Files –
,
Environment 3.15.
) -
.З
: (
).
, . 40
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
•
o Project desktop – . , . Compiling and Running – .З o Show compiler progress – . . Э . . .
:
, , – , .
o Warn on package rebuild – .
, , .
.
o Minimize on run – . ,
, Delphi. , Delphi
. o Hide designers on run – . ,
.
Р . 3.15. На
я
. –
,
ё
ё
. 41
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
К
3.16.
а а
,
я
. К
, Delphi 3.16.
, •
.
, . : .Э .
Hints –
,
,
,
.
, .Э ,
ё
,
. ,
•
. Warning – .
. , , . ,
ё
, .
Э Delphi
. ,
•
Errors –
. . ,
,
-
. , ё
,
. Designer
(
ё .
3.17).
42
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
З
• •
3.17 За а а Designer
а а
я.
: Display grid – Snap to grid –
. .Э
. ё, « К»
. 8 8
. 2.
, , ,
. .
43
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 4. Delphi............................................................................................44 4.1 ......................................................................................44 4.2 .............................................................47 4.3 К ........................................................................................................51 4.4 ...............................................................................................................51 5. Delphi...................................................................54 5.1 «Hello World» . .....................................................................54 5.2 Delphi. ......................................................................................62 5.3 Delphi........................................................................................................66 5.3.1 ....................................................................................67 5.3.2. . ...................................................................................67 5.3.3 . ........................................................................................68 5.3.4. ...............................................................................................................72 5.4.5. ......................................................................................................................73 5.4.6. PChar.........................................................................................................74 5.4 Delphi ........................................................................................75 5.5 ...........................................................................................80 5.6 .....................................................................................................82
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Глава 4. из аль ая одель Delphi. ,
Delphi
.Э
, ,
. , , Delphi.
Э
, .
, , . . , .
ё ,
.
ё
,
Delphi.
4.1
. ё
, . ,
. ,
К К К … … К
а а а
а1 а2 а3
а
а N.
Е К К К
и вы а а1 а а2 а а3
ви , т
–
ти а к
Э :
. ё
-
ё
.
,
.
, .
. а
1 и ач
х
–
: ак
а
3.
44
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] … К а
а N.
Э
ё
, ,
-
.
. .
-
.
Нача К а К а К ц
а1 а2 ц
ц
.
:
ить к
ц
,
ы1 ы1
Нача а ы К а а1 К а а2 Е и вы К а а3 К ц а ы.
ви , т вы
,
ы 1.
.К
. ,
Нача К а К а К ц
а1 а2 ц
ц
ы 1 (П
ая 1: т
-
:
ка)
ы1
Нача а ы К а а1 К а а2 Е и вы К а а3 К ц а ы.
ви , т вы
ить к
ц
ы 1.
, .
,
-
,
.
С а
х
а ». Э
,
а
а
а а ё
а
а а
а я.
«В
: 45
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Нача ц ы 1 (П ая 1: Ц П читать акт иа чи а ах ящ Выв ти ьтат а эк а . К ц ц ы1 Нача П ц П ц П ц К ц
чи ) явП
ая 1.
а ы а 1 (10) а 1 (5) а 1 (8) а ы.
, П .К
ё
1. 2. 3. 4. 5. 6.
. П
а 1 (10), ,
.
? ц
:
а 1 (10),
10. 10
П
ц
. . 5.
а 1 (5), 5
.К Ф
ц
.
,
.
–
я–
.
.
.
,
,
. Нача Ф кции 1: Ти в К а а1 К а а2 К ц Ф кции 1 Нача а ы К а а1 К а а2 Е и вы К а а3 К ц а ы.
З
в аща
ач
ви , т вы
ия – ц
ить к
ц
чи
ы 1.
ё
,
. . ,
, .
: Нача Ф кции 1 (П ая 1: Ц П читать акт иа чи а ах ящ В ть ьтат а чёта. К ц Ф кции 1 Нача
а
чи ): Ц явП
чи ая 1.
ы
46
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] П П П Выв ти К ц
ая 1:=Ф кция 1 (10) ая 2:=Ф кция 1 (5) ая 3:= П ая 1+П а эк а П ю3 а ы.
ая1:=Ф 5!. 3.
(П
« кция 1 (10)).
ё
1» «
3.
-
. .З
».
« ,
.
.Ч .
– ,
С
а –
, .Э С ё
«
»?
, ,
–
. .
– (
10! ё
2»
–
4.2
Э
ая 2
).
, . .
,
,
.
я–
, .
,
-
,
. : Сво тва ( ере е ые)
Методы ( роцед ры)
О Р
4.2.1 Г а
Сво тва: 1. 2. 3. . 4. . 5. З .
е т а
–
Со ытия
а.
.
: (Х). (Y).
Методы: 47
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 1. 2. 3.
. . .
Со ытия: 1. К 2. З
.
ё . , .
«Нари овать
« а олово о у». Э
, « а олово ».
о
.
, е ё ».
ии
,
«у ичто ить о
: « о дать о
е т». ,
е т»
. . (constructor). (destructor).
а я
а а
я и ициали ацие .
а
. :
«Со дать
1. 2.
о
у».
. ё.
.
е т – а)
. Э » ( а
а« а а я
ш
, я я
я я
а
.
К
1. 2. 3.
а
: . .
. ё, , , 1
(
. К
«
а.
». ,
),
. К
:
а. К
1 48
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] . 1. , 1. , : Нача П
а
ы.
ы : ъе т1 – К
а;
Нача к а ъ кт1:= К ка.С ать ъ кт ъ кт1.За в к:=’П ив т’ ъ кт1.У ичт ить ъ кт. К цк а
И я
Т а –
–
И я
.С (
). ъе т1.За
Т
в
«
‘
П
–
Э
.
,
ы. а;
Нача к а ъ кт1.За К цк а
З
»)
:
а
ы : ъе т1 – К
«
’.
»).
ё Нача
(
.
) (
(
а
в к:=’П ив т’
КА!!!
.
. ё
1 .
, .
Delphi
,
-
Delphi
,
.
С
а
а я. Э яа х а я я ( х а я я а я
а
ё
а а), а а. Ка я
яа
а
х. ,
а
а 49
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] а а
а
а. К ё а я а а а
ё а я а
а
, а
. ,
а
а
а
а
а
.
а
ы : ъе т1 – К ъе т2 – К
а.С а.С в в
ъе т1.У ичт ъе т2.У ичт цк а
а а я
(
я
,
а.
а
я
:
а; а;
ъе т1.За ъе т2.За
И
а,
ы.
Нача к а ъе т1:= К ъе т2:= К
К
а
а я аё я
,
. Нача
.
.
–
П
я а а я аёш , а. Та а а я ё а а , а
ать ать
ъе т ъе т
ивет’ а’
:=’ :=’ ить ить
ъе т. ъе т.
а я а а ё а а я а а. И а . К а а ш аё я я а. аа « 1» « 2» а а а а «К а», . . а а ) а я . х а я а . К .
я а , аш я а
, а
а.
,
. .
К
ё
,
а,
, ,
. ,
Free. ,
:
ъе т1.Free. 50
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ,
ё ,
,
ё
Free. .
, .
4.3 К
К
.
,
К
.
,
–
. -
ё Borland
(
), . А Windows,
, ,
. Delphi – VCL (Visual Component Library – ). CLX (Borland Component Library for Cross Platform – ). VCL – Windows. , Windows. 2000 Borland Linux. Delphi VCL. . , Windows, Linux. Э , , Delphi Windows Linux . 2001 Kylix, , Delphi Linux. CLX. , VCL . . ,
4.4
. .
–
. ,
–
.
. ,
. -"
".
, ё , . "
. ".
–
,
.
,
"
. "
-
. .
, .
"
"
, .Э
" .
ё
ё
. "
"(
".
,
"
, :
", 51
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] :)). .
.
4.4.1
.
Р
4.4.1 И а х я а а а.
ё
: -
а а
.
, а а а а а.
. – а
.
.
а,
–
. –
– , а .Д
, ,
а
а а а
, .
Р
4.4.2 И а х я
Delphi.
52
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 4.4.2.
TObject. Э
, .
ё
.
,
TPersistent
ё
.
Delphi. К , TThread. Э
TObject
, .
,
? К
,
. Ч
-
,
,
.
,
.
?
,
.
,
.Ч -
,
-
. , ,
ё
,
ё
ё.
«
, » (virtual). .
,
.
,
.
: П ц а тв чающая а Нача С ать т ы К ц
а и
т
П ц а тв чающая а а и Нача Вы вать ъ кт ка. П в ить а т ы ка ти ы. К ц
т
, . . (
ё ё
а а а.
а.
ё
.
. ,
.
),
.
53
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Глава 5. О
овы язы а ро ра
ирова ия Delphi. , Delphi.
-
, Delphi.
ё , . Delphi.
. А Delphi.
,
:
.
.К
,
. А
. , .
,
, . ё
,
.
5.1 «Hello World»
. (
“Hello world”. Э
,
,
ё
“Hello world”. А
++),
. Delphi
, “Hello
.
. Э
world”
.
,
.З
.
Delphi . З
ё ,
,
Delphi
Delphi. .
.
,
Delphi Form1
. . . «
File »,
Close All.
. « Manager. , ё
», View , 5.1.1. К .
Project , 54
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р . 5.1.1
.
ё .Э
, : 1. 2.
File File
New New
Application. Other. Application New
5.1.2. 3. 5.1.2.
ё,
а я
,
,
.
Р . 5.1.2 С
Е
К.
а
х .Т
Delphi, а
а.
ш
а
а
я я
а я
а
а
. 55
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
(
File
Close All), . .
. . . . (
5.1.3).
Р . 5.1.3
а
а
.
. •
: ProjectGroup1 (
) –
. .
,
ё
.
New , o Project1.exe – , Delphi ё Unit1 – . – : • Unit1.pas – •
). К
(
ё
Project
. К
, ,
.pas . .
Form1 –
. ,
Delphi Unit1.pas. ё
.
,
.dfm.
« З
». Delphi ,
ё
File
( 5.1.4). «MainModule». З ,
,
. . ,
.
.
. Save All.
.
ё
-
,
, . .
ё .
«HelloWorld». 56
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] «
«HelloWorld.dpr». К .
». , .pas, .
.dpr.
С а а я а
а
а
а, а а
а
я
а , а а. Е а ш а я Project1.exe.
Р . 5.1.4 За
, HelloWorld,
а
а а а а
ш х я а а аё я я а Project1, а
я, ах. К а
я.
.К
,
MainModule.
57
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Р . 5.1.5
• • •
,
ё
. World.
а.
, \
\ : .cfg .dof .dpr
HelloWorld.cfg – HelloWorld.dof HelloWorld.dpr –
5\Hello . .
.
.Э •
• •
• •
. , HelloWorld.res , MainModule.pas MainModule.dfm -
. .res
,
. .pas
. .dfm
. MainModule.ddp – MainModule.dcu К
.ddp .dcu –
.
, .
ё
, . .
.
А .
ё
Hallo World,
,
,
.
( Delphi),
, Compile HelloWorld. ,
Project Delphi
Р . 5.1.6 Р
ё
К
,
а
я
.
. ё « К»
, :).
:
.
,
. ,
HelloWorld.exe. З К ё.
. , , . .
.
5.1.7.
, ё «Hello World»
58
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ++ 20-30
.
.
Р . 5.1.7
а
,
а
.
5.1.8).
.
. З
, .
.
,
, ё ,
ё
, Caption (З Enter
)
Hello World ( .
Р . 5.1.8
.
Delphi
–
.
ё
. -
.
Run
ё Run 59
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] (
F9). Delphi
. 5.1.9
К
,
,
.
Р . 5.1.9 Hello World
За (File-> Save All). а а а а ш Delphi а . а ш а Delphi а .
а , ш а а
я ш
.
я х а я я я ё а а . А а , х а а а а , ш а х а я.
а ё я
, ,
. Project
Options
,
5.1.10. ,
ё ,
. ,
.
60
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р . 5.1.10 С
а
а
.
Forms Main form. З . . . .
Ч
, . Auto-create forms –
Form1 ,
Available forms –
.
,
.
. , .
Applications. З
: Title – , Help file – Icon – ё , Target file extension – , ,
. . .
Delphi, Load Icon. . .Э
exe. ,
. – Version Info. information in project, . ( 5.1.11).
Include version ,
61
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р . 5.1.11 С
На
а
, а
а
а
\При еры\Глава 5\Hello World
ш
.
5.2
Delphi. Delphi
, .
–
К
а
1.
.К ё,
2.
ё,
,
.
-
. .
, :
ё
. . {
}
. .
: //Эт к Эт
к
{Эт ва к И эт т }
та и . та и та и
,
,
. 62
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Delphi. HalloWorld, 5.2.1.
.
,
. 5.2.1 Hello World
.
З
. .
ё
,
ё
,
ё
, ,
,
, . .
,
. unit Unit1; //И я одуля interface uses //По ле то о лова идёт еречи ле ия од л чё Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; Type //По ле то о идёт о явле ие ти ов TForm1 = class(TForm) //Начало о и а ия ово о о // де ь о и ыва т я о
ых одуле .
е та TForm1
о е ты и о ытия
о о и ывать а рытые да ые о е та private //По ле то о лова о { Private declarations }//Под а а, отору е ерировал Delphi { де ь о
о о и ывать ере е
ые и етоды, до ту
ые толь о для о
е та TForm1}
63
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] о о и ывать от рытые да ые о public //По ле то о лова о е ерировал Delphi { Public declarations }//Под а а, отору { де ь о end;
о о и ывать ере е
ые и етоды до ту
ые и л
var // явле ие ло аль ых ере е ых Form1: TForm1; //Это о и а а ере е ая Form1 ти а о
е та о о дру о о одуля}
е та TForm1
implementation {$R *.dfm} //Под л че ие .dfm фа ла (фа л да
ы и о ви уаль ых о
е тах)
end. // end точ о - о ец одуля
ё
, ,
ё
, . К
ё
,
ё
,
.
.
ё
ё ). Э
";" ( .
uses, type, begin, implementation, private, public , – end,
. . . .
.
,
, . File->Save As)
, ,
(
Ж а
а а ах
,
я
я
я
а,
.
ё
. -
,
,
,
,
.
, . IntToStr.
Delphi
.
, ,
. SysUtils.
, . . TForm1 = class(TForm)
TForm Delphi , ,
. .
,
.
, TForm. А TForm , , , . . type :
ё ,
, type. TForm1,
TForm1
. VCL .Ч
CLX. 64
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
И я //Св end;
ъ кта = class ва, е ыи
К
,
а а
ы ия
е
а
« ,
».
Delphi
++.
, .
,
а
. ,
, ,
class . И я //Св end;
ъ кта = class(И я ва, е ыи
ка) ы ия
а
ё
TForm1 = class(TForm) TForm.
, TForm1, ё
.
, : private, protected protected,
, end;.
public. Х ё
ё
Delphi .
.
Delphi. З . И я
е
ё
, ,
ъ кта = class(И я
// де ь о и ыва т я о
ка)
о е ты и о ытия
private //По ле то о лова о { де ь о
о о и ывать а рытые да
о о и ывать ере е
ые и етоды, до ту
ые о
е та
ые толь о для о
е та TForm1}
П ая1: Integer; Procedure Proc1; public //По ле то о лова о
о о и ывать от рытые да
{ де ь о о о и ывать ере е П ая2: Integer; П ая3: String; Procedure Proc2; Procedure Proc3; end;
ые и етоды до ту
ые о
ые и л
е та о о дру о о одуля}
65
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] : ,
,
.
,
.
private.
private П ая1: Integer; Procedure Proc1;// Это роцедура, о ле её е о ет ыть ере е П ая2: String;//Это о и а. У е о явле а од а роцедура.
ё ё
, Г
var
а
–
. . ,
е та TForm1
implementation Delphi .
,
, {$ , .dfm R– .
, т }.
ква Па а R. Э
{$R *.dfm}. .
а–
. ,
(
). ,
Delphi .
END – (
ё END.
,
–
,
,
,
.
var // явле ие ло аль ых ере е ых Form1: TForm1; //Это о и а а ере е ая Form1 ти а о
К
,
. Э
,
К
ых
.
BEGIN , ),
END. BEGIN – , ё
BEGIN
,
,
,
,
Delphi.
5.3
К
Delphi. ё
,
.
, (
), -
, , ,
. , . Ч
, ,
,
:
,
.
ая –
.
ё
? , . ,
. ,
. 66
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 5.3.1 Целочи ле
ые ти ы да
ых.
,
,
. ,
. . :
Ти
иа азо воз о ых з аче и –2147483648..2147483647 0..4294967295 –128..127 –32768..32767 –2147483648..2147483647 –263..263–1 0..255 0..65535 0..4294967295
Integer Cardinal Shortint Smallint Longint Int64 Byte Word Longword
Раз ер хра е 4 4 1 2 4 8 1 2 4
а яти для ия да ых (32) (32) (8 ) (16 ) (32) (64 ) (8 ) (16 ) (32)
При еча ие З З З З З
. –
ё
,
( . .
). ,
,
. , . - $.
:
var i:Integer; begin i:=11; I:=$a; end;
I
А,
10,
$А –
. . 5.3.2. еще тве . ,
ые ти ы да ,
ых.
. Э
. . ,
. 67
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Ти
иа азо воз о ых з аче и 2.9 x 10-39 .. 1.7 x 1038 5.0 x 10-324 .. 1.7 x 10308 1.5 x 10-45 .. 3.4 x 1038 5.0 x 10-324 .. 1.7 x 10308 3.6 x 10-4951 .. 1.1 x 104932 –263+1 .. 263 –922337203685477.5808.. 922337203685477.5807
Real48 Real Single Double Extended Comp Currency З
Ма
и аль о оличе тво цифр в чи ле 11–12 15-16 7-8 15-16 19-20 19-20 19-20
Раз ер в а тах 6 8 4 8 10 8 8
,
, .
а а
а
, 3.0 а,
х
а
а
5.3.3 Си воль ые ти ы да
а
,
. К
–
– (
А,
1
,
ых.
, .
3. Д я .
. На ,
. ),
.Э
,
, 0 ,
:
10 14 18 З
К, 14 –
10 –
Т.
, 18 –
. (ASCII). А
7– Х
127, ,
7
.Э
7 127.
ё
,
8
8, . . ,
7.
.
ё
, 0
9, ,
,
,
.
, . ,
ANSI,
Windows: Си в
Та
Н
а ANSII
Си в
Н
Си во
Н
Си в
Н
Си в
Н
68
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
-
! " # $ % & ( ) * + , . / 0 1 2 3 4 5 6 7
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j K L M N
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 ## ## ## ## ## ## ## ## ## ## ##
л o p q r s t u v w x y z { | } ~
‚ „ … † ‡ € ‰ ‹
‘ ’ “ ” • – — ™ ›
¤
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165
¦ § © « ¬ ® ° ±
µ ¶ · № »
166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255
69
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ,
А ,
,
65,
207. :
207 208 200 194 210 . Ч
, . ,
( , ESC, TAB, Enter ,
Delphi 8 (ANSI – Windows. , UNICODE (16-
8). Э
.К
) – , . ,
ё
.
, 8 Windows 2000,
). .
ё
ANSI,
.
Delphi
:
Ти
Ма
и аль ая дли тро и 255 231 230
ShortString AnsiString WideString
а
Па ять отводи ая для хра е ия тро и 2 256 4 2 4 2
Delphi Str
. , ‘Hello World’
VAR Str:AnsiString; BEGIN Str:=’Hello World’; //При ваивае в Str END;
–
При еча ие
8 UNICODE
:
аче ие ’Hello World’.
,
. ,
,
,
,
1. (
–
,
).
,
. Н Е а
, -
а
а
ш
я
,
а
а
а а
.Е я а я а
я
я
я .
,
.
70
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] А :
,
VAR Str:AnsiString; BEGIN Str:=’Hello World’; //При ваивае в Str аче ие ’Hello World’. Str[1]:=’Т’;// ервы и вол ри ваива аче ие ‘T’. END;
Str ’Тello World’. –
,
‘T’,
–
,
.
,
Str
’Hello World’ ),
( ,
. К #13,
#10.
:
VAR Str:AnsiString; BEGIN Str:=’Hello World’#13#10; //При ваивае Str аче ие ’Hello World’+#13#10. Str:=#100#123#89; //При ваива в Str тро у и и волов //в е т адцатерич о ред тавле ии. END;
Char -
.
, . String, . :
var s:String; s1:String[200];
s ?Э
К
. , 2,
.
200. Ч
,
String,
.
Э
s1. ё
,
s[2]. ё
, ,
. ?
?
, 71
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ,
.
, !!!
s[0],
,
,
.
,
SetLength. Х
Length,
,
:
var s:String; begin s:=’П ив т!!!’; Д и а:=Length(s); SetLength(s, 50); end;
,
s .
.
.З
,
, 50
,
SetLength, .
5.3.4. Б левы ти ы. . – TRUE FALSE.
?
,
1
« )
0,
ё
»
TRUE ( .
. )
(0 1), FALSE ( ). (
. Boolean. :
VAR ъяв яю ич b:Boolean; // Str:AnsiString; // ъяв яю т BEGIN b:= true; if b=true then Str:=’И ти а’ else Str:=’ ь’ END;
к ю к в ю
юb ю Str
:b( ё
,
b
Str (
if .. then, -
-
)
).
TRUE.
,
-
. ». К
« if … then 72
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] .
if
«
,
».
then …»
« «if
Ч « then,
а
а
а
then …». «if … then … else». , else.
». ,
,
Э
а а
а
я
а else
ш ё else.
Delphi а а
а а
а а
а а я
,
’И ти а’, Delphi
« ».
b ’
ь’.
а,
а
«else» ,
я
а а . Та я а а я Str:=’И ти а’,
true,
а
а я
.
, . Та ,
Str ё
.
,
:
VAR b:Boolean; // ъяв яю ич ъяв яю т Str:AnsiString; // BEGIN b:= true; if b then Str:=’И ти а’ else Str:=’ ь’ END;
к ю к в ю
«if b then». (
юb ю Str
,
. Э
,
,
true), . .
.
5.4.5. Ма ивы. , ё а
.
а
,
–
: array [ иа а
,
.
,
. . 15 23 36 41. VAR :
я е е е
.К
,
аче и ] of и
е е е
ых в
,
а
иве
73
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] На а 100
а
.. К .
а
.
:
VAR b:array [0..99] of Integer; BEGIN b[0]:=1; b[1]:=2; END;
. К
, , ,
,
.
–
,
.
5.4.6. Стра ,
ы PChar.
PChar. Э Windows)
(
WinAPI
, WinAPI
, String. PChar –
. К
ё
,
, . . .
.
String, ?
–
,
,
? ,
.
–
.
,
. ,
,
ё
.К
,
PChar ,
,
, –
.
– , ,
PChar, .
. ,
PChar
-
.
. Э
,
:
var s:PChar begin s:=’П ив т’; end;
s ,
s–
.
PChar .
74
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ,
. , :
procedure TForm1.Button1Click(Sender: TObject); var s:array[0..200] of char; s1:PChar; begin s1:=s; end;
200
s, char –
.
,
s –
. begin
. s.
Э
200
200 PChar.
s1
end
s1
char.
,
s1
. , String
PChar. .
5.4
Delphi . , -
Delphi. ,
.
:
procedure Exampl; var а ь i:Integer;//О яв е ие begin е е е i:=10;//П и ваива end;
ё
е е е аче ие
ё
procedure. .
Exampl. v r ё integer (
, i ,
А
). . .
ё
ё,
К
.
. begin
begin ... end
i
,
end. 10.
, ,
i
. Exampl. 75
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] (
),
, Form1:
procedure TForm1.Examp2; begin Exampl; //Вы ывае е end;
.
Exampl а и а
а ее.
Examp2
Exampl. . ё
, .
. :
:
procedure Examp2; begin Exampl; //Прои о дёт о и а, ото у что роцедура Exampl; о и а а и е end; procedure Exampl; var i:Integer; begin i:=10; end; procedure Examp4; begin Exampl; // де ь о и и е удет, ото у что Exampl; о и а вы е. end;
,
ё
,
.
( ),
:
type TForm1 = class(TForm) private: procedure Exampl; procedure Examp2; public: procedure Examp3; procedure Examp4; end;
ё
,
, ,
. . 76
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ё
. Э
,
.
:
function Exampl:Integer; var i:Integer;// явле ие ло аль о ере е о begin i:=10;//При ваива ере е о аче ие аче ие i Result:=i; // о враща end;
,
integer (
function Exampl: Integer.
) Result,
, . :
procedure TForm1.Examp2; var x:Integer; begin x:=Exampl; // ы ывае роцедуру Exampl а и а end;
у ра ее.
x
,
Exampl. , ,
. :
function Exampl(index:Integer):Integer; begin ереда ое Result:=index*2; // о враща // у о е ое а 2 end;
аче ие index
,
,
ё
.
index .
Integer. Integer.
Ч
? Result index*2
К
,
, , :
ё . Result. Э
,
. ,
function Exampl(index:Integer):Integer;
77
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] begin ереда Exampl:=index*2; // о враща // у о е ое а 2 end;
ое
аче ие index
,
-
. :
procedure TForm1.Examp2; var x:Integer; begin x:=Exampl(20); // ы ывае роцедуру Exampl а и а end;
Exampl
40. Э ,
у ра ее.
ё 20
20, ,
2,
.
,
.
,
.
,
,
.
ё
:
procedure TForm1.Examp2; var x:Integer; begin Result:=x*20; end;
ё К
, ,
Result , ,
Result –
ё
x*20. . З . /
, . exit,
.
procedure TForm1.Examp2; var x:Integer; begin x:=20; exit; x:=10; // Этот од и о да е удет вы ол е . end;
78
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 20.
x ,
exit 10
x
Э
.
,
, .
function Exampl(index1, index2:Integer):Real; begin Exampl:=index1/ index2; end; procedure Examp2; var x: Real; begin x:=Exampl(20, 10); // ы ывае end;
роцедуру Exampl а и а
у ра ее.
index1 . Examp2
index2. index1
index2.
. ,
0.
index2
0,
.
,
0,
index2
.
function Exampl(index1, index2:Integer):Real; begin Е и index2 ав 0, т exit. Exampl:=index1/ index2; end; procedure Examp2; var x:Real; begin x:=Exampl(20, 0); // ы ывае роцедуру Exampl а и а x:=x*2; // де ь рои о дёт о и а end;
З
у ра ее.
ё
, ,
. index2
ё
. index2
ё ё
. x
2.
ё
, ,
ё ё ,
.
ё ё.
.
, х 79
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Ч
, .
function Exampl(index1, index2:Integer):Real; begin Result:=1; Е и index2 ав 0, т exit. Result:=index1/ index2; end;
,
.
ё
,
ё
,
Э
1.
Result
ё
. 1.
Result
,
, Result. Result
,
. .
-
,
Result ,
.
Result .
5.5 , .
,
. Р ,
,
.
. .Х
-
ё
– ,
ё
.
, ,
ё
. –
.
(
ё ё
,
)
ё MulNumber.
, .
function TForm1.MulNumber(index: Integer): Integer; begin Result:=Index*Index-1; end;
.Э
ё
, ,
: 80
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
function TForm1.MulNumber(index: Integer): Integer; begin Result:=Index*MulNumber(index-1); end;
index
MulNumber , MulNumber
Index. Index
MulNumber . , ё
ё
ё
MulNumber .
,
, Index ?
,
1. . . ё
index Index .
, . ,
:
function TForm1.MulNumber(index: Integer): Integer; begin if Index=1 then begin Result:=1; exit; end; Result:=Index*MulNumber(index-1); end;
З
, .
1,
ё
.
1
ё
Index
1,
Index
. MulNumber.
, , . –
. Э
, .
Function FindFile(И я а а, Ди begin П чить и к и П в ить и и кт Е и и а в ти к т вы вать кцию FindFile чт ы вт ить и к та . end;
кт и кт ии; , яв
ия); ии; ых и
кт
и ,
81
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Э .
ё
– .
5.6 ё
. -
,
, .
, ?
,
.
,
, .
, ?
.К
, .
procedure Examp1(Sender: TObject); function Suma(i,j:Integer):Integer; begin Result:=i+j; end; var i:Integer; begin i:=Suma(10,20); end;
З
Suma
Examp1, Examp1
ё
, ,
ё
ё
, var. Examp1.
:
procedure Examp1(Sender: TObject); function Suma(i,j:Integer):Integer; begin Result:=i+j; end; var i:Integer; begin i:=Suma(10,20); end; procedure Examp2(Sender: TObject); var i:Integer; begin
82
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] i:=Suma(10,20); //З е ь end;
е
З
а.
Examp2 ,
Examp1,
и
ё . ё
Suma,
.
83
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 6. 6.1 6.2 6.3 6.3
. ...............................................................................................84 ё ..........................................................................................84 Windows. ..........................................................................................95 . ..................................................................................................96 . .......................................................................................................97
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Глава 6. Ра ота
о
о е та и.
,
,
.
, «
ё
»,
.
ё . Delphi.
, , ,
. . ё
, .
ё
.
. Delphi
, additional
.
Win32.
: standard, .
,
ё
6.1
.
–
.
Р
К
,
ая
6.1
ё .
а
-
,
. .
. 84
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] : К
,
,
, а я
а
а
« а
я
х а а я, а а . Та
». ш
а
ш
я
Delphi , а
.
ActiveControl .
,
Align -
.
:
К
/
.Э
.К
alNone – alBottom – alLeft AlRight AlTop -
, .
.
. . . ,
.
AlphaBlend ,
–
.
.
.
true,
.
ё
. AlphaBlendValue. А
!!!
.
AlphaBlendValue -
–
.З
. 0 . 255
, (
255.
. Ч
0,
-
127).
ш 2000. Н
На
а
,
а
Win9x
Anchors - Э .
. а
а а .
\При еры\Глава 6\Про рач ое о о а а , а а Windows
,
.Э
. ё
, : 85
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] (
akLeft – akTop – akRight – akBottom –
true). true). flase). false).
( ( (
.
AutoScroll , .
–
AutoSize -
.
–
. .
Э
BorderIcons -
, . ё
. ,
:
biSystemMenu – . biMinimize – biMaximize – biHelp –
(
) . .
.
BorderStyle –
.Э
. .
bsSizeable – ,
bsDialog –
.
, .
.
:
: 86
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
bsNone –
.
bsSingle – ,
:
. Э
,
. Maximize.
:
bsSizeToolWin –
.
.
:
87
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
bsToolWindow –
, .
–
. В \При еры\Глава 6\ а
а
а\. Н я а .
BorderWidth –
а
а
.
а а
а
,
, 10.
. , . ,
ё
.
Caption –
, ,
ClientHeight – .Э .
. «Hello World».
ё
,
88
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ClientWidth .Э .
ё
Color –
На
,
.
а
а
, .
\При еры\Глава 6\Цвет о ,
-
ш .
:
Constraints – MaxHeight – MaxWidth – MinHeight – MinWidth –
ё
,
,
а
. . . . . 89
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] , . На
а
ш 200х200.
а
,
Ctl3D – 3D
а
–
\При еры\Глава 6\ а я
.
. Э
-
ё
. .
а
ш 400х400
/ Windows 3.1, 3D,
.
Cursor –
, /
И я rNone
ер о
р ора
.
:
ид
И я р ора rArrow
rCross crSizeNESW
crIBeam crSizeNS
crSizeNWSE crUpArrow
crSizeWE crHourGlass
crDrag
crNoDrop
crHSplit crMultiDrag
crVSplit crSQLWait
crNo
crAppStart
crHelp
crHandPoint
crSize
crSizeAll
DockSite -
–
ид
. , Drag&Drop. Э
/ ё
,
MS Office, . . На а
а
а
,
\При еры\Глава 6\Dock а а
ш
я
. Drag&Drop. З
DragKind – : dkDrag –
Drag&Drop
ё
. 90
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] . Э
dkDock –
, . ,
.
DragMode –
Drag&Drop. З
dmManual –
: .
. dmAutomatic –
Draq&Drop
, .
,
Enabled – true,
.
–
.
. .
.
На
а
а
,
\При еры\Глава 6\Enable а . а х
ш а, а
ая
.
ё
Font –
. ,
Windows
:
91
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
.З
FormStyle fsNormal –
.
fsMDIForm – Office,
MDI . . Х
Э
.
, Microsoft ,
MMC
MDI – MDI Windows 2000
:
92
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] fsMDIChild – , fsMDIChild а . НИМАНИЕ!!! –
MDI ,
аё
. fsMDIForm ,
ё
-
.
fsStayOnTop – .
Height –
–
Hint –
.
.
, /
. .Э
HorzScrollBar – ,
,
,
.
Icon – ,
ё
. .
: Load – Save – Copy – Paste – Clear –
. . . . . 93
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Left –
–
Menu –
.
. . Э
, .
Name –
/
.
ё
, /
,
,
(
T). , .
Delphi
TForm1.
,
From1.
.
Name,
С а а я а а я , я , Button1 Button2.
ParentFont –
а / а а я
а
я . а , ExitButton
–
а. Та NewFileButton, а
.
а
а
true, ,
,
.
. . З
Position – : poDefault – Windows .
,
poDefaultPosOnly - Windows ,
, .
poDefaultSizeOnly - Windows , poDesigned – .
, .
,
,
poDesktopCenter –
.
poMainFormCenter – poOwnerFormCenter – , poScreenCenter -
. . . . 94
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ShowHint – .
–
.
Tag –
–
-
.
.
Top –
–
.
TransparentColor – .
.
– AlphaBlend,
.
. З
.
TransparentColorValue -
.
VertScrollBar –
Visible .
.
ё
–
.
/
Width -
,
.
true,
/
.
–
.
.
WindowState –
.
:
wsNormal –
.
wsMaximized -
.
wsMinimized -
.
.
6.2
Windows. (
я. Ч
? Windows ,
ё ё
) Windows . .К
-
, Windows
. ,
. 95
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] .
,
.
.К
Windows
, .
, .
, Windows
. ,
Windows
.
.
,
,
, .
К ,
,
ё
. Э
,
.
, Windows.
ё
(
Windows,
): Со ытие
Иде тифи атор рило е ия 261 385 261
. .
, .
,
,
ё
,
. К
,
, ё
Windows .
,
.
ё.
ё
. . ё
,
К
о ол итель о А (12, 46, 336, 267) (356,451)
, .
, .
.
Delphi
. .
.
ё
, ).
а
.
Со ытие
ё
,
(
я–
,
-
З
,
.
6.3
ё
.К
. , , , Events
.
О и а ие 96
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] К Э З
OnActivate OnCanResize
,
. -
OnClick OnClose OnCloseQuery
.
ё
, ,
. .
. , ,
.
« OnCreate OnDblClick OnDeactivate OnDestroy OnHide
, , , ,
К
ё
?». .
ё
.
. .
,
.
, OnKeyDown OnKeyPress OnKeyUp OnMouseDown OnMouseMove OnMouseUp OnMouseWheel OnMouseWheelDown OnMouseWheelUp OnPaint OnResize OnShortCut К OnShow К
, , , , , , , , , , ,
,
. . . .
. . ё
. .
ё ё
. . . . . ,
. ,
ё
. Э
. К ,
, , ,
.
,
.
6.4
. Delphi, .
:
97
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] 1.
2. 3.
4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Standard. Windows . Х , Windows – , :). А Borland . Additional – . Win32 – , Win32 . Windows 9x, Windows ME, Windows 2000, Windows NT, Windows XP. , , Windows 3.1. System – , . Database Access – . Data Controls – . dbExpress – ё , BDE. BDE – . ADO – , Active Data Object (ADO). InterBase – InterBase. WebServices – . InternetExpress – Internet. FastNet – . . QReport – ё . Dialogs – . Win3.11 – Win 3.1. Samples – . Delphi. . Standard
,
ё
. ,
Delphi.
98
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 7. Standard....................................................................................99 7.1 К (TButton). ...............................................................................................................99 7.2 ( ). ...............................................102 7.3 (TLabel)..............................................................................................................105 7.4 (TEdit). .......................................................................................................107 7.5 (TMemo). ............................................................................109 7.6 TStrings.................................................................................................................113 7.7 CheckBox. ..........................................................................................................................114 7.8 (TPanel). ...............................................................................................................116 7.9 К TRadioButton. ........................................................................................118 7.10 (TListBox).............................................................................................119 7.11 (TComboBox). ............................................................................121 7.12 (TScrollBar). ...................................................................................122 7.13 (GroupBox). .............................................................................123 7.14 RadioButton (TRadioGroup).......................................................124 7.15 .........................................................................................................126
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Глава 7. Палитра о
о е тов Standard. ,
Standard
. ,
Delphi.
З
. .
ё
, .
,
.
ё
, Delphi,
, . Delphi.
.
ё
,
. ,
-
,
,
.
. .
Р
7.1 а
а
, а а а «Standard».
.Х
, ,
, .
7.1 К
К
Delphi
(TButton). TButton. К
ё
,
Button1. .
.
ё Button1.
ё
.
.
Р
7.1.1 Ф
а
.
99
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ё
ё
– .
,
,
,
.
Р
Caption. З «
.
.
. К
. , ModalResult,
а
7.1.2
,
, . . З
.
–
. Caption
». .
Name , .
, . Name
ё
,
MyFirstButton. .
( ё
. ).
,
Form1 TForm1,
7.1.3.
100
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] Р
а
7.1.3
.
Name ( MainForm (
Form1) -
).
( ,
F9).
. ,
Events. К OnClick. . Delphi
ё )
, . -
ё
OnClick. (
. ,
,
On. MyFirstButtonClick.
procedure TForm1.MyFirstButtonClick(Sender: TObject); begin end;
,
OnClick
(
7.1.4).
Р
7.1.4 За а а Events
ё MyFirstButtonClick.
,
TObject.
Delphi? Э
,
ё
Sender Sender
.Э
,
, .
,
.
, .
,
. (
begin
Close. Э
end)
.
:
procedure TForm1.MyFirstButtonClick(Sender: TObject); begin Close; end;
101
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] . На
а
а
.
\При еры\Глава 7\Button
,
ш
. ,
?А
Close :
.
,
procedure TForm1.MyFirstButtonClick(Sender: TObject); begin Form1.Close; end;
Э Close. Form1.
.
. Form1 .
ё ,
ё
,
Form2,
Form2.
procedure TForm1.MyFirstButtonClick(Sender: TObject); begin Form2.Close; end;
Close,
Form1,
7.2
Form2.
(
Э
). «Х
.
». ,
ё
.
,
.
. AutoScroll .
OnClick, ё
False, OnMouseMove. Events. З OnMouseMove,
ё . , OnMouseMove.
Delphi
procedure TForm1.MyFirstButtonMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin end;
102
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
:
procedure TForm1.MyFirstButtonMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var index:integer; begin index:=random(4); case index of 0: MyFirstButton.Left:=MyFirstButton.Left+MyFirstButton.Width; 1: MyFirstButton.Left:=MyFirstButton.Left-MyFirstButton.Width; 2: MyFirstButton.Top:=MyFirstButton.Top+MyFirstButton.Height; 3: MyFirstButton.Top:=MyFirstButton.Top-MyFirstButton.Height; end; if MyFirstButton.LeftForm1.Width then MyFirstButton.Left:=Form1.Width-MyFirstButton.Width; if MyFirstButton.TopForm1.Height then MyFirstButton.Top:=Form1.Height-MyFirstButton.Height; end;
.
. З На
ё
а
, а
,
. К .
\При еры\Глава 7\Button1
,
ш
. . К
, ,
,
.
Var
. random:
index
index:=random(4); .
random
, 4. Э
. (0Paste). Delphi
16. Edit.
18, )
Font true.
7.3.2
106
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
7..3.2 Р
а
.
?
,
.
7.4 Стро и ввода (TEdit). . ,
.
.
TEdit .
Standard
:
Р
7.4.1 Ф
а
Text. Э
TEdit ,
. .
. К Delphi
OnClick. ,
,
ё
, ,
.
ё
,
,
ё
. :
procedure TForm1.MyFirstButtonClick(Sender: TObject); begin Edit2.Text:=Edit1.Text; end;
Text Text
Edit2
Edit1. 107
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] . ,
-
. На
а
\При еры\Глава 7\TEdit
,
а
ш
. .
ё
PasswordChar .
.
«*».
ё
,
-
:
.
ё На
а
,
.
\При еры\Глава 7\PasswordChar
, а
ш
. . :
OnClick
procedure TForm1.MyFirstButtonClick(Sender: TObject); begin if Edit1.Text='password' then Edit2.Text:='Па ьв ы ' else Edit2.Text:='Н в '; end;
password
ё
, «
На
а
ё
.
« а
»,
». ,
а
\При еры\Глава 7\PasswordChar1
ш
.
108
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Э .
ё
, .
7.5
(TMemo). . Standard
TMemo. .
7.5.1 Ф
,
.З TStrings,
TMemo
а
.
TMemo
ё
Lines. Э .
. Memo1.
ё 7.5.2). Э
(
Lines. , .
« К».
,
ё
,
.К
, .
,
TMemo –
. .
109
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
7.5.2 Р а
,
ё
.
ClearButton. К
« » MainMemo.
.
, OnClick.
Caption Memo1 :
ё
procedure TForm1.ClearButtonClick(Sender: TObject); begin MainMemo.Lines.Clear; end;
З
Clear .
Lines, , Lines,
MainMemo. MainMemo MainMemo.Lines. .
.
ё
, Lines
а
а
Clear, .
\При еры\Глава 7\Memo
,
-
Memo ё .
ё,
, На
,
ш
. ё
, . :
OnShow
procedure TForm1.FormShow(Sender: TObject); begin MainMemo.Lines.LoadFromFile('memo.txt'); end;
З
LoadFromFile –
ё 1. З
Lines.
,
.
–
, ,
memo.txt
.
:
. 110
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] 2.
, .
,
ё . А FileExists,
,
,
ё true.
, :
OnShow
procedure TForm1.FormShow(Sender: TObject); begin if FileExists('memo.txt') then MainMemo.Lines.LoadFromFile('memo.txt'); end;
OnClose.
ё
MemoMemo.
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin MainMemo.Lines.SaveToFile('memo.txt'); end;
З
,
SaveToFile,
LoadFromFile,
. На а
а
а
а
а
, .Н
х
а
,
\При еры\Глава 7\Memo1 а а CD-ROM, а х а я а .А а ё ш а.
ш а
х а CD-ROM
, ,
TMemo .
Р
7.5.3. Х а
TMemo
.
TMemo .
, memo.txt:
,
111
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] и
ия
я
а
и та в
Delphi
Copyright Horrific www.cydsoft.com/vr-online/
К
,
(
).
. Strings 7.5.3
Lines.
, MainMemo.Lines.Strings[0],
, MainMemo.Lines.Strings[1],
. ,
ё
,
. 1. 2. 3.
. Ч
:
.
- AddButton. – DelButton. – ChangeButton. :
. .
OnClick MainMemo. –
Add,
». З Lines
« :
procedure TForm1.Button1Click(Sender: TObject); begin MainMemo.Lines.Add(' Н вая т ка'); end;
OnClick ,
. .
:
procedure TForm1.DelButtonClick(Sender: TObject); begin if MainMemo.Lines.Count0 then MainMemo.Lines.Delete(MainMemo.CaretPos.Y); end;
112
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
, Count ,
,
MainMemo. (MainMemo.Lines.Count0), .З
« ». Lines. . , CaretPos,
Lines. Delete
?
MainMemo .
TPoint. Э
CaretPos – , .
, TPoint
–
. , «Y». Х – ,
«Х»
. MainMemo.CaretPos.Y. MainMemo.Lines.Delete MainMemo.CaretPos.Y.
.
, , ,
. ,
. «
OnClick
ё
Y
».
:
procedure TForm1.ChangeButtonClick(Sender: TObject); begin MainMemo.Lines.Strings[MainMemo.CaretPos.Y]:='Horrific'; MainMemo.Lines.Strings[0]:='Т к т и ё '; end;
З
ё
ManMemo
ё '.
'Т
'Horrific'.
.
,
TMemo. На а
а
а
а
а
, .Н
х ,
а
\При еры\Глава 7\Memo2 а а CD-ROM, а х а я а .А а ё ш а.
7.6
х а CD-ROM
а
TStrings.
Lines
ё
, .
TStrings.
. Э
TMemo
, TStrings
ш
.
, .
.К
,
.К .
, , ,
,
ё
, ,
. 113
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] З
ё .
Сво
тва о
е та TStrings:
Count – , Strings – , П И я
.З
, .
. К :
ая:=И я ъ кта.Strings[Н ъ кта.Strings[Н т ки]:= П
т
ки]; ая;
.
. З
,
. Text – Методы о
. е та TStrings:
Add(Стро а) –
,
.Э
,
. Append(Стро а) –
,
. AddStrings(На ор тро ти а TStrings) – TStrings. Assign – . Clear – . Delete( о ер тро и) – Equals(На ор тро ти а TStrings) – . , false.
Exchange(Но ер1, Но ер2) – Get( о ер тро и) – IndexOf(Стро а) – , ё Insert(Но ер, Стро а) – LoadFromFile(И я фа ла) – SaveToFile(И я фа ла) – Move(Но ер1, Но ер2) –
,
. ё true
ё .
. .
ё
,
–1. . . . 1, ё,
. (
.
)
2.
. , .
7.7 CheckBox. 114
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] CheckBox. К
,
, , (Caption) «Ра (Name) «AllowCloseCheckBox». (Caption) « » (Name) «EnableButtonCheckBox». К «MyFirstButton». TCheckBox а
.
.
а
CheckBox).
ш
»
EnableButtonCheckBox (
OnClick
ё
:
procedure TForm1.EnableButtonCheckBoxClick(Sender: TObject); begin MyFirstButton.Enabled:=not EnableButtonCheckBox.Checked; end;
З EnableButtonCheckBox.Checked. Ч EnableButtonCheckBox : Checked True, . Э , MyFirstButton.Enabled
not
Enabled ? False.
Checked CheckBox- . not Checked (False).
, «
», OnClick
True. , . . False. А . Ч EnableButtonCheckBox not
, True, . К
Checked Enabled CheckBox, ё False
Checked Enabled
. . OnClick
.
ё
:
procedure TForm1.MyFirstButtonClick(Sender: TObject); begin if AllowCloseCheckBox.Checked then Close; end;
115
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
З CheckBox
,
Checked
) ё .
(
True,
AllowCloseCheckBox ( Close).
ё,
,
,
TConboBox.
.
7.8
(TPanel).
- ,
,
TRadioBox.
ё
TPanel. ё
.
TPanel ё
,
.
,
, .
BevelInner
.
. З
: ,
BevelOuter. ,
,
.
BevelInner
BevelOuter:
На
а
а
\При еры\Глава 7\Panel
,
ш
. ,
. TPanel
Standard
. Panel1
,
Panel2. , «Button1»,
. – – «Close».
.
Caption :
116
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
.
OnMouseDown
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Panel1.BevelOuter:=bvLowered; end;
ё
. .
OnMouseUp
:
procedure TForm1.Panel1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Panel1.BevelOuter:=bvRaised; end;
. К ,
ё
. . • •
, , BevelOuter BevelInner
. .
:
bvRaised bvLowered. OnMouseDown
.
procedure TForm1.Panel2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Panel2.BevelOuter:=bvLowered; Panel2.BevelInner:=bvRaised; end;
З OnMouseUp
. .
:
procedure TForm1.Panel2MouseUp(Sender: TObject;
117
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Panel2.BevelOuter:=bvRaised; Panel2.BevelInner:=bvLowered; Close; end;
На
–
а
\При еры\Глава 7\Panel1
,
а
.
7.9 К
Э
ш
TRadioButton. TCheckBox
Checked, ,
.
ё
True,
.
RadioButton
False. ,
. . RadioButton
На К
ё
.
а
.
\При еры\Глава 7\RadioButton
, а
ш
. RadioButton. А
, ? :
RadioButton
На
а
\При еры\Глава 7\RadioButton1
, а
ш
. . К ,
,
CheckBox. 118
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
7.10
(TListBox). -
(
) .
.Ч TListBox. Э
Items
TStrings. Э З ё, Items
,
?
Lines
TMemo. ,
Lines
TMemo
TListBox. .
.
ё
Items
TEdit.
TListBox ListBox1.
:
:
К а Жё З ё Чё а Ф Са а Г В а
:) « К»,
ё
.
: 119
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
ё
.
OnClick :
procedure TForm1.ListBox1Click(Sender: TObject); begin Edit1.Text:=ListBox1.Items.Strings[ListBox1.ItemIndex]; end;
ItemIndex ListBox1 ListBox1.Items.Strings ,
. .
Edit1
. На ё
а
а
\При еры\Глава 7\ListBox
,
ш
. ё
«
,
,
TMemo. » «
»
OnClick
.
:
procedure TForm1.AddButtonClick(Sender: TObject); begin
120
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ListBox1.Items.Add('Н вая т end;
ка')
:
procedure TForm1.DelButtonClick(Sender: TObject); begin ListBox1.Items.Delete(ListBox1.ItemIndex); end;
,
. 7.11 ы адающие
TMemo. и
и (TComboBox). ,
.
,
. ,
ListBox
ComboBox.
OnChenge
ComboBox1. Э .
,
:
procedure TForm1.ComboBox1Change(Sender: TObject); begin Edit1.Text:=ComboBox1.Items.Strings[ComboBox1.ItemIndex]; end;
К
,
, . «
»:
procedure TForm1.AddButtonClick(Sender: TObject); begin ComboBox1.Items.Add('Н вая т ка') end;
121
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] :
procedure TForm1.DelButtonClick(Sender: TObject); begin ComboBox1.Items.Delete(ComboBox1.ItemIndex); end;
На К
а
\При еры\Глава 7\ComboBox
, а
ш
.
,
TMemo. ComboBox1.Items.SaveToFile(‘И я а а’), ComboBox1.Items.LoadFromFile(‘И я а а’). .З Style. , \При еры\Глава 7\ComboBox1, .
Э
ё
,
: CsDropDown – , CsDropDownList – CsOwnerDrawFixed – . CsOwnerDrawVariable -
.
ё
. . . . ,
.
CsSimple –
. .
7.12 .
(TScrollBar). ,
,
ё
ё
, . ,
122
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] , . . TLabel
. TScrolBar
.
:
Label1
«0».
Caption
:
OnChange
procedure TForm1.ScrollBar1Change(Sender: TObject); begin Label1.Caption:=IntToStr(ScrollBar1.Position); end;
Caption Label1 . Position ScrollBar1. « ». Э , Caption Label1 – . . IntToStr. ё . (IntToStr(ScrollBar1.Position)), ё Caption Label1. . З Label1.
,
На
а
а
ё
, 0 )
\При еры\Глава 7\ScrollBar
,
ш
.
100. Ч Max (
Kind
sbVertical.
ё,
. Ч Min (
100). .
.
К
7.13 GropBox .
(GroupBox). :
123
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
З
Caption. . TGroupBox.
На
а
, а
,
\При еры\Глава 7\GroupBox
,
ш
.
TGroupBox TRadioButton.
7.14
RadioButton (TRadioGroup). ,
,
TGroupBox. TRadioBox.
. Щё . • • • TRadioBox. З . .
Items :
ё
« К»
GropBox ?
,
124
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
ё ,
,
TLabel.
:
OnClick
RadioGroup1.
ё
:
Label1.Caption:=IntToStr(RadioGroup1.ItemIndex);
. К .Э
ItemIndex
,
RadioGroup1 , ,
IntToStr. :
procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text:=IntToStr(RadioGroup1.ItemIndex); end;
, А
Edit1.
TRadioButton. Ч Checked TRadioGroup . TRadioGroup .
. , .А
, , ItemIndex,
125
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
7.15
З
. ,
.
о ро :
Ответ: .Э . А ,
, ,
TLabel? К
Label,
, Label, ,
,
TLabel « »?
« ». « ». Э .
,
TLabel. , ,
, .
126
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 8. 8.1 8.2 8.3 8.4 8.5 8.6 8.7 9. 9.1 9.2 9.3 9.4 9.5 9.6
. .........................................................................................127 (for..to..do).............................................................................................................128 (while)....................................................................................................................130 (Repeat). ................................................................................................................132 ........................................................................................................133 .....................................................................................................137 ...........................................................................................................140 . ............................................................................................143 . ................................................................................146 .............................................................................147 ..................................................................................................150 . ..................................................................................154 . ..................................................................................156 MDI . .......................................................................................157 ........................................................................................................161
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Глава 8. чи
я ро ра
ировать.
ё
, .
,
.
-
ё
,
.
ё
, ё
. . -
,
, .
, .
.
, .
, ,
.
ё .
127
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
8.1
(for..to..do).
–
. .
.
,
:
т1 5 вы ять Нача цик а R:=R*INDEX; INDEX:=INDEX+1; К ц цик а
Э
ё Delphi.
ё
.
Delphi
:
for е е е ая:= ача ь Д тви ;
е
аче ие to
for
еч
-
ё
е
аче ие do
.Э
ё
. ,
. : for..to..do е твие1 :
var index:Integer; sum:Integer; EndCount:Integer; begin Sum:=0; for index:=0 to 5 do Sum:=Sum+index; end;
index Sum index
0 ,
sum
.
0. 5. : 128
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] 1.
index . Sum Sum:=0+0. Sum=0; index 1 , Sum:=0+1. Sum=1. З index 1 2, Sum=1. Sum:=1+2. Sum=3. З index 1 3, Sum=3. Sum:=3+3. Sum=6. З index 1 4, Sum=6. Sum:=4+6. Sum=10. З index 1 5, Sum=10. Sum:=5+10. Sum=15.
2. 3. 4. 5. 6. З
,
З
,
З
,
З
,
З
,
index, .
ё
,
.
.
TEdit
К
,
TLabel,
.
Edit1
EndEdit,
Edit2
ResultEdit.
:
procedure TForm1.CalculateButtonClick(Sender: TObject); var index:Integer; sum:Integer; EndCount:Integer; begin Sum:=0; EndCount:=StrToInt(EndEdit.Text); for index:=0 to EndCount do Sum:=Sum+index; ResultEdit.Text:=IntToStr(Sum); end;
, 0
.
ё
. Э
– EndEdit. EndEdit
, ,
, ,
StrToInt IntToStr,
. EndCount: 129
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] EndCount:=StrToInt(EndEdit.Text);
,
index EndEdit).
ё
EndCount (
0
for index:=0 to EndCount do
З
На Х
а
«К
а
а
ё , begin end:
» 15.
5.
\При еры\Глава 8\for..to..do
,
ш
.
,
.
for ,
for index:=0 to EndCount do begin Sum:=Sum+Index; Sum:=Sum+1; end;
,
Sum
ё
.
:
for index:=0 to EndCount do Sum:=Sum+Index; Sum:=Sum+1;
ё
Sum:=Sum+1; -
,
, for..to..do. ё .
,
8.2
Sum:=Sum+index. . -
.
(while).
130
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ё
while. Э
». Э
«
,
,
. : while ви do Д тви
:
var index:integer; begin index:=0; while index0 then i:=i+10 //За else i:=i+20
ть, чт т чки
if i New Form (
New, Delphi 6.
Delphi 6).
150
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Delphi Project Manager).
.
ё
ё
, : Unit1
Unit2:
.
.Х
(View -> Project1.exe
,
, Unit1,
Delphi
. . Ctrl+S.
. .Э AboutUnit.pas.
Н
я
а
,
а
, . , MainUnit.pas.
а File->Save As.
Form2
а
.Д я
а
AboutForm. 151
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] .
а
«
ё TLabel,
-
».
. .
.
.
«
а
. »
Delphi ,
.К N4Click. Ч .
,
OnClick
,
ё
ё
, .К
AboutClick.
:
procedure TForm1.AboutClick(Sender: TObject); begin AboutForm.ShowModal; end;
152
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] AboutForm. Э
ShowModal Modal.
,
,
. , , AboutForm .Э AboutUnit, ё MainUnit. Ч AboutUnit, ё . File Use Unit.
, MainUnit
.
Delphi 5
, MainUnit :
,
« К». Ч
?
:
var Form1: TForm1; implementation uses AboutUnit; {$R *.dfm}
К
,
uses.
. З
, . AboutUnit
,
, ,
. uses .
–
, .
ё
MainUnit . Delphi6
AboutUnit . ,
: 153
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
З
, ё
«Yes»,
«
а .
На
а
а
AboutUnit. Delphi ё
».
AboutForm, . .
. З ,
\При еры\Глава 9\Forms
,
9.3
. . Ч
ё AboutForm.ShowModal, ё !!!
ш
.
. К
, ? Э
, ,
.
, :
procedure TForm1.AboutClick(Sender: TObject); var Index:Integer; begin AboutForm.ShowModal; Index:=10; end;
154
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
10.
Index
, AboutForm
10,
index .
,
,
Show.
,
. Э
, , .
:
procedure TForm1.AboutClick(Sender: TObject); var Index:Integer; begin AboutForm.Show; Index:=10; end;
, ,
AboutForm.Show,
. index
10.
ё
ё
. -
NonModalForm.
Name
,
,
:
NonModalUnit.pas.
ё
uses
NonModalUnit:
uses AboutUnit, NonModalUnit;
, Unit,
ё,
ё , «С х а
File
Use
. »
ё
. : 155
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
procedure TForm1.SaveClick(Sender: TObject); begin NonModalForm.Show; end;
З
NonModalForm
-
. Э , », NonModalForm
«С х а
.
На
а
\При еры\Глава 9\Forms1
,
а
ш
. ё
(
)
.
9.4
З
. ,
,
. К
ё
ё
-
«Да» ё
«Н
. .
.
,
,
.
. «
,
«З «mrOk». »,
mrCancel. К .К
ё «
Close. ,
».
:
» - ModalResult. .
, «З ё
, ,
».
ё
,
,
.
ShowModal «
ё
mrOk. »,
, ModalResult
ё
ModalResult OnClick, , OnClick
OnClick
»: 156
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
procedure TForm1.SaveClick(Sender: TObject); begin if NonModalForm.ShowModal=mrOK then Application.MessageBox(PChar(NonModalForm.Edit1.Text), 'Ты ввё :', MB_OKCANCEL) end;
. . (if NonModalForm.ShowModal=mrOK then).
mrOK .
MessageBox Application. 1) , . 2) . 3) К , . • MB_OK – « К». • MB_OKCANCEL – « К» « ». • MB_RETRYCANCEL – « » « • MB_YESNO – « » « ». • MB_YESNOCANCEL – « », « » «
:
». ». ё
, ё
На
(NonModalForm.Edit1.Text). ё «З » . ё .
ё. а
ё а
Ч Х Word,
. Microsoft ё MMC.
, ,
.
,
\При еры\Глава 9\Forms2
9.5
MDI
ш
.
MDI ё
.
? Э .
.
, . , .
Windows 2000
ё MDI
MS
157
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
а
MDI
MDI MainModule, fsMDIForm. ё ( fsMDIChild. , MDI .
FormStyle FormStyle
ё. ,
На
а
а
,
.
. mdi.
ChildForm) .
\При еры\Глава 9\MDI
ш
.
158
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ё
.К
( «Options» .
)? «Project»
, , ChildForm (
(Auto-create forms).
)
.
Available forms,
ё
, .
,
,
.
, ё
(
Align ».
«
alTop).
procedure TMainForm.CreateButtonClick(Sender: TObject); begin ChildForm:= TChildForm.Create(Owner); end;
З TChildForm.Create. v r:
ChildForm ChildForm
var ChildForm: TChildForm;
«
».
: 159
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
ё
, OnClose
,
.Ч
ё
procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end;
ё
. , На
а
. \При еры\Глава 9\MDI
,
а
ш
. , .
ActiveMDIChild – ?
.К .
. ,
, ё
,
:
procedure TMainForm.Button1Click(Sender: TObject); begin ActiveMDIChild.Caption:='Актив ч к '; end;
160
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
.
Caption (
,
),
ActiveMDIChild
nil. MDIChildCount –
.
.
MDIChildren – ,
MDIChildren[2]. .
0
MDIChildCount
:
for i:=0 to MDIChildCount-1 do MDIChildren[i].Caption:=’Н вы
а
в к’;
ё
:
ArrangeIcons – Cascade – Next – Previous – Tile –
. . . .
9.6
. , .
:
, .
, , . SplashProject.dpr. :
,
. Project
MainUnit.pas, View Source,
program SplashProject; uses Forms, MainUnit in 'MainUnit.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
161
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ё
, program SplashProject. uses Forms (
ё
SplashProject.dpr. . . )
MainUnit (
). begin end : 1. Application.Initialize – . 2. Application.CreateForm (TForm1, Form1) – . – . Form1. Form1 TForm1 ( MainUnit.pas)
. CreateForm , TForm1 var:
var Form1: TForm1;
3. Application.Run – Run З
Application. Application. Э
Application.Initialize. ,
ё
. File->New->Form ,
SplashUnit.pas.
ё :
program SplashProject; uses Forms, MainUnit in 'MainUnit.pas' {Form1}, SplashUnit in 'SplashUnit.pas' {Form2}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.Run; end.
,
uses
begin
end
. Forms, ё
.К
( Auto-create forms Available forms. З ,
Project .
К
Option). Form2 .Э 162
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ё
. Ч MainForm, ё
,
ё
Form2,
. ,
Form1
Form2 SplashForm. :
procedure TMainForm.Button1Click(Sender: TObject); begin Application.CreateForm(TSplashForm, SplashForm); SplashForm.ShowModal; SplashForm.Free; end;
З
,
SplashForm. .
ё
, .
, :
procedure TMainForm.Button1Click(Sender: TObject); begin SplashForm:=TSplashForm.Create(Owner); SplashForm.ShowModal; SplashForm.Free; end;
З
SplashForm
TSplashForm. Э
Create –
.
,
Owner –
nil,
,
. – Form1.Owner. SplashForm, Word, Excel
, , .
. :
begin SplashForm:=TSplashForm.Create(nil); SplashForm.Show; SplashForm.Repaint; Application.Initialize; Application.CreateForm(TMainForm, MainForm); Sleep(1000); SplashForm.Hide; SplashForm.Free; Application.Run; end;
: 1.
,
SplashForm. Create
nil. 163
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] 2. 3. 4. 5. 6.
. Repaint. . TMainForm.
ё ,
.
1000 Windows. Hide.
uses SplashForm, . .
7. 8. 9. З З TLabel c К
.
SplashForm Sleep,
, «И ё
а (
.
SplashForm (
а»),
. CreateForm), .
OnCreate
, SplashForm .
.
, ,
ё
ё
ё .
, ,
,
.
, На
а
а
. ,
\При еры\Глава 9\Splash
ш
.
164
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 10. 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 Х 10.10 10.11 10.12
ё
. .....................................................................................165 ).............................................................166 . .................................................................................................170 ............................................................................................................171 ......................................................................................174 ..........................................................................................................178 ...........................................................................181 ........................................................................................................................182 , .........................................................................................................184 ................................................................186 ................................................................................................................187 .....................................................................................189 ...........................................................................................................................194 (
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Глава 10. О
ов ые риё ы оди
а. , .
ё .
З .
. . ё
. Э
,
. . ,
, .
(
).
, .
165
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
10.1
Э
( .
.
.Э
,
, .
ё
.
ё
, .
? Э Delphi ё
var r: array [
и а
а
. -
array. Ч
x
.
:
ива] of ти
, .
ё
var
К [0..11]
,
ё,
,
Ч
).
а
ых;
?
,
, [1..12]. , 12
12 .
. ё
.
,
, :
var r: array [0..11] of String;
r
Ч
12
, .
,
.
, 5-
, 7-
:
var r: array [0..11] of String; Str:String; begin Str:=r[5]; r[7]:=’П ив т’; end;
166
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Str (Str:=r[5];). « » (r[7]:=’ ’;). . . DayOfWeekEdit) ( «У а »).
.
,
,
. TEdit ( GetDayButton :
, TEdit.
procedure TForm1.GetDayButtonClick(Sender: TObject); var day:Integer; week: array[1..7] of string; begin week[1] := 'В к ь '; week[2] := 'П ь ик'; week[3] := 'Вт ик'; week[4] := 'С а'; week[5] := 'Ч тв '; week[6] := 'Пят ица'; week[7] := 'С та'; day:=DayOfWeek(Date); DayOfWeekEdit.Text:=week[day]; end;
З
.
week
, .
,
,
. –
DayOfWeek. . ,
. , .К :1–
.
0, , .Э
, 2,
.
Date,
DayOfWeek ё ё , DayOfWeek , . , 2,3– ).
.
ё
ё.
ё ,2–
,
1 – (
. ё 167
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] «
», . На
week[day].
а
а
,
\При еры\Глава 10\Arrays
ш
.
ё
.
К ,
ё
. ,
.
:
r: array of integer;
r Ч
(
[0..10]). SetLength.
ё
: 1. 2.
. .
ё
. TListBox:
Delphi,
:
var r:array of integer; i:Integer; begin ListBox1.Items.Clear;
168
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] SetLength(r,10); for i:=0 to High(r)-1 do begin r[i]:=i*i; ListBox1.Items.Add(IntToStr(i)+' в ква end;
.
VAR Integer.
ё
ат ='+IntToStr(r[i]));
.
r(
: ListBox1. , Clear,
Items
), r[
9.
,
i
.
ListBox1.Items.Clear. Items, ё .
,
ё
ё High(r)
.
r
10 _
.
SetLength, ( а]. Э . i:=0 (
1(
9).
r[i]:=i*i .//З
ь i-
э
). 0 r.
, r
ListBox1
), :
т
а
ива
и ваива т я i*i.
ListBox1.Items.Add(IntToStr(i)+' а а ListBox1. IntToStr ,
='+IntToStr(r[i])); Э . ё
:
type TDynArr=array of integer; var r:TDynArr; i:Integer; begin ListBox1.Items.Clear; SetLength(r,10); for i:=0 to High(r)-1 do r[i]:=i*i; SetLength(r,20); for i:=10 to High(r)-1 do r[i]:=i*i; for i:=0 to High(r) do ListBox1.Items.Add(IntToStr(i)+' в ква
ат ='+IntToStr(r[i]));
169
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Э
, : TDynArr=array of integer. r TDynArr,
,
r:TDynArr; integer; . Э
. array of r:array of integer; ,
, ,
.
r:array of integer; , ё
TDynArr.
ё
.
for i:=0 to High(r)-1 do r[i]:=i*i;
Э
i. ,
SetLength(r,20);, . .
20,
for i:=10 to High(r)-1 do r[i]:=i*i;
З
i
10 .
ListBox1 На
.
а
, а
\При еры\Глава 10\DynArrays
10.2
. ,
, .
,
ш
.
,
ё
Delphi . .
.
,
5
.
!!!
. , ,
, .
ё
:
var t:array[0..3, 0..4] of integer;
170
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] К
,
.З 5
,
0
3–
0
4,
. :
var t:array[0..3, 0..4] of integer; begin t[0][0]:=1; t[1][0]:=2; t[2][0]:=3; t[3][0]:=4; t[1][1]:=5; end;
: 1 2 3 4
5 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0 3-
.
:
var t:array[0..3, 0..4, 0..2] of integer; begin t[0][0][0]:=1; t[1][0][0]:=2; t[2][0][0]:=3; t[3][0][0]:=4; t[1][1][0]:=5; end;
10.3
. ,
,
,
. ,
,
. WinAPI. ,
WinAPI .
Delphi , _lread. ReadFileEx,
ReadFile. А . , Windows.
. Windows 95 WinAPI
, 171
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] , ,
Borland
Delphi Microsoft
ё
TFileStream. ё -
.
.
(
Borland)
.
,
ё
,
. ,
TFileStream. TFileStream.
-
var f: TFileStream;
f .
И ициали ация – З
TFileStream.
а я
а
а .
TFileStream.Create(
-
f := TFileStream.Create( а а
ё
а
а
)
f.
т ы);
,
TFileStream.
,
Create
ё
: 1.
.
Create. ,
(
.Э
)
–
.
2.
.З a. fmCreate –
: . ,
b. fmOpenRead – ё c. fmOpenWrite –
. .
.З
, .
.
,
. 3.
d. fmOpenReadWrite – , ( a. fmShareCompat –
(
).
. ): , .
b. fmShareExclusive – . c. fmShareDenyWrite – . . d. fmShareDenyRead – . . 172
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] e. fmShareDenyNone . ё .
.
,
. .
. ,
,
ё
. .
. , ,
. ,
Free,
.
f.Free;
ё
,
.К
.
, . ,
. 1. Ч
:
Seek. ,
,
.
, 2.
• •
5.
. soFromBeginning – soFromCurrent -
: .
•
.
soFromEnd – . , Unicode.
–
. 2
– .
. ,
10
,
:
f.Seek(10, soFromBeginning);
.Э
Seek , .
, , . .
ё
. 0
. .
. а
а
,
:
а := f.Seek(0, soFromEnd);
173
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Read. . : 1. 2. К
,
. ,
ё
. ,
15
.
var е TFileStream. f:TFileStream; //Пе е е ая и а buf: array[0..10] of char; // Б е , я х а е ия чи а ых а ых begin ще ч ея ыва а filename.txt я ч е ия и а и и. // В е f:= TFileStream.Create(‘c:\filename.txt’, fmOpenReadWrite); f.Seek(15, soFromCurrent); // Пе е еща f.Read(buf, 10); // Чи а 10 и в ви f.Free; // У ич а е и ве end;
З
,
Seek
ь а 15 и в вв е ё . а в е и ии. ве а ыва а .
15
. Э
,
,
. (
Read
).
, .
,
:
1. . 2.
. . .
Write. 1. 2. Ч
,
. . . : . .
ё
,
.А
, ,
.
10.4 . –
. ,
.
. , ,
.
,
: 174
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Ка
!!! ? TFileStream,
: !!!Ка З
-
. А
75,
, ( (
1),
?
,
. (CR
LF). Э
,
,
.К ,
100 ,
?
. TStrings, ё
) . TStringList. TStringList
TStrings. Э TStrings
Р
1И а х я
, .
TStringList TStringList
а TStringList
К var f:TStringList; //Пе е е
,
:
ая
и а
е
TStringList.
Create. ,
. Ч Free.
var f:TStringList; //Пе е е ая begin f:= TStringList.Create(); f.Free; end;
:
и а
е
TStringList.
175
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] , ,
TStringList
. А
,
. TStrings – , ,
TStrings. а
. -
,
.
TStringList .
,
,
TStrings
,
TStrings
. Э
, , TStrings,
. Э
TStringList,
.
.З
,
:
var f:TStrings; //Пе е е ая begin f:= TStringList.Create(); f.Free; end;
и а
ё
е
TStringList.
TStrings,
TStringList. Э TStrings. TStrings.
TStringList TStringList,
, f
,
–
. ё
,
.А
,
ё
. , .
,
ё
TStringList
. . ,
,
LoadFromFile Strings
Count
.
var е TStringList. f:TStrings; //Пе е е ая и а begin f:= TStringList.Create(); а е вы а f.LoadFromFile(‘c:\filename.txt’);// За f.Strings[0]; // З е ь ах и ь я е вая ч а а а f.Strings[1]; // З е ь ах и ь я в ая ч а а а f.Free; end;
,
«
Ва я»:
176
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] var f:TStrings; //Пе е е ая и а е i: Integer; // Счё чи begin f:= TStringList.Create(); f.LoadFromFile(‘c:\filename.txt’); // За for i:=0 to f.Count-1 do // За я и а begin // Нача
а
TStringList.
а
и i-я
Application.MessageBox(‘Ст ка а 'П и к ак ч ', MB_OKCANCEL) е
я и
вы
а
и
if f.Strings[I] = ‘П ив т Ва я’ then //Е
end; // К
е
а ав а
а’,
а
f.Free; end;
5-
а
«
а
я
.
». Э
var е f:TStrings; //Пе е е ая и а i: Integer; // Счё чи begin f:= TStringList.Create(); f.LoadFromFile(‘c:\filename.txt’); // За
:
TStringList.
а
е
вы
if f.Count>=5 then // Е и в а е е ь 5 f.Strings[5] = ‘П ща та ция Ми ’; f.Add(‘П
ща ’);// Д
ав я
,
и
а е и ь
в
f.SaveToFile(‘c:\filename.txt’); // С х а я f.Free; end;
е
ь а
, ё
,
.
, .
Add. SaveToFile.
, ,
,
,
.
ё
, : 1. Clear – 2. Insert –
. .
– . 177
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] .З
3. Delete –
–
.
,
TStringList
.
.
10.5 ,
. . : . .
,
«12345». Э
,
. ,
,
.
. Прео разова ие целых чи ел в тро .
и о рат о
, .
–
,
,
TEdit. Ч
Edit1 . Ч
Edit1.Text. ,
. . StrToInt.
–
,
.
var ch:Integer; begin ch:=StrToInt(Edit1.Text); // П е end;
а
выва
Edit1.Text в чи
ch ё
ё
,
Edit1.Text
. . (
)
IntToStr.
var ch:Integer; begin ch:=StrToInt(Edit1.Text); // П е ch:=ch+1; Edit1.Text:=IntToStr(ch); // П е end;
а
выва
а
выва
Edit1.Text в чи h в
178
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] К
, .
ё
, ,
. Ч ,
ё 1. 2. З
try
–
, except. :
StrToIntDef
, ,
,
.
,
:
var ch:Integer; begin ch:=StrToIntDef(Edit1.Text, 0); // П е end;
,
а
выва
Edit1.Text в чи
ё
, ё
,
0.
Прео разова ие даты в тро
и о рат о .
1.
:
DateToStr –
. TDateTime
– . StrToDate – «11/05/2001») FormatDateTime – ,
2. 3.
. . Э . : .
TdateTime, –
(
.
FormatDateTime 1. 2.
,
.
:
d– dd – 10, ddd – dddd – ddddd – dddddd – «10 m– mm – mmm – mmmm – yy –
а я 2002».
(1, 2, 3 …30, 31). . , 01, 02 … 09. ( , , …). ( , …) . ( 10 /02/2002 (1, 2, …, 11, 12). (01, 02, …11, 12). . ( , .…). (98, 99, 00, 01). 179
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] yyyy – h– hh – n– nn – s– ss – z– zz – am/pm –
. . . . . . . . . 12-
(
Э
/
).
,
:
е в ви е “24/02/2002” FormatDateTime(‘dd/mm/yyy’, Date()); // Да а FormatDateTime(‘dddddd’, Date()); // Да а е в ви е “24 ев а я 2002” FormatDateTime(‘hh:nn’, Time()); // В е я е в ви е “10:48” FormatDateTime(‘hh:nn - ss’, Time()); // В е я е в ви е “10:48 - 24”
Прео разова ие веще тве
ых чи ел
ё
. К
,
.
-
,
,
, 10
.
5. Х
2,
,
ё ,
,
.
var i:Integer; begin i:=10/2; end;
,
:
«Incompatible types: 'Integer'and ‘Extended’» : 1. З , 2.
. . round:
var i:Integer; begin i:=round(10/2); end;
, . 180
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] .
FloatToStr, . , FormatFloat, :
StrToFloat, .
.
. . FormatFloat.
ё
, (
Delphi):
ё, .
10.6 . , .
,
,
,
ё
-
ё ,
: ё
ё
,
.
,
. Прео разова ие тро ,
ё
String
PChar.
: NewStr:=PChar(MyStr);. ё PChar.
String,
MuStr
. WinAPI , -
ё
PChar
. , .
181
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
10.7 . Э
, .
, . -
,
,
, MyProc ,
,
.
, .К
: ? (
, ). .
/ ё
,
.
.
– , ё
ё .
.
.К
.К 10
–
– ё
,
, .
–
.
,
,
,
10 ( 12
А
).
.Э
, ,
.
,
,
.
1000
. ,
,
ё
,
. .
–
,
,
.
,
ё
, , Delphi
. Pointer.
ё
.
,
,
p
:
var p:Pointer
,
, ,
@. .
,
,
, p^. p:=@Str – p– p^ ,
ё
Str : p:=@Str;.
p,
,
. :
. . p. 182
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ,
. :
«
»
:
var p:Pointer Str:String; begin а а е ы а p:=@Str; // П и ваива Str:='П ив т '; // е я аче ие Edit1.Text:=String(p^); // Выв е end;
и
,
Str.
p .
. String(p^). Э
p ё
, ,
.К
p ,
, ё
, .
З
, ,
ё
ё
ё
,
.Э
ё
,
,
,
p
. На
а
а
\При еры\Глава 10\Pointers
,
ш
. ,
К
.
–
.
, , ,
p:=nil;. К .
nil, А
,
, ,
. ? ?
,
. 0,
, . 183
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
10.8
, .
, «
. »,
Delphi », ,
«
«
++
».
, .
–
. .
,
,
. :
И я т кт ы = record Св тв 1: Ти в тва1; Св тв 2: Ти в тва2; …. end;
,
:
WindowsSize = record Left:Integer; Top:Integer; Width:Integer; Height:Integer; end;
: Left,
WindowSize Top, Width, Height. , , :
WindowsSize = record Left, Top, Width, Height:Integer; end;
var, ё
. ,
. :
var ws: WindowSize;
184
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] –
, .
.
,
/
–
. :
а
–
.Г
а ё. Э
– , .
,
. .
, ё ,
, . .
ё
,
. , : ws.Left.
Left
.
,
, , .
, TFileStream. ,
.
, :
Type
type WindowsSize = record Left, Top, Width, Height:Integer; end; TForm1 = class(TForm) private public end;
. З
OnClose :
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var ws:WindowsSize; f:TFileStream; Str:String; begin яе ев и и ws.Left:=Left; // За ws.Top:=Top; // За яе ав и и ws.Width:=Width; // За яе и и а ws.Height:=Height; // За яе вы а f:=TFileStream.Create('size.dat', fmCreate); // С f.Write(ws, sizeof(ws)); // За и ыва f.Free; // За ыва а end;
а
а
Size.dat
185
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ,
, .
. .
ё
SizeOf, ё
. ,
:
procedure TForm1.FormShow(Sender: TObject); var ws:WindowsSize; fs:TFileStream; begin if FileExists('size.dat') then // Е и а Size.dat ще begin fs:=TFileStream.Create('size.dat', fmOpenRead); // О fs.Read(ws, sizeof(ws)); // Чи а е и е fs.Free; // За ыва а а ав ива // Да ь е я Left:=ws.Left; Top:=ws.Top; Width:=ws.Width; Height:=ws.Height; end; end;
х а ё
ые а
в е , ыва ы
е ыи
а
и и
Size.dat
а а
и
FileExists
. Э
.
,
. К
. ,
. К
, ,
, ,
– ,
,
.
. На
а
а
\При еры\Глава 10\Records
,
ш
.
10.9 Х ( (
ё
? К
ё
, ё
)
). .
,
ё ё «^И яС
, ,
. ». Ч
. « »
:
186
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] type PWindowsSize = ^ WindowsSize; WindowsSize = record Left, Top, Width, Height:Integer; end;
PWindowsSize ,
.
,
PwindowsSize:
var ws:PWindowSize; begin ws:=New(PWindowSize); // Вы е яе а я ь ws.Left:=10; // е яе в в ае а я ь Dispose(ws); // У ич end;
PWindowsSize. Э . PWindowsSize.
,
ws
New. Э
ws –
. ,
ws PWindowsSize. ё
,
. Dispose.
, ё
. ,
.
,
( PWindowsSize), . WindowsSize),
( , .
10.10 , .
,
. .
ё
, :
а и //За hFindFile := FindFirst(Ма ка и ка, Атт и ты , И ация); е ь а е а а //П ве я if hFindFile INVALID_HANDLE_VALUE then //Е и е , а ае ь я и repeat - until. repeat
187
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ы, //З е ь в и а ы е а until (FindNext(И ация) 0); FindClose(И ация);
FindFirst -
ые
вы
.
ё
,
ё
.
. Fold
я ь.
.
ё
.
,
,
Х ,
'C:\*.*'. 'C:\Fold\*.exe'. -
.
faAnyFile,
. faReadOnly faHidden faSysFile faArchive faDirectory -
ReadOnly (
).
. . . . -
ё
, ,
,
. .
,
ё
. Repeat - Until. .
,
until,
.К
until ,
Х
,
ё
, repeat
,
.
, SearchRec ( ,
, .
Name) . ,
?
.
,
.
type TSearchRec = record Time: Integer; // В е я а ия а е а а а а Size: Integer; // а е а е Attr: Integer; // А и ы а е а а Name: TFileName; // я а е а а чае ые а и ы а е а а ExcludeAttr: Integer; // FindHandle: THandle; // У а а е ь е х и ы я и а FindData: TWin32FindData; // С а и а а а Winndows end;
FindNext , SearchRec, SearchRec
FindFirst. Э , .К
,
ё
,
ё
. 188
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] .
FindClose
ё
SearchRec. .К
, TSearchRec. К –
.
? , ,
. ё
TEdit
ё
.
.
:
:
var SearchRec:TSearchRec; begin // ще а if FindFirst(Edit1.Text,faAnyFile,SearchRec)=0 then // За и ае а е Edit2.Text:=IntToStr(SearchRec.Size)+ ' а т'; и //За ывае FindClose(SearchRec); end;
На
а
а
\При еры\Глава 10\FindFile
,
ш
.
10.11 ,
. TRegIniFile.
, TRegIniFile. Ч Create
ё
. . .
ё
,
RegIni
, TRegIniFile:
189
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] RegIni:=TRegIniFile.Create('Software');
, HKEY_CURRENT_USER. ,
–
Create HKEY_CURRENT_USER.
, HKEY_CURRENT_USER\Software. А HKEY_CURRENT_USER\Software\Microsoft. TRegIniFile OpenKey. «Microsoft»:
ё
RegIni.OpenKey('Microsoft', true);
:
OpenKey 1. 2.
,
. ,
,
. false, , . .
ё
. • • •
ё ReadBool – ReadInteger – ReadString –
, ,
true . .
: (true
false).
. . 190
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] –
. ReadString,
. . :
1.
,
. , Microsoft HKEY_CURRENT_USER\Software\ Microsoft. HKEY_CURRENT_USER\Software\Microsoft\ MySoftware, MySoftware. . , Path, Path :).
2.
З
3.
,
, .
ReadString .
С а
х ё а
TRegIniFile х а
а
а
ш WriteInteger х а я а а а . Та а .Е а,
,
а
я а
а
а а а ReadInteger, а а . А TRegIniFile а х ш х а я а я
TRegistry. ё
,
:
Str:=RegIni.ReadString('MySoftware', 'Path', 'c:\');
MySoftware , « :\».
Path. Str.
, , • • •
,
.
: WtiteBool – WtiteInteger – WtiteString –
(true
false).
. . : 191
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
RegIni.WriteString('MySoftware', 'Path', 'c:\Windows');
Path. З
MySoftware - «С:\Windows». ,
,
Free:
RegIni.Free;
, . «З
OnShow,
. Ч LoadProgParam. Э
, ,
».
.
procedure TForm1.FormShow(Sender: TObject); begin LoadProgParam; end;
OnClose. З .
SaveProgParam.
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin SaveProgParam; end;
К Delphi SaveProgParam.
, , . private.
. LoadProgParam
: 192
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
private { Private declarations } procedure LoadProgParam; procedure SaveProgParam;
Ctrl+Shift+C
Delphi
:
procedure TForm1.LoadProgParam; begin end; procedure TForm1.SaveProgParam; begin end;
.
ё
SaveProgParam:
procedure TForm1.SaveProgParam; var FIniFile: TRegIniFile; begin FIniFile := TRegIniFile.Create('Software'); // И ициали иру рее тр FIniFile.OpenKey('VR',true); // т рыва ра дел FIniFile.OpenKey('VR-Online',true); // т рыва ещё оди ра дел if WindowState=wsNormal then begin FIniFile.WriteInteger('Option', 'Width', Width); FIniFile.WriteInteger('Option', 'Heigth', Height); FIniFile.WriteInteger('Option', 'Left', Left); FIniFile.WriteInteger('Option', 'Top', Top); end; FIniFile.WriteInteger('Option', 'WinState', Integer(WindowState)); FIniFile.Free; // end;
во о да рее тр
, . .
,
WindowState .
wsNormal, 802,
800 600, 602. Э ,
.
193
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] - WindowState.
ТWindowState, Integer(WindowState). LoadProgParam
Integer :
procedure TForm1.LoadProgParam; var FIniFile: TRegIniFile; begin FIniFile := TRegIniFile.Create('Software'); FIniFile.OpenKey('VR',true); FIniFile.OpenKey('VR-Online',true); Width:=FIniFile.ReadInteger('Option', 'Width', 600); Height:=FIniFile.ReadInteger('Option', 'Heigth', 400); Left:=FIniFile.ReadInteger('Option', 'Left', 10); Top:=FIniFile.ReadInteger('Option', 'Top', 10); WindowState:=TWindowState(FIniFile.ReadInteger('Option', 'WinState', 2)); FIniFile.Free; end;
На
а
а
\При еры\Глава 10\Register
,
ш
.
10.12 TStream, . (
,
, ,
). .
, TFileStream . Э
, ,
. TStream
: TMemoryStream. TWinSocketStream. TOleStream.
,
TStringStream. ,
.
, Сво
TFileStream , ё
,
ё
,
TStream, . . :
тва
194
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Position –
. .
Size –
.
Методы CopyFrom – –
. , . ,
Read – –
.
, .
Seek – 1. Ч
. ,
,
.
, 2.
• •
:
5.
. soFromBeginning – soFromCurrent -
•
: . .
soFromEnd – .
SetSize – . SetSize
,
. З ,
–
, .
TFileStream
. Write – 1. 2. Ч Э
. .
,
:
. ё
, ,
ё
. ,
.
195
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 11. 11.1 11.2 11.3 11.4 11.5 К 11.6 11.7 11.8
Delphi. ........................................................196 Delphi (TSpeedButton TBitBtn)........................................197 ...................................................202 (TMaskEdit)...................................................................202 (TStringGrid, TDrawGrid)................................................................................203 (TImage, TShape, TBevel)....................................................210 (TScrollBox) ................................................................213 (TCheckListBox)....................................................................214 (TSplitter) .......................................................................................216
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Глава 11. О зор до ол итель ых о Delphi.
о е тов
Delphi. , , .
Э
. , . Delphi, ё
. ё
. ,
ё
ё
,
, Delphi
, , . ,
.
196
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
11.1
Delphi (TSpeedButton
TButton Standard. Delphi Additional – TBitBtn TSpeedButton. , , , TSpeedButton . »? К ё . , ё TEdit. , . . ё , . , Enter, , . .Э , ё , .
ё ,
Ч
TBitBtn «
,
ё
, К -
TSpeedButton ,
К
,
ё
TAB.
TBitBtn)
ё,
TAB
ё
.
TSpeedButton.
,
TBitBtn
,
TSpeedButton
, .
Delphi
TSpeedButton . ,
.З Align alTop, Caption 0 Top ( (Height)
Delphi TPanel (
22. ё
Height) 24. TSpeedButton ) 1. (Width) ё . ,
. Standard. . ё
Left (
) 23,
ExitButton,
11.1.1. 197
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
11.1.1
ё (
Glyph
11.1.2). Delphi ё Files\Common Files\Borland Shared\Images\Buttons. , .
. Program
Load
11.1.2
,
,
ё
. . К Flat
. К .
dooropen.bmp. К
,
,
. Э
ё
Delphi
.
ё
. ,
11.1.3 ё
, ,
true.
198
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
11.1.3
ё
OnClick. Events
ё
ё
.
:
OnClick.
procedure TForm1.ExitButtonClick(Sender: TObject); begin и а ы Close; //Вых end;
ё Bulbon.bmp (
ё
.
. Bulboff.bmp (
11.1.4. BulboffButton),
BulbonButton).
11.1.4
.
GroupIndex .К
Down
true. ,
,
.К .
1 ё
, .
Word
, . 199
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ,
,
ё
(
2. Down
,
1.
GroupIndex ) .
true TBitBtn,
С а ,
. З
ё
.
ё StartBtn.
Caption
TSpeedButton.
11.1.5
К
TBitBtn ,
TSpeedButton . ,
,
Layout, 11.1.6
.
, Layout.
11.1.6
ё
Kind. . .
ё ,
11.1.7 ,
Kind.
,
. ё
ModalResult – .
, ,
.
200
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
11.1.7
ё
С а
Kind.
, . .
Project Manager, View Project Manager). , 11.1.8.
(
11.8
.
Kind bkAbort.
ё
bkOK,
bcCancel, ё
(
)
Project Manager С а .
OnClick
procedure TMainForm.StartBtnClick(Sender: TObject); begin Form2.ShowModal; // П ка ываю вт ю if Form2.ModalResult=mrOk then Application.MessageBox('Вы а а и к
к OK', 'Вы а а и');
if Form2.ModalResult=mrCancel then Application.MessageBox('Вы а а и к
к Cancel', 'Вы а а и');
if Form2.ModalResult=mrAbort then Application.MessageBox('Вы а а и к end;
к Abort', 'Вы а а и');
,
ё
ё
ё
.
.
, ,
Form2.ModalResult
ModalResult. . . 201
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
ш
На
а
,
\При еры\Глава 11\BitBtn&SpeedButton
а
.
11.2 16 16. ,
,
,
. ,
(
–
(Enabled = false). К .
Enabled = true)
ё
,
,
32 16. , ,
:
К
, Delphi
,
,
. , Delphi ,
. ,
, .
11.3
(TMaskEdit)
« а а ая» « а а». -
( ,
ё
ё
),
.
TMaskEdit.
11.3.1 TMaskEdit.
, TMaskEdit. «В
а
. ».
TMaskEdit. Щё
(TLabel) 202
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] .К Standard.
,
TEdit
11.3.2
.
– EditMask. Щё ( 11.3.3 ). .
Input Mask .
Test Input,
.
11.3.3
.
ё
, 9
, На
ё
R9999-999. , а
11.4
ё 9999-999. ,
, Input Mask .
,
R, а
.
\При еры\Глава 11\MaskEdit
ш
.
(TStringGrid, TDrawGrid) Excel.
ё
.
, . ?
.
203
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
11.4.1
.
.
11.4.1 Delphi
, TStringGrid –
TStringGrid TDrawGrid
,
,
.
,
, TDrawGrid –
ё TDrawGrid.
TStringGrid –
.
- TStringGrid - TDrawGrid ё
TStringGrid .
ё
ё,
TStringGrid. ( ,
ё ):
. З
BorderStyle –
, bsSingle
bsNone.
. ,
.
ColumnCount – DefaultColWidth – DefaultDrawing –
.
,
–5
.
. . .
ё
. DefaultColHeight – , . FixedColor –
ё
ё
False,
true,
. З 16. . .
11.12 .
FixedCols –
.
.Э
FixedRows –
. .
.Э
GridLineWidth – Options –
,
, .
ё
.
,
. .
:
204
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] goFixedVertLine – . goFixedHorzLine – . goVertLine – . goHorzLine – . goRangeSelect – . goDrawFocuSelected . goRowSizing –
–
. goColSizing . goRowMoving . true,
– ё
. goColMoving . true,
ё
goEditing – True. goTabs –
. .
True,
Tabs. goRowSelect – . goAlwaysShowEditor –
.
false,
Enter
ё
true, ё ,
,
false, F2.
True,
. goThumbTracking – . RowCount – ScrollBars – ssNone – ssHorizontal – ssVertical – SsNone –
.
.З
. :
. . . .
,
.
OnShow
:
procedure TMainForm.FormShow(Sender: TObject); begin // За я ач ия и в юк к StringGrid1.Cells[0,1]:='Ива в'; StringGrid1.Cells[0,2]:='П т в'; в'; StringGrid1.Cells[0,3]:='Си
205
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] StringGrid1.Cells[0,4]:='С и я ач ия и // За StringGrid1.Cells[1,0]:='Г StringGrid1.Cells[2,0]:='М StringGrid1.Cells[3,0]:='П StringGrid1.Cells[4,0]:='С end;
в';
в ю т к .'; т .'; и ка';
и ';
ё
TStringGrid – Cells. Э
. Ч
,
,
–
StringGrid1.Cells[
, -
я
,
].
.
ё
«
,
ё
,
, »,
:
StringGrid1.Cells[1,3]:=’П ив т’;
: if StringGrid1.Cells[1,3]=’П ив т’ then С ать каки - и твия;
11.4.2
,
.
11.4.2
.
.К
я». .
«Г ё , –
, ,
,
, .
ё
, .
TMaskEdit, , TMaskEdit (
. ), 99/99/9999. .
DateEdit. Visible
false, 206
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
ё
11.4.3 TMaskEdit
ё
OnDrawCell,
:
procedure TMainForm.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin ать ви и к т DateEdit DateEdit.Visible := false; // С if (gdFocused in State) then // Е и т к щая яч ка в к т … begin if ACol=1 then // Е и и т я яч ка в к ки т … begin DateEdit.Text:=StringGrid1.Cells[ACol, ARow]; // За и ать в DateEdit т к т яч ки ицию DateEdit.Left := Rect.Left + StringGrid1.Left+2; // У та вить в ю DateEdit.Top := Rect.Top + StringGrid1.top+2; // У та вить в х юю ицию DateEdit.Width := Rect.Right - Rect.Left; // У та вить и и DateEdit.Height := Rect.Bottom - Rect.Top; // У та вить вы т DateEdit.Visible := True; // С ать к т DateEdit ви и ы и ц ы exit; // Вых end; end; end;
Э .
,
-
,
.
Delphi
Ч
Sender – ARow ACol – . Rect – ,
StringGrid1DrawCell
: ё
,
. (
)
, .
«
»?
Rect
ё
–
:
type TRect = record Left, Top, Right, Bottom: Integer; end;
К
, .
11.4.4
,
,
, , 207
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Left
Right
Rect.
.
Right , .
Bottom
11.4.4
,
ё
– State. ,
.
: gdSelected – gdFocused – gdFixed -
. . . State
.Э .Ч
State
. , ,
-
:
State, if ( ач Вы
,
и in State) then ить тви
gdFocused. ,
,
.
, ,
,
, . DateEdit К
), .
DateEdit
. З
,
.
DateEdit, , OnChange
,
.
,
(
, DateEdit,
ё
. DateEdit. Э , .Э
,
.
procedure TMainForm.DateEditChange(Sender: TObject); begin StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row]:=DateEdit.Text; end;
208
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Ч «Х
ё TCheckBox, ». К
,
«Ж а » ,
.А
, : CheckBox
.
OnDrawCell:
procedure TMainForm.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin DateEdit.Visible := false; CheckBox1.Visible := false; if (gdFocused in State) then begin if ACol=1 then begin DateEdit.Text:=StringGrid1.Cells[ACol, ARow]; DateEdit.Left := Rect.Left + StringGrid1.Left+2; DateEdit.Top := Rect.Top + StringGrid1.top+2; DateEdit.Width := Rect.Right - Rect.Left; DateEdit.Height := Rect.Bottom - Rect.Top; DateEdit.Visible := True; exit; end; if ACol=4 then begin CheckBox1.Caption:=StringGrid1.Cells[ACol, ARow]; if CheckBox1.Caption='Æåíàò' then CheckBox1.Checked:=true else CheckBox1.Checked:=false; CheckBox1.Left := Rect.Left + StringGrid1.Left+2; CheckBox1.Top := Rect.Top + StringGrid1.top+2; CheckBox1.Width := Rect.Right - Rect.Left; CheckBox1.Height := Rect.Bottom - Rect.Top; CheckBox1.Visible := True; exit; end; end; end;
ё
OnClick
CheckBox1,
:
procedure TMainForm.CheckBox1Click(Sender: TObject); begin if CheckBox1.Checked=true then CheckBox1.Caption:='Æåíàò' else CheckBox1.Caption:='Õîëîñò';
209
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row]:=CheckBox1.Caption; end;
На
а
\При еры\Глава 11\Grid
,
а
ш
.
11.5 К
-
(TImage, TShape, TBevel) , .
,
,
. Ч ….
-
,
- TImage - TShape - TBevel TImage. (
ё
Picture 11.5.1).
11.5.1
,
, ,
AuroSize
true.
, 210
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] , false).
AuroSize
true (
Center
,
true (
Stretch
AuroSize
false). ,
True. Х ,
Transparent
.
,
wmf
,
(
). ,
TImage . ё
TShape. – .
.
Shape, 11.5.2
,
TShape. Shape.
,
11.5.2
ё
, ( Pen
).
Brush (
)
Pen
,
Brush .
ё
Brush, :
1. Color – 2. Style -
; . 11.5.3
, .
, .
211
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
11.5.3
К
,
,
,
З
ё 1. 2. 3. 4.
Color Mode – Style – Width –
ё
ё
Pen.
.
, :
; ; ; .
З
, . ,
,
-
, 11.5.4
. :
11.5.4
TBevel, -
. ,
TBevel ,
.
TPanel, . Э ё
, .
TBevel, Shape 11.5.5 . -
Style. .
, .
212
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
11.5.5
А
11.5.6
. К .
TBevel
(
Align
, , alClient). Э
.
11.5.6
ш
На
а
,
\При еры\Глава 11\TImage TShape TBevel .
а
11.6
(TScrollBox) TScrollBox. .Э ,
, .
- TScrollBox 213
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] .
Image1
, AutoSize
.
TScrollBox (TImage).
ScrollBox
,
true.
Image1 .
ScrollBox, .
11.6.1
На
а
\При еры\Глава 11\ScrollBox
, а
ш
.
11.7
(TCheckListBox)
ТCheckListBox ё ТCheckListBox.
ТListBox, TCheckBox.
11.7.1 К
,
1.7.1
CheckListBox
.
ТCheckListBox.
Delphi Items
(
ё 1.7.2).
.
214
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
11.7.2
ТCheckListBox .
ё
– columns, . . 1,
, (
.
11.7.3).
11.7.3
11.7.3 .
,
ё ,
К.
ё
.
OnClick
:
procedure TForm1.OKButtonClick(Sender: TObject); var i:Integer; Str:String; begin Str:='Вы вы а и '; for i:=0 to CheckListBox1.Items.Count-1 do // За каю цик if CheckListBox1.Checked[i] then //Е и i- э т вы т … Str:=Str+CheckListBox1.Items[i]+' '; //Д авить в т к Str т к т э Application.MessageBox(PChar(Str), 'В и а и !!!'); // Выв end;
ти а эк а
та т
к
215
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
. 11.7.4
.
11.7.4
ё
« К».
, –
Ч
Str .
« i-
i ».
, ,
, CheckListBox1. ,
.
Str. Str.
-
,
Checked ,
:
if CheckListBox1.Checked[0] then … , Items
CheckListBox1. Ч
i.
: CheckListBox1.Items[0] На
а
, а
11.8
\При еры\Глава 11\CheckListBox
ш
.
(TSplitter)
- TSplitter
216
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
З
Windows Explorer. .
, , .
,
(
11.8.1),
. TSplitter.
11.8.1
ё
Windows
,
TSplitter ,
. .
(TPanel) Align alTop). TSplitter
( Caption ё Caption
« Align «
». alTop. ».
ё ё
. TSplitter
217
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 11.8.2
( «К
Align ».
ё
alClient).
Caption
,
-
11.8.2 –
TSplitter. .
, На
. а
а
\При еры\Глава 11\Splitter
,
ш
.
218
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 11.9 11.10 11.11 11.12 11.13 11.14 11.15 11.16 11.17 11.18 К
(TStaticText) .............................................................................219 (TValueListEditor)....................................................................219 (TTabControl )....................................................................................221 (TPageControl ) ...................................................................................226 (TImageList) ......................................................................................228 (TTrackBar) ..................................................................................................229 (TProgressBar) ........................................................230 (TAnimate) .............................................................................233 (TDateTimePicker).............................................234 (TMonthCalendar).......................................................................................235
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
11.9
(TStaticText) . TLabel, TStaticText.
– AutoSize, ,
ё ,
ё
. - TstaticText 11.9.1
. TStaticText –
,
,
TLabel.
Р
11.9.1 К
TStaticText
11.10
(TValueListEditor) ТValueListEditor. Э .
,
,
,
.
- ТValueListEditor . .
:
• DefaultColimnWidth – • DefaultColimnHeight – • DisplayOption – : o doColumnTitles – o doAutoColResize – o doKeyColFixed – • TitleCaptions .
ё
". • FixedColor -
; ; .З ; ; ; . Щё
,
, -"
"
"
. 219
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] • FixedCols -
. .
• KeyOption – o o o o
0, . . 1,
. . -
FixedCols :
, .
keyEdit – keyAdd – keyDelete – keyUnique – • Strings . o o o o o o o o
11.10.1). Э
(
(
.З
),
:
А
Р
11.10.1 Р а
. 11.10.2
, .Э
. – ,
,
, .
220
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
11.10.2 Ф
а
.
ё
OnShow.
а
:
procedure TForm1.FormShow(Sender: TObject); begin ValueListEditor1.ItemProps[6].EditStyle:=esPickList; ValueListEditor1.ItemProps[6].PickList.Add('М ква'); ValueListEditor1.ItemProps[6].PickList.Add('Пит '); ValueListEditor1.ItemProps[6].PickList.Add(' т в- а-Д
');
ValueListEditor1.ItemProps[4].EditMask:='99/99/9999'; end;
,
ValueListEditor – ItemProps. ё 3, , 1
, .
ё
– EditStyle – . (ValueListEditor1.ItemProps[6].EditStyle)
.Э esPickList. Э
. ValueListEditor1.ItemProps[2]. .
6-
.
6. ValueListEditor1.ItemProps[6].PickList.Add( ё – EditMask – 4ш
На
а
,
11.11
а
, а). . .
\При еры\Глава 11\ValueListEditor .
(TTabControl ) 221
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] , . , 11.11.1
«
MS Word.
» MS Word,
.
, .
Р
Delphi,
« а а
11.11.1
» MS Word
Win32 .
-
TTabControl. - TTabControl З
Delphi
. . .
TTabControl Name)
(
OptionsTab.
ё
. 11.11.2).
Tabs, ( ,
.
Р
ё
а
11.11.2
ё
а а
: 222
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] • • • •
З
ё
« К», 11.11.3).
(
Р
11.11.3 К
а
TabControl
, ё
.Ч
, . true.
,
, –
. ,
Р
ё
, MulriLine
11.11.4. К .Ч
а а а
11.11.4 К
ё TabControl
TabControl
HotTrack ( ё . З
.
а
MultiLine
true. Э ,
– Style. Э
).
: tsTabs – tsButtons – tsFlatButtons –
11.11.3 11.11.5 11.11.6
11.11.4
223
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Р
Р
11.11.5 За а
tsButtons
11.11.6 За а
tsFlatButtons
. , – TabHeight, TabIndex . .
TabHeight –
TabPosition.
ё
, 0,
TabIndex – ,
. 0 ,
3. .
,
,
.
.З
TabPosition – : tpBottom – tpLeft – tpRight – tpTop –
; ; ; ; tpTop. .
. ё
, -
. Э
–
. К
,
, .
,
.
Р
11.11.7 Ф
а
я а
я
224
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 4-
11.11.7. Э
, ,
Object TreeView ( .
.
11.11.8).
Р
. Visible true.
1.
2.
OptionTab ( ё
TTabControl).
ё
,
11.11.8 И а х я
BevelOuter bvLowered, Panel2, Panel3 Panel4 . Caption . : Object TreeView ( ) Align alClient. ( Shift ё Align alClient.
ё,
)
. ,
ё Send to Back.
,
-
.
1Control 1.
, «З
».
ё .
, ,
, OnChange
. OptionTab
ё
:
procedure TForm1.OptionsTabChange(Sender: TObject); begin Panel1.Visible:=false; Panel2.Visible:=false; Panel3.Visible:=false; Panel4.Visible:=false; case OptionsTab.TabIndex of 0: Panel1.Visible:=true;
225
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 1: Panel2.Visible:=true; 2: Panel3.Visible:=true; 3: Panel4.Visible:=true; end; end;
Э
, .
,
,
case . 1),
OptionsTab.TabIndex На
а
,
( Panel2.
\При еры\Глава 11\TabControl
, а
ш
.
11.12
(TPageControl ) TTabControl. ,
, ,
,
ё
. Win32
TPageControl, . - TPageControl К
TPageControl
TTabControl, .
–
. TPageControl. PageControl1.
,
.
226
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Р
а
11.12.1
я
а
а
Щё
, 11.12.1.
4
,
: New Page – Next Page – Previous Page – Delete Page –
(
); (
); (
);
(
).
. , , TabSheet1 TTabSheet – ё , , TPageControl. TTabControl. К – TPageControl. ,
Р
. TImageList PageControl
,
ё TPageControl
11.12.2 С
(
11.12.2).
.
,
ё -
.
а
Caption, ImageIndex, . . Images
а
,
ImageList. 227
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] .К
ImageIndex
,
,
. • • • •
. ,
:
З 11.12.3
.
ё,
.
,
.
, .
,
,
.
Р
На
а
11.12.3 Ф
а
а
\При еры\Глава 11\PageControl
, а
ш
.
11.13
(TImageList) . (TImageList) ,
.
, . - TImageList
Height
К
Width
.
,
. :
GetBitmap. 1. 2.
, TBitmap, ,
. ё
. : 228
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] var bitmap:TBitmap; begin ImageList1.GetBitmap(3, bitmap); end;
, Э
,
4-
3, 0.
ё,
.
, ,
11.14
.
(TTrackBar)
TTrackBar -
,
ё . Х
ё
.Ч
.
,
, ?
, .
- TTrackBar ,
Р
11.14.1.
ш
11.14.1
: Frequency – , 2, 3, Max – Min – Orientation –
,
. 0
5
10.
(
),
. . . . : trHorizontal
(
) Position – SelStart –
trVertical ( .
). ё
. SelEnd – . SliderVisible – TickMarks – • tmBottomRight – • tmBoth – • tmTopLeft – . TickStyle – .З
.З
. :
. . : 229
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] • • •
tsAuto – tsManual – tsNone –
. . . ,
.
,
,
. . Label1, Label2
TLabel
Label3 (
11.14.2).
Р
11.14.2 Ф
а
а
OnChange :
procedure TForm1.TrackBar1Change(Sender: TObject); begin Label1.Caption:=IntToStr(TrackBar1.Position); end;
З (
(TrackBar1.Position) IntToStr,
) Label1. .
, . .
На
а
11.15
, а
\При еры\Глава 11\TrackBar
ш
.
(TProgressBar)
230
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] TProgressBar, , .
,
«
»,
, .
TProgressBar. ,
,
. - TProgressBar
Max – Min – Position –
: = 100). = 0).
( ( . .
.
,
ё
100 TProgressBar .
. TProgressBar. :
procedure TForm1.Button1Click(Sender: TObject); var i:Integer; begin for i:=0 to 20 do begin ь ать как -т а чёт //З а чёта т а а т к щ т я и //П ProgressBar1.Position:=ProgressBar1.Position+5; Sleep(100); //Д аю а к в 100 и и к end; ProgressBar1.Position:=0; end;
0
20.
5
ProgressBar
– 100. ,
ё . , ProgressBar.
100 ,
ё
, ,
231
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
11.15.1 Ф
а а
ё
, . ProgressBar
5 1.
Ma . Э 0 20,
ProgressBar
а
, : 20 , ,
:
procedure TForm1.Button1Click(Sender: TObject); var i:Integer; begin for i:=0 to 20 do begin ь ать как -т а чёт //З //П а чёта т а а т к щ ProgressBar1.Position:=i; к в 100 и Sleep(100); //Д аю а end; ProgressBar1.Position:=0; end;
т я и и
к
ProgressBar, i, i
0
20.
ё ProgressBar . , ё
2. ProgressBar. .
0
100
:
procedure TForm1.Button1Click(Sender: TObject); var i:Integer; begin for i:=0 to 20 do begin ь ать как -т а чёт //З //П
а чёта т
а а
т к щ
т я и
232
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ProgressBar1.Position:=round(i/20*100); к в 100 и и Sleep(100); //Д аю а end; ProgressBar1.Position:=0; end;
, . . 20/i
к
100 ( ,
100).
ё
,
. -
, ,
ё
.
-
. На
а
\При еры\Глава 11\ProgressBar
, а
ш
.
11.16
(TAnimate) ,
,
ё
,
, -
.
.
Delphi
-
. - TAnimate Э
FileName AVI
ё
AVI –
Windows.
, -
. AVI – .
, ё
, AVI –
.
. .
,
,
,
RLE
MPEG4. –
, ,
.
ё
,
: 1.
Windows ,
. . 2.
, , MediaPlayer
ё
MediaPlayer, .
233
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 3.
. ,
.
,
,
. ё . Windows,
. CommonAVI. ,
.
: aviCopyFile – aviCopyFiles – aviDeleteFile – aviEmptyRecycle – aviFindComputer – aviFindFile – aviFindFolder – aviRecycleFile – aviNone –
. . . . . . . . .
11.16.1
К
AVI Active
.
FileName true
ё
.
11.17
(TDateTimePicker) (TComboBox), ,
.
. - TDateTimeOicker 11.17.1 .
234
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
11.17.1
.
TComboBox, : Date – DateFormat – dfLong – MaxDate – MinDate –
. : dfShort – . . .
11.18 К
(TMonthCalendar) .
А
? TMonthCalendar.
- TMonthCalendar FirstDayOfWeek – Date – MaxDate – MinDate – MultiSelect – ShowToday – ShowTodayCircle –
. . . . . . . .
WeekNumbers –
.
11.18.1
.
235
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 11.18.1 ,
ё
.
.
236
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 11.19 11.20 11.21 11.22 11.23 11.24 11.25
(TTreeView) ...................................................................................236 (TListView)....................................................................................240 . .............................................................................242 ( ) .................250 (TStatusBar) ........................................................................252 (TToolBar TControlBar). .....................................................254 MS (Docking). ............................................258
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
11.19
(TTreeView) ,
–
(TreeView).
. - TreeView . К ,
TreeView .
: TreeView ё 1. 2. 3. 4.
ImageList. .А
,
ImageList (TButton): ( Name ( ( Name (
AddButton). Name AddChildButton). DelButton). Name EditButton). ,
11.19.1.
11.19.1.
Images .
. «
»
.
:
procedure TTreeViewForm.AddButtonClick(Sender: TObject); var CaptionStr:String;
236
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] NewNode:TTreeNode; begin CaptionStr:=''; if not InputQuery('Вв
и
и', 'Вв
ит
а
в кэ
та',CaptionStr) then exit;
NewNode:=TreeView1.Items.Add(TreeView1.Selected, CaptionStr); if NewNode.Parentnil then NewNode.ImageIndex:=1; end;
З TTreeNode.
: CaptionStr TTreeNode –
String
CaptionStr. Э
NewNode .
. : а
if not InputQuery('В exit;
', 'В
З
InputQuery,
1. З 2. 3.
.
а', CaptionStr) then
: . -
,
,
ё
,
.
.
-
, ё
. . 11.19.2
.
11.19.2.
К,
.
: if not InputQuery(…) then exit; : NewNode:=TreeView1.Items.Add(TreeView1.Selected, CaptionStr); . Э
TreeView1
Items TTreeNodes. Ч 237
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] , ё
Add
, .
Items.
Items
1.
Э
2.
З
, Add
TreeView1 .
: , (TreeView1.Selected). .
. З
.Э
– NewNode. .
,
:
if NewNode.Parentnil then NewNode.ImageIndex:=1; З
ё
,
( . .
Parent ),
ImageIndex
1(
0). «
»
var CaptionStr:String; NewNode:TTreeNode; begin CaptionStr:=''; if not InputQuery('Вв и и в к э 'Вв ит а
:
э та', та',CaptionStr) then exit;
NewNode:=TreeView1.Items.AddChild(TreeView1.Selected, CaptionStr); if NewNode.Parentnil then NewNode.ImageIndex:=1;
З
,
«
,
». AddChild.
,
Add
.
,
.
AddChild, Add . «
»:
if TreeView1.Selectednil then TreeView1.Items.Delete(TreeView1.Selected);
З
,
,
: if TreeView1.Selectednil then 238
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ,
:
TreeView1.Items.Delete(TreeView1.Selected); З
Delete
.
Items, ,
TreeView1.Selected. «
(
»
:
procedure TTreeViewForm.EditButtonClick(Sender: TObject); var CaptionStr:String; begin CaptionStr:=''; if not InputQuery('Вв и и', в кэ та',CaptionStr) then exit; 'Вв ит а TreeView1.Selected.Text:=CaptionStr; end;
З
InputQuery, . , : TreeView1.Selected.Text.
Text .
ё
OnClose
:
procedure TTreeViewForm.FormClose(Sender: TObject; var Action: TCloseAction); begin TreeView1.SaveToFile(ExtractFilePath(Application.ExeName)+'tree.dat'); end;
SaveToFile .
, ,
-
.
:
ExtractFilePath(Application.ExeName)+'tree.dat' Application.ExeName – ExtractFilePath – . , , ( 'tree.dat') ,
. ExtractFilePath(Application.ExeName) . ё , . ё .
ё
OnShow
:
procedure TTreeViewForm.FormShow(Sender: TObject);
239
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] begin if FileExists(ExtractFilePath(Application.ExeName)+'tree.dat') then TreeView1.LoadFromFile(ExtractFilePath(Application.ExeName)+'tree.dat'); end;
З .Э
FileExists ,
ё true
false. ,
LoadFromFile. .
,
,
ё
.
11.19.3.
11.19.3 ,
« «
»
я
.
а»
,
.
,
? ?
ё
,
. .
, На
.
а
, а
\При еры\Глава 11\TreeView
ш
.
11.20
(TListView) ё .
К TListView,
«
» Windows
.
.Э
. А
.
. 240
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] - TListVew . .
ё
, .
TListVew, ( ) ,
.
, ,
, :
ListView 1. BevelEdges – 2. 3. 4. 5.
BevelInner – BevelOuter – BevelKind – BorderStyle –
, true. . .
.
.
ё
(
).
: 1. 2.
Checkboxes – CheckBox. ColumnClick –
3.
Columns –
4.
7.
FlatScrollBar – ( ). FullDrag – GridLines – vsReport. HotTrack –
8.
HotTrackStyles – Э
5. 6.
a. htHandPoint – , b. htUnderlineCold –
ё
true,
.
ё .
, Flat . , Hot,
-
.
ё
HotTrack. true, ( true,
IE .
c. htUnderlineHot –
).
ё ё
true, .
9.
10.
11. 12.
IconOptions – a. Arrangement – b. AutoArrange – c. WrapText – . Items – , , . LargeImage – MultiSelect –
. . . , .
TImageList, (32 32). . 241
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] RowSelect – vsReport. ShowColumnHeader – vsReport. SmallImage –
13. 14. 15.
,
.З
ViewStyle a. vsIcon – b. vsSmallIcon – c. vsList – . d. vsReport – ё .
16.
,
TImageList, (16 16). :
. .
ё
З
.
11.21
. ,
.Э
. Delphi .
:
ё
, ,
11.21.1.
11.21.1
shellapi , uses. ,
.А
,
. 242
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] Э
ё
FormCreate.
ё
OnCreate
:
procedure TForm1.FormCreate(Sender: TObject); var SysImageList: uint; SFI: TSHFileInfo; begin //С а и и а е ь их и ь их и . ListView1.LargeImages:=TImageList.Create(self); ListView1.SmallImages:=TImageList.Create(self); ь ие и и //За а ива SysImageList := SHGetFileInfo('', 0, SFI, SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_LARGEICON); if SysImageList 0 then begin //П и ваива и е ые и и в ListView1 ListView1.Largeimages.Handle := SysImageList; ListView1.Largeimages.ShareImages := TRUE; end; а е ь ие и и //За а ива SysImageList := SHGetFileInfo('', 0, SFI, SizeOf(TSHFileInfo), SHGFI_SYSICONINDEX or SHGFI_SMALLICON); if SysImageList 0 then begin ListView1.Smallimages.Handle := SysImageList; ListView1.Smallimages.ShareImages := TRUE; end; end;
. LargeImages SmallImages nil.
TImageList, TImageList.Create(self). . – .
TImageList , .
,
,
. . SHGetFileInfo, , . . ТSHFILEINFO. , . , ё . , , , . , ё , , . SHGFI_SYSICONINDEX SHGFI_LARGEICON. SHGFI_SYSICONINDEX , (ImageList). , .
. ТSHFILEINFO. Ч
243
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] (
)
(SHGFI_SMALLICON). SysImageList, ListView1.LargeImages.Handle.
ListView1.LargeImages 32 32. (ImageList)
Windows Explorer
doc, txt, ini, zip
,
.Э
. OnShow.
AddFile,
.
procedure TForm1.FormShow(Sender: TObject); begin AddFile(Edit1.Text+'*.*',faAnyFile) end; AddFile
private
Form1
:
private { Private declarations } function AddFile(FileMask: string; FFileAttr:DWORD): Boolean;
Ctrl+Shift+C
Delphi
:
function TForm1.AddFile(FileMask: string; FFileAttr:DWORD): Boolean; begin end;
:
function TForm1.AddFile(FileMask: string; FFileAttr:DWORD): Boolean; var ShInfo: TSHFileInfo; attributes: string; FileName: string; hFindFile: THandle; SearchRec: TSearchRec; function AttrStr(Attr: integer): string; begin Result := ''; if (FILE_ATTRIBUTE_DIRECTORY and Attr) > 0 then Result := Result + ''; if (FILE_ATTRIBUTE_ARCHIVE and Attr) > 0 then Result := Result + 'A'; if (FILE_ATTRIBUTE_READONLY and Attr) > 0 then Result := Result + 'R'; if (FILE_ATTRIBUTE_HIDDEN and Attr) > 0 then Result := Result + 'H'; if (FILE_ATTRIBUTE_SYSTEM and Attr) > 0 then Result := Result + 'S'; end;
244
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] begin ListView1.Items.BeginUpdate; ListView1.Items.Clear; Result := False; hFindFile := FindFirst(FileMask, FFileAttr, SearchRec); if hFindFile INVALID_HANDLE_VALUE then try repeat with SearchRec.FindData do begin if (SearchRec.Name = '.') or (SearchRec.Name = '..') or (SearchRec.Name = '') then continue; FileName := SlashSep(Edit1.Text, SearchRec.Name); SHGetFileInfo(PChar(FileName), 0, ShInfo, SizeOf(ShInfo), SHGFI_TYPENAME or SHGFI_SYSICONINDEX); Attributes := AttrStr(dwFileAttributes); //Д ав я вы е е with ListView1.Items.Add do begin //П и ваива е и я Caption := SearchRec.Name; //П и ваива и е и и е и аи а е и ImageIndex := ShInfo.iIcon; //П и ваива а е SubItems.Add(IntToStr(SearchRec.Size)); SubItems.Add((ShInfo.szTypeName)); SubItems.Add(FileTimeToDateTimeStr(ftLastWriteTime)); SubItems.Add(attributes); SubItems.Add(Edit1.Text + cFileName); if (FILE_ATTRIBUTE_DIRECTORY and dwFileAttributes) > 0 then SubItems.Add('dir') else SubItems.Add('file'); end; Result := True; end; until (FindNext(SearchRec) 0); finally FindClose(SearchRec); end; ListView1.Items.EndUpdate; end;
ё ,
.
:
function TForm1.AddFile(FileMask: string; FFileAttr:DWORD): Boolean; var … … function AttrStr(Attr: integer): string; begin Result := ''; if (FILE_ATTRIBUTE_DIRECTORY and Attr) > 0 then Result := Result + '';
245
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] if (FILE_ATTRIBUTE_ARCHIVE and Attr) > 0 then Result := Result + 'A'; if (FILE_ATTRIBUTE_READONLY and Attr) > 0 then Result := Result + 'R'; if (FILE_ATTRIBUTE_HIDDEN and Attr) > 0 then Result := Result + 'H'; if (FILE_ATTRIBUTE_SYSTEM and Attr) > 0 then Result := Result + 'S'; end;
ё
.Э
. (begin) integer): string;.
,
ё
, . К ,
Delphi , /
- function AttrStr(Attr:
(
.
)
(
),
. -
. ,
, ё
ё.
. , .
ё
.
(begin)
. ListView1:
ListView1.Items.BeginUpdate; ListView1.Items.Clear;
,
BeginUpdate . К Э
,
EndUpdate. ,
, ,
, , .
.А
?
BeginUpdate ,
-
1000
EndUpdate.
. .
: «З
?». ,
. BeginUpdate
ListView1.Items.BeginUpdate; // За
// елае
ео ходи ые и
и
в
е е ия
ListView1.Items.EndUpdate; // П
,
ещае
EndUpdate:
и
вывае
в еи
е е ия
а
. BeginUpdate ListView1.Items.Clear. 246
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ё
,
.З
:
FindFirst -
.
ё
,
ё
С. Fold
10-
.
.
ё
.
,
,
ЕХЕ,
'C:\*.*'. 'C:\Fold\*.exe'. -
.
faAnyFile,
. faReadOnly faHidden faSysFile faArchive faDirectory -
ReadOnly. . . . . -
, ,
, repeat
,
. .
until, , while . А Repeat-Until ,
ё
.
Repeat - Until. Э
.К
until
.Э
,
while,
.
, , :
Until.
index:=1; while index=0 do Param:=0;
Param:=0;
,
index=1
.
index:=1; repeat Param:=0; until index=0;
Param:=0 Х
, , SearchRec ( ,
, index , Name) . ,
. // т ра ыва ие и ё
. . ? ,
:
точ о и дву я точ а и
if (SearchRec.Name = '.') or (SearchRec.Name = '..') or
247
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] (SearchRec.Name = '') then continue;
ё
SlashSep:
FileName := SlashSep(Edit1.Text, SearchRec.Name);
Э
FileTimeToDateTimeStr :
var
var Form1: TForm1; function SlashSep(Path, FName: string): string; function FileTimeToDateTimeStr(FileTime: TFileTime): string; implementation
,
,
.З .
, -
SlashSep -
ё
,
. . ,
. /
:
procedure Examp; begin end; procedure Form1.Examp2; begin Examp; end;
Examp – Examp2. А
Examp2 ,
,
Examp. Э
Form1 .
:
procedure Form1.Examp2; begin Examp; end; procedure Examp; begin end;
248
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
,
.Ч
,
var:
var procedure Examp; procedure Form1.Examp2; begin Examp; end; procedure Examp; begin end;
А
,
SlashSep:
function SlashSep(Path, FName: string): string; begin if Path[Length(Path)] '\' then Result := Path + '\' + FName else Result := Path + FName; end;
К
,
«function SlashSep …..» ,
Э
. –
,
,
.
,
(
‘\’.
– Path) :
Path[Length(Path)] '\' Path – .Э
String, ,
Path[1]. Length(Path). , .
Length ,
, ,
Path[Length(Path)-1]. . ‘\’,
,
,
. Result,
. ё
. SHGetFileInfo. 249
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] .
. ,
,
. ListView.
: ListView1.Items.Add. begin end
with,
.А , (ImageIndex := ShInfo.iIcon).
(Caption := SearchRec.Name) SubItems,
. К
, .
ViewStyle
vsReport,
, :
Ч SubItems.Add(‘
’);.
Ч
а
. И
а
, а я
.Е а
а , а
а а а
, а
аа
ё
Columns аа а а я ая – а а а я х
,
SubItems.Add.
11.22
(
OnDblClick
. ListView
)
ё
:
procedure TForm1.ListView1DblClick(Sender: TObject);
250
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] begin и е ия? //Э if (ListView1.Selected.SubItems[5] = 'dir') then begin //Е и а, и ави ь и я вы е е и е ии //и е ечи а ь а ы и её. Edit1.Text:=Edit1.Text+ListView1.Selected.Caption+'\'; AddFile(Edit1.Text+'*.*',faAnyFile) end else а ияе а а . //Е и е , ShellExecute(Application.MainForm.Handle, nil, PChar(Edit1.Text+ListView1.Selected.Caption), '', PChar(Edit1.Text), SW_SHOW); end;
ё
ё,
,
К ‘dir’,
и
ё
. , . 5: ListView1.Selected.SubItems[5]=’dir’. ListView, 5‘file’.
. –
– ShellExecute. 1.
AddFile,
,
. :
,
2.
,
ё
Edit1.Text .
. nil, (Application.MainForm.Handle). , . nil
, .
3. 4. 5. 6.
. . К
.
. З
SW_SHOW ( SW_SHOW
. SW_SHOWMAXIMIZED SW_SHOWMINIMIZED (
Ф
На
а
я ShellExecute я а uses, а
а
а
(
), ),
( )
ё
а Delphi
ё ).
Shellapi,
\При еры\Глава 11\ListView
,
а
х .
ш
.
251
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
11.23
(TStatusBar)
unix
, ,
Windows
.
,
Windows
, . , .
. . , .
. - TStatusBar ё
,
,
.
:
1.
,
2.
,
ё
Hint
.
, , ShowHint
, true.
3.
. ё
, .
. «Э
Hint
а
. З ShowHint
х а». . Delphi.
,
true. .
,
, Hint
ParentShowHint
true. .
. private.
TStatusBar.
ё
ShowHint:
private { Private declarations } procedure ShowHint(Sender: TObject);
(
MyShowHint)
. Ctrl+Shift+C
Delphi
:
procedure TForm1.ShowHint(Sender: TObject); begin end;
252
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] , -
ё
{ TForm1 }
:
implementation {$R *.dfm} { TForm1 } procedure TForm1.ShowHint(Sender: TObject); begin end;
:
procedure TForm1.ShowHint(Sender: TObject); begin StatusBar1.SimpleText := Application.Hint; end;
, .
Application.Hint. А .
, SimpleText ,
Application.Hint
OnShow
ё
:
procedure TForm1.FormShow(Sender: TObject); begin Application.OnHint := ShowHint; end;
253
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] З
ShowHint OnHint.
, : ТApplicationEvents Additional. Events OnHint «StatusBar1.SimpleText := Application.Hint».
1. 2. На
а
\При еры\Глава 11\Hint
,
а
ш
. .
ё
Panels.
:
ё Ins), ё
(
ё
ё,
.
( Del). Width (
)
200.
. OnHint
ё
:
procedure TForm1.ShowHint(Sender: TObject); begin StatusBar1.Panels[1].Text := Application.Hint; end;
З
(Application.Hint)
Text
. На
а
\При еры\Глава 11\HintPanels
, а
ш
.
11.24
(TToolBar
TControlBar). ё.
, .
, ,
. , .
254
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
( (
,
). ),
Р
,
а
11.24.1
а
MS Word. В а а ,
MS Word.
ш а а
ComboBox.
. ControlBar
Align
Additional .
alTop, AutoSize ControlBar ,
К
true.
ё
,
, .
ControlBar. Э .
, AutoSize
true,
, . Win32. EdgeBorders
ControlBar – false ( 11.24.2). Э
ebTop
ё
ToolBar
.
Р
11.24.2 У
а
.
ё
AutoSize . . ё New Button (
ё
11.24.3).
true,
New Separator
. ,
Del (
:)).
ё
, (
.
11.24.3).
255
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
11.24.3 С
а
,
,
, (
.
Flat
.
. true,
). .
TImageList ,
,
,
16 16.
Р
11.24.4 На
а
я а
Images
. ,
.
-
,
ё
ImageIndex.
256
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
11.24.5 И
а
я
.
(
Caption ). ,
ToolButton .
ё .
, ShowCaptions
true
.
11.24.6.
Р
11.24.6 а
а а
ая а
.
, (
ё
. , Caption
К
. List 11.24.7).
Р
,
11.24.7 а
ё
,
а а
ая
а
а
.
257
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] , .
ё На
а
а
–В х
ё
,
. Close;.
\При еры\Глава 11\ToolBar
,
ш
.
11.25 ToolBar-
-
MS (Docking). , -
M$ Office.
. , DragKind -
TToolBar dkDock.
,
ё. TToolBar
ё
.
.
, .
Р
11.25.1 Ф
а
а
, TToolBar.
:
procedure TForm1.Button1Click(Sender: TObject); var r:TRect; begin if ToolBar1.HostDockSiteControlBar1 then begin GetWindowRect(ToolBar1.Handle, R); Application.MessageBox(PChar(IntToStr(r.Left)+'--'+IntToStr(r.Top)), 'MM',IDOK); end; end;
258
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
, ToolBar1 ControlBar1 (ToolBar1.HostDockSiteControlBar1). , ToolBar1 . ToolBar1.Left ToolBar1.Top. ToolBar1 ControlBar1 (ToolBar1 ), . ё GetWindowRect, ToolBar1 . ToolBar1, TRect . Application.MessageBox. ё . ToolBar1 . К , , ToolBar1. OnShow :
procedure TForm1.FormShow(Sender: TObject); begin ToolBar1.ManualDock(nil,nil,alNone); ToolBar1.ManualFloat(Bounds(100, 500, ToolBar1.UndockWidth, ToolBar1.UndockHeight)); end;
ToolBar1.ManualDock
ToolBar1
. ,
ToolBar1. ,
К ToolBar1,
,
ToolBar1 nil.
ToolBar1. nil. ToolBar1.ManualFloat . nil, . . , ? . ё ToolBar1.UndockWidth ToolBar1.UndockHeight , ControlBar1.
nil. – ToolBar1 ToolBar1 ,
, . . ё
ToolBar1,
OnClose:
var r:TRect; begin if ToolBar1.HostDockSiteControlBar1 then begin GetWindowRect(ToolBar1.Handle, R); З е ь а х а и ь в ее е R.Left и R.Top. А а е и а ,ч ToolBar1 е е и а ControlBar1 end else begin З е ь а х а и ь в ее е ToolBar1.Left и ToolBar1.Top. А а е и а ,ч ToolBar1 е и а ControlBar1 end; end;
259
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
:
procedure TForm1.FormShow(Sender: TObject); begin П чи а ь е ие ToolBar1. ControlBar1 Begin ToolBar1.Left:=С х а ё ая евая и ия и ия ToolBar1.Topt:=С х а ё ая ве х яя End; И ач begin ToolBar1.ManualDock(nil,nil,alNone); ToolBar1.ManualFloat(Bounds(С х а ё ая вая иция, С х а ё ая авая иция, ToolBar1.UndockWidth, ToolBar1.UndockHeight)); End; end;
К ToolBar ё
,
. M$. ShowCaption
File Edit . 11.25.2.
Not visible
PopupMenu? А ,
ё
ё
true. ё MainMenu (Visible=false), . , PopupMenu ё
.
ё
.
Р
Ч
а
а Create Submenu
File Edit true.
Edit1.
11.25.2
я а а
MenuItem
File, CTRL+С
File1 (
а
ё
а
ё
а
), Grouped
Grouped – true. 260
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] (
ё
, . (
Menu, Menu.
) На
).
а
а
,
\При еры\Глава 11\Dock
ш
.
261
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 12. 12.1 12.2 12.3 12.4 12.5 12.6 12.7 12.8 12.9 К 12.10 12.11 12.12
Delphi...........................................................................262 Windows .....................................................................................263 ..............................................................................264 .......................................................................................................265 ...............................................................................................................269 .....................................................................273 ................................................................................................275 ..............................................................................................................279 TCanvas ..............................................................................................282 (TImage) .............................................285 ...................................................................290 . .........................................................................................................293 . ......................................................................................................295
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Глава 12. Графиче
ие воз о
о ти Delphi. 12, Delphi Windows. Э ,
. З
ё
. . Windows – –
ё, . ,
ё
Delphi, ё
.
-
,
ё
.
Х Delphi (
,
), .
(
). .
,
,
,
.
, (
) Delphi/Windows. Windows –
ё
, ,
,
,
.
262
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
12.1
Windows Delphi
. К
, Delphi
?
–
Canvas. .
Canvas
TCanvas. TCanvas. .
, Canvas ,
.
,
ё
.
К
,
ё
.
,
.
,
.
. А
Windows – Canvas. К
(Pen)
,
(Brush).
. ,
(
,
. .),
12.1.1:
12.1.1
Э
. К
(
). ).
ё
, . , Windows. ),
(
( .
Windows
– Windows , . Windows
,
. – GDI
(Graphic Device Interface –
). gdi.dll,
ё
. GDI
.Э
,
, (
)
. .
1.
GDI
ё
.
GDI: ; 263
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] 2. 3.
; . ,
OpenGL
GDI . А
,
DirectX, .
,
12.2 , .
, TPaintBox,
. ,
PaintBox ,
Р
Ч
, .
12.2.1. Ф
а
PaintBox
.
Canvas, OnPaint, OnPaint
,
System. 12.2.1.
,
.
:
procedure TForm1.FormPaint(Sender: TObject); begin Canvas.Rectangle(10,10,100,100); end;
З
Rectangle
Canvas
.
: 1. 2.
; ; 264
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] 3. 4.
; . PaintBox
ё
.
OnPaint :
procedure TForm1.PaintBox1Paint(Sender: TObject); begin PaintBox1.Canvas.Rectangle(10,10,100,100); end;
З
,
PaintBox. Э
,
,
PaintBox. (
,
12.2.2).
Rectangle ,
.
,
, (10, 0, 100, 100), (10, 0, 100, 100).
Р
На
а
, а
12.2.1. Ф
а
.
\При еры\Глава 12\Rectangle
ш
.
12.3 ё ( Brush. ,
. К – ) Brush Pen – .
,
. З TCanvas. З
Pen ,
265
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ё
TPen. К
. Color – Handle – WinAPI
, :
. , .
-
, API
Handle, . Mode – Style –
,
.
.
( 12.3.1):
Width –
psSolid – psDash – psDot – psDashDot – psDashDotDot psClear – psInsideFrame – .
; (
);
;
ё
ё
; ;
; .
Р
.
12.3.1 С
, .
ё
Delphi.
OnPaint
:
procedure TForm1.FormPaint(Sender: TObject); begin //Ри е лош ю ли ию (psSolid) Canvas.Pen.Style:=psSolid; Canvas.MoveTo(10,20); Canvas.LineTo(200,20); //Ри е psDash ли ию Canvas.Pen.Style:=psDash; Canvas.MoveTo(10,40); Canvas.LineTo(200,40); //Ри е psDash ли ию Canvas.Pen.Style:=psDot; Canvas.MoveTo(10,60);
266
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] Canvas.LineTo(200,60); //Ри е psDashDot ли ию Canvas.Pen.Style:=psDashDot; Canvas.MoveTo(10,80); Canvas.LineTo(200,80); //Ри е psDashDotDot ли ию Canvas.Pen.Style:=psDashDotDot; Canvas.MoveTo(10,100); Canvas.LineTo(200,100); //Ри е psClear ли ию Canvas.Pen.Style:=psClear; Canvas.MoveTo(10,120); Canvas.LineTo(200,120); //Ри е psInsideFrame ли ию Canvas.Pen.Style:=psInsideFrame; Canvas.MoveTo(10,140); Canvas.LineTo(200,140); end;
12.3.2.
Р
,
ё (
12.3.2 Р
а
а
а
.
OnPaint (
)
. , Canvas.Pen.Style:=psSolid –
). - Canvas.MoveTo(Х, Y). X, Y. (Canvas). X Y – ). , . , .
MoveTo ё
Х,
Х
,
Х
ё
.Э –
, ё )
(
. Y Y.
, ё
. Э
, (
. 267
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] LineTo(X, Y). .
, MoveTo
, ,
LineTo. , 20
.
«И ColorDialog
Dialogs. К
. ColorDialog
»
.
ё
. 12.3.3.
Р
ё ая
12.3.3
а
а
:
OnClick
if ColorDialog1.Execute then Canvas.Pen.Color:=ColorDialog1.Color; FormPaint(nil);
(ColorDialog1.Execute). ,
«
,
»,
true, true,
:
if ColorDialog1.Execute then И ить цв т х та
, true :
if . 268
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
if ColorDialog1.Execute=true then И ить цв т х та
Color Canvas.Pen.Color.
ColorDialog1. . .
OnPaint
FormPaint,
. .
. OnClick
Win32.
UpDown :
procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType); begin Canvas.Pen.Width:=UpDown1.Position; Repaint; end;
, ё , Position. Canvas.Pen.Width.
UpDown .
ё
, OnPaint.
–
Repaint. Э . Э –
, ,
,
,
.
, .
,
, ,
, . На
З
а
а
\При еры\Глава 12\Pen
,
ш
.
12.4 Brush ,
TCanvas. К .
,
.
TBrush
: 269
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] Bitmap –
.К
, 8 8
,
. 8 8. ,
, .
–
, :
var Bitmap: TBitmap; begin аёт я ка ти ка Bitmap := TBitmap.Create; //С try Bitmap.LoadFromFile('MyBitmap.bmp'); //За а т я ка ти ка Form1.Canvas.Brush.Bitmap := Bitmap; //П и ваива т я в кач тв Form1.Canvas.Rectangle(0,0,100,100); // и т я ква ат finally я т я Form1.Canvas.Brush.Bitmap := nil; // Bitmap.Free; // У ичт а т я ка ти ка end; end;
а
Color – , . Handle – , , . Style – . З : bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal, bsBDiagonal, bsCross, bsDiagCross. 12.4.1 .
Р
12.4.1 С
а
ё К
.
. ,
OnPaint .
, :
procedure TForm1.FormPaint(Sender: TObject); begin Canvas.Brush.Style:=bsSolid;
270
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] Canvas.Rectangle(10,10,50,50); Canvas.Brush.Style:=bsBDiagonal; Canvas.Rectangle(10,110,50,150); Canvas.Brush.Style:=bsFDiagonal; Canvas.Rectangle(10,160,50,200); Canvas.Brush.Style:=bsCross; Canvas.Rectangle(110,10,150,50); Canvas.Brush.Style:=bsDiagCross; Canvas.Rectangle(110,60,150,100); Canvas.Brush.Style:=bsHorizontal; Canvas.Rectangle(110,110,150,150); Canvas.Brush.Style:=bsVertical; Canvas.Rectangle(110,160,150,200); Canvas.Brush.Style:=bsClear; Canvas.Rectangle(10,60,50,100); end;
З
.
, Rectangle(x, y, r, b),
х– y– r– b– Ч
:
; ; ; . ,
12.4.2.
Р
12.4.2 Ра
я
а
,
. ,
.Э .Ч
ё ё
, , «
»
,
. ColorDialog
:
if ColorDialog1.Execute then Canvas.Brush.Color:=ColorDialog1.Color;
271
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] FormPaint(nil);
З , Canvas.Brush.Color:=ColorDialog1.Color. «
»
, . Щё
ё
-
,
,
.
12.4.3.
Р
а
а
а
:
З
1.
12.4.3 Р
,
(Style=bsClear) ,
Э
. .
, -
,
, ,
,
2.
(
12.4.4).
,
. Э
,
(
ё
)
.
, .
. Ч
, .
ё . .А
, ё
:
procedure TForm1.FormPaint(Sender: TObject); begin та ав иваю цв т ки ти // я ат ь Canvas.Brush.Color:=ColorDialog1.Color; // и
ю
вы ква
ат
272
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] Canvas.Brush.Style:=bsSolid; Canvas.Rectangle(10,10,50,50);
Р
12.4.4
На
а
а
я а
,я а
я
а
\При еры\Глава 12\Brush
,
я
, .
а
ш
.
12.5
К
, Windows .
, ё
,
,
. TextOut.
TCanvas : 1. 2. Y 3.
; ; ,
. OnPaint
:
procedure TForm1.FormPaint(Sender: TObject); begin Canvas.TextOut(100,100, 'П ив т в !!!'); end;
З З
Font (TFont), Color,
(100, 100). TCanvas. Э . , ColorDialog,
,
. 273
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] OnClick
:
procedure TForm1.Button1Click(Sender: TObject); begin if ColorDialog1.Execute then FormPaint(nil); end;
З .А
, ?
,
, .
, OnPaint:
procedure TForm1.FormPaint(Sender: TObject); begin Canvas.Font.Color:=ColorDialog1.Color; Canvas.TextOut(100,100, 'П ив т в !!!'); end;
Dialogs. Э
FontDialog ,
, .
ё
«
»
:
procedure TForm1.Button2Click(Sender: TObject); begin if FontDialog1.Execute then Canvas.Font:=FontDialog1.Font; FormPaint(nil); end;
« К»,
. Font
, ё
Canvas.
.
,
. –
,
, ,
,
(
, 12.5.1). –
Repaint
Invalidate. Invalidate ё
FormPaint(nil) ,
. ,
,
.
274
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
12.5.1 Н
,
а я
х
я
а
а
. К
Font ё а
а
а а .
а
.
– –
TFont, ё На
ш
, ,
,
,
.
. \При еры\Глава 12\Text
,
ш
.
12.6 –
К
.
,
ё
,
. .
OnCreate
.
:
procedure TForm1.FormCreate(Sender: TObject); begin index:=0; end;
ё
Index private
ё
,
,
:
private { Private-Deklarationen } index:Integer; cl:Boolean;
: index ,
cl .
true
Delphi. , false .
.
275
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] , .
OnMouseDown.
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Var ъяв и А-ц чи . A: Integer; // begin A := random(3600); CanvasSetAngle(Canvas, A / 10); Canvas.TextOut(X, Y, FormatFloat('##0.0', A/10)+'°'); end;
. random , .
, -
,
3600. ,
. Canvas.TextOut .
(
: FormatFloat. Э ) ё
,
function FormatFloat( const Format: string; // Ст Value: Extended // Чи ): string;
ка
.
ата
, . .
##0.0, , ё ё
(
). .
A . CanvasSetAngle -
. .
ё
, ё
10. ,
,
unit Textrot1; interface uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm1 = class(TForm) procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } index:Integer; cl:Boolean; public
276
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} procedure CanvasSetAngle(C: TCanvas; A: Single); var LogRec: TLOGFONT; // ъяв я ю ич к begin GetObject(C.Font.Handle,SizeOf(LogRec),Addr(LogRec)); LogRec.lfEscapement := Trunc(A*10); LogRec.lfOrientation := Trunc((A+10) * 100); C.Font.Handle := CreateFontIndirect(LogRec); end;
и та
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Var A: Integer; begin A := Random(3600); CanvasSetAngle(Canvas, A / 10); Canvas.TextOut(x, Y, FormatFloat('##0.0', A/10)+'°'); end; procedure TForm1.FormCreate(Sender: TObject); begin index:=0; Canvas.Brush.Style:=bsClear; end; end.
CanvasSetAngle -
. ё
(
).
ё Single Delphi. Э
, ё
.
.
кция в в аща т и ацию а ич к GetObject //Эт C.Font.Handle // ъ кт а к т ы чить ач и . а а в в аща ач ия SizeOf(LogRec)// П Addr(LogRec)// П аё а в в аща ач ия
ъ кт
, . .Ч З
Canvas
,
ё
ё ,
ё .К
. . ,
. 277
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] Timer , OnTimer
System .
ё
:
procedure TForm1.Timer1Timer(Sender: TObject); begin CanvasSetAngle(Canvas, index); Canvas.TextOut(100, 100, 'CyD Soft'); index:=index+45; if index>=360 then begin index:=0; if cl then Canvas.Font.Color:=clBlack else Canvas.Font.Color:=clRed; cl:=not cl; end; end;
Э
ё
, Interval 1
,
1000 (
Timer. ,
),
. , (CanvasSetAngle),
(
Canvas.TextOut). index 45.
, 45 -
ё ,
,
. index
360, :
index:=0; if cl then Canvas.Font.Color:=clBlack else Canvas.Font.Color:=clRed; cl:=not cl;
З
index, (
). true,
ё
ё
clBlack,
.
clRed. ,
cl
cl:=not cl. З .Э ,
cl
0 cl
ё (not)
true, ,
ё
false. ,
. На
а
, а
\При еры\Глава 12\TextAngle
ш
. 278
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] .
,
.
.Ч
.
.Э
ё,
?
Windows
.
.
К
,
OnPaint, . .
. ё
. ,
OnPaint ё .Э
TImage . К ё
TImage, TImage
. А
,
. TImage
. .
12.7 ,
ё
clBlack ,
,
clRed
ё
.
. ,
.
Т,
TColor. Х 4-
,
,
. ё
,
, (RGB). ,
. К
,
,
, ё
ё
.
ё
, 3
.
4-
TСolor
ё
1, (
ё
2,
? 4
.
)
. –
К )
0 ,
FF А
,
.
.
, FF ( $00FFFFFF. FF ,
0
255 (
). , , $000000FF,
FF BGR ( ё
–
ё
). = $0000FF00,
- $00FF0000. , .
, 12.7.1.
279
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
,
ё ( ё
RedEdit,
12.7.1 Ф
GreenEdit, )
ё
а
а
TEdit. BlueEdit. ColorDialog,
.
,
,
ё
, (
),
. :
procedure TForm1.Button1Click(Sender: TObject); var c:LongInt; begin if not ColorDialog1.Execute then exit; C:=ColorToRGB(ColorDialog1.Color); RedEdit.Text:=IntToStr(GetRValue(C)); GreenEdit.Text:=IntToStr(GetGValue(C)); BlueEdit.Text:=IntToStr(GetBValue(C)); Repaint; end;
var 4(
Tcolor (
Longint. Э . ColorDialog1.Execute. if not),
ё - exit. ColorDialog1.Color ColorToRGB. Э ё ColorDialog1.Color) ё 4С. RedEdit . GetRValue. ( С). – . Э –
TColor ,
,
280
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ,
. IntToStr.
ё
ё
. GetGValue.
,
, ,
ё
GetBValue. 4
С,
. Repaint. :
OnPaint
procedure TForm1.FormPaint(Sender: TObject); begin Canvas.Brush.Color:=RGB(StrToIntDef(RedEdit.Text, 0), StrToIntDef(GreenEdit.Text, 0), StrToIntDef(BlueEdit.Text,0)); Canvas.Rectangle(10,10, 250, 150); end;
З
– .
RGB(R, G, :
B). R– G– B– ,
; ;
ё .
. Ч
ё
, .
. ,
,
.
–
OnChange
.
ё
, .
ё
Events
ё
.
OnChange,
Shift .
:
procedure TForm1.RedEditChange(Sender: TObject); begin Repaint; end;
.
-
,
.
, .
,
255!!! 12.7.2 ,
ё
. ,
ё
. .
281
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
На
а
12.7.2 Р
а
а
\При еры\Глава 12\Color
,
а
а
ш
. ,
.
, 12.6. ё,
.
,
ё
,
Color ,
,
.
,
.
Р
12.7.3 Ц
12.8
а
TCanvas
,
– .
, ,
TCanvas
.
Pixels , –
,
Pixels. Э .Ч ё
–
, . (10,10).
,
?
: 282
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] Canvas.Pixels[10,10]:=Black;
-
var c:TColor; begin c:=Canvas.Pixels[10,10]; if c=clBlack then //Т чка к и ата и (10, 10) чё End;
.
:
цв та
TextWidth и TextHeight ё TextHeight. ,
.Э
–
– TextWidth ё
,
. ,
.
. А
, ? ,
,
– ё
,
.Э
,
.
, -
ё
,
.
Ar . 4
8 X
Y,
TCanvas – Arc, - X1, Y1, X2, Y2, X3, Y3, X4, Y4. К 4
, .
CopyRect Э TCanvas . Dest: TRect – , Canvas: TCanvas – Source: TRect ,
: ,
;
,
; ,
.
TRect. Э
- Left, Top, Right, Bottom. . Rect. .
ё
ё Form2
.
ё
, Left, Top, Right, Bottom .
ё ё
,
Form1. 283
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] (10, 10, 110, 110), . .
12.8.1
,
.
Р
Э
а
12.8.1
а я
:
var SRect, DRect: TRect;// ъяв яю в ы ти а TRect begin SRect:=Rect(0, 0, Form2.Width, Form2.Height); DRect:=Rect(10, 10, 110, 110); Form1.Canvas1.CopyRect(DRect, Form2.Canvas, SRect); end;
SRect Form2 . . (0, 0,
Rect. ,
).
ё
DRect
Rect.
, :
DRect.Left:=10; DRect.Top:=10; DRect.Right:=110; DRect.Bottom:=110;
ё
ё
,
ё (
.
. .Э
ё
. ,
, /
,
100 100 ),
1 100 100.
Draw 284
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] Э
, – X Y . Э
. TGraphic ё
ё
.
Ellipse Э :
(
).
procedure Ellipse(X1, Y1, X2, Y2: Integer); procedure Ellipse(const Rect: TRect);
. ,
). К
ё
–
, TRect (
.
FillRect – TRect, ,
.
, ,
.
FloodFill З
– Х
. .
–
Y
,
.
–
.
: fsSurface – . fsBorder .
, ,
Э
. ,
. .
,
,
.
.
12.9 К
(TImage)
К
–
, Additional
– TImage. Э . 11.5,
,
, ё
ё
.
, . ,
, . 285
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] - TImage К
TImage . .
WMF
BMP, JPG, JPEG , TImage
.
. Additional. OpenPictureDialog
Dialogs. Э
, .
Р . 12.9.1. Ф
.Ч
а
а
12.9.1
. .
«
»
:
procedure TForm1.Button1Click(Sender: TObject); begin if OpenPictureDialog1.Execute then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName); end;
Execute
OpenPictureDialog1.Execute. Э true, Execute ,
,
. OpenPictureDialog1, . . . . if OpenPictureDialog1.Execute then. :
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
286
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ё
Э
.
Image1
Picture. ) TPicture. Э .
( ё
, )
. LoadFromFile (
Picture. , ,
. FileName
OpenPictureDialog1.
Р . 12.9.2.
ё
а
а
.
ё
.
,
. 1
3 - bmp, ico
wmf. jpeg
ё
ё
. . . jpeg.
, uses
ё
jpeg
, Delphi
.
. OpenPictureDialog1
ё
. Filter.
287
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р . 12.9.3.
а я
а
.
ё
.
а
(
(
)
К
«*.jpg».
Files»,
12.9.3) «JPEG
.
JPEG .
Image1, .
На
ш
а
,
а
\При еры\Глава 12\Loading Images . .К ?
. .
ё
OnPaint FormPaint
.
:
procedure TForm1.FormPaint(Sender: TObject); begin Canvas.BrushCopy(Rect(200,16,200+Image1.Width,16+Image1.Height), Image1.Picture.Bitmap, Rect(0,0,Image1.Width,Image1.Height), Image1.Picture.Bitmap.Canvas.Pixels[1,1]); end;
А
, Repaint, OnPaint.
ё bmp
.
12.9.4. Image1,
.
288
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
12.9.4. Р
А
а
а
а
.К ё
, .
Canvas . Э
BrushCopy
, . Canvas
.
procedure BrushCopy( const Dest: TRect; // О а ь иё и а и а ая е Bitmap: TBitmap; // Ка const Source: TRect; // О а ь и ч и а Color: TColor); // П ач ы ве
ё Bottom: Integer). Ч
TRect, ,
ё
:
TImage1.Е _ а На
ва ь я
TRect = (Left, Top, Right, . ё Bitmap TImage. [1,1] Image1.Picture.Bitmap.Canvas.Pixels[1,1].
. TImage.
и
а.Bitmap.Х
а
а ,
,
.
[1_
_
_X, 1_
_Y]
\При еры\Глава 12\Image1
,
ш
. . Э Bitmap,
JPEG Draw.
, .З
bmp BMP Graphic.
OnPaint:
procedure TForm1.FormPaint(Sender: TObject); begin Canvas.Draw(200, 16, Image1.Picture.Graphic);
289
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] end;
З
Bitmap,
Graphic,
. ,
wmf OnPaint
Metafile. :
procedure TForm1.FormPaint(Sender: TObject); begin Canvas.Draw(200, 16, Image1.Picture.Metafile); end;
12.10 , 12.10.1,
ё
Р
, ,
ё
,
TListBox. Ч ё .
?
12.10.1.
ё
.К ,
lbOwnerDrawFixed ё
, lbOwnerDrawVariable . OnDrawItem
TListBox1
. Style
:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin with ListBox1.Canvas do begin Brush.Color:=clRed; // За аё а ы ве и и. и ь и и Brush.Style:=TBrushStyle(Index); //Вы и ае Pen.Style:=psClear; Rectangle(Rect.Left,Rect.Top,Rect.Left+100,Rect.Bottom);
290
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] Brush.Style:=bsClear; Font.Color:=clBlue; TextOut(Rect.Left+110,Rect.Top,IntToStr(index)); end; end;
ё.
,
,
.
. :
with ListBox1.Canvas do "With" (
, ) ListBox1.Canvas.
,
:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); begin ListBox1.Canvas.Brush.Color:=clRed; ListBox1.Canvas.Brush.Style:=TBrushStyle(Index); ListBox1.Canvas.Pen.Style:=psClear; ListBox1.Canvas.Rectangle(Rect.Left,Rect.Top,Rect.Left+100,Rect.Bottom); ListBox1.Canvas.Brush.Style:=bsClear; ListBox1.Canvas.Font.Color:=clBlue; ListBox1.Canvas.TextOut(Rect.Left+110,Rect.Top,IntToStr(index)); end;
К
,
. ListBox1.Canvas .
,
Brush
ListBox1.Canvas. К ё -
With With " ъ кт" do Begin ах и я е ь, е // В ё, ч // П е а и а ьи я е // Св в и и е . End;
ё Brush.Style:=TBrushStyle(Index) . OnDrawItem ListBox1DrawItem),
и ь я а е е а
ы
е
и
"О ь
е ". е ы
.К (
index . . . Pen.Style:=psClear,
К .
К
.
, . 291
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] Rectangle(х1, 2,х2, 2) .
. .А
Style На
а
TextOut(х, , TComboBox. .
, а
).
\При еры\Глава 12\ListBox
,
ш
.
ё
, –
. Ч
"
ё
"?
. StatusBar
, .
ё
,
.
Р
12.10.2. Ф
12.10.2 . . :
а
а
, ,
,
(
),
procedure TForm1.FormCreate(Sender: TObject); begin Application.OnHint := ShowHint; end; procedure TForm1.ShowHint(Sender: TObject); begin StatusBar1.SimpleText:=Application.Hint; end;
, OnCreate Application.OnHint OnHint ( . .
.
FormCreate (
), ShowHint. , ), StatusBar1.
ShowHint. .
ShowHint: 292
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] procedure TForm1.ShowHint(Sender: TObject); var l,t:Integer; begin StatusBar1.Repaint; with StatusBar1.Canvas do begin Brush.Style:=bsClear; Font.Color:=clWhite; l:=10; t:=1; TextOut(l,t,Application.Hint); if RadioButton1.Checked then begin inc(l); inc(t); end else begin dec(l); dec(t); end; Font.Color:=clBlue; TextOut(l,t,Application.Hint); end; end;
З
. .Э
, .
TLabel На
а
, а
\При еры\Глава 12\StatusBar
ш
.
12.11
.
,
,
. . ,
. . . TButton
TImage.
OnClick:
procedure TForm1.Button1Click(Sender: TObject); var ScreenDC:HDC; begin ScreenDC := GetDC(0); Rectangle(ScreenDC, 10, 10, 200, 200); ReleaseDC(0,ScreenDC); end;
293
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
.
,
.
, . windows,
. ScreenDC HDC. HDC , TCanvas (
). .Э
.
0 ( , , TCanvas.Rectangle. ,
Windows. Windows API
GetDC(0) ), ,
. ,
Rectangle, -
, ,
. Э
GDI Rectangle
TCanvas, TCanvas.Rectangle
, . ,
, TCanvas.
, ,
ReleaseDC. ,
.
ё ,
. А
,
.
GetDC Handle
TForm. , OnClick:
ё
.
procedure TForm1.Button2Click(Sender: TObject); var Canvas:TCanvas; ScreenDC:HDC; begin ScreenDC := GetDC(0); Canvas:=TCanvas.Create(); Canvas.Handle:=ScreenDC; Image1.Canvas.Copyrect(Rect(0,0,Image1.Width,Image1.Height), Canvas, Rect(0,0,Screen.Width,Screen.Height)); ReleaseDC(0,ScreenDC); Canvas.Free; end;
ё
, ,
.
. ( , Canvas ( , CopyRect
Image1. Canvas
). Canvas.Handle:=ScreenDC. ё , HDC. HDC handle Rectangle). ё .
ТCanvas
TCanvas .
Delphi
ё TImage (Image1.Canvas.CopyRect). 294
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ScreenDC .
Canvas На
а
а
\При еры\Глава 12\Screen
,
12.12 (
TPenMode pmCopy .
ш
.
. )
Pen
. . Mode .Э : pmBlack, pmWhite, pmNop, pmNot,
.З
, ,
,
, . , .
pmNotXor, ,
–
?
ё
. ,
,
,
. К
: 1.
,
ё
.
2.
:
,
. .
private
.
:
private { Private declarations } StartX, StartY:Integer; dragging:Boolean;
StartX, StartY . dragging true,
. .
OnCreate – false,
dragging
.
true :
procedure TForm1.FormCreate(Sender: TObject); begin dragging:=false; end;
295
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
:
OnMouseDown
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin StartX:=X; StartY:=Y; dragging:=true; end;
,
.
: Sender – Button –
,
,
: mbLeft ( mbMiddle ( ). Shift – TShiftState. Э Shift, ssAlt , ssRight , ssDouble – Ч , :
. Э
, ), mbRight (
. )
.Э ssShift Ctrl, ssLeft , ssMiddle –
Alt, ssCtrl . Shift
if ssShift in Shift then ….
– X,Y – .
? Ctrl Shift –
. , StartX
dragging
StartY,
true. OnMouseMove,
:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if dragging=false then exit; Canvas.Rectangle(StartX, StartY, X, Y); end;
OnMouseDown. 296
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ,
dragging
false,
. StartX, StartY
X, Y.
OnMouseUp
dragging
,
,
ё
.
false.
.
ё.
. А
, . 12.12.1.
,
.
,
ё
,
Р
На
а
, а
.
а
12.12.1.
а
\При еры\Глава 12\CopyMode1
ш
.
Ч 1.
: . .
2. З .
, -
, .
,
.
,
,
. private
ё
:
private { Private declarations } OldPenMode:TPenMode; StartX, StartY, OldX, OldY:Integer; dragging:Boolean;
297
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] OldPenMode, OldX, OldY
. (
StartX StartY). OnMouseDown:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Canvas.Brush.Color:=clWhite; OldPenMode:=Canvas.Pen.Mode; Canvas.Pen.Mode:=pmNotXor; StartX:=X; StartY:=Y; OldX:=X; OldY:=Y; dragging:=true; end;
.
pmNotXor. -
, ,
, . OldPenMode. , .
. StartX, StartY, OldX OnMouseMove:
OldY.
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if dragging=false then exit; Canvas.Rectangle(StartX, StartY, OldX, OldY); Canvas.Rectangle(StartX, StartY, X, Y); OldX:=X; OldY:=Y; end;
.
, .
pmNotXor, Х
OldX
. Y
OldY. OnMouseUp:
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
298
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] begin dragging:=false; Canvas.Pen.Mode:=OldPenMode; Canvas.Rectangle(StartX, StartY, X, Y); end;
dragging
false.
. .
З
. .
,
,
,
( )
. ,
ё
. На
а
, а
\При еры\Глава 12\CopyMode2
ш
.
299
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 13. 13.1 13.2 13.3 13.4 13.5
Delphi..........................................................................................................300 TPrinter ...............................................................................................................301 ................................................303 . ...........................................................................................................306 . ........................................................................................307 . .....................................................................................312
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Глава 13. Печать в Delphi
Ч
. Х 13-
13 , . .
, ,
.
ё
,
–«
13-
. Windows. 13-
Delphi». 13
К ,
. З
. ё HP400
,
, ,
(
).
, . , .
,
( « Delphi
ё
,
Delphi»,
- ). «
Windows». ,
-
–
ё
.
300
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
13.1
TPrinter ё
.
ё
,
ё
, ,
ё
,
Ч
. .К .
,
ё
. , -
, ,
ё
.
.
Word .
Excel.
.
, (
)
ё
,
,
. . Windows –
. ,
ё .
)
,
.К
–
( TCanvas,
Delphi .
,
. – .
ё
,
ё
,
ё
ё
, -
ё
,
.
Delphi
(
,
( TCanvas.
Canvas , .
,
), – TPrinter.
), TCanvas, TCanvas
, . –
,
, . TCanvas .
TPrinter ,
Canvas, . . ,
TPrinter .
TPrinter: Aborted –
true,
Boolean. . TCanvas. Э
Canvas –
,
. Copies –
. 301
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Fonts – Handle –
.
, Orientation – : poPortrait – PageHeight – PageWidth – PageNumber – PrinterIndex – Printers – Printing – Title –
. WinAPI. ё
, .
TPrinter .Э poLandscape – . .
.
. ,
. .
TStrings
.
true,
. Э
. ё
, Abort – BeginDoc – EndDoc – GetPrinter – NewPage – Refresh – SetPrinter – Ч
. . . . . .
TPrinter Printers.
uses
TPrinter:
.
.
TPrinter .
Printer. Э
ё
.
, API
.
,
, 1.
,
,
ё : Canvas
. 2.
,
. 1200
. ,
200 200 ,
.
3.
, . .
.Э
, ,
,
.А
100
,
? 4. ,
,
.
ё
.
,
, . К
, . 302
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
13.2
. ё
,
, .
ё
,
TPrinter. Printers,
uses .
TPrinter
. TEdit
TListBox ReadOnly true,
. ё
,
.
13.2.1
. -
,
. ,
,
Р
.
13.2.1 Ф
а
а
: « )
«С
» ( ). PrinterSetupDialog
»(
.Э
Dialogs
. «
»
:
procedure TForm1.Button1Click(Sender: TObject); var
303
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] i:Integer; begin ListBox1.Items.Clear; for i:=0 to Printer.Printers.Count-1 do ListBox1.Items.Add(Printer.Printers.Strings[i]); Edit1.Text:= Printer.Printers.Strings[Printer.PrinterIndex]; end;
ListBox1. 0 ( Tprinters
1 Printer.Printers.Count). Items
TStrings,
Printers TListBox, .
?
.
2 0 2,
, 2.
Printer.Printers.Count 2, . . 0, 1
2.
. Printer.Printers.Strings[i], Printer.Printers.Count
. ,
i– 1.
0 .
– Printer.PrinterIndex : Printer.Printers.Strings[Printer.PrinterIndex]. Э
OnCreate
,
OnShow :
procedure TForm1.FormCreate(Sender: TObject); begin Button1Click(nil); end;
«С .
,
» :
procedure TForm1.Button2Click(Sender: TObject); begin PrinterSetupDialog1.Execute; Button1Click(nil); end;
PrinterSetupDialog1 ( ).
, .
304
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
13.2.2 Р
а
а
а
. ( «
) «
» Windows,
, »
.
, .
13.2.3. «На а
ё
, а»
« К».
«И я» ,
.Э
.А
, ,
PrinterSetupDialog1 TPrinter.
, ,
.
305
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
а
13.2.3
,
Printer –
TPrinter, Create , ё Create Free, !!!
, Free. . TPrinter. ш
На
а
,
\При еры\Глава 13\Сво тва ри тера
а
.
13.3
Х
. ,
ё
.
,
, .
TMemo,
(
Canvas-
TextOut)
ё
. . . AssignPrn. .
TextFile. Rewrite.
К
,
writeln,
: 1. 2.
.
TextFile, ,
. (
)
,
CloseFile. «Hello world»
: 306
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] var f:TextFile; begin AssignPrn(f); try Rewrite(f); Writeln(f, ‘Hello world’); finally CloseFile(f); end; end;
.
f
try ,
AssignPrn ( finally
,
ё
finally. Э f ),
.
end (
,
, try…finally..end, ,
)
. ,
. А
, ,
,
.
ё
TMemo.
var f:TextFile; i:Integer; begin AssignPrn(f); try Rewrite(f); for i:=0 to Memo1.Lines.Count-1 do Writeln(f, Memo1.Lines.Strings[i]); finally CloseFile(f); end; end;
, TMemo
. .
13.4
.
,
ё
. Х ё
,
. 307
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Э
Э
Delphi
.
,
,
,
. ,
ё
TPageControl.
(
)
. TShape.
TImage. TPageControl . PrintDialog
.К «
»
.
Dialogs
(
14.4.2). .
PrinterSetupDialog, , Excel
,
MS Word,
. 14.4.1.
ё.
-
Р
13.4.1 Ф
а
,
а
308
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
ё ё
13.4.2
а
а
а
.
OnClick
:
procedure TForm1.Button1Click(Sender: TObject); var i, Start, Stop: Integer; begin PrintDialog1.Options := [poPageNums, poSelection]; PrintDialog1.FromPage := 1; PrintDialog1.ToPage := PageControl1.PageCount; PrintDialog1.MinPage := 1; PrintDialog1.MaxPage := PageControl1.PageCount; if not PrintDialog1.Execute then exit; if PrintDialog1.PrintRange = prAllPages then begin Start := PrintDialog1.MinPage - 1; Stop := PrintDialog1.MaxPage - 1; end т ич т чати «В ё» else //Е и вы а if PrintDialog1.PrintRange = prSelection then begin Start := PageControl1.ActivePageIndex; Stop := Start; end else /Е и вы а т ич т «Вы ы begin Start := PrintDialog1.FromPage - 1; Stop := PrintDialog1.ToPage - 1; end;
а
т»
чати //Нача Printer.BeginDoc; for i := Start to Stop do begin
309
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] PageControl1.Pages[i].PaintTo(Printer.Handle, 10, 10); if i Stop then Printer.NewPage; end; Printer.EndDoc; end;
PrintDialog1.Options. «
,
».
: poDisablePrintToFile –
. ,
«
poHelp – poPageNums – ). poPrintToFile – . poSelection –
«
»
».
. ( CheckBox,
. poWarning –
, . poPageNums
poSelection:
PrintDialog1.Options := [poPageNums, poSelection]
ё
:
ё
PrintDialog1, Options.
, ,
true. Delphi,
, . FromPage . А
,
PrintDialog1 .
ToPage
,
PageControl1. ,
,
,
. : PrintDialog1.MinPage := 1; PrintDialog1.MaxPage := PageControl1.PageCount;
,
,
:
if not PrintDialog1.Execute then exit;
З
,
if not, Cancel, – exit. ё
then. А ё .
« К», « К»,
. 310
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] А
ё
,
:
if PrintDialog1.PrintRange = prAllPages then
Э Stop
,
,
Start
,
. ,
,
,
? if PrintDialog1.PrintRange = prSelection then
,
Start
-
Stop PageControl1.ActivePageIndex.
, ,
,
,
.
Start
Stop,
: Start := PrintDialog1.FromPage - 1; Stop := PrintDialog1.ToPage - 1;
,
Э
. ,
, ,
ё,
Start
.
PageControl1 Stop
.
, .
BeginDoc
TPrinter. ,
,
:
for i := Start to Stop do
: PageControl1.Pages[i].PaintTo(Printer.Handle, 10, 10); if i Stop then Printer.NewPage;
.
PageControl1.Pages[i].PaintTo. . ( . , . , , , . EndDoc TPrinter
i-
, , ,
i . Э
ё PaintTo ).
,
.
311
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] фор ы
На
а ш
\При еры\Глава 13\Печать одер и о о а .
,
13.5
.
,
, .
TPageControl , .
,
, ,
.
,
.
ё
,
:
begin Printer.BeginDoc; Printer.Canvas.Draw(10, 10, Image1.Picture.Bitmap); Printer.EndDoc; end;
Э Э ,
, , .
Canvas ё
Image1
,
. ,
,
. , GetDeviceCaps, .
WinAPI , Canvas Printer.Canvas.Handle. 2. К Y, ( Y).
,
1.
. : .
, . LOGPIXELSX (
Х)
Х LOGPIXELSY
. TImage, (
bmp) 13.5.1
«
а
».
.
312
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
13.5.1. Ф
а
а
OnClick :
procedure TForm1.Button1Click(Sender: TObject); var X1,X2,Y1,Y2:Integer; PointsX,PointsY:double; PrintDlg:TPrintDialog; begin аю и т а аю а эк а та а т к // С PrintDlg:=TPrintDialog.Create(Owner); if PrintDlg.Execute then begin //Начи аю вы к т Printer.BeginDoc; Printer.Canvas.Refresh;
чати
//П чаю и ацию а ии и т а PointsX:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSX)/70; PointsY:=GetDeviceCaps(Printer.Canvas.Handle,LOGPIXELSY)/70; // а читываю а ыи а ия X1:=round((Printer.PageWidth - Image1.Picture.Bitmap.Width*PointsX)/2); Y1:=round((Printer.PageHeight - Image1.Picture.Bitmap.Height*PointsY)/2); X2:=round(X1+Image1.Picture.Bitmap.Width*PointsX); Y2:=round(Y1+Image1.Picture.Bitmap.Height*PointsY); и а ия а чать //Выв Printer.Canvas.CopyRect(Rect(X1,Y1,X2,Y2),Image1.Picture.Bitmap.Canvas, Rect(0,0,Image1.Picture.Bitmap.Width,Image1.Picture.Bitmap.Height)); Printer.EndDoc; end; а к чати //У ичт аю PrintDlg.Free; end;
),
. ,
PrintDialog ( , Delphi. 313
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] TPrintDialog.Create(Owner), .Э var TPrintDialog. (if PrintDlg.Execute then) begin…end. – . (Printer.Canvas.Refresh).
« К»,
70 (
GetDeviceCaps. , PointsX
PrintDlg,
)
PointsY.
ё
ё
ё
.
.
: (
–
* PointsX)/2.
(
–
* PointsY)/2. .
. (Image1.Picture.Bitmap.Width*PointsX) (Image1.Picture.Bitmap.Height*PointsY). . Image1
Printer.Canvas.CopyRect. ,
ё, (PrintDlg.Free). Х ,
. (Printer.EndDoc) , ё ,
, .
,
(
)
ё
.
var
,
,
,
. ,
, ш
На
а
,
. а
\При еры\Глава 13\Печать
арти
и
.
314
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 14. Delphi 14.1 14.2 14.3 14.3.1 14.3.2 14.4
................................................................................................314 ..................................................................................315 Access..........................................................................318 ..................................................................................322 TADOTable.............................................................................326 TADOTable...............................................................................328 ..............................................................................328
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Глава 14. Delphi и азы да Э
ых Delphi.
. Х
, . (
,
MS Visual FoxPro) .
Delphi
ё
. .А
ё
,
ё ,
Delphi
.
К
, .
.
,
Delphi
, ,
. . Access , ё .
xml. ё
ё
.
ё 1C
-
. DBF. ,
,
dbf paradox. ,
, ,
.
314
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
14.1 ё -
З
,
.
ё
.
,
Delphi,
, . Ключ 1 2 3 4
Фа илия
Та
И я А А
а 14.1
ё
)
Отче тво
ш
а
а
х
(
, (
ё
).
,
ё
. К
,
ё
. ,
, ,
.
, .
?Э
.
К
,
ё
.
. Э
, ,
ё
,
. .
. К -
, .
, , .
, ,
, .
,
. , .
. А
. -
,
. 315
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ,
а
а.
. а
–
а
,
х.
– (
, –
– Excel).
,
. (dBase, Paradox,
XML).
, (
Access,
).
о аль ые азы да ё
ых
. Ч
,
? Э ,
,
.
Excel ( ,
Excel
, ).
ё
.Э
ё
, .
,
. ,
. Э
. Э (
). . "? К
"
ё
, ,
ё
. ?
. ,
"autoincrement" (
ё
, /
). ,
,
.
,
,
К К dBASE (
.
(
ё
) DBF)
dBase).
, , Paradox
6 (Access)
. 15. (Paradox, ,
, . , .
ё , Ч
. ? ,
-
ё
.
,
, ё
.
,
,
.
, . ,
. 316
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ,
-
. З ,
Delphi и азы да
я»,
«Фа , .
ых Delphi
. К
ё
.
? .
Microsoft, ADO
,
Borland
ё
. . ,
, .
.Э
Data Access .
Р
14.1.1 За а а Data Access а
Data Controls
. Э .
Р
З Э . Paradox
14.1.2 За а а Data Controls а
, Borland
BDE , ,
Borland Database Engine. ,
dBase.
317
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] Р
14.1.3 За а а BDE а
DBExpress –
Borland. . К
,
ё ,
Oracle, DB2
,
MySQL.
Р
14.1.4 За а а dbExpress а
ADO (Active Data Objects) – Microsoft. Microsoft, , ODBC.
Р
,
, MS Access
ё MS SQL Server. ,
ё
14.1.5 За а а ADO а
ё
Access
DAO, Office
.
, DAO
. , , .
14.2
Access ,
Access. MS Office ,
З "
Access " ,
, MS Access. Delphi. -> . 14.2.1).
" К" ( ,
ё
ё
Database.mdb .
318
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
а я
14.2.1
а
а
х
ё
Access 14.2.2,
.А .
, "
" (
) ,
Р
1. 2. 3.
. .
.
14.2.2
:
а я
а
а
х
ё ,
Access,
. .
14.2.3
, . 319
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
а
14.2.3
К
, . ,
ё
,
. Щё
"
" .
,
14.2.4.
Р
а я а
14.2.4
, ). К
(
, , .
•
.
: . 255.
,
"
Memo". 320
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] •
.З
. "Yes/No"
•
yyyy"
• •
" З
,
,
"mm
. .З
,
ё
.
"..."
",
. .
,
•
.
ё
.
,
.
.
.
•
,
. .
,
,
•
. .
.
-
.
: 1.
- Key1. ". – Фа я. ( – И я. -
" 2. -" 3. "
( -"
5. "
(
.
-
.
- 50.
.
- 50.
-
.
-
- 10.
.
.
- 20.
)". ".
-
.
-
. ,
? ,
, "
)".
(
)".
- " – .Ч
. -"
)".
– Г
6.
. Э
)".
– Т ( - e-mail.
4.
ё
. яа
"
"
"Да".
"Н
",
"
, .
(
«Н
ё
»), .
,
, ,
"К
" ( , ,
ё
(Key1), 14.2.5). З ,
,
. .
ё
.
, .
321
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
14.2.5 За а
ё, .З
я
«С а ё
.
:«
»
».
,
.
14.3 ,
MS Access.
,
MS
ADO. .
- ADOConnection. . ADO
ADOConnection , ё 14.3.1.
. ConnectionString. ,
ConnectionString
Р
З
14.3.1
а я
я
а
: 322
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] 1. 2.
(Use Data Link File); (Use Connection String). , .
, ё 14.3.2.
Р
,
,
ё
Build
14.3.2
а я
,
я
ADO
Provider . , «Microsoft OLE DB Provider for ODBC Drivers». Э ODBC , ( , , «Microsoft Jet OLE DB Provider». MS Office, Windows
ё MS Access
).
. ,
- «Microsoft Jet 4.0 OLE DB Provider». «Connection». Connection , 14.3.3. , ( «Select or enter a database name». , ,
Next, . ) . . 323
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] ё
,
, .
,
.
,
.
Р
14.3.3 За а а Connection
Ч
ё . :
1. 2. 3. 4. К
(User name),
,
MS Access; (Password) – , (Blank password) – , ; (Allow saving password). , ё . , ё «Test connection succeeded». ё, ё К, ( , 14.3.1). ADOConnection False. Э , .
;
Test Connection, ,
К, LoginPrompt,
324
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] . А .
Connected
True,
.
«С а
». .
ADO
Name
ADOTable BookName.
- TADOTable. ConnectionString .
« »? ADOConnection. Connection,
, .
BookName Щё ADOConnection1.
Connection ConnectionString. (С а
TableName ,
.
). ё, Active
true. - TDataSource ё DataSource ,
. . BookTable.
Data Access
DataSet
- DBGrid ё!!!
,
.
DBGrid. Э
– -
,
. ,
.
Р
14.3.4 Ф
а аш
я
– .
DataSuorce
DBGrid
DataSource1.
325
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] !!! :).
, Delphi
,
. , -
.
Ins,
Ctrl+Del. На
а
К
\При еры\Глава 14\Database1
, а
ш
.
14.3.1
TADOTable .
TADOTable , ,
.
-
,
-
. MasterSource .
, , .
ReadOnly –
.
true, .
, . TableDirect –
. .
true SQL
false ( SQL , TableName – CacheSize –
). false. ,
. 50,
. 50
, CanModify –
. ReadOnly .
. К
CommandTimeout – ,
,
( Connection –
)
. TADOConnection,
. ConnectionString – CursorLocation – . CursorType – - ctUnspecified - ctOpenForwardOnly – - ctKeyset
. ,
. К .
:
ё
ё .
ё .
326
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] , . - ctDynamic
, .
- ctStatic
В
.
а ,а
ё
!!! Е а ая
Filter – Filtered – (filter) IndexFieldNames –
а
а
а
а . Н х. а аа а а ё.
, х
а
а
а
а
. .
false
. . .
RecNo . RecordCount – . Sort , . , « » : ADOQuery1.Sort := 'Т ASC'. ASC , . DESC . Active – true, . AggFields – . AutoCalcFields – true, . Bof – , true, . Bookmark . Eof , true, . FieldCount – . Fields – . , , 4. Table.Fields.Fields[4].AsString. AsString , .Э , . . FieldValues – . . , Table1.FieldValues[‘Т ’]:='3346598'; FilterOption – .З : - foCaseInsensitive . - foNoPartialCompare , . , , . , « », « »( ё , ). Modified – true, .
327
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
14.3.2
К
TADOTable
,
. . А
.
,
BookmarkValid –
. TBookmark
, CancelUpdates CompareBookmarks.TBookmark. Э . . DeleteRecords –
true.
ё . .
,
,
–1.
,
.
–
.
: - arCurrent - arFiltered - arAll – - arAllChapters Append – Cancel –
. . . ADO. . ,
ё
Post. Close – Delete – Edit – . FieldByName –
. . . .
TField. First – Insert – IsEmpty – Last Next – Post – Prior Refresh – UpdateRecord –
. .
ё true
. . .
. . . .
14.4 ё ё
Ч
.Э
.А
, –
Key
ё
,
. ,
, .
, ,
ё 328
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
«Да а»
». З
«
Access, «К
Р
».
14.4.1 Р а
«Да а», «
1. 2.
ё
а
«Да а/ »,
а
я». «
, З
.
«false».
Delphi .
ё
. Edit
ADOConnection1, DataSource1
BookTable.
Cut, .
Delphi
». true,
File->New->Data Module ( Data Module, .
14.4.2). Э
329
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
14.4.2 С
Edit
а
я Data Module
Paste,
.
,
,
.
14.4.3.
Р
14.4.3
Data Module
, , DataModuleUnit.
. (
Project
Project Manager)
, .
. , ,
,
DataModule ё
.
330
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
14.4.4
-
ё
,
:
Р
ё
14.4.5 За а
а
а
ё
, F12.
. DBGrid1
, .
? . Э
Ч
ё
. ,
DataSource, . ,
DataModuleUnit. Э
uses File
Use Unit (
, . DataModuleUnit (
ОК.
,
(
14.4.6) ) implementation
«uses DataModuleUnit;»:
implementation uses DataModuleUnit; {$R *.dfm}
331
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
я
14.4.6
я
DBGrid1
DataSource
DataSource, (DataModule1.DataSource1). DataModule BookTable ( 14.4.7).
ё
.
Р
а
14.4.7
а я
а
ё ).
(
а
х
. Add All Field ( 14.4.8). .
,
ё
,
,
. ,
. .
,
.
, .
332
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
14.4.8 За
а
,
а я
а
а
ё
–
х
(
Key). . false (
, Visible ). ,
,
.
Key1 .
я».
«Фа
50
(
). .
15
, 15
,
. ,
-
.
З
DisplayWidth (
ё
ё
,
). 15.
,
ё
50, «
15.
ё DefaultExpression –
».
: .
,
, . MaxValue –
.
ё
(
,
0
100),
,
.
, . MinValue – ReadOnly –
. .
true.
ReadOnly
, .
Required – .
true, . ,
, ё
,
.
. –
ё
,
-
,
. .
,
. Tag –
ё .
. ,
. (
14.4.9). 333
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected]
Р
14.4.9 У
З
ш
а
«
» .
,
ё
. .
Windows
ё
,
). З
.
.
«
.Э »
«/». К
( « ,
»( .
14.4.10).
334
А
: Horrific. Home page:www.cydsoft.com/vr-online [email protected] Р
ё
14.4.10 На
а
а а
а
а
«Да а». .
Delphi.
,
я а
,
– ,
«Да а», З
. «Да а
,
– Delphi
)
ё
).
DisplayFormat. .К 10.5 «
. ё
DisplayLabel ( ».
« .
,
. З
, FormatDateTime
?
ё
(
»).
EditMask
я».
(
. – «dddddd». . ё TMaskEdit.
, «99/99/9999». , 14.4.11).
(
ё ),
( (
14.4.11
Р
14.4.11 У
ш
«
«
».
а;Нет.
,
» true , а
я»
false.
).
а
ё
я «Да а
– true ет.
DisplayValues. «True;False», . . (
На
»
.
, а
«
false,
а
, ет.
\При еры\Глава 14\Database2
ш
. 335
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 14.5 14.6 14.7 14.8 14.9
..............................................................................................................336 ...............................................................344 ......................................................................................................................346 .......................................................................................................349 SQL ........................................................................................................351
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
14.5 Г . :
1. Key1 – ё ( 2. На ва ие орода –
); 30
Р
14.5.1 Та
.
а «С а
»
«С а
».
: 1. 2.
; .
Р
DataModuleUnit. ADOTable ( DataSet
ё
14.5.2
ё
а
DataSource ( TownTable). TownTable. TownTable
а
х
ё
TownSource) TownSource .
: 336
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 1.
Connection
ADOConnection1, .
2. 3.
С а
TableName Active True,
. .
TownTable
ё
,
.
.
Р
14.5.3 Р а
а
, TownBookUnit. DataModuleUnit,
ё
TownBookForm.
. DataModuleUnit
Р
Key1
14.5.4 Д
DBGrid - DataModule1.TownSource. К, 14.5.5.
а
File К.
Use Unit
я DataModuleUnit.
.
ё ё
DataSource
337
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
а
14.5.5
а
ё «
»
а
«Д
,
»
.
Р
«
», «С х а
ё ая
14.5.6
а
а
»
а
:
procedure TTownBookForm.AddBtnClick(Sender: TObject); begin DataModule1.TownTable.Insert; DBGrid1.SetFocus; end;
«
Insert SetFocus »
TownTable ,
ё, ,
ё
. . ,
. «
»
procedure TTownBookForm.SaveBtnClick(Sender: TObject); begin
338
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] if DataModule1.TownTable.Modified then DataModule1.TownTable.Post; end;
,
false. А
Modifies
,
true,
,
,
.
Post. «
»
procedure TTownBookForm.DelBtnClick(Sender: TObject); begin DataModule1.TownTable.Delete; end;
ё,
Delete
«С а (
.
а
»
.
),
Р
14.5.7
.
а
а
а
:
OnClick
procedure TForm1.TownBookMenuItemClick(Sender: TObject); begin TownBookForm.ShowModal; end;
,
:
339
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
З
,
TownBookForm .
ё ,
Yes З Э
ё
. З
«С а
,
TownBookUnit . .
. »
.
,
.
Р
.
14.5.8 С а
.
DBGrid1 –
Options false:
dgEditing
Р
а
14.5.9
, «Р а
.
а я
а
»
: 1.
; 340
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 2. 3.
; . 14.5.10 ,
ё
. .
Р
14.5.10
, . ё EditRecordForm. BorderStyle - bsSingle Position – poMainFormCenter. .Э ,
«Р а
а
»
ё
EditFormUnit. :
. ,
.
, . DataModuleUnit
К.
File
Use Unit,
(
14.5.11)
341
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Р
14.5.11
а
а я а
х
( ),
.
, .
,
, –
. я, И я, Т , e-mail Да а я DBEdit Data Controls. Э TEdit, .Ч DataSource (DataModule1.DataSource1, ), DataField , . , . « » DBCheckBox. , DBEdit. – «Г ». , – . , « », ё 2( Key1 2). , «Г » 2, , Key1. ( ё ), . Ч ё DBLookupComboBox Data Controls. DataSource (DataModule1.DataSource1) , DataField , – «Г ». К DBLookupComboBox ( TComboBox). . ListSource , . - DataModule1.TownSource. ListField , – «На а а». KeyField , - Key1. , ё . , , ё . «С х а » : Фа
procedure TEditRecordForm.BitBtn1Click(Sender: TObject); begin if DataModule1.BookTable.Modified then DataModule1.BookTable.Post; Close; end;
, Modified
true),
(DataModule1.BookTable. DataModule1.BookTable.Post. «Д а а »
: 342
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] DataModule1.BookTable.Insert; EditRecordForm.ShowModal;
З
. .
«Р а а а - EditRecordForm.ShowModal;. . , .
Э
. , « Access
Р
14.5.12
« .
- «
а
» .
14.5.12
а я а
х
«С х а
». »
3. Key1
»
»
,
3
.
:
Р
« ,
14.5.13 Та
- -
»
а
ая Access
Key1
3. . 343
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] .
Ч -
. ,
. . , DBLookupComboBox
, . На
а
а
\При еры\Глава 14\Link
,
ш
.
14.6 «У а
а
, ». ,
ё
.
:
begin твит ь х ч ь а ить ' if Application.MessageBox(PChar('Ты +DataModule1.BookTableDSDesigner.AsString), 'В и а и !!!', MB_OKCANCEL)=id_OK then DataModule1.BookTable.Delete; end;
З
MessageBox. х ш а ' я» - DataModule1.BookTableDSDesigner.AsString. - DataModule1.BookTableDSDesigner.AsString. Ч DataModule. З ё BookTable, ё , « , BookTableDSDesigner. ? (DataModule1), (BookTableDSDesigner) AsString, . type DataModule1 , TDataModule1 BookTableDSDesigner TWideStringField. , ё . , , ё . ( «Фа
)
'Т
».
Delete - DataModule1.BookTable.Delete. . ,
. Э
. –
,
–
DataModule1, Active
false.
BookTable. ё . 344
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ё
New Field. ,
14.6.1.
Р
С
а
а я
14.6.1
я
а
Active
а
а
З
я
а
,
false.
: Name «Town» Type String – FieldType Lookup – KeyField ( )
. . «
. Lookup Keys . Result Field . К.
, . -
TownTable –
DataSet
». Э ,
Key1 – «На а
, а» -
,
Town. , Г
,
.
,
.
345
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
.
BookTable (
Town 14.6.2).
Р
14.6.2 Р
а
а
а
. «Г Town
»
, «Г «Г
BookTable, ё!!! На
Town
«Г
Visible ».
, а
а
,
ё
».
» DisplayLabel
–
false. ,
,
\При еры\Глава 14\Link1
,
:).
ш
.
14.7 . ,
.
ё 346
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] .
,
«
?
,
» -
. ё
–
.
.Э
, ,
. , ,
. К
. ?
, .
. ,
,
,
. .
?
ё
,
,
.
я»
«Фа
. . (
, ),
.
Р
14.7.1 Р а
Access, «К 14.7.1). З
». «Фа
я»
а
«С а
» а
«И
( ».
. : 1. Н
–
. 347
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 2. Да (Д «Фа
а
я
а
я) – .Э «С
я»
3. Да (С
а
я
(
)
,
,
».
а
, .
я) –
, . .
,
,
». Э
«С ,
.
,
, : «
а
«И
ё,
. » « «Да (Д
»
,
а
». я .З
а
я)». Delphi
, .
«С
.
а»
«
Р
14.7.2 У
«
а
а
»
ш
ая
«
а аш
»
»(
14.7.2).
а
:
procedure TForm1.N8Click(Sender: TObject); begin DataModule1.BookTable.IndexFieldNames:= 'Фа и ия'; end;
«
»
:
procedure TForm1.N8Click(Sender: TObject); begin
348
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] DataModule1.BookTable.IndexFieldNames:= 'Т end;
';
IndexFieldNames .
, На
а
\При еры\Глава 14\Index
,
а
BookTable
ш
.
14.8 ё
, ,
К
–
ё
?А
?
. TADOTable
,
. , , true.
. . 1000
я»
«Фа ё
,
ё
Filter. ,
«С Filtered
».
Filter
. Filter –
.
:
Поле [О ератор рав е ия] ‘З аче ие’ , «
, »,
я»
«Фа
:
AdoTable1.Filter:=’Фа илия=’’Сидоров’’’; ,
. .Ч
Delphi
,
, ё
: ‘По ле это о те
та
дет оди ар ая авыч а’’ это родол е ие те
та’ .
, ( Э
,
). (
). А
.
,
.
:
AdoTable1.Filter:=’Фа илия=’’Сидоров’’ or Телефо =’’3326523’’’; 349
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] , «С
»
«Т
я»
«Фа
»
«3326523». « », . . and.
or.
а
я
а
а
х
я
а
я
я
а
а а х а
а
а ,а
а
а .
,
я
!!!
. .
Р
14.8.1 У
ш
ая
а аш
а
. «На
»
, FindEdit ( . К
TEdit OnChange
,
14.8.1).
.
:
procedure TForm1.FindEditChange(Sender: TObject); begin if Length(FindEdit.Text)>0 then DataModule1.BookTable.Filtered:=true else DataModule1.BookTable.Filtered:=false; DataModule1.BookTable.Filter:='Фа и ия>'''+FindEdit.Text+''''; end;
350
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
'
, , >'''+FindEdit.Text+''''. ё ё « », « ». А « « ».
-
,
.
: ,
. ,
ш » .
.Ч ,
?
ё
. .
,
,
. 4
. . SQL –
. .
На
а
\При еры\Глава 14\Filter
,
а
ш
.
14.9
SQL З
S
QL SQLЭ
. . ,
, .
А
SQL
(ISO) . ё
Ч
.Э
,
.
? Э
, .
,
. Э
, .Э .
ё
.
.
,
"? К
"
, ?
. ,
,
(
"autoincrement"
/
).
,
,
.
,
, SQL
. :
.
, SQL
.
, SQL
++ .
:
Delphi. , ,
-
SQL
, 351
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] INT)
(Date, Time, Binary . .). Ч (DECIMAL DEC).
SQL
: 254
SQL «Д SQL,
SQL.doc»
а
я».
(INTEGER . « а
ё
. . ,
SQL .
ADO
.
( TADOConnection (
.
ТADOQuery TADOTable
. ТADOQuery ConnectionString) Connection. Filtered Filter).
, TADOTable
14.8.
. DataModule, . TADOQuery ( ё TDataSource ( ё FindSource). FindSource DataSet FindQuery.
Р
14.9.1
,
DataModule
, TDataSource ТADOQuery
К
FindQuery)
. SQL
.
TDataSource. ,
, FindQuery,
ADOConnection1. Э
Connection ,
.
.
. (
ё 14.9.2).
SQL
352
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
14.9.2 Р а
SQL а
–
«С а
»
,
:
SELECT * FROM С ав ч ик
ё
ё
, Active true.
. .
,
DBGrid1, DataSource
. BookTable. DataModule1.FindSource,
.
353
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Р
14.9.3 Р
а
а
,
а
, (
TADOTable, ё
.
,
BookTable) ё
,
FindQuery. ,
. DataSource
А
FindQuery. «Add all fields». ё
DBGrid1, . DataModule1.DataSource1, DataModule ё
ё
.
ё
. BookTable, .
,
. ,
BookTable, .
Р
К «Г
14.9.4 С
а
ё »),
ё
а
а
а,
а а
а
а
( . .
. SQL ,
. ё
FindResultForm. : Caption – «Р а а»; Position – poMainFormCenter, . Ч , DataModuleUnit. File->Use Unit. DBGrid c Data Controls ё . DataSource DataModule1.FindSource, . ё, FindResultUnit. 14.9.5.
ё
–
354
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
а а
14.9.5
а.
.
,
.
14.9.6
.
Р
«На
14.9.6 У
»
ш
ая а
а.
:
procedure TMainForm.FindButtonClick(Sender: TObject); begin DataModule1.FindQuery.Active:=false; DataModule1.FindQuery.SQL.Clear; DataModule1.FindQuery.SQL.Add('SELECT *'); DataModule1.FindQuery.SQL.Add('FROM С ав ч ик'); DataModule1.FindQuery.SQL.Add('WHERE Т LIKE '''+FindTelephoneEdit.Text+''''); DataModule1.FindQuery.Active:=true; FindResultForm.ShowModal; end;
355
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
. Э
SQL TStrings, TComboBox
. TListBox,
.
, ,
( «На ). SQL
ё
»,
, Clear. .
:
SELECT * FROM С ав ч ик WHERE Т LIKE ‘’’+FindTelephoneEdit.Text+’’’’
З
«С а FindTelephoneEdit . FindTelephoneEdit) ,
: «Т ё
»
,
,
(
.
К
ё
»,
. .
SQL,
.
,
FindResultForm.
Д я я а а а ADOQuery а . Э а а а а х. я ш а ( UPDATE, DELETE, CREATE ExecSQL а ADOQuery. На
а
а
а
х
а аш а ш а я ш а а INSERT, а
\При еры\Глава 14\SQL1
,
а
а а Н а а TABLE),
а а ,
ш
. ,
ё «
, .Ч SQL
»? ,
ADOQuery .
, . , , ё?
,
. ?
, FindQuery :
ё
. SQL. 356
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
SELECT * FROM С ав ч ик WHERE Т LIKE :Telephone
, –
?Э
,
, FindTelephoneEdit.Text
ё
.
.
:Telephone. Ч SQL
: :И яП
З
ё (
14.9.7). К
.
Parameters. , Telephone
.
Р
14.9.7 Р а
а а
.
. ftString.
DataType , . FindQuery
.
Value ,
, . «На ,
».
.
.
:
DataModule1.FindQuery.Active:=false; DataModule1.FindQuery.Parameters.ParamByName('Telephone').Value:= FindTelephoneEdit.Text; DataModule1.FindQuery.Active:=true; FindResultForm.ShowModal;
357
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] . . DataModule1.FindQuery.Parameters.ParamByName('Telephone').Value. . Parameters . ParamByName.
,
. К ,
, .
ё
Value
З
?
.
, ,
, ,
-
,
. На
а
а
,
\При еры\Глава 14\SQL1
, .
,
.К
,
ADOQuery
ADOTable. ,
ADOQuery. (
– ,
,
. А
)
ADOTable. ADOQuery
К
, Last
ш
. .,
Insert, Delete, Edit, Post, First, Next, Prev, ADOTable.
358
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 14.10 14.11 14.12 14.13
......................................................................................................359 . ......................................................................................................365 DBGrid.................................................................................................368 . ............................371
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
14.10 , .
,
,
.
,
,
ё
, .
,
.
. К
, ?
,
, e-mail ё
,
, ,
. . .
, .
, . ,
,
.
, ?
.
. : .
: ,
,
, e-mail
.
14.10.1.
Р
З ё
,
14.10.1 Сх
а а
х
. .
«Т
, LinkKey,
. )
ё Ч ё LinkKey1 –
» (
(
«С а
, ».
«Key1»
«С а
,
» .
Key1. ,
,
)
. LinkKey ? Key1 –
:
,
14.10.2.
359
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
Р
14.10.2 Сх
а а
«С а ,
ё
.
»,
«Т
». ,
Key1 ,
«С а
Key1
х
»
«LinkKey»
«Т
». .
,
Link
1.
. . ,
Link .
), 3
2.
(2А 2,
Link.
.
.
3-
А
.К
, ,
,
Г
-
,
. ,
.
. С а
Access
Т
,
. :
Key1 – ё LinkKey – а я Т –
(Д
, а –
. ,
я). ,
)
(Да
10. . Т
.
Delphi.
ё
Т
BookTable. Del.
.
а
(И
, FindQuery
ё
Key1 360
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ( Key1).
. А .Ч
,
,
,
SQL
. DataSource ( TelephonSource) ADOTable TelephonTable) « ». TelephonSource TelephonTable. TelephonTable: Connection – ADOConnection1. TableName – Т . Active – true, . MasterSource – BookSource. Э Т . MasterFields – . Щё , 14.10.3. Detail Fields ( ё ) LinkKey, Master Fields ( ) Key1. Add Joined Fields ( ) . З , К . IndexFieldNames. К , LinkKey – . , . Э !!! ( DataSource
Р
а я
14.10.3
ё
я
а
ё
TelephonTable, , (
.З
а
,
). ё , DataSource
DBGrid.
ё
.
14.10.4. DataModule1.TelephonSource. 361
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ё
,
BorderStyle
bsNone,
.
Р
14.10.4 У
ш
,
ая
а ая
а
а
.
, .
Ins, , ,
ё
(
ё
, ,
Ctrl+Del, ,
)–
Esc.
.К
ё OnClose
.
:
if Table1.Modified then Table1.Post;
З
, ё Options
Table1
,
. dgCancelOnExit
– false. А
DBGrid
. . FindQuery
:
SELECT * FROM С ав ч ик, Т ы WHERE Т LIKE :Telephone AND С ав ч ик.Key1=Т ы.LinkKey
362
Автор: Horrific aka Фле ов Михаил e-mail: [email protected]
З
,
.К SQL,
. З
.
ё
, ё
SQL ё
Т Key1.
С а
FindQuery. Add All Fields.
ё
,
( ,
) Key1,
: И я Та
ицы . И я
я
,
ё
,
. (
14.10.5).
,
ё
, SQL
Р
.
14.10.5 У
ш
ая
а ая
а
а
, .
К
-
.
, Ч
.
Refresh ё .
, , «На
».
(
)
:
DataModule1.BookTable.Refresh; DataModule1.TelephonTable.Refresh;
363
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] К
,
ё
,
ё
,
.
,
. ,
ё
. .
Sort
–
, а
»
«С
, .
а»
« :
DataModule1.BookTable.Sort:='Фа и ия ASC';
« .
»
, :
DataModule1.BookTable.Sort:='Г
ASC';
,
– .
,
. , . .
, ,
ё
14.10.6 , ,
,
.
Р
14.10.6 Н ая
а
а
а я а
х
а
.
364
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] ё
ё PhoneEditForm. ё
.
14.10.7.
Р
я
14.10.7
К
а
а я а
х
,
.
, -
.
,
. На
а
\При еры\Глава 14\LinkTables
, а
.
14.11 , - ,
. :
. А «Т а
ш
«
,
», (
14.11.1).
».
,
-
.
Р
14.11.1 Та
а «Т а
»
а
а
х
365
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 1
, . .
.Ч
,
,
-
.
,
,
. ,
. Delphi, ADOConnection ( ё ADOConnection1. DataSource1 DataSet Connection «Т а ». Active true). (
14.11.2
Р
DataModule. ), DataSource
ADOTable DataModule). ADOTable1. ADOConnection1,
14.11.2
ё
DataModule.
ADOTable1 .
.
ё ё
(
ADOTable1 TableName (
. . )
,
К Ц а
К -
Ц а. Э
, , DefaultExpression .
366
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Р
а я
14.11.3
,
я.
ё
.К
,
.
,
,
Щё
. New Field.
Name ( Type ( Field Type ( .К
)–
: Sum.
ё
)–
, )–
Integer. .
Calculated,
14.11.3 , ADOTable1 ,
Э
. OnCalcFields. . .
:
procedure TDataModule1.ADOTable1CalcFields(DataSet: TDataSet); begin ADOTable1Sum.Value:=ADOTable1DSDesigner2.AsInteger* ADOTable1DSDesigner3.AsInteger; end;
, ADOTable1 ( Name) К - , Ц а, Sum. ADOTable1DSDesigner2, ADOTable1DSDesigner3 ADOTable1Sum . ё , . , . : AsInteger – , . AsDateTime – TDateTime. AsBoolean – . AsCurrency – . AsFloat – . AsString – . AsVariant – Variant. Э , , , , . ё Value .З
. З
ADOTable1Sum
DataModule (File->Use Unit) DataSource . З ,
– AsInetger. . DBGrid. DataModule1.DataSource1. . ,
ё!!! 14.11.4
. 367
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] К
,
, .
.
Delphi
,
«
» (ReadOnly).
Р
На
а
14.11.4 Р
а
а
.
\При еры\Глава 14\Count
,
а
а
ш
.
14.12
DBGrid. ,
.Э
, .
,
,
.
Color. Э 15 .
, Delphi. З ADOTable1. ,
ё
«Add All Fields». – Color. ,
, . (
ё
1. Чё . 2. К . 3. З ё . 4. ё . 5. . 6. .
). Щё :
.
ё
PopupMenu .
,
, 5. Э
ё
,
. Tag
Tag 3,
5. 368
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] 14.12.1
.
Р
14.12.1 В
а
а
а.
( ё ). OnClick.
Shift
Events -
,
, . . .
:
procedure TForm1.N13Click(Sender: TObject); const MenuColors: array[0..5] of TColor =(clBlack, clRed, clGreen, clYellow, clBlue, clPurple); begin ти в и акти ва ия я //П DataModule1.ADOTable1.Edit; в Color вы а ы цв т //За DataModule1.ADOTable1Color.AsString:= ColorToString(MenuColors[TMenuItem(Sender).Tag]); //За ить и ия DataModule1.ADOTable1.Post; end;
–
Const
6
-
TColor.
. А
, .
6
,
,
,
,
.
6 ,
.
,
.
,
Edit.
. ё
Sender – ,
Color : MenuColors[TMenuItem(Sender).Tag].
.
. 369
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] TMenuItem(Sender) –
,
Sender
TObject – , Tag). TMenuItem. Tag ,
. ( Sender ,
TObject, , TMenuItem(Sender).Tag – . MenuColors[TMenuItem(Sender).Tag] – , З ColorToString Color К
MenuColors Tag. .
,
DBGrid
PopupMenu
. ,
Color
.
. Э .
OnDrawDataCell -
, :
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); begin try DBGrid1.Canvas.Font.Style:=[]; if (gdSelected in State) or (gdFocused in State)then begin DBGrid1.Canvas.Brush.Color:=clHighLight; DBGrid1.Canvas.Font.Color:=clWhite; end else begin DBGrid1.Canvas.Brush.Color:=clWhite; DBGrid1.Canvas.Font.Color:=clBlack; //Е и е ве а е е и ь ва ь ве и if DataModule1.ADOTable1Color.AsString'' then DBGrid1.Canvas.Font.Color:= StringToColor(DataModule1.ADOTable1Color.AsString); end; //Очища яче DBGrid1.Canvas.FillRect(Rect); //Выв е яче и DBGrid1.Canvas.TextOut(Rect.Left, Rect.Top, Field.AsString); except DBGrid1.Canvas.TextOut(Rect.Left, Rect.Top, Field.AsString); end; end;
TField. Э
. Delphi
я
, db, .
uses. ,
. :
Sender –
,
.
. 370
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] Rect –
,
.
TRect. Field –
,
TField .
State –
,
.
: gdSelected – gdFocused – gdFixed – (
. . . )
(
). .
.
,
,
[]. , clHighLight (
,
,
). ё
,
ё ,
.
,
. (
)
, ,
, .
,
–
, StringToColor. ,
. (
,
FillRect ). TRect,
. .
-
( StringToColor,
), except…end.
На
а
а
\При еры\Глава 14\Color
,
ш
.
14.13
. , , ?
?З
,
.А
, ?
ё Access.
ё
–
. .
ё
:
procedure TForm1.Button1Click(Sender: TObject); begin DataModule1.ADOConnection1.Close;
371
Автор: Horrific aka Фле ов Михаил e-mail: [email protected] if EditConnectionString(DataModule1.ADOConnection1) then begin DataModule1.ADOConnection1.Connected:=true; DataModule1.ADOTable1.Active:=true; end; end;
Ч ADOConEd.
,
uses .
, ADOConnection, EditConnectionString, ,
.
Close .
ё
14.13.1. ADOConnection,
.
ё
,
true .
,
ё
, ,
.
Р
На
а
14.13.1 Р
а
а
а
а
.
\При еры\Глава 14\Connect
,
ш
.
372
ё
15. 15.1 15.2 15.3 15.4 15.5
ё
................................................................................................373 ё Excel.........................................................................................374 Quick Reports ...........................................................................................379 Quick Reports ....................................................................383 . .............................................................................................384 .......................................................................................385
Глава 15. Созда ие отчёт о ти ё
. ?
. , -
.
, . Excel ,
ё
ё
. ,
, , .
, .
ADOTable, ё
, .
373
15.1 ,
–
ё
Excel
ё
Excel.
Excel
,
.А
ё
Office , , ё
. , .
Excel»
ё
ё ё
. ,
ё
.
«Э
«Фа ».
15.1.1. .
ComObj. (
uses COM
ё
,
Р
15.1.1 К
(
а
а я
ё
ё
).
Excel
).
:
var XLApp,Sheet,Colum:Variant; index,i:Integer; begin XLApp:= CreateOleObject('Excel.Application'); XLApp.Visible:=true; XLApp.Workbooks.Add(-4167); XLApp.Workbooks[1].WorkSheets[1].Name:=' тчёт'; Colum:=XLApp.Workbooks[1].WorkSheets[' тчёт'].Columns; Colum.Columns[1].ColumnWidth:=20; Colum.Columns[2].ColumnWidth:=20;
374
Colum.Columns[3].ColumnWidth:=20; Colum.Columns[4].ColumnWidth:=20; Colum.Columns[5].ColumnWidth:=20; Colum:=XLApp.Workbooks[1].WorkSheets[' тчёт'].Rows; Colum.Rows[2].Font.Bold:=true; Colum.Rows[1].Font.Bold:=true; Colum.Rows[1].Font.Color:=clBlue; Colum.Rows[1].Font.Size:=14; Sheet:=XLApp.Workbooks[1].WorkSheets[' тчёт']; Sheet.Cells[1,2]:='Т ы ав ч ик'; Sheet.Cells[2,1]:='Фа и ия'; Sheet.Cells[2,2]:='И я'; Sheet.Cells[2,3]:='e-mail'; Sheet.Cells[2,4]:='Г '; Sheet.Cells[2,5]:='Дата ия'; index:=3; DataModule1.BookTable.First; for i:=0 to DataModule1.BookTable.RecordCount-1 do begin Sheet.Cells[index,1]:=DataModule1.BookTable.Fields.Fields[1].AsString; Sheet.Cells[index,2]:=DataModule1.BookTable.Fields.Fields[2].AsString; Sheet.Cells[index,3]:=DataModule1.BookTable.Fields.Fields[3].AsString; Sheet.Cells[index,4]:=DataModule1.BookTable.Fields.Fields[5].AsString; Sheet.Cells[index,5]:=FormatDateTime('dddddd', DataModule1.BookTable.Fields.Fields[6].AsDateTime); Inc(index); DataModule1.BookTable.Next; end;
ё
, excel97.pas,
Excel (XLApp:= CreateOleObject('Excel.Application')), XLApp. Э Variant. Variant , : , , . CreateOleObject , ё , . , – COM. Ч . , , ( , , Excel) .Ч . , , « » . , . Excel, . (XLApp.Visible:=true) Excel. (XLApp.Workbooks.Add(-4167)). Ч ё . MS , .
XLApp.Workbooks[1].WorkSheets[1].Name:=' , .
ё '. Э "
1".
ё
,
375
.
Excel .
. (Colum:= XLApp. Workbooks[1]. Colum Variant. (Colum. Columns[1]. ColumnWidth := .К а[1].Ш аК :=20.
ё ']. Columns),
WorkSheets['
:К
20).
(Colum := XLApp. Workbooks[1]. WorkSheets[' ё ']. Rows). ё , (Colum. Rows[1]. Font. Bold := true). . , 14. , . (Sheet:=XLApp.Workbooks[1].WorkSheets[' ё ']). , , Sheet.Cells[ а, ]. :
index:=3; DataModule1.BookTable.First; for i:=0 to DataModule1.BookTable.RecordCount-1 do begin Sheet.Cells[index,1]:=DataModule1.BookTable.Fields.Fields[1].AsString; Sheet.Cells[index,2]:=DataModule1.BookTable.Fields.Fields[2].AsString; Sheet.Cells[index,3]:=DataModule1.BookTable.Fields.Fields[3].AsString; Sheet.Cells[index,4]:=DataModule1.BookTable.Fields.Fields[5].AsString; Sheet.Cells[index,5]:=FormatDateTime('dddddd', DataModule1.BookTable.Fields.Fields[6].AsDateTime); Inc(index); DataModule1.BookTable.Next; end;
3. Э
index Excel
, .
ё ,
.
а
ё
,а
а
, я, а
а
а х а
ах
я
Excel а ах.
а
ая
First
AdoTable. Э
,
ё
ё
. , Excel. .
0 .
,
while.
for..to..do? while
,
: 376
while DataModule1.BookTable.Eoftrue do begin //Выв а ых в Excel Ув ич и index; П х а ющ ю т к ; end;
,
ё
while. Э ,
,
,
,
,
. , DataModule1.BookTable.Eof
, true, . . for,
. .
ё
Excel
,
,
,
(
).
,
while
, ,
.
. Sheet.Cells[index, (
,
.
], ,
,
).
: я].AsString
DataModule1.BookTable.Fields.Fields[Н
Index, .
ё.
,
:
for i:=1 to Table.RecordCount do begin for j:=1 to DBGrid.Columns.Count do Sheet.Cells[Index, j]:=DBGrid.Fields[j-1].AsString; Inc(Index); Table.Next; end;
Э
. З .
ё
DBGrid. А
1
.
Excel, DBGrid: Sheet.Cells[Н е DBGrid.Fields[Н
е
и, Н
е ив е
и]:= е].AsString;
377
ё
Э
, DBGrid
.
ё
, , FormatDateTime.
, .
Rows[
а].Font.Color ( , а].Font.Color. ё
Sheet.Cells[ Sheet.Cells[ Sheet.Cells[ Sheet.Cells[
ё А
Excel.
Sheet.
). , ,
а, а, а, а,
а,
Sheet.Cells[ :
а].Font.Italic а].Font.Bold а].Font.Underline а].Font.Size -
ё
, Delphi,
а]. Font.Color,
Sheet.Columns[
Lib -
ё
excel97.pas, ,
,
ё
ё
.
, .
.Ч
, SQL
.Э
–
, ADOQuery,
,
BookTable. ,
.
SELECT * FROM С ав ч ик, Т ы WHERE С ав ч ик.Key1=Т
Р
15.1.2 К
ы.LinkKey
а
а я
ё
Excel
378
15.1.2 На
а
.
ё
. \При еры\Глава 15\Excel
,
а
ш
.
ё
15.2
Quick Reports ё
Delphi – Internet ё . .
, , Delphi
,
Quick Reports. , Quick Reports ,
Delphi, . Delphi 6
Quick Reports 23 .
–
ё .
ё
ё
.
QReport ,
Quick Reports – TQuickRep. Э ё . . ,
.
, .
ё
Bands – : HasColumnHeader – З
ё :
,
, ё
. ,
. . true.
ё
HasDetail – HasPageFooter – HasPageHeader – HasSummary – ). HasTitle –
,
ё
, , ё
. . .
ё
(
ё . QuickRep. -
ё
. .
. (
15.2.1).
379
Р
DataSet – . Font – Frame – Options –
15.2.1 В
а QuickRep
(
а
я
ё
)
,
. . .
Compression true, Page – ё . PrinterSettings – , ReportTitle – ShowProgress –
ё .
ё ё
FirstPageHeader LastPageFooter ё . .
,
true, true,
. . . . true .
SnapToGrid – Zoom –
. . ё
QuickRep, (
, . 15.2.2).
, , Cancel.
380
Р
а
15.2.2
,
ё а.
ё
,
,
(
ё
ё ReportForm) , . QuickRep. HasTitle HasDetail
. , QRLabel – QRDBText –
, .
OnClick
ё .
.
.
ReportFormUnit. (DataModule),
Bands. ,
QReport :
. Э .Э
TLabel . TLabel, . , . .
,
,
,
.
. Э
QRSysData –
TLabel –
, QRMemo – Memo QRShape – TShape.
,
,
,
. .
. Э
TMemo . . 381
.К
QRImage –
TImage. ё .
ё
. QuickRep) qrsDateTime.
(Title) (
Title,
QRSysData. , .
,
,
. QRLabel, а а
а ,
«Ра QRImage, TImage.
Caption
Т
!!!
15.2.3.
Р
QRLabel DataModule1.BookTable, -
Font ».
15.2.3 В
а
а аш
Detail. З : , , e-mail, QRDBText. DataField 15.2.4.
Р
15.2.4 В
ё а.
,
. DataSet .
а Detail.
:
procedure TMainForm.PrintButtonClick(Sender: TObject); begin ReportForm.QuickRep1.PreviewModal; end;
PreviewModal
QuickRep. Э . 382
,
-
. ,
Р
15.2.5.
а
15.2.5
а.
, . На
а
К
\При еры\Глава 15\QuickRep
, а
15.3
З
Quick Reports ё
, -
ш
.
10 .
Quick Report
ё
.
ё , .
,
? ?
ё
,
. ,
ReportForm, Bands Column Header,
true
ё HasColumnHeader.
. Ctrl
Edit .
. QuickRep1
.
QRLabel Delphi Cut, ColumnHeaderBand1
DetailBand1. Edit
Delphi Paste, ColumnHeaderBand1. DataModule1.BookTable.
QuickRep1 ,
DataSet QuickRep1 383
,
DetailBand1. К
,
З
, . .
15.3.1. К
, ColumnHeaderBand1
, ,
DetailBand1
. ,
.
Р
а
15.3.1
а.
ё
, . Quick Report – QRShape. , ё
ё
ё
, . На
а
, а
15.4
,
ё ё
, ё
. .
, \При еры\Глава 15\QuickRep1
ш
.
.
384
ё ,
ё
. , ,
!!!
,
. ё
Э
SQL
ё
. DataSet – « », Master – QuickRep1.
,
– QRSubDetail
ё , QReport. ё
: DataModule1.TelephonTable, ё
. .
QRLabel, QRDBText. DataField «
DataModule1.TelephonTable,
Р
« DataSet ».
а
15.4.1
а.
.
,
-
».
ё
,
15.4.1. На
З
а
, а
\При еры\Глава 15\QuickRep2
ш
.
15.5
. ё
, ,
. ё ,
. 385
ё
– QRExpr. Э ё . .
ё
Expression.
,
ё . Database field, ( ё .
, 15.5.1
. , )
Р
ё
а
15.5.1
а.
Function, Variable
. . ё
ё
,
.
,
, Quick Report
.Ч -
, ,
. QRSysData. Data . qrsDate – qrsDetailCount – qrsDetailNo – qrsPageNumber – qrsReportTitle – qrsTime –
qrsDateTime, ё . . . ё . ё . ,
Delphi
, File Business
:
New
.
ё
Other. QuickReport Wizard (
ё
ё . . 15.5.2).
386
Р
а
15.5.2
,
а.
, .
(
ADO dbf
ё
)
paradox, ADO,
,
. , ,
Forms ( QuickReport), .
ё
15.5.3). З
ё
(
.
Р
15.5.3
ша
.
387
16. 16.1 16.2 16.3 16.4 16.5
DBF, Paradox XML .......................................................388 Paradox. ...........................................................................................389 Paradox DBF. ...........................................................................394 . ...................................................................................................395 . .................................................................................................397 XML . .............................................................................................399
Глава 16. Ра ота DBF, Paradox и XML аза и да ых. , , . DBF,
Paradox
Access
ё XML.
,
. ,
Access, ,
ё
.
DBF. ё
К ,
DBF .
(
ё .
), , Paradox
ё , ,
ё
-
ё
XML ё
,
.А ,
.
,
. , . ADO.
,
388
16.1
P
aradox
Paradox.
DBF –
, ,
.К
ё
. DBF
Paradox
Access ,
. Paradox Paradox,
ё
DBF
,
.
1. 2. 3.
Database Desktop, : File , "OK".
Delphi. New
Table Paradox 7 . 16.1.1. ,
ё
.
,
.
Р
1. Н 2. И я
я .
а
16.1.1.
а
я
а
. Database Desktop
я. З
, Access,
. 3. Т
Paradox
.
я. Щё ,
.
389
4. Ра
. Э
.
ё
(binary) 5. К . ,
, (Alpha),
.
.
ё
,
.К
, .
.
,
Access
.
ё
ё
-
.
,
.
ё
:
1. 2. А 3. 4. 5. К . 1-
,
ё
. 2-
,
.
,
. ,
.
( К
,
):
А
1 - autoincrement ( - alpha ( - alpha ( 50) 2- :
) 50)
К К
1 - autoincrement ( 2 - Integer
) - date - alpha ( - Integer
К "К
20)
1" . "К 2" , child.db . .
mast.db , ,
"К .
, 1" .
,
, ,
"К
2"
,
. child.db ,
16.1.2).
Restructure . (
Table ,
.
390
Р
16.1.2.
а
а
я
а
Paradox
Table properties Secondary Indexes ( ) Define ( ). Indexed fields ( ). ё ( 16.1.3). "OK". , , hhh "OK". . , ё .
Р
16.1.4. З
16.1.3.
а
SQL Explorer . (Alias)
а
я
а
Paradox
. Э 391
, .
Р
Ч ,
" К". Э
. , , DataSource DataSource
c
DatabaseName TableName Active ё DBGrid. DataSource2.
16.1.4.
SQL Explorer
, Object New. Database driver name STAMDART. Alias ( ). "Sales1". ё PATH. , " К". , Object Apply. , Delphi, Paradox. . Data Access BDE TTable . DataSet Table1, Table2. Table1 ( ): Sales1 ( Alias, SQL Explorer). mast.db. ё , . true, . Table2, TableName child.db. , DataControls DataSource DataSource1, , 16.1.5.
392
Р
16.1.5. Ра
ё Table2, DataSource1.
, . MasterSource , Key2
я
а
ё
, ,
ё 16.1.6. Key2,
, Key1
Add. К
. Active
ё
.
ё
, child.db. "MasterFields", Available Indexes hhh. ,
true,
.
Р
16.1.6.
ё 16.1.7)
я
а я а
(
Table2. .
ADO. ё Add All Fields.
, , , 393
.
Key1 Key2 Data DisplayLabel
.
Visible false, dddddd, EditMask
DisplayFormat
,
99/99/9999.
.
Р
16.1.7.
,
,
.
ё
Paradox ADO. , BDE. TTable TADOTable. , First, Next, Prev, Last, Edit, Paste Paradox DBF BDE. SQL, Paradox DBF – , . ( from) Active Paradox ADO . ё , .
–
Query .
На
а
а
,
. SQL , true.
ш
. (Alias). Э
,
, DatabaseName ,
.
TableName.
16.2 BDE. Э
.К
\При еры\Глава 16\Paradox
,
. ё
.
Paradox Paradox
DBF –
,
DBF.
.Э
,
394
ё
Delphi . BDE
BDE Administrator. ё Configuration ( Configuration – Drivers – Native. З Paradox.
. SQL Administrator. 16.2.1) Paradox
Р
ё ая
16.3.1.
З
а
а
LANGDRIVER –
.
asci,
ё
Pdox ANSI Cyrillic. )
. (
Paradox
Apply,
. , BDE. DBASE .
dBASE RUS cp866.
.
16.3 .Э -
. SQL
, .Э
. ,
.
. -
. 395
ADO, З
ё .
Paradox
DBF
.
. ?
ё .
,
.
ё
FIO ( TTable, FIO.
(
ё
, .
- mast.db. К , ). Table1),
,
ё
,
ё
,
IndexFieldName
. , ,
ё
16.3.1
, .
.
Р
ё ая
16.3.1.
ё
а
а
OnClick
:
procedure TForm1.Button1Click(Sender: TObject); begin Table1.SetKey; Table1FIO.AsString:=FindEdit.Text; Table1.GotoKey; end;
З .
ё
.
. З
, ,
, ,
, ,
SetKey.
,
. 396
ё
(
Indexed fields.
DatabaseDesktop . DatabaseDesktop, Secondary Indexes Indexed fields, .
), Table properties ,
Define .
, SetKey
.
GotoKey ё
. - GotoNearest. . GotoNearest
, ,
GotoKey , . На
а
, а
,
,
\При еры\Глава 16\FastFind
ш
.
16.4
.
SQL Explorer . А
–
paradox . ,
, , ё
, .
, ,
. А
-
?
–
. .
, .З Delphi TSession ё BDE,
,
. BDE. .
1. 2. 3.
, . SessionName. TTable TQuery, , SessionName .
TTable . TSession.
ё
. :
TSession. , 16.4.1
TQuery.
,
,
TListBox ,
.
397
Р
16.4.1.
ё ая
а
а
ё
OnShow
:
procedure TForm1.FormShow(Sender: TObject); var str:TStrings; begin Str:=TStringList.Create; Session1.GetAliasNames(Str); ListBox1.Items.Assign(Str); Str.Free; end;
З .
TListBox. TStrings. GetAliasNames .
ТSession ё
. ListBox1.Items.Assign(Str) -
TStrings, ListBox1.
Str. Paradox
Str
. К .
DBF. :
procedure TForm1.Button1Click(Sender: TObject); var str:TStrings; begin Session1.AddStandardAlias('VROnline','c:\','Paradox'); Str:=TStringList.Create; Session1.GetAliasNames(Str); ListBox1.Items.Assign(Str); Str.Free; end;
398
ТSession. -
AddStandardAlias ,
.
,
. .
-
,
ё
, TListBox.
Interbase. Э ,
,
. .
:
procedure TForm1.Button2Click(Sender: TObject); var L: TStringList; begin L := TStringList.Create; try with L do begin Add('SERVER NAME=IB_SERVER:/PATH/DATABASE.GDB'); Add('USER NAME=MYNAME'); end; Session1.AddAlias('NewIB', 'InterBase 4.x Driver by Visigen',L); finally L.Free; end; end;
AddAlias -
.
ТSession -
ё
. .
-
TStringList, ( /PATH/DATABASE.GDB'). . ,
'SERVER
BDE Administrator. З , Native ODBC
, Drivers, На
К
а
а
IB_SERVER:
.Ч SQL Explorer
, .
!!! -
. NAME=
, ,
.Ч Configuration .
,
\При еры\Глава 16\Alias
16.5
XML
ш
.
Access, DBF,
Paradox . ,
. BDE.
, -
DAO. XML
, ,
XML. 399
,
,
XML midas.dll. Ч windows. Windows 95/98/ME windows\system, NT/2000/XP WinNT/system32. , , dll/midas. regsvr32.exe, dll . regsvr32.exe midas.dll. , :\windows\system (regsvr32.exe ), « » « ». З :\windows\system\regsvr32.exe :\windows\system\midas.dll. З К . XML Delphi. . : DataSource ClientDataSet1. DataSource DataSet ClientDataSet, . ClientDataSet. ё FieldDefs ( 16.5.1). . ё Add, . . : DataType – . Name – . Size – . , ftAutoInc Key1. . ё ftString, FIO 20. , ё .
Р
ё ая
16.5.2.
ё Create DataSet.
ё
а
ё
а
ClientDataSet
, Save to MyBase Xml Table exapl «С х а ё . BDE . ё .З . .
.
». ,
DBGrid .
ADO
ClientDataSet , .З
.К
,
ё
400
, ClientDataSet
З
TTable .
.Э
TADOTable. XML
,
. ,
, .
UndoLastChange . ,
– Ч
, ё
ё,
ClientDataSet. true, . MergeChangeLog, LogChanges false. .
, XML
,
. На
а
а
,
\При еры\Глава 16\XML
ш
.
401
17. 17.1 17.2 17.3 17.4
........................................................................................................................402 ...............................................................................................................403 .........................................................................................................404 . .....................................................................408 .........................................................................................409
Глава 17. Пото и Windows ,
. Э
. ,
К
?
,
.К
. ,
ё
, .
,
. , . .
402
17.1
.
ё
, . Word
,
.К
Excel Word
, ,
.
.
,
, .
ё
, . .
,
. , 1
К
.
, ,
.
ё
К
. , ,
.К
.
,
К 1.
. ?
:
-
2.
, .
ё
-
,
.
а»
« .
. Э , Application.ProcessMessages
ё
ё
,
.
.
3. К -
,
ё
.К
COM
. ,
.
-
,
. ё
, ,
.
,
.
. Ч .
.
, 10
, .
ё ,
.
,
.
32-
Windows
(
). . . Ч
.
, , 403
. . . Ч
, ,
. ,
-
ё
.
COM
ё
.
,
,
. ,
, . .
, ,
-
.
17.2 ё
.
, . .
ТRichEdit –
ё
TLabel. .
Win32 ,
17.2.1,
.
.
Р
17.2.1. Г а ая
а аш
а
.
.
File->New(
>Other Thread Object. 17.2.3. TCountObj. « К» Delphi . . MyThread.
17.2.2). " К".
New
, .
Main,
404
Р
Р
17.2.2. С
а
17.2.3. За а
я
а.
а.
:
unit MyThread; interface uses Classes; type TCountObj = class(TThread) private { Private declarations } protected procedure Execute; override; end; implementation { Important: Methods and properties of objects in VCL can only be used in a method called using Synchronize, for example, } Synchronize(UpdateCaption); and UpdateCaption could look like, procedure TCountObj.UpdateCaption; begin
405
Form1.Caption := 'Updated in a thread'; end; } { TCountObj } procedure TCountObj.Execute; begin { Place thread code here } end; end.
Э .Э (abstract) –
. .Э
Execute. , TThread,
, ,
, , . .
,
ё
.
Execute –
.
,
.
:
procedure TCountObj.Execute; begin index:=1; ае е еч ы чё чи //За while index>0 do begin Synchronize(UpdateLabel); Inc(index); if index>100000 then index:=0; а в е , //Е и if terminated then exit; end; end;
index UpdateLabel. Э
вы
и.
integer
.
private :
procedure TCountObj.UpdateLabel; begin Form1.Label1.Caption:=IntToStr(Index); end;
,
(Form1.Label1.Caption)
uses,
Label1. Execute index )
while, .
Synchronize ( index.
, ё 100000, 406
ё
0
index
ё
.К Execute. Terminate
index ,
ё ,
terminated . Synchronize.
. 0 100000 terminated , true ,
. true,
ё . VCL
UpdateLabel, Synchronize? .
,
. ,
.
Synchronize. Synchronize, ,
Synchronize. Э
. -
ё,
. interface)
ё
,
?Э
, uses, . private "З
"
,
ё . MyThread. , . , MyThread co TCountObj ( :
Synchronize. uses (
,
private
uses. ).
procedure TForm1.Button1Click(Sender: TObject); begin co:=TCountObj.Create(true); co.Resume; co.Priority:=tpLower; end;
co.
true
ё
,
false,
,
,
false. . Resume,
. , .
ё "
а
, "
, . :
procedure TForm1.Button1Click(Sender: TObject); begin co.Terminate; end;
407
З .
Terminate true
terminated .
Execute
, "За
")
RichEdit.
ТLabel
( ё
, ( На
а
,
RichEdit, ё .
) а
ё
.
\При еры\Глава 17\Thread1
,
ш
.
17.3
. ё
,
. ,
ё
Suspend -
ё .
Priority. tpIdle tpLowest tpLower tpNormal tpHigher tpHighest tpTimeCritical ( ). Suspended true, Terminated true, . Terminate – . FreeOnTerminate – Execute . , , FreeOnTerminate:
,
, .
co.Suspend. Ч Resume. Priority:=tpIdle; .
, . ,
true, , . Execute
procedure TCountObj.Execute; begin FreeOnTerminate:=true; index:=1; //За ае е еч ы чё чи while index>0 do begin Synchronize(UpdateLabel); Inc(index); if index>100000 then
408
index:=0; //Е и а в е , if terminated then exit; end; end;
вы
, .
и.
ё
TThread ё
, (
,
). ,
. .
ё
. .
,
.
,
. . .
17.4
. UpdateLabel, index. ,
index
ё .Ч
Execute, .
UpdateLabel ,
Synchronize
. Synchronize. –
Windows. К
. ,
, SendMessage
. . ,
,
. ,
SendMessage ( . . . ,
1. 2. 3. 4. .З
: )
.
,
TLabel, TEdit. : windows ( Windows). UpdateLabel, Synchronize.
Handle. ё
. )
uses messages ( ,
,
Execute: 409
procedure TCountObj.Execute; begin index:=1; while index>0 do begin SendMessage(Form1.Edit1.Handle, WM_SETTEXT, 0, Integer(PChar(IntToStr(index)))); Inc(index); if index>100000 then index:=0; if terminated then exit; end; end;
К
,
Synchronize TEdit.
WM_SETTEXT –
.
.
, .
. , index Integer.
PChar. PChar
?З
(IntToStr),
. На
а
а
\При еры\Глава 17\Thread2
,
ш
.
410
18. 18.1. Ч 18.2. 18.3. З 18.4. Х 18.5. 18.6.
................................................................411 DLL?..............................................................................................................412 DLL....................................................................................416 . ..................................................................419 . .......................................................420 ......................................................423 . ...........................................................................................426
Глава 18. и а иче
и о
о
«
е ые и лиоте и.
. . ,
,
ё
. ,
, DLL
,
, .
411
18.1. Ч
DLL? 30 .
,
30-50% .
. К
,
.... -
.К .
,
,
Реше ие №1. . -
, .
, ,
,
.
, ,
-
-
.
К
,
.
,
. ,
, .
Про ле а №1. , 1
. .
. .Э
,
,
,
, . .
1
.
!!! ,
А ….
1 ,
.
,
1
.
? , 100
,
1
. .
.
,
.Э
20 .
,
10
.
Про ле а №2. , . Windows, ….
, 412
. .
,
.
Э
. ,
.А
, .
Х Э
,
500 .
ё
,
, . Windows 2000, , 500 Windows 2000 Professional 128 , Windows 2000 Server ?А , ё ( 2 3 ), Windows 2000 Server + 3D Studio Max + MPEG4 , .
. 256 512
.
.
Реше ие №2. : , . Link Library (DLL). Э
,
.
DLL,
Dynamic . ,
, , .
.
, DLL
.
DLL,
. .
,
,
,
,
,
.
DLL dll
. ocx
ActiveX. , ActiveX
.
DLL .Х
. ActiveX
ё
DLL,
. .
,
DLL
.З
,
. Word
. .
? Excel. З .
. Э . Э
А
, DLL ,
,
А
.Э
,
, ,
,
?
,
30-50 ,
.
.
?Э
Word!!!
, .
,
: ,
.
, Word? А 413
ё
? А
. ?
А , DLL-
. .К
,
Word, WordArt,
dll
. ,
ё
Word ,
. – ( DLL
,
DLL
). .
, DLL
,
. :
1. К
DLL
,
.
DLL .
, , DLL
. ,
.
.Х
2. , , ActiveX ( ё
.
,
)
dll. ,
,
.
-
.
. ,
.Э
. К
, ActiveX )
(
, , ,
ё
.
Из че о е дела Windows? :" ?".
,
, ,
, . , , win.com. DLL ,
(
)
,
-
,
, ,
Windows. Windows , ,
. Kernel32.dll. ,
. ...
?А
.
c:\Windows, Windows Windows .
API
,
.
,
Delphi
,
.
,
, ,
Kernel32.dll. GDI32.DLL,
Windows .
ё
. , User32.dll, 414
. Windows. Windows
, .
Графиче
ие дви
и.
OpenGL. Ч ? К SDK ? , opengl.dll (opengl32.dll) glu.dll (glu32.dll). Ч DirectX? Э , DirectDraw, DirectInput, DirectMusic, DirectPlay . , . DirectDraw Ddraw.dll, DirectInput Dinput.dll, DirectMusic Dmusic.dll .Х DirectX – COM ( , ActiveX). , . ё , . EXE .Э , , ( , ё ) dll , . Ч dll, . , , – drv. sys . ?К
К ,
,
-
,
. ,
. Э
,
, . Windows dll . ,
, dll
ё
(dll) ,
.
. Ч
?
,
DLL
ё
).
.
( ,
. dll . dll dll,
,
, . .Э
. ,
,
. З
, . ,
, . 415
18.2.
DLL.
DLL –
ё
,
Delphi
. File
(
Other. New DLL Wizard.
Р
а я
18.2.1
,
New
18.2.1) К.
DLL Wizard (
а.
Wizard
,
),
. (
):
library Project2; uses SysUtils, Classes; {$R *.res} begin end.
( . Э . FirsDLLProject.
View->Project Manager), , File Save All, . FirsDLLProject.dpr
. 416
Summ. , :
library FirsDLLProject; uses SysUtils, Classes; function Summ(X,Y:Integer):Integer; StdCall; begin Result:=X+Y; end; exports Summ; {$R *.res} begin end.
,
.
,
StdCall. ,
. ,
,
. ,
, StdCall,
Borland. Э .
, , Borland,
. , ё ,
Borland
Visual C++ StdCall,
StdCall, . . ,
ё
. exports.
, .
Summ
ё
exports,
. (
Ctrl+F9
Project .
Compile FirsDLLProject), , .
,
,
,
–
.
, . >Application). :
ё
(File->New-
procedure TForm1.Button1Click(Sender: TObject); var
417
r:Integer; begin r:=Summ(10,34); Application.MessageBox(PChar(IntToStr(r)), ' end;
ьтат
кции Summ');
.
Summ r. . ,
К Delphi,
Delphi
,
. Summ.
ё
. ,
.
TForm1 (
type,
)
:
function Summ(X,Y:Integer):Integer;StdCall;
, begin
, end
-
.
ё
Summ,
Delphi ,
,
ё ,
. ,
. :
implementation
function Summ; external 'FirsDLLProject.dll' name 'Summ';
З
, external, .
Summ. ,
,
ё
.
, ,
name,
. . , . На
а
, а
\При еры\Глава 18\FirstDLL
ш
. .К
Summ,
, FirsDLLProject.dpr.
.Э .Ч . К . . export
: 418
exports Summ index 10;
10. Э
,
.
index (
.
!!!
:
exports Func1 index 10 name 'Fun', Func2 Insert, Func3 index 11, Func4 index 11,//О и а, а Func5 name 'Don';
и
е
е
ще
в е
name, . Func5,
Don. :
exports Func1 index 10 name 'Fun', exports Func2 Insert, exports Func3 index 11,
,
( ,
Ctrl+F9). .
:
implementation
function Summ; external 'FirsDLLProject.dll' index 10;
name
З
, На
К
Parameters.
а
, а
.
index . \При еры\Глава 18\IndexName
ш
.
18.3. З
. ,
DLL
,
,
, . ,
, Delphi Run
.
18.3.1.
419
Р
а а
18.3.1
а
а
а
, F9). З
Host Application .
.
(
.
З
?
,
,
ё
. Delphi
.
.
,
, . А
, ,
,
,
(
)
. , .
. Э
,
,
ё
-
-
.
–
, . ,
. , Windows NT/2000/Х ,
. Windows 98
DLL
ё
. , .
,
.
18.4. Х
. ,
.
,
, .
. 420
ё
ё
–
.К
.Э
,
dll ,
DLL
. ,
ё
DLL
. ProjectDLL. ShowAbout:
library ProjectDLL; uses SysUtils, Classes; {$R *.RES} exports ShowAbout index 10; begin end.
а ,
exports ShowAbout index 10;. ShowAbout 10. Э ». ё File->New Form , , ( 18.4.1).
Р
18.4.1.
.
«
а
« .
-
».
var,
ShowAbout:
var Form1: TForm1; procedure ShowAbout(Handle: THandle);export;stdcall;
export
ё stdcall, . implementation
{$R
*.DFM}:
procedure ShowAbout(Handle: THandle);
421
begin //У а ви ь а а е ь а и е ие Application.Handle := Handle; а ь //С Form1:= TForm1.Create(Application); а и ь //О Form1.ShowModal; //Очи и ь Form1.Free; end;
Э
Application. Э
Handle
.
, . ё
Э
var
TForm1.Create(Application), . .
,
ё
,
Form1. . К ,
.
DLL
. ,
,
. (Ctrl+F9)
(File->Close All)
DLL-
.
, (File->New Application). ShowAbout:
unit Unit2; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; procedure ShowAbout(Handle: THandle)stdcall; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; procedure ShowAbout;external 'ProjectDLL.dll' index 10; implementation
422
,
type,
: procedure ShowAbout(Handle: THandle)stdcall;
Э
,
. var,
.
ё
:
OnClick
procedure TForm1.Button1Click(Sender: TObject); begin ShowAbout(Handle); end;
З
, ,
.К
.К
ё
. На
а
а
\При еры\Глава 18\Form
,
ш
.
18.5.
. .А ? .А
,
,
,
? .
,
. . 11.
FreeAbout :
exports ShowAbout index 10; exports FreeAbout index 11;
Unit1, .
,
ShowAbout LongInt.
ё
, . FreeAbout
LongInt.
function ShowAbout(Handle: THandle):LongInt;export;stdcall; procedure FreeAbout(FormRef: LongInt);export;stdcall; 423
К
,
. ,
.К
,
,
, ShowAbout:
.
function ShowAbout(Handle: THandle):LongInt; begin Application.Handle := Handle; Form1:= TForm1.Create(Application); Form1.Show; Result:=LongInt(Form1); end;
З
ё
, ,
Form1
.
ё
Integer. .
Free, FreeAbout:
procedure FreeAbout(FormRef: LongInt); begin if FormRef>0 then TForm1(FormRef).Free; end;
)
, ,
, ё
FormRef ( . .
Free
FormRef –
ё
,
-
TForm1(FormRef). ,
DLL type
.
. :
function ShowAbout(Handle: THandle):LongInt;stdcall; procedure FreeAbout(FormRef: LongInt);export;stdcall
var
:
function ShowAbout;external 'ProjectDLL.dll' index 10; procedure FreeAbout;external 'ProjectDLL.dll' index 11;
ё private
. f
LongInt. 424
.
ё
.
.
,
:
procedure TForm1.Button1Click(Sender: TObject); begin f:=ShowAbout(Handle); end;
З
. :
procedure TForm1.Button2Click(Sender: TObject); begin FreeAbout(f); end;
З
ё
,
.
–
, «З
(
»
«
, FreeAbout.
»), . 0.
f
ё
,
.
FreeAbout.
,
f 0,
,
.
ё
. :
procedure TForm1.Button1Click(Sender: TObject); begin if f>0 then FreeAbout(f); f:=ShowAbout(Handle); end;
З
ё
,
,
f
,
. OnClose . , .
,
, 0
f
, ё
, . На
а
, а
\При еры\Глава 18\NoModal
ш
.
425
18.6.
. ,
(
ё
.
ё
,
,
-
– .
,
), .
-
, (
-
dll
),
, ,
. ,
ё
.
. ,
ShowAbout. ё
,
,
, . ,
.
,
.
,
,
,
. .
type
ShowAbout, :
ShowA=function (Handle: THandle):LongInt;stdcall;
З ShowAbout ё,
ShowA, .
,
,
. .
OnClick
,
.
:
procedure TForm1.Button1Click(Sender: TObject); var dllHandle:THandle; sa:ShowA; begin if f>0 then FreeAbout(f); dllHandle:=LoadLibrary('ProjectDLL.dll'); if dllHandle=0 then exit;//Би и е а е а
и а ь
@sa:=GetProcAddress(dllHandle, 'ShowAbout'); if @sa=nil then exit;// ия е а
е а
f:=sa(Handle); FreeLibrary(dllHandle); end;
426
З dllHandle – sa –
: . ShowA, . .
. f.
,
, .
LoadLibrary. Э
,
. . Э ,
dllHandle. ,
dllHandle
. , GetProcAddress.
ShowAbout . : 1. 2.
. . ,
@sa.
,
sa ,
ё
(
ShowAbout.
–
.
nil,
,
ё
). f:=sa(Handle),
,
,
. f. ,
FreeLibrary.
. .
, (
, ),
DLL На
а
, .
\При еры\Глава 18\CallFunc
, а
ш
.
18.7.
.
,
. К
begin
end
,
, .
?З
-
,
. DLLProc. Э nil, ё
, : DLL_PROCESS_ATTACH – DLL_PROCESS_DETACH – DLL_THREAD_ATTACH –
ё
, ,
. , . . . . 427
DLL_THREAD_DETACH – Ч , ё , ,
.
ё
, . ,
ё
.
:
library ProjectDLL; uses SysUtils, Classes, Windows, dialogs, Unit1 in 'Unit1.pas' {Form1}; {$R *.RES} exports ShowAbout index 10; exports FreeAbout index 11; procedure DLLEntryPoint(dwReason:DWord); begin case dwReason of DLL_PROCESS_ATTACH:ShowMessage('Attach to process'); DLL_PROCESS_DETACH:ShowMessage('Detach to process'); DLL_THREAD_ATTACH:ShowMessage('Thread attach to process'); DLL_THREAD_DETACH:ShowMessage('Thread detach to process'); end; end; begin DLLProc:=@DLLEntryPoint; DLLEntryPoint(DLL_PROCESS_ATTACH); end.
uses
. Ч
,
,
windows dialogs, DLLEntryPoint .
case . end
begin
.
DLLProc
ё
DLL_PROCESS_ATTACH. На
а
а
\При еры\Глава 18\Entry
,
ш
.
18.8.
. ё
DLL ,
,
. Э
. DLL
428
, . . :
library FuncProject; uses SysUtils, Classes; type TCompProc= procedure(Str:PChar);StdCall; procedure CompS(Str:PChar; Proc:TCompProc);StdCall; begin if @Procnil then TCompProc(Proc)(Str); end; exports CompS index 10; {$R *.res} begin end.
,
–
TCompProc. PChar
.
,
, ё
#0).
PChar, #0.
ё ё
,
, . PChar –
( ,
,
, .
PChar
ё
.
ё
–
type
CompS,
. Э
ё
,
,
. Proc. .
, , : TCompProc(Proc)(Str). Э Str, ,
. . .
ё. .
. type
:
type
429
TCompProc= procedure(Str:PChar);StdCall; procedure CompS(Str:PChar; Proc:TCompProc);export;StdCall;
, . .
, . , ,
Delphi TCompProc
,
. CallFromDLL. Э :
.
procedure CallFromDLL(Str:PChar);StdCall; begin ShowMessage('DLL вы ва а эт ц . Па а end;
,
т
ав
: '+Str);
,
TCompProc, PChar ,
,
.
ё
. ShowMessage, . .
ё
:
procedure TForm1.Button1Click(Sender: TObject); begin CompS('П ив т', @CallFromDLL); end;
З
CompS, . На
. а
а
,
\При еры\Глава 18\Call
ш
.
430
19. 19.1 19.2 19.3 19.4
...................................................................431 . ............................................................................................................................432 . ...........................................................................438 . .....................................................................................441 . ......................................................................................449
Глава 19. Разра от а о тве
ых о
о е тов
Delphi. К , .
,
ё
. .
З
www.torry.net
VCL. , .
,
(
ё ,
,
). -
,
. DLL
,
. ,
, DLL
. . , .
, ,
. ё
, ,
, ,
ё
ё
,
, . , .
,
.
431
19.1
.
,
Delphi
-
.
, . .
,
,
,
,
,
. , Components. .
.
ё
ё
Other. К ,
К
,
.
,
ё
/Handles
, Other.
. Handles.pas – Delphi ё, ё Component , 19.1.1. : 1. Unit file name. ё Handles.pas. 2. Search Path –
. (File->Close All). Ч Install Component.
. .
Browse ,
Delphi
.
, ,
. 3. Package file name. Э .З 4. Package description. .
Р
ё .
, . З
а
19.1.1.
а.
ё
,
Delphi .
.
, , 432
Components/Other. Into new package Browse file name. Components/Other « ».
Package
OtherComponents К,
. : «Package OtherComponents.bpl « . ?».
will be build then installed. Continue?». OtherComponents «Yes» Delphi ё . «No» , : Contains – . Requires – ё . ,
. 19.1.2. .
(
), ,
ё
Delphi .
Р
19.1.2.
а
а.
: Compile – Add – Remove – Install –
. . . .
,
. Options –
. ,
Options
,
. 19.1.3.
433
Р
а
19.1.3.
а.
,
, .
,
Usage options, .
1. Designtime only – Delphi. 2. Runtime only –
, .
, ( 3. Designtime and Runtime – Ч ,
,
bpl). . , .
, ,
. Delphi, , Designtime
ё ,
.
,
,
Delphi
,
Runtime . . . Delphi
Install . З ,
.Ч Install
. «Да»,
. «CyD»,
. Symples,
. 434
ё (File->Close All) Designtime
, Options 19.1.4.
. .
Runtime
,
Project. Packages
Р
З , packages». ,
а.
19.1.4.
: «Build with runtime
CheckBox ,
.
,
.
К
, ,
CheckBox.
bpl
. ,
,
,
bpl System (System32
. Windows NT/2000/XP)
Windows. bpl Runtime
, .
,
, . .
, . .
Environment Options. Library (
Tools Delphi.
19.1.5).
435
Р
а.
19.1.5.
: Library Path – . BPL output directory – . К $(DELPHI) bpl Projects\Bpl. DCP output directory –
,
Delphi , $(DELPHI)\Projects\Bpl. Delphi. , Delphi,
, , ,
.Э
DCP
, . Browsing Path –
. ,
.
Library Path. ,
19.1.6. ,
.К . ,
Handles.pas.
,
ё .
« К».
Delphi
,
.Ч
К. ,
“Add”. Delphi. 436
Р
а
19.1.6.
а
.
Delphi,
ё К
. Runtime , $(DELPHI)\Projects\Bpl
bpl Windows. -
( Delphi
bpl),
. .
Delphi Delphi.
,
,
437
Р
а
19.1.7.
а
.
Component (
Install Packages. Packages
19.1.7),
,
19.1.4. Add. .
bpl
. Delphi .
19.2
. , .
/ Delphi TComponent.
ё TObject. А 19.2.1
,
.К
,
TButton.
Р
19.2.1. И а х я
ё
а TButton.
TObject. К . TObject . , ё . TPersistent,
,
, , , TObject.
. Assign ( TPersistent.
ё Delphi,
.Э
,
),
TComponent. Э (Tpersistent ,
TObject) .
, TControl ( 438
).
( ),
ё
Dialogs, .
TWinControl. Э
, . ) .
TLabel
, ё . TWinControl – , TLabel. К SendMessage,
(
TWinControl, , (Handle)
TEdit, Windows. – TButtonControl. Э
, .
ё
–
TGraphicControl.
Paint, ,
. . .
– TCustomControl – TGraphicControl Paint.
–
TWinControl, . . . К .
,
,
.
, .
TButton (
Delphi ( 19.2.2).
. Help->Delphi help). TButton.
439
Р
а TButton
19.2.2.
а
.
«
TButton (
19.2.3).
а
.
аа
».
: 1. TButton 2. TButton (VCL Reference)
Р
19.2.3. С
х а
CLX (
TButton CLX).
,
–
VCL. ,
VCL « ,
аа
Windows. Windows,
VCL
». 19.2.4.
Р
19.2.4. С
а
х а
.
: 440
ё
1. Hierarchy – 19.2.1 2. Properties – 3. Methods – 4. Events –
,
,
. . . ,
. . Щё 19.2.5.
, .
Properties
. Щё
Р
19.2.5. С
. , TWinControl.
а
,
ё
,
.
а TButton.
Derived from TWinControl. ,
. .
.
19.3
. . ,
.К
, . ,
-
.
. . Component ,
New Component.
19.3.1, . :
441
Р
Э
Ancestor type -
19.3.1.
.Э
а я
а
,
. ,
.
TGraphicControl, Paint, . . . Class Name . TGraphicClock. Palette Page , ё . "Samples". "Standard". Unit file name , .Э , . , . Search path – , Delphi . , Delphi ё , ё . " К" ( " К", Install). , Delphi :
unit GraphicClock; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TGraphicClock = class(TGraphicControl) private { Private declarations } protected { Protected declarations } public { Public declarations } published { Published declarations } end; procedure Register;
442
implementation procedure Register; begin RegisterComponents('Samples', [TGraphicClock]); end; end.
– Register. :
RegisterComponents , , Register
1. 2.
. Delphi.
.
Delphi
. Delphi.
TGraphicControl. Ч ё
,
.К
. .
,
Д
-
,
.
, ,
, ,
.
.
,
public:
constructor Create(AOwner: TComponent); override; К
,
, override;
constructor. К
procedure , .
ё
,
(
). CTRL+SHIFT+C
Delphi
:
constructor TGraphicClock.Create(AOwner: TComponent); begin inherited; end;
ё
:
constructor TGraphicClock.Create(AOwner: TComponent); begin //Вы ыва к т кт ка inherited Create(AOwner); //У
а ав ивае
аче ия
и и ы и вы
ы
ча и
443
Width := 50; Height := 50; //У а ав ивае е е е ShowSecondArrow в true. //О а е а веча ь а а е е и ShowSecondArrow := true; // и иа и и е PrevTime := 0; CHourDiff := 0; CMinDiff := 0;
а ь ые е е е
ые
а ы TBitmap, в // и иа и и е и а и ча в. // FBGBitmap:= TBitmap.Create; FFont:=TFont.Create;;
ых
х а и
я
FBitmap:= TBitmap.Create; FBitmap.Width := Width; FBitmap.Height := Height; //Вы ав яе DateFormat:='tt';
а
в е е и
ае а е //За Ticker := TTimer.Create( Self); // е ва а ы а е аа е Ticker.Interval := 1000; ы и OnTimer е вы ыва //П Ticker.OnTimer := TickerCall; //В чае а е Ticker.Enabled := true;
а ья
е
а TickerCall
//У а ав ивае ве а ча и FFaceColor := clBtnFace; FHourArrowColor := clActiveCaption; FMinArrowColor := clActiveCaption; FSecArrowColor := clActiveCaption; end;
К TGraphicClock). Э
(
inherited ,
,
,
,
ё
.
.
ё ,
.
. . .
public:
public { Public declarations } constructor Create(AOwner: TComponent); override; destructor Destroy; override;
444
,
ё Ctrl+Shift+C
destructor. ё :
destructor TGraphicClock.Destroy; begin Ticker.Free; FBitmap.Free; FBGBitmap.Free; inherited Destroy; end;
З TTimer inherited,
. З
, .
,
(
),
ё
.
–
.
, ,
, .
. private:
private //Д я ча в я а е ь Ticker: TTimer;
а
и
я
а
е
и и ча в и а //Ка FBitmap, FBGBitmap: TBitmap; /С ы ия FOnSecond, FOnMinute, FOnHour: TNotifyEvent; //Це а ь ая ч а CenterPoint: TPoint; // а и Radius: integer; //Пе е е ая веча щая а ShowSecondArrow: boolean;
а
е
е
и
а ча в //Цве FFaceColor: TColor; е ча в //Цве а FHourArrowColor,FMinArrowColor, FSecArrowColor: TColor; // а а ы FDateFormat: String; //С и ь и FFont: TFont;
а
//О а ь ые а а е LapStepW: integer;
ы,
ые
ы а
и
в
е
е.
445
PrevTime: TDateTime; CHourDiff, CMinDiff: integer; FClockStyle:TClockStyle;
ё
TickerCall. ,
private .
ё
:
protected { Protected declarations } procedure TickerCall(Sender: TObject);
ё CTRL+SHIFT+C
:
procedure TGraphicClock.TickerCall(Sender: TObject); var H,M,S,Hp,Mp,Sp: word; begin е а в и а е е, вых //Е и if csDesigning in ComponentState then exit; //
аче
е а
ще ая
а
а
чить в я //П DecodeCTime( Time, H, M, S); //П чить ы щ в я. DecodeCTime( PrevTime, Hp, Mp, Sp); //С и вать ыти OnSecond if Assigned( FOnSecond) then FOnSecond(Self); //С и вать ыти OnMinute if Assigned( FOnMinute) AND (Mp < M) then FOnMinute(Self); //С и вать ыти OnHour if Assigned( FOnHour) AND (Hp < H) then FOnHour(Self); //С х а ить т к щ PrevTime := Time;
в
я в PrevTime
if ( NOT ShowSecondArrow) AND (Sp Delphi Help)
(
. Action
.
, ). ,
published property Action;
Ч
, .
.
,
, published
.
BGBitmap:
property BGBitmap:TBitmap read FBGBitmap write SetBGBitmap;
, .
TBatmap,
, Delphi
, FBGBitmap. Э
BGBitmap ,
, FBGBitmap. SetBGBitmap. , (
,
. А
) (
,
, ,
.
),
,
. BGBitmap
:
procedure TGraphicClock.SetBGBitmap(Value: TBitmap); begin FBGBitmap.Assign(Value); invalidate; end;
FBGBitmap .
.
GraphicClock1.BGBitmap:=bitmap. ( Align),
, 448
.
,
-
,
.
:
property ClockStyle:TClockStyle read FClockStyle write SetStyleStyle default scAnalog;
ClockStyle
TClockStyle. TClockStyle TGraphicClock, type:
,
type TClockStyle = (scAnalog, scDigital); TGraphicClock = class(TGraphicControl) private Ticker: TTimer;
ё
TClockStyle = (scAnalog, scDigital) . ,
, default, - scAnalog.
, ,
Р
На
, .
а
, а
19.3.2.
аш х а
.
\При еры\Глава 19\Component
ш
.
19.4
. Delphi,
.Э ,
.
, ё
.
449
Р
Delphi.
аш х а
19.4.1.
Image Editor, 19.4.1. З Component Resource File (.dcr) ( , ,
ё File Newi ). Contents.
ё
,
New->Bitmap. 19.4.2).
(
Р
(
аш х а
19.4.2.
Width
.
Height) 16
VGA,
. Bitmap
19.4.3). Щё
Bitmap1 ( Rename. К
.
24.
« К».
ё
Bitmap1 ,
TGraphicClock. ,
,
, Delphi
,
.
450
Р
аш х а
19.4.2.
.
ё
, .
-
.
.
,
GraphicClock.dcr. , Delphi
. Э
. othercomponents.dpk. Delphi
. , ш
На
,
,
а
ё
.
. \При еры\Глава 19\IconForComponent
, .
451
22. OLE, COM, ActiveX ..................................................................................................529 22.1. OLE....................................................................................................................530 22.2. OLE К ..............................................................................................................532 22.3. OLE ...................................................536 22.4. Э ActiveX ....................................................................................540 22.5. COM..................................................................................................................547 22.6. ActiveX ...................................................................................549 22.7. ActiveX ...................................................................................553
Глава 22. OLE, COM, ActiveX OLE – Microsoft, ё – , OLE
. 10 ActiveX, Delphi,
-
.
. ActiveX . . ActiveX
, (
, . ActiveX –
. C++ Builder . Visual Basic ё
Delphi Kylix ( ,
, ActiveX,
,
, ).
ё
,
ё
, Delphi, Borland), ActiveX Visual C++, ActiveX. VCL , Delphi .
529
22.1.
OLE
OLE (Object Link and Embedding) –
Windows COM OLE 1.0,
(Component Object Model). OLE . ё COM – , COM-
-
. ,
COM-
,
. ,
Word
Excel. OLE (
, ).
, .
.К , , COM ё
ё .
15, OLE,
Excel, Excel ё
.
CreateOleObject .
К
OLE ,
,
.З OleContainer (
ё Delphi System ё
,
.
,
OLE .
,
Insert Object)
Р
,
22.1.1. В
а»
«Т
.
«В
ё
. 22.1.1.
а OLE.
а а»,
«Р
PaintBrush».
, (PaintBrush).
,
. 530
ё
OLEContainer. К PainBrush. .
, MainMenu. .
ё
.
, , ,
. З
OLE ,
. .З
Align
OleContainer1
alClient, .
ё
PaintBrush. –
Delphi.
Р
На
Фа
а
а
,
22.1.2. Р
а
аш
а
.
\При еры\Глава 22\OLE
,
ш
. .
а а. Фа
,
,
ё
GroupIndex ё GroupIndex ё .
ё,
(
. К а а. ё (0, 2, 4 …) – – а а OLE
22.1.3). OLE .К
PaintBrush ?
, . OLE
GroupIndex « а а»
. 1
ё
. OLE!!!
531
Р
22.1.3. Г а
.
К
,
OLE,
OLE. OLE
:
1.
OLE
. ,
К
.
,
.
– , 2.
.
. . .
22.2. OLE К OLE (OleContainer), З ,
,
. ,
ё OLE
. true,
AllowInPlace – , AutoActivate – : aaDoubleClick – aaGetFocus – aaManual – CopyOnSave – , Iconic – , Linked – OleClassName – OleObject – OleObjectInterface – Modified – NewInserted – true.
. OleContainer, OLE .
. З
OLE
. . .
ё
true . true, . ,
ё ,
true. OLE OLE
. . OLE
. true.
Insert Object,
532
OleStreamFormat –
true, ,
OLE 1.0. Э
-
. SizeMode – smAutoSize – smCenter – smClip –
. . . ,
,
. smScale – smStretch –
. . OleContainer:
ChangeIconDialog – Close – OLE Copy – CreateLinkToFile – CreateObject – , CreateObjectFromFile , . DoVerb – InsertObjectDialog – LoadFromFile – . LoadFromStream – . ObjectPropertiesDialog – Paste – PasteSpecialDialog – Run – . SaveAsDocument –
. . . OLE OLE
. .
– .
OLE
–
-
.
. . . . . . OLE
.
. SaveToStream – .
.
ё
, .
1. 2. 3. 4. 5. 6. З
TToolBar
, ё
:
. . . . . ,
ё
22.2.1. ,
.
533
Р
22.2.1. Ф
«
а.
а
»
:
procedure TForm1.InsertButtonClick(Sender: TObject); begin OleContainer1.InsertObjectDialog; end;
, (
, 22.1.1),
OLE (
)
. :
procedure TForm1.PropertiesButtonClick(Sender: TObject); begin OleContainer1.ObjectPropertiesDialog; end;
Э
. 22.2.2. .
(
, «
, »
)
.
534
Р
22.2.2. Ф
ё
а
а
а
«В
а а».
:
procedure TForm1.InsertFromFileToolButtonClick(Sender: TObject); begin if OpenDialog1.Execute then OleContainer1.CreateObjectFromFile(OpenDialog1.FileName, false); end;
OpenDialog. , .
bmp, doc
ё
«
xls
.К
doc
,
», OLE
.
Word. :
procedure TForm1.OpenButtonClick(Sender: TObject); begin OleContainer1.LoadFromFile('ole.dat'); end;
З ‘ole.dat’.
. OpenDialog, , «
. »
:
535
procedure TForm1.SaveButtonClick(Sender: TObject); begin OleContainer1.SaveToFile('ole.dat'); end;
З
‘ole.dat’. З OpenDialog. ,
bmp – ole.dat
OLE , ole.dat – PaintBrush.
.Э
bmp
,
PaintBrush. :
procedure TForm1.CloseButtonClick(Sender: TObject); begin OleContainer1.Close; end;
З
OLE , На
ё
.
OLE а
. \При еры\Глава 22\OLE1
,
а
.
22.3.
OLE – .
ё
,
,
, ,
,
,
. а).
ш
. ,
ё
, ё
TListBox
. OLEItemsListBox 22.3.1.
(Да
536
Р
22.3.1. Ф
а
а а
OLE
.
ProgramsID
public TStrings:
public { Public declarations } ProgramsID:TStrings;
public? ,
К
OLE ,
ProgramsID public. OnCreate
Э
.
:
procedure TInsertOLEForm.FormCreate(Sender: TObject); begin ProgramsID:=TStringList.Create; end;
OnDestroy:
procedure TInsertOLEForm.FormDestroy(Sender: TObject); begin ProgramsID.Free; end;
ё OLE
OnShow, :
procedure TInsertOLEForm.FormShow(Sender: TObject); var i:Integer; CLSID:String; Keys:TStrings; reg:TRegistry; begin Keys:=TStringList.Create; ProgramsID.Clear; OLEItemsListBox.Items.Clear; reg:=TRegistry.Create; reg.RootKey:=HKEY_CLASSES_ROOT; reg.OpenKey('\', false); reg.GetKeyNames(Keys); for i:=0 to Keys.Count-1 do begin reg.CloseKey;
537
reg.OpenKey(Keys.Strings[i], false); if not reg.KeyExists('Insertable') then continue; OLEItemsListBox.Items.Add(reg.ReadString('')); reg.OpenKey('CLSID', false); CLSID:=reg.ReadString(''); reg.CloseKey; if reg.OpenKey('CLSID\'+CLSID, false) then begin if reg.OpenKey('ProgId', false) then ProgramsID.Add(reg.ReadString('')) else ProgramsID.Add('[Н т и ти икат а а end; end; Keys.Free; end;
ы]')
TStrings. Э ,
Keys, , OLE
. ProgramsID,
ё,
TListBox.
. .
. . . К HKEY_CURRENT_USER, HKEY_CLASSES_ROOT. .
reg, , OLE , ‘\’. false, .
(OpenKey) ,
, ,
,
Windows .
,
. (
.
GetKeyNames) OLE
Keys.
. Keys.
«Insertable».
,
continue, ,
.
OLE
ListBox: OLEItemsListBox.Items.Add(reg.ReadString(''));
, .
CLSID, .
CLSID ,
. ,
а
[Н .
а
а ё
. ProgramsID,
ё
,
]. ,
–
OLE
. 538
Keys.
В
а
:
procedure TForm1.InsertButtonClick(Sender: TObject); begin InsertOLEForm.ShowModal; if InsertOLEForm.ModalResult=mrOK then OleContainer1.CreateObject(InsertOLEForm.ProgramsID.Strings[ InsertOLEForm.OLEItemsListBox.ItemIndex], false); end;
К
. (
ModalResult OLE
ё
CreateObject ProgramsID
InsertOLEForm.OLEItemsListBox.ItemIndex – ка ыва т а вы InsertOLEForm.ProgramsID.Strings[ т ка] – ь х а ить я и
ё
,
22.3.2. Р
а
22.3.2
Р
,
. ю т к в ти икат .
и к .
.
а
.
.
.
, .
mrOK),
–
,
(
), .
,
–
CreateObject .
try..except..end, .
–
ё « К»,
,
. InsertOLEForm.OLEItemsListBox.ItemIndex ItemIndex , , К.
. ,
–1,
, . ,
. 539
На
а
\При еры\Глава 22\InsertDialog
, а
.
22.4. Э
ActiveX
ё
ActiveX. . Х .
ActiveX , – Internet Explorer.
, , , ActiveX,
,
Windows,
. Windows
,
. Delphi. WebBrowser ( ,
З ,
.З
Internet ).
Delphi
. (
ё
,
WebBrowser ,
а
22.4.1
( ,
).
( Import ActiveX Control 22.4.1.
). ,
Р
1.1).
ш
ActiveX
) .
, Component.
а
Microsoft Internet Controls (Version Install. 540
ActiveX,
Create Unit, ,
.
Install, ,
,
Р
22.4.2.
а а
22.4.2
а
, VCL. ActiveX, .
( , Into new package VCL
.
. VCL
К. . Delphi .
22.4.3.
Р
,
22.4.3 За
я
Delphi
К
,
IE. А .
ё
, "OK"
. File. ActiveX
Close All
,
,
, .
, ActiveX
а
, .
а
, ,
Delphi. WebBrowser,
. Microsoft Internet Controls, . . , , ,
,
. 541
. . . Internet ActiveX WebBrowser1. Win32
WebBrowser ( ) CoolBar,
. Э
, WebBrowser1
. Align
.Щ WebBrowser
alClient. К
. 22.4.4.
Р
Win32
22.4.4. Ф
CoolBar1 ( ComboBox
.
З
-
ToolBar .
Standard CoolBar1, CoolBar1 AutoSize true (
. false). .
.З
) Events
. К
OnKeyDown, -
а
)
,
ComboBox1 (
а
. ComboBox. З
,
, Delphi , :
procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key= VK_RETURN then WebBrowser1.Navigate(ComboBox1.Text); end;
З Enter),
, Navigate ComboBox.
Key VK_RETURN ( . . - WebBrowser1.Navigate(ComboBox1.Text). З Navigate
. 542
,
ActiveX
WebBrowser Delphi
, .
OleVariant. :
procedure TForm1.ComboBox1KeyDown(Sender: TObject; var Key: Word; var p1,p2,p3:OleVariant; begin if Key= VK_RETURN then WebBrowser1.Navigate(ComboBox1.Text, p1, p2, p3); end;
"F9",
.
ComboBox К
,
Enter.
ToolBar1 AutoSize, ShowCaption Flat ToolBar1 ToolBar1 : На а , В 22.4.5.
Р
WebBrowser1
. ObjectInspector. З true (
, С
22.4.5. Ф
false). New Button. ToolButton1. . а .
Caption я ,
а
а
OpenDialog
Dialogs
.
. , ,
Delphi .
:
procedure TForm1.ToolButton1Click(Sender: TObject); begin if OpenDialog1.Execute then begin WebBrowser1.Navigate(OpenDialog1.FileName);
543
ComboBox1.Text:=OpenDialog1.FileName; end; end;
З
ComboBox , .
, ,
,
. . З
На а . К
!
,
.
:
procedure TForm1.ToolButton2Click(Sender: TObject); begin WebBrowser1.GoBack; end;
,
.
WebBrowser1 В ,
. OnClick.
:
procedure TForm1.ToolButton3Click(Sender: TObject); begin WebBrowser1.GoForward; end;
"
"
: "С
я
а
,
ш а ".
.
:
procedure TForm1.ToolButton4Click(Sender: TObject); begin WebBrowser1.Stop; end;
:
procedure TForm1.ToolButton5Click(Sender: TObject); begin WebBrowser1.Refresh; end;
,
,
а
:
procedure TForm1.ToolButton6Click(Sender: TObject); var
544
PostData, Headers:OLEvariant; begin WebBrowser1.ExecWB(OLECMDID_PRINT,OLECMDEXECOPT_DODEFAULT, PostData, Headers); end;
З
,
,
, ё
,
. OLE .
IE. ,
. "F9",
.
? З . StatusBar false). . :
. ! SimplePanel true ( Events
, . Win32 WebBrowser1 OnStatusTextChange
procedure TForm1.WebBrowser1StatusTextChange(Sender: TObject; const Text: WideString); begin StatusBar1.SimpleText:=Text; end;
З
Text (
), StatusBar1.
ё
. . ProgressBar Align alBottom, WebBrowser1 Events OnProgressChange
Win32. . . :
procedure TForm1.WebBrowser1ProgressChange(Sender: TObject; Progress, ProgressMax: Integer); begin ProgressBar1.Max:=ProgressMax; ProgressBar1.Position:=Progress; end;
З
ProgressBar1 (
)
(ProgressMax)
(Progress)
. , ImageList 22.4.6. "Add",
IE. .
, 16 16. . 545
. К.
6
Р
22.4.6 Д
а
(6
6-
).
а
ToolBar1
Images .
ImageList1. , ImageIndex
, .
С
:
0.
, ImageList,
я ImageIndex ImageList1. HotImages. ,
. ,
. .
F9, 22.4.7
Delphi
.
Р
22.4.7 Р
а
а
546
. К WebBrowser1.
, -
,
. ,
ё
\При еры\Глава 22\WebBrawser
ш
, . На
а
, а
,
.
22.5.
COM
COM (Component Object Model) – .
COM
( ),
, ,
-
. -
Microsoft
. , , ).
, , COM
. ( ActiveX IE,
IE.
.
, .
COM
.К
, ,
. COM. а
,
ш
(
DLL , ).
EXE
. .
ё
. (
DCOM (Distributed COM). , , ( Windows), . ) ё GUID? Э , . GUID. З
К
Ч
. А
,
,
COM .
. З ё GUID (globally unique identifier -
, . COM
GUID
ё
, ё
ё
). COM .
,
ё
, ?
IE
Excel?
,
,
. COM . ,
. 547
IUnknown. К Delphi , TObject . ё
COM I( IUnknown
COM Interface.
Т),
, Delphi. Э
. : QueryInterface – COM /
, ,
COM –
. К
-
,
. , _Release – COM
_AddRef .
.
, , К
. . Ч
ё
,
, .
,
ё
.
ё
(
_AddRef, ё
_Release),
1. К
1
ё
,
0,
-
. Delphi
IUnknown
:
IUnknown = interface ['{00000000-0000-0000-C000-000000000046}'] function QueryInterface(const IID: TGUID; out Obj): HResult; stdcall; function _AddRef: Integer; stdcall; function _Release: Integer; stdcall; end;
К
ё
,
,
interface. .
GUID COM
, IUnknown .
COM
. К .
, ,
COM
. Delphi ,
(
.З
File->New->Other. ActiveX
22.5.1).
COM
.
COM –
,
.
, .
,
COM, , COM
Delphi . .
548
Р
а я COM
22.5.1
22.6.
ActiveX – Active Form. Э
,
, .
Internet. Active Form – COM OCX,
ё
COM .
OCX . .
Р
22.6.1. С
а
. ActiveX. З ,
К.
,
ActiveX
22.6.1.
File->New->Other ActiveForm ё
: 549
New ActiveX Name –
ActiveX
.
, .
ActiveFormX. Implementation Unit – Project Name – , . Threading Model – Make Control Licensed – Include Version Information – Include About Box – CheckBox« а
, . . «
.
а ». (SimpleActiveX)
(SimpleActiveProj1).
,
К
».
.
, .
VCL
ё
,
. . .
22.6.2
22.6.2. С
а
Р
,
ё
.
ActiveX
, .
( 22.6.3). З SimpleActiveProj1.ocx, 1. SimpleActiveImpl1 – , 2. SimpleActiveProj1.pas –
.
: . .
. З
,
Delphi. ,
.
Р
а
22.6.3.
,
, OCX
.
Ctrl+F9. , 550
.
ё
,
COM
ё register ActiveX Server
. Regsvr32.exe И яФа
Run . :
а
.
HTML Web Deployment
IE. Option Internet,
Project, . 22.6.4.
Р
Target Dir Target URL - А , HTML Dir -
а
22.6.4.
а
:
ё
,
.
ё
,
OCX.
OCX. К
,
HTML-
,
. Use CAB compression -
ocx
CAB
. .
ё Auto increment release number – З К. З . . Э . .
. . Target Dir, Target URL Target Dir HTML Dir ,
HTML Dir
, . . 551
.З
HTML , Internet
К
Delphi
Web Deploy
Delphi ,
22.6.5.
, IE.
,
, .
ActiveX
,
, ActiveX
ё IE
Р
22.6.5. Р
а
ё
. Ч
.
а
а HTML- а а
,
ActiveX
ё
. .
, ActiveX.
ё
,
ActiveX
,
. :
. К
1. А
ё
,
, ? -
. А
. , Option). Control…
ё
IE
( IE
“Component” , Install. Delphi
,
ё .
? ocx Target URL Web Deployment ё . . Import ActiveX 22.4.6. ,
IE. 552
.
ActiveX ,
.
Р
На
а
22.6.6. Р
а
а
\При еры\Глава 22\ActiveForm
, а
ш
.
22.7.
ActiveX ,
OLE,
ё
а HTML- а а
ActiveX . COM
-
ActiveX. :
1. 2. Э 3. 4. 5. ё
ActiveForm -
.
ActiveX. – ActiveX
, . DAX).
DAX
Borland
. ,
- Delphi ActiveX ( Delphi 553
ActiveX ё .
. ,
DAX. Х
ActiveX
DAX File->New->Other К.
Delphi .
ActiveX ActiveX Control. ActiveX Control Wizard,
22.7.1.
Р
22.7.1.
а
а я
а ActiveX
ActiveX Control Wizard : VCL Class Name , TPanel. New ActiveX Name ActiveX Implementation Unit ( Project Name ( Threading Model . Make Control Licensed . Include Version Information Include About Box " " К", Delphi
ActiveX. (
). ) ) .
а
"
З
Get_ ?
ActiveX
, TPanel. PanelImpl1.pas. . Set_. З
,
,
Delphi ,
. ,
, Delphi - Set_Caption(const Value: Caption
Get_Caption, WideString). ,
. .
Type Library
View (
. Ч
ё
22.7.2). 554
Р
К
а
22.7.2.
-
,
.
:
Attributes
Name GUID Version LCID Help String - К Help File Help Help Context -
(
)
, None Restricted - З . Control Hidden DispInterface IDispatch. Nonextensible ActiveX) . Dual . OLE Automation Source -
: .
ActiveX. .
,
IDispatch ( , IDispatch, . VARIANT,
, .
Bindable Request Edit -
OnRequestEdit 555
: (
-
)
IDispatch,
.
IDispatch DispID.
Р
22.7.3 За а а Parameters
.
IPanelX
. Delphi Delphi Ч
SetCap, Parametrs ( 22.7.3) LPSTR, Modifier Modifier :
Caption 22.7.4. З
Р
З In Out RetVal -
ё
Method1.
ё
22.7.4. И
SetCap. SetCap.
[in]. ,
а а
а Modifier
: , , PanelImpl1.pas SetCap
:
procedure TPanelX.SetCap(Caption: PChar);
556
begin FDelphiControl.Caption:=Caption; end;
, Caption SetCap. Caption
FDelphiControl TPanel. SetCap Set_Caption.
,
Р
22.7.5). Delphi MyProp.
TPanel,
22.7.5
.К (
, ,
New Property : PanelImpl1
"read | write" . :
,
function TPanelX.Get_MyProp: Integer; begin end; procedure TPanelX.Set_MyProp(Value: Integer); begin end; ,
З .
. , (Run->Register ActiveX Server). (Component->Import ActiveX Control) , .Ч
.
, , .
ActiveX
PanelX.
: 1. 2. 3.
ё
:
procedure TForm1.Button1Click(Sender: TObject); begin PanelX1.SetCap(' ив т'); end;
557
На
а
На , а а « а а я х . Да
а
\При еры\Глава 22\Control
,
ш
.
а
а я» а PWS.doc». В я WEB а. Э COM, я ш а аа я «Д
ё
ш
а
а
а я
я ш а WEB
я я.
а ,
558
23. 23.1. 23.2 23.3 К 23.4
............................................................................................................559 Delphi .....................................................560 Clipboard ............................................................................................................561 . ............................................................................................562 ............................................566
Глава 23. Б фер о
К
а
«К
»
.
«В
а
е а
»
, . ,
, . ,
. TEdit,
ё
. . Windows .
,
Windows .
ё
.
559
23.1.
Delphi Delphi
. ,
-
, .
, 1. CutToClipboard – 2. CopyToClipboard – 3. PasteFromClopboard –
: ; ; . .
:«
», «К
, »
«
». 23.1.1.
TMemo.
Р
23.1.1 Ф
а
а
.
«
»
:
procedure TForm1.ToolButton1Click(Sender: TObject); begin Memo1.CutToClipboard; end;
З OnClick
«К
CutToClipboard . а »
Memo1. Э :
procedure TForm1.ToolButton2Click(Sender: TObject); begin Memo1.CopyToClipboard; end;
560
З CopyToClipboard. ё
,
Memo1.
PasteFromClipboard
Memo1. «К «
».
»
. Memo1,
.Ч
, ,
«
ё .
»
, ,
.
ё
Memo1.
. На
ш
а
,
\При еры\Глава 23\Memo Clipboard
а
.
23.2
Clipboard Delphi
,
Clipboard. TApplication . . , ,
( Clipbrd
uses .
, TPrinter),
. OnClick
Clipbrd. :
uses
«К
»
Clipboard.SetTextBuf(PChar(Memo1.SelText));
З
SetTextBuf Memo1 PChar. «
Clipboard. Э . Memo1.SelText.
»
–
:
Clipboard.SetTextBuf(PChar(Memo1.SelText)); Memo1.SelText:='';
« Memo1. (
». )
, «К
OnClick . «
»
».
:
Memo1.SelText:=Memo1.SelText+Clipboard.AsText;
561
AsText ё
Clipboard
. .
. . К . Clipboard: TPersistent. К
ё
, Clipboard ё Assign –
,
TImage. , Clear – HasFormat –
. . ,
.
: CF_TEXT CF_BITMAP CF_METAFILEPICT CF_PICTURE CF_COMPONENT -
. . . TPicture. . ,
,
. :
procedure TForm1.InfoButtonClick(Sender: TObject); begin if Clipboard.HasFormat(CF_TEXT) then Application.MessageBox(' ит т к т', 'В и а и !'); if Clipboard.HasFormat(CF_BITMAP) then Application.MessageBox(' ит ка ти к ', 'В и а и !'); if Clipboard.HasFormat(CF_METAFILEPICT) then Application.MessageBox(' ит в кт ю ка ти к ', 'В и а и !'); if Clipboard.HasFormat(CF_PICTURE) then Application.MessageBox(' ит ъ кт ти а TPicture', 'В и а и !'); if Clipboard.HasFormat(CF_COMPONENT) then Application.MessageBox(' ит к т', 'В и а и !'); end;
SetComponent –
. ,
.
SetTextBuf -
. .
PChar, На
а
\При еры\Глава 23\Clipboard
, а
ш
.
23.3 К ё
. .К
,
, TImage.
, TImage. 562
Р
23.3.1 Ф
а
,
а
«К
«
». .
TImage, 23.3.1. «К
OnClick
»
:
procedure TForm1.CopyButtonClick(Sender: TObject); begin Clipboard.Assign(Image1.Picture); end;
З Picture
Image1. TPersistent, 23.3.2,
Р
Assign Picture
23.3.2 И а х я
,
TPicture, Assign. TPicture.
а TPicture
«
»:
procedure TForm1.PasteButtonClick(Sender: TObject); begin Image1.Picture.Assign(Clipboard); end;
563
З
Picture Assign. ,
,
,
,
«
»
,
. :
private
private { Private declarations } FClipboardOwner:HWnd; procedure WMDrawClipboard(var Msg: TWMDrawClipboard); message WM_DRAWCLIPBOARD;
HWnd. Э ,
FclipboardOwner . , ,
, Handle. ,
HWnd, З TWMDrawClipboard. Э
. WMDrawClipboard WM_DRAWCLIPBOARD. . ,
message . ,
Delphi.
Windows Source/Rtl/Win, Messages.pas. WM_ (Windows Message –
Delphi, Windows). , .
Ctrl+Shift+C .
, Delphi :
ё
procedure TForm1.WMDrawClipboard(var Msg: TWMDrawClipboard); begin SendMessage(FClipboardOwner, WM_DRAWCLIPBOARD, 0, 0); Msg.Result := 0; ClipboardChanged; end;
,
. ClipboardChanged.
,
. :
procedure TForm1.ClipboardChanged; var I: Integer; begin PasteButton.Enabled := False; for I := 0 to Clipboard.FormatCount - 1 do begin
564
if Clipboard.HasFormat(CF_BITMAP) then begin PasteButton.Enabled := True; Break; end; end; end;
«
» . Clipboard.FormatCount. CF_BITMAP, «
,
0 »
. , OnShow
.
–
ё
:
procedure TForm1.FormShow(Sender: TObject); begin FClipboardOwner := SetClipboardViewer(Handle); ClipboardChanged; end;
SetClipboardViewer. )
( .
,
, ,
WMDrawClipboard. ClipboardChanged, ,
ё
,
. ,
, .
Р
23.3.3
а
а
.
ё. 23.3.3. 565
TPersistent. « ». З
. К «
На
а
а
, .
»
\При еры\Глава 23\Image
,
ш
.
23.4
. ,
ё
. CF_BITMAP, CF_METAFILEPICT,
CF_TEXT, . .
, ,
. Delphi –
А
.А
, . TClipboard . .
, .
. ё
, Delphi
(File->New->Unit). ClipboardFormatUnit.
, –
:
unit ClipboardFormatUnit; interface implementation end.
TLineData
interface TLineClipboard.
type
type TLineData=record Name:String[100]; LastName:String[100]; Bothday:String[10]; Age:Integer; Telephone:String[15]; end; TLineClipboard=class
566
public LineData:TLineData; procedure CopyToClipboard; procedure PasteFromClipboard; end;
.
TLineData . К
,
,
Clipboard
,
.
ё
.Ч
,
. З Delphi.
,
(TLineClipboard=class).
,
– TObject, ,
TObject. . :
TLineData ,
type
var
var CF_PERSONDATA:word;
.
, .
«end.»
,
:
initialization CF_PERSONDATA:=RegisterClipboardFormat('CF_PDATA'); end.
З
initialization, .
Э
CF_PERSONDATA
RegisterClipboardFormat. .
– .
ё
Formats
,
,
Clipboard. .
procedure TLineClipboard.CopyToClipboard; var Data:THandle; DataPtr:Pointer; begin а я ь а ые //Вы е яе Data:=GlobalAlloc(GMEM_MOVEABLE, SizeOf(LineData));
567
try DataPtr:=GlobalLock(Data); Move(LineData, DataPtr^, SizeOf(TLineData)); //За яе е е а Clipboard.Open; Clipboard.SetAsHandle(CF_PERSONDATA, Data); Clipboard.AsText:=LineData.Name+#13#10+LineData.LastName+#13#10+ LineData.Bothday+#13#10+IntToStr(LineData.Age)+#13#10+ LineData.Telephone; Clipboard.Close; GlobalUnlock(Data); except GlobalFree(Data); end; end;
: Data –
, .
DataPtr –
. Data
Data
GlobalAlloc. Э :
ё 1.
.
( ) GMEM_MOVEABLE, .
З
. , ,
, .
.
. З
2.
SizeOf
LineData.
,
GlobalAlloc DataPtr.
ё
,
. , Move, LineData) –
. (
– DataPtr).
– .
(
.
ё
. .
. ( SetAsHandle. 1. 2.
– Open
CF_PERSONDATA). : . . ,
,
,
ё
, AsText #13#10,
, . Clipboard. #13
, #10 568
ё
.
.Ч
, ,
ё, Close .
, GlobalUnlock, GlobalFree)
. .
Clipboard. ( -
, ,
except..end. , ё , PasteFromClipboard:
. .
procedure TLineClipboard.PasteFromClipboard; var Data:THandle; DataPtr:Pointer; begin Data:=ClipBoard.GetAsHandle(CF_PERSONDATA); if Data=0 then exit; DataPtr:=GlobalLock(Data); Move(DataPtr^, LineData, SizeOf(TLineData)); GlobalUnlock(Data); end;
GetAsHandle. Э . , ё . ё , . Move LineData ( , GlobalUnlock. ё, . . ClipboardFormatUnit. : 1. «К а 2. К StringGrid. true, 3. Memo
, GetAsHandle .
,
,
Data (
)
).
, , , » «В ё
а
». goEditing
Option
. . 23.4.1.
ToolBar, -
, .
569
Р
23.4.1 Ф
а
ClipboardFormatUnit,
uses ё
а
. OnClick
«К
»
:
procedure TForm1.CopyButtonClick(Sender: TObject); var LineClipboard:TLineClipboard; begin LineClipboard:=TLineClipboard.Create; LineClipboard.LineData.Name:=StringGrid1.Cells[0, StringGrid1.Row]; LineClipboard.LineData.LastName:=StringGrid1.Cells[1, StringGrid1.Row]; LineClipboard.LineData.Bothday:=StringGrid1.Cells[2, StringGrid1.Row]; LineClipboard.LineData.Age:=StrToInt(StringGrid1.Cells[3, StringGrid1.Row]); LineClipboard.LineData.Telephone:=StringGrid1.Cells[4, StringGrid1.Row]; LineClipboard.CopyToClipboard; LineClipboard.Free; end;
TLineClipboard – ClipboardFormatUnit.
var , . LineData
LineClipboard
. , Free. «
CopyToClipboard , »
LineClipboard. ,
. :
procedure TForm1.PasteButtonClick(Sender: TObject); var LineClipboard:TLineClipboard; begin
570
LineClipboard:=TLineClipboard.Create; if Clipboard.HasFormat(CF_PERSONDATA) then begin LineClipboard.PasteFromClipboard; StringGrid1.Cells[0, StringGrid1.Row]:=LineClipboard.LineData.Name; StringGrid1.Cells[1, StringGrid1.Row]:=LineClipboard.LineData.LastName; StringGrid1.Cells[2, StringGrid1.Row]:=LineClipboard.LineData.Bothday; StringGrid1.Cells[3, StringGrid1.Row]:=IntToStr(LineClipboard.LineData.Age); StringGrid1.Cells[4, StringGrid1.Row]:=LineClipboard.LineData.Telephone; end; LineClipboard.Free; Memo1.Lines.Clear; Memo1.PasteFromClipboard; end;
,
LineClipboard,
. CF_PERSONDATA ( PasteFromClipboard. LineData LineClipboard.
, ),
Memo1 . Э
PasteFromClipboard
( ). Clipboard. ,
AsText
,
, 23.4.2
. .
StringGrid Memo.
Р
На
а
, а
23.4.2. Р
а
а
а
\При еры\Глава 23\New Format
ш
. 571
572
24. 24.1. 24.2.
..................................................................................573 .............................................................................................................574 ...................................................................................................................578
Глава 24. о ол итель ая и фор ация Delphi. , , .
, ,
. , .
, , Delphi,
,
.
. ,
, .
Delphi ё
.
573
24.1. ё
. .
ё ё
Т
а
ё
а
ё
Delphi
. а я
, .
Delphi
,
,
Э
–
,
. F5.
, . ,
.
24.1.1 .
,
Р
24.1.1. Т
а
, .
,
а я.
100% .Э
. . .
ё
ё .
:
procedure TForm1.Button1Click(Sender: TObject);
574
var i, j:Integer; begin i:=10; j:=20; i:=i+j; end;
(Ctrl+F9). Value assigned to ‘i’ never used (
24.1.2). Э
, Delphi
. , .
Р
24.1.2. С
а
а
а
а.
. Э
, ,
.Э
. ,
Delphi
, ё
. .
, , ,
. : procedure TForm1.Button1Click(Sender: TObject); var i, j:Integer; begin i:=10; j:=20; i:=i+j; if i>0 then exit; end;
575
З
i.
ё
,
. ,
ё
, i
ё
,
.
,
. .
З
Delphi. Ч F8. –
ё F8,
ё
ё
,
ё ,
,
F7, .
ё
.
.
, ,
ё
F9. .
,
Ctrl+F2 .
Run
Program Reset
, Ctrl+F7 , ,
Modify. Ч
а
24.1.2
Evaluate/Modify . , Button1Click.
. .
Run.
Evaluate.
Р
10
ё
,
Evaluate/Modify 24.1.2. , New value
ё 10
: i+10. Result
а
,
Ctrl+F7 Enter
ё Delphi. . Expression Evaluate, 20,
. F8, Evaluate/Modify i
20.
576
Expression Evaluate. i i true,
Result
ё
i. New Value 15. Expression 10. false.
15
Modify. Evaluate.
i=10. З 10, .
.
Ctrl+F2, F9 .
ё Ctrl+F7,
Delphi i Result
.
. ё , inaccessible here due to optimization. Э ): ая i
F9
Delphi. ё
: Variable 'i' ( ё а а.
а ё
:
i:=10;
i
10, .
, F8
i.
. .
: if i>0 then exit
j.
.Э
, .З
,
Delphi
ё
. . Add Watch
Ctrl+F5
Run.
Watch,
ё
(
24.1.3).
Р
ё,
24.1.3.
, .
F9
Watch
ё
,
. ( i
).
Watch. 577
ё
i (
Watch
24.1.4). –
,
.З
RadioButton.
ё
. Watch. .
Р
24.1.4.
Watch
Watch
,
. F8
i. На
а
а
\При еры\Глава 24\ тлад а а .
,
ш
24.2. ё Delphi.
,
,
, . ,
.А ,
1000
?
,
. За лад и -
.Э Ctrl
К
( ё
.
)
Ctrl+Shift+
. ,
.
, . Ctrl
ё
. 24.2.1.
578
Р
а
24.2.1.
а
а
а а
З
. Щё Toggle Bookmarks. .
. 1 ,
. Ч
ё
. .
Ко ирова ие тро . Э
. .
). Э (clipboard)
Ctrl
Shift+ С (
K,
ё
Code Explorer
1. 2. 3.
, Code Explorer TForm1 – . Variables/Constants – Uses –
.
,
,
ё
ё
:
. . var.
ё New.
Variables/Constants ,
:
H: Integer
579
H ,
var 24.2.2
. .
Р
ё
24.2.1.
а
а
а а
, ,
. .
(
а
ё
, TForm1
).
580
24.3. 24.4. К 24.5. 24.6.
..............................................................................................573 Shareware ...............................................................583 ..................................................................................586 .....................................................................593
24.3.
К
,
ё
,
.
. А
, ? ,
ё
. InstallShield Express. InstallShield Express
ё
Delphi. . З
, ,
ё, 24.3.1. .
,
,
,
,
.
,
.
,
,
ё
,
,
.
Р
24.3.1. Г а
а
InstallShield Express
File
New.
.
. ism
,
К.
.
573
Р
24.3.2. Г а
а
а я
а
, ,
24.3.2. .
, ,
. :
Organize Your Setup –
ё
.
ё . General Information – , 24.3.3). :
Р
ё
,
, ,
ё
. , ( ,
24.3.3. С
а
а General Information
574
1. Author –
.
. Authoring Comments – К Subject – Product Name – Display Icon – Product Version – INSTALLDIR –
2. 3. 4. 5. 6. 7.
ё
. ,
.
. . . ,
[ProgramFilesFolder]\Your Name\Default. З [ProgramFilesFolder] , Program Files , . (Your Company Name). 8. Publisher/Product URL Product Update URL – . 9. Publisher – ё . 10. Support Contact – e-mail ( e-mail). –
,
. Company
, . З
. ,
e-mail. Features – .
, , 24.3.4.
Р
24.3.4. С
З
а
а Features
, .
(
). Щё
Ins,
ё
– Always Install ё Organizer.
–
–
Always Install. ,
,
. –
. 575
ё Description Required – Visible –
. . .
Always Install – ,
Organizer – Visible and Collapsed, а а Setup Types – . , 24.3.5. : Typical ( ), Minimal ( ComboBox, . ё , ,
, . ,
. , ), Custom (
). – .
. , .
, Typical
, Minimal
. , . . .
Custom ,
ё
,
.
Р
24.3.5. С
Specify Application Data – : Files – .
:
а
а Setup Types
.Э
,
, ,
24.3.6.
576
Р
24.3.6. С
а
а Files
. : 1. Always Install. 2. Organizer. Ч
.
,
ё
,
.
. ,
. Щё
, Destination Computer [INSTALLDIR].
Predefined Folder
Show
.
,
,
Windows, ё Destination Computer [WindowsFolder]. , Windows. Features ( [INSTALLDIR] Files and Features – ( 24.3.7).
.
Show Predefined Folder
)
Organizer. .
577
Р
24.3.7. С
а
Objects/Merge Modules – . ё , 24.3.8). ,
а Files and Features
, , ( MS Access. DAO. .
ё .
,
ё
Р
24.3.8. С
.
а
а Objects/Merge Modules
ActiveX,
. 578
ActiveX
.
Configure the Target System –
,
,
. Shortcuts/Folders –
, . 24.3.9.
Р
24.3.9. С
а
а Shutcuts/Folders
,
ё
Program Menu New Folder, ё
. . New Shortcut,
. З .
ё
Description – Feature – Organizer, . Arguments – Target – ,
. .
: «
»,
,
. З ,
, [INSTALLDIR]\organizer.exe. Icon File – Icon Index – , 0, Run – – Normal Window. Working Directory –
.
. .З , [INSTALLDIR]. ,
:
( ё ODBC Resources – ODBC . Э
.
.
,
, ё Key
ё
,
, Registry – .
.
. , ё
. ).
579
ADO. DAO,
MS Jet .
ODBC
, , .
Р
К
24.3.10. В
ODBC
ODBC
а
а
,
. . ini
.
INI File Changes – .
, . .
File Extensions – .
, ,
Р
24.3.11.
а
а ш
24.3.11.
я
580
Ч
ё
,
File Extensions . ,
. File . ,
.
Customize the Setup Appearance – , Dialogs – , . ,
, . ,
24.3.12. . .
,
.
Slash Bitmap –
, .
,
Splash Bitmap . .Э
Install Welcome –
. : 1. Bitmap Image – 2. Show Copyright – 3. Copyright Text –
,
. Copyright. Copyright.
Р
а
24.3.12.
License Agreement – 1. Banner Bitmap – 2. License File – Readme – . 1. Banner Bitmap – 2. Readme File –
.
а ш
я
: . .
: . . 581
–
Customer Information – , , . 1. Banner Bitmap – 2. Show Serial Number – 3. Serial Number Template – , (
: . .
. З .
,
) «###-###». «sernum»,
,
. : «sernum###-
###». 4. Serial Number Validation DLL – ё 5. Validate Function – . 6. Success Return Value – , . 7. Retry Limit – , . 8. Show All Users Option – . Windows NT/2000/XP , ё .
DLL .
,
,
Destination Folder – .
,
Database Folder –
,
Setup Type – , Custom Setup –
,
. .
–
,
.
,
, Show
. Change Destination . Ready to Install – Setup Progress – Progress Bar
true,
,
. .
Show
false, .
Setup Complete Success – : 1. Banner Bitmap – 2. Show Launch Program – . 3. Program File – 4. Command Line Parameters – . 5. Show Readme – 6. Readme file -
Progress Bar,
. .
,
. , . . 582
Define Setup Requirements and Actions – . Requirements –
,
,
.
. ,
ё .
ё
.
Prepare For Release – Build You Release –
, .
.
F7 Build
Build.
Test You Release – . Distribute You Release – .
24.4. К
Shareware , . ".
: " ,
-
, ,
.А
. ? .
К
ё
?
.
?
, .
, ,
, . :
1.
.
,
. ?
, ,
,
,
, .
, 2.
. .
ё
,
.
3.
. .
plug-in Э
ё
.
,
PhotoShop,
, ё
.
ё
.
. ,
,
,
ё
.Ч : CyD GIF Studio Pro -
, GIF
ё ,
ё
.
ё
, 583
. Э
, .
, ё
. .
,
,
ё
: Linux Windows . . ё ,
, 4.
.
.
,
, ,
-
, .
, .К
, Windows
,
, .
5.
-
.
,
. . .
Э
,
ё
.
ё
.
,
.
,
. ,
,
Microsoft,
,
Microsoft
,
. .
.
,
.
: 1. ё 2.
. . . , -
,
. .
,
,
ё
. .
:" .А
ё
".
ё
,
,
, ,
ё
.
,
,
. .
К
, (
ё, )
ё
). (
,
. ,
"
",
ё
, ,
.
. 584
. ё
.
ё
( ,
ё
). Ч ё .
.
,
,
,
.
. ( .
,
)
-
,
ё,
.
ё,
. Где раз ещать ё
ё
-
.
,
. К
,
, .
ё
. .
, .
,
, RU.
.
,
.
,
99%. , : http://members.home.net/djosborne1/. З . , ,
. -
. .
ё
, . http://www.crosswinds.net/ . . http://www.webjump.com/ . Shareware , . http://www.freeservers.com/ . http://www.tripod.com/ . http://www.virtualave.net/ .
. , ,
.З
1
,
,
,
. ,
, .
Ка ре ла ировать , ё : http://download.cnet.com/.
, З
. Submint file. ,
(
24.4.1). 585
Р
24.4.1. Ф
З
а
а
ё
а
а www.download.com
. (
.
,
2-
),
,
.
,
,
. 100
download.com , , download.com ё
.
ё .
download.com, ё .
ё
download.com ( Ка
.
. , 5-10
, ).
ол чать де ь и ё
, .
.
ё
, .
. К
?
,
,
.
, .
,
9-15
. . .К .
.
,
. www.regnow.com. ё ,
, ,
ё
, , .
24.5.
586
. , .
Э
,
–
. ,
. , -
. Delphi
?А ,
,
.
Delphi
. ,
.
.Э
,
,
.
-
. .
,
. -
,
.
,
. , ? VCL (
1. MFC),
: Visual C++ .
WinAPI. К . WinAPI.
2.
. VCL
300
30-50.
, WinAPI.
З
,
Про ра
.
ирова ие а WinAPI , . Barland
.
. , ( , Project1.exe).
API
Delphi, View->Project Manager). З ( .
587
Р
24.5.1. Project Manager
View Source (
Project
,
View Source). Project1.dpr. :
program Project1; uses Forms; {$R *.res} begin Application.Initialize; Application.Run; end.
ё
. Information for Project1.
.
Project .
24.5.2.
588
Р
а
24.5.2.
.
None. А . 370688 .
.
!!! ?
, .
, uses
, ,
,
,
.
. ,
Forms. Х
,
, end
begin
, ,
Application, Initialize Run, TApplication, Ч –
Forms. Э
,
Application.
WinAPI. А
,
. Forms WinAPI
Windows. Delphi.
, begin :
.
end
program Project1; uses Windows; Begin end.
. З .
8192
(
24.5.3).
.
589
Р
24.5.3. И
а
З
WinAPI
.
. uses. . Delphi
Delphi. З
, Win. Windows.
Rtl API
, Source, , ,
.
-
,
( .
).
,
,
.
winsock.pas. З )
WinAPI (
,
winsock
uses .
, ,
.
, ,
-
.А ?
:
program Project1; uses Windows; var Msg: TMsg; Begin //С
а
е ь
ав я ь в
// Да ь е и е , ы а ави ви е ь в е и ь и ь и е . // а я и веч и е while GetMessage( Msg, HInstance, 0, 0) do begin TranslateMessage(msg); DispatchMessage(msg); end; end.
590
С атие ро ра WinAPI, -
. www.cydsoft.com/vr-online/download.htm Programs ( ASPack.exe). .exe .dll.
ASPack,
Р
24.5.4. Г а
ASPack
ASPack, Next
. ,
. 24.5.4.
: 1. Open File. 2. Compress. 3. Options. 4. About. 5. Help. Open File Compress
- pen.
. К
, ,
(
24.5.5).
591
Р
24.5.5. С а
а а
, , ASPack
( ,
Р
, .
bak.
24.5.6), .
,
.
24.5.6. На
ASPack
. -
,
.
WinZIP, -
.
,
, 592
. ,
ASPack
,
.
,
,
.К
,
,
.
, !!! К
,
.Э
.
, -
, К
-
,
.
,
.
. ,
WinAPI ,
.А
-
, WinAPI,
.
, ё
.К
60-70% . « » disassembler
-
, .
.К
,
,
, -
.
24.6. . К
.А
,
. К
, ?
,
?
.
,
, ,
,
. ,
,
,
" ".
:).
, MS Word, ? -
, .А -
!!! ,
).
,
- -
(
?
( )
,
. ,
.
,
, .
,
Х
.
,
,
,
,
. ,
,
,
.
,
? . 593
MS!!! ,
.
.
, ,
, . .
.
, ,
ё
,
ё
!!! .
, ё
, ё.
, ,
. ,
,
,
.
К
. , ,
, . ,
,
.
, .
ЗАКО а
№1 а
а
. Да
а
,
Э
а , .
а
я,
а
. .
. .
Ч
2+2, , ,
ЗАКО За
№2
а а ш .
а а
а
а
,
а,
. а а а а
х а ш
а
х
а а .
х
а
я а -
.
.Е а
1995-96Doom.
,
.Ч
,
.
,
,
. ,
, .
, AI.... 320 200 ( ....
, , ?
,
.К )
,
. . 10%
-
,
-
.
.
, .
AGP 594
PCI
S3
PCI
1
.
.
,
,
.
. ,
К
.
,
,
. 10%
? ,
. .
Сла ые е та о
ьютера , S3,
32
5400
32 . : "
,
. , DIMM, " :).
. , Delphi, Photoshop
128,
256 .
, .
, . , -
.
.
, .А
, . ЗАКО С
х
х.
№3 я
ша
я
я
а
а я
а . На
а
а
а .
( 1. А:=А*2; 2. :=1; 3. Х:=Х+ ; 4. := +1; 5. Options) Auto-create forms ё 25.3.4.
Available forms ( .
25.3.4). TreeView 620
ListView (clClient). 1. 2. 3. 4.
ToolBar
:
. . . .
Р
25.3.4 Ф
ListView 1. GridLines – true. 2. ViewStyle – vsReport. 3. Name - ResultView. ё « » « AutoSize true. type
а
а
а я
а
:
Columns ». :
PQuestion=^TQuestion; TQuestion=record Name: String[255]; ResultCount:Integer; ResiltText: array[0..10] of String[255]; ResiltValue: array[0..10] of boolean; end;
:
TQuestion Name – ResultCount ResiltText – ResiltValue –
. . . ,
,
.
PQuestion, TQuestion. 621
:
public
public { Public declarations } ProjectName:String[255]; QuestionList:TList;
. PQuestion.
ProjectName
Э
OnShow
QuestionList OnClose. К
.
ё
, « 25.3.5.
Р
З
»
25.3.5 Ф
TEdit, .
«Д
а
а
«
а
».
а
TCheckListBox »
:
procedure TEditQuestionForm.NewResultButtonClick(Sender: TObject); var Str:String; begin Str:=''; if InputQuery('Н вы тв т', 'Вв ит т к т тв та:', Str) then ResultListBox.Items.Add(Str); end;
З
.
. З .
InputQuery. :
25.3.6 622
1. 2. 3.
, ,
. ,
.
, .
Р
25.3.6 Ф
а
а
а я
а
К,
true,
ё «У а
ResultListBox. :
»
procedure TEditQuestionForm.SpeedButton1Click(Sender: TObject); begin if ResultListBox.ItemIndex-1 then ResultListBox.Items.Delete(ResultListBox.ItemIndex); end;
. ,
–1, .
ItemIndex, , ResultListBox.Items.Delete
.
Р
ё OnClick
25.3.7
а
а я
а
.
QuestionResultForm. З : 623
procedure TQuestionResultForm.NewButtonClick(Sender: TObject); var NewQuest:PQuestion; i:Integer; begin //Очища е и е а EditQuestionForm EditQuestionForm.ResultListBox.Items.Clear; EditQuestionForm.QuestionEdit.Text:=''; //О а а а а е EditQuestionForm.ShowModal; if EditQuestionForm.ModalResultmrOK then exit; //С а в а я и в NewQuest:=New(PQuestion); NewQuest.Name:=EditQuestionForm.QuestionEdit.Text; NewQuest.ResultCount:=EditQuestionForm.ResultListBox.Items.Count; //Д ав я в ва иа ы ве в for i:= 0 to NewQuest.ResultCount-1 do begin NewQuest.ResiltText[i]:=EditQuestionForm.ResultListBox.Items.Strings[i]; NewQuest.ResiltValue[i]:=EditQuestionForm.ResultListBox.Checked[i]; end; QuestionList.Add(NewQuest); //Д ав я вы е е в е ев в в with QuestionTreeView.Items.Add(nil, NewQuest.Name) do begin ImageIndex:=0; Data:=NewQuest; end; end;
NewQuest. Э ТQuestion. К ,
ё
EditQuestionForm. К,
ё
, .
PQuestion, ,
New. Э
.
.
,
PQuestion, .
–
,
NewQuest. , ,
Dispose Dispose(NewQuest). ,
, , QuestionList TList. NewQuest, . К
ё ё
ё
ё ,
: QuestionList.Add(NewQuest);
624
. .
:
with QuestionTreeView.Items.Add(nil, NewQuest.Name) do begin ImageIndex:=0; Data:=NewQuest; end;
ё
. QuestionTreeView.Items.Add. .
Add nil .
. .
Add with, .
,
ImageIndex:=0 – ImageList, Images . Data:=NewQuest – .
begin
.А
end : 0.
. –
Data
,
.Э .
,
. OnChange
NewQuest,
Tag
:
procedure TQuestionResultForm.QuestionTreeViewChange(Sender: TObject; Node: TTreeNode); var i:Integer; begin и //Очища ResultView.Items.Clear; е е //Е и е вы е е if Node=nil then exit;
,
вых
//За а и , а я я а ые for i:=0 to PQuestion(node.Data).ResultCount-1 do with ResultView.Items.Add do begin Caption:=PQuestion(node.Data).ResiltText[i]; if PQuestion(node.Data).ResiltValue[i]=true then begin SubItems.Add('Да'); ImageIndex:=2; end else begin SubItems.Add('Н т'); ImageIndex:=1;
и
а
625
end; end; end;
Э
,
-
.
ListView. ,
, .
ё
Node
TTreeNode, , .
. Ч
nil (
), PQuestion, ,
Node. К PQuestion.
Data , ,
- PQuestion(node.Data). , 0 PQuestion(node.Data).ResultCount ResultView.Items.Add, ё 1. З 2.
1.
.З
, ( with). А Caption. PQuestion(node.Data).ResiltValue[i] ( ) SubItems.Add(' ') «Н » , .
Add : ,
true, 2-
. . ,
,
ё
.
ё
25.3.8.
Р
25.3.8 Ра
.
,
,
25.3.8. OnClick
:
procedure TTestEditorForm.NewButtonClick(Sender: TObject);
626
begin NewTestForm.ShowModal; if NewTestForm.ModalResultmrOK then exit; if NewTestForm.TestTypeBox.ItemIndex=0 then begin QuestionResultForm:=TQuestionResultForm.Create(Owner); QuestionResultForm.ProjectName:=NewTestForm.TestNameEdit.Text; QuestionResultForm.Caption:=QuestionResultForm.Caption+' : ' +QuestionResultForm.ProjectName; end; end;
З ё
),
- а а
«В ,
.
а» ( ё
. «Р а ,
а
. »
«У а
» .
:
procedure TQuestionResultForm.EditButtonClick(Sender: TObject); var i:Integer; begin а вы е е ы е е //З е ь QuestionTreeView.Selected а ывае //в е еве. Е и аве nil, иче е вы е е , и вы и if QuestionTreeView.Selected=nil then exit; //За я е QuestionEdit в е е а и ва ия в в EditQuestionForm.QuestionEdit.Text:=PQuestion(QuestionTreeView.Selected.Data).Name; //Очища и ва иа в ве в в е е а и ва ия в EditQuestionForm.ResultListBox.Clear; for i:=0 to PQuestion(QuestionTreeView.Selected.Data).ResultCount-1 do begin //За я и ва иа в ве в в е е а и ва ия в EditQuestionForm.ResultListBox.Items.Add( PQuestion(QuestionTreeView.Selected.Data).ResiltText[i]);
в
в
//Е и ве ве ы , ав а ч if PQuestion(QuestionTreeView.Selected.Data).ResiltValue[i]=true then EditQuestionForm.ResultListBox.Checked[i]:=true; end; //О а а е а и ва ия в а EditQuestionForm.ShowModal; if EditQuestionForm.ModalResultmrOK then exit; а и а в //За и ыва и PQuestion(QuestionTreeView.Selected.Data).Name:=EditQuestionForm.QuestionEdit.Text; PQuestion(QuestionTreeView.Selected.Data).ResultCount:= EditQuestionForm.ResultListBox.Items.Count; for i:= 0 to PQuestion(QuestionTreeView.Selected.Data).ResultCount-1 do begin PQuestion(QuestionTreeView.Selected.Data).ResiltText[i]:= EditQuestionForm.ResultListBox.Items.Strings[i]; PQuestion(QuestionTreeView.Selected.Data).ResiltValue[i]:=
627
EditQuestionForm.ResultListBox.Checked[i]; end; //Вы ыва е QuestionTreeViewChange, ая а ви ь //и а и в ResultView. Пе вы а а е а еи е е е ,ав я а ы а а ь, ч в и е ы QuestionTreeViewChange // ы // ы и ь е е . а ыва вы е е ы е е . QuestionTreeViewChange(nil, QuestionTreeView.Selected); end;
,
,
,
.К
Data ,
. ,
.
ё
,
, Name: PQuestion(QuestionList[QuestionTreeView.Selected.Index]).Name
З
QuestionList.
, . З QuestionTreeView.Selected.Index. «У а »
:
procedure TQuestionResultForm.DeleteButtonClick(Sender: TObject); var index, i:Integer; begin if QuestionTreeView.Selected=nil then exit; ве е ие а е ия //П if Application.MessageBox(PChar('Вы твит ь х тит QuestionTreeView.Selected.Text), 'В и а и !!!', MB_OKCANCEL+MB_ICONINFORMATION)idOk then Exit; //С х а я и е вы е е е е index:=QuestionTreeView.Selected.Index;
а ить - '+
а
//У а я вы е е ы е е и е ева QuestionTreeView.Items.Delete(QuestionTreeView.Selected); е е а //У а я и QuestionList.Delete(Index); end;
ш
На
а
х
,
25.4.
а
а
\При еры\Глава 25\Test2\ еда тор а.
.
628
ё
,
. . ё
,
,
ё , ,
.
, «
.
»
:
procedure TTestEditorForm.SaveButtonClick(Sender: TObject); begin //Е и а иы е че ее ав ), вых //( е а ив ых if ActiveMDIChild=nil then exit; //Е и и ее и я QuestionResultForm, -ва иа ы ве в и вы ывае я х а е ия //в // е SaveTest1. if ActiveMDIChild.Name='QuestionResultForm' then SaveTest1; end;
ActiveMDIChild .
,
nil, .
,
. :
SaveTest1
procedure TTestEditorForm.SaveTest1; var fs:TFileStream; i:Integer; Str:String[5]; begin //Е и а ив ав в ве FileName , // е и е и а аи вы ва ь а чи ы ия "С х а и ь а ...", ч ы яви ь вв а // е //и е и а а if TQuestionResultForm(ActiveMDIChild).FileName='' then begin SaveAsMenuClick(nil); exit; end; //С а вы а .Е и е ще в ва , е е и е е ич е // fs:=TFileStream.Create(TQuestionResultForm(ActiveMDIChild).FileName, fmCreate); //С х а я в ача е а е е и ь че // Str:='Т т'; fs.Write(Str, SizeOf(Str));
а
е " е ", ч и ь я а ы а
ы
е
.
е а //С х а и ь и я fs.Write(TQuestionResultForm(ActiveMDIChild).ProjectName, sizeof(TQuestionResultForm(ActiveMDIChild).ProjectName)); try //С х а и ь иче в в в fs.Write(TQuestionResultForm(ActiveMDIChild).QuestionList.Count,
629
sizeof(TQuestionResultForm(ActiveMDIChild).QuestionList.Count)); //За а и ,в х а я ь яв ев ы. for i:=0 to TQuestionResultForm(ActiveMDIChild).QuestionList.Count-1 do fs.Write(PQuestion(TQuestionResultForm(ActiveMDIChild).QuestionList[i])^, sizeof(TQuestion)); finally //За ы ь а fs.Free; end; end;
З
ё
.
,
–
PQuestion
, ,
^. .
, ,
, . ^.
,
,
«С х а
а …»
ё
:
procedure TTestEditorForm.SaveAsMenuClick(Sender: TObject); begin if SaveDialog1.Execute then begin TQuestionResultForm(ActiveMDIChild).FileName:=SaveDialog1.FileName; SaveButtonClick(nil); end; end;
З
. «С х а
-
,
,
FileName »,
. OnClick
«
»
:
procedure TTestEditorForm.OpenButtonClick(Sender: TObject); var fs:TFileStream; i, Count:Integer; Str:String[5]; NewQuest:PQuestion; begin ы ия а а //П а а ь if not OpenDialog1.Execute then exit; //О ы ь а я ч е ия fs:=TFileStream.Create(OpenDialog1.FileName, fmOpenRead); //Пе е и в ача а аи fs.Seek(0,soFromBeginning); fs.read(Str, SizeOf(Str)); //Е
и а
в
аве
е
чи а ь а
" е
",
ачи
в
"в
-
630
//ва иа ы ве в". if Str='Т т' then begin //С а ь в е е а QuestionResultForm:=TQuestionResultForm.Create(Owner); //С х а и ь и я ы а ав е е а QuestionResultForm.FileName:=OpenDialog1.Filename; //П чи а ь и я е а fs.Read(QuestionResultForm.ProjectName, sizeof(QuestionResultForm.ProjectName)); try иче в в //П чи а ь fs.Read(Count, sizeof(Count));
в
//За и ь и ч е ия в в for i:=0 to Count-1 do begin //С а в в а я и NewQuest:=New(PQuestion); //Чи а fs.Read(NewQuest^, sizeof(TQuestion));
яв
а
в е е //Д ав я QuestionResultForm.QuestionList.Add(NewQuest); //С а вы е е в е еве with QuestionResultForm.QuestionTreeView.Items.Add(nil, NewQuest.Name) do begin ImageIndex:=0; Data:=NewQuest; end; end; finally //За ыва а fs.Free; end; end; end;
. З
ё
.
PQuestion,
NewQuest^, «
На
ш
а
х
», ,
а
а
. \При еры\Глава 25\Test3\ еда тор а. .Х
ё
. ,
. .
25.5.
. 631
, ,
. , (
25.5.1): 1. ToolBar 2. К StaticText, QuestionLabel AutoSize 3. CheckListBox Name QuestionCheckList. 4. «
Р
. К
«
», «З
»
«
.
». Name
false. . ».
25.5.1 Ф
а
а
.
,
TQuestion,
type ё ,
.
ё
, -
.
type PQuestion=^TQuestion; TQuestion=record Name: String[255]; ResultCount:Integer; ResiltText: array[0..10] of String[255]; ResiltValue: array[0..10] of boolean; end;
private
:
private { Private declarations } QuestionList:TList; Question, QuestionNumber, FalseNumber:Integer;
632
FileName:String;
ё , QuestionList – Question – QuestionNumber – . FalseNumber –
: ,
.
, ё
. ,
,
. . .
OnShow QuestionList:
procedure TTestForm.FormShow(Sender: TObject); begin QuestionList:=TList.Create; end;
:
OnDestroy
procedure TTestForm.FormDestroy(Sender: TObject); begin QuestionList.Free; end;
:
procedure TTestForm.OpenButtonClick(Sender: TObject); begin ы ия а а //П а а ь if not OpenDialog1.Execute then exit; FileName:=OpenDialog1.Filename; RunButton.Enabled:=true; end;
. «
»,
. . ,
«З
»,
,
FileName , ё ё
, OpenDialog1.Filename, . «З » RunButton . К , , . OnClick «З »:
,
procedure TTestForm.RunButtonClick(Sender: TObject); begin
633
LoadFile; QuestionNumber:=0; FalseNumber:=0; NextButton.Enabled:=true; NextQuestion; end;
,
LoadFile, . ? : 1. 2.
. ,
. ,
, ,
,
,
.
3.
( )
. ,
NextButton ( ).
«
», «
»
. NextQuestion, . LoadFile. :
procedure TTestForm.LoadFile; var fs:TFileStream; i, Count:Integer; Str:String[5]; ProjectName:String[255]; NewQuest:PQuestion; begin QuestionList.Clear; ы ь а я ч е ия //О fs:=TFileStream.Create(FileName, fmOpenRead); //Пе е и в ача а аи fs.Seek(0,soFromBeginning); fs.read(Str, SizeOf(Str));
чи а ь а
//Е и а в аве е " е ", ачи //ва иа ы ве в". if Str='Т т' then begin //П чи а ь и я е а fs.Read(ProjectName, sizeof(ProjectName)); Caption:=ProjectName; try иче в в //П чи а ь fs.Read(Count, sizeof(Count)); //За и ь и ч е ия в for i:=0 to Count-1 do begin
в
"в
-
в в
634
//С а в в а я и NewQuest:=New(PQuestion); //Чи а fs.Read(NewQuest^, sizeof(TQuestion)); //Д ав я в QuestionList.Add(NewQuest); end; finally //За ыва а fs.Free; end; end; end;
ё
е
яв
а
е
, . NextQuestion, :
procedure TTestForm.NextQuestion; var i:Integer; begin Randomize; Question:=Random(QuestionList.Count-1); QuestionLabel.Caption:=PQuestion(QuestionList[Question]).Name; QuestionCheckList.Items.Clear; for i:=0 to PQuestion(QuestionList[Question]).ResultCount-1 do QuestionCheckList.Items.Add(PQuestion(QuestionList[Question]).ResiltText[i]); Inc(QuestionNumber); end;
Randomize, ё
,
.
ё ,
, ,
,
. !!!).
( Random,
.
. QuestionList.Count–1, . . 0
.
ё
.
Question. QuestionLabel QuestionCheckList .
.З , QuestionNumber, . «Да
»
: 635
procedure TTestForm.NextButtonClick(Sender: TObject); var OK:Boolean; i:Integer; begin OK:=true; for i:=0 to PQuestion(QuestionList[Question]).ResultCount-1 do if PQuestion(QuestionList[Question]).ResiltValue[i]QuestionCheckList.Checked[i] then OK:=false; if OK=false then Inc(FalseNumber); аи и а //У а е ие в QuestionList.Delete(Question); if QuestionNumber