Библия Delphi

  • 0 0 0
  • Like this paper and download? You can publish your own PDF file online for free in a few minutes! Sign Up
File loading please wait...
Citation preview

Автор: 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! ё





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