Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Delphi. Учимся Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 4

Автор Π‘Π΅Ρ€Π³Π΅ΠΉ ΠŸΠ°Ρ€ΠΈΠΆΡΠΊΠΈΠΉ

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ прСдставлСн Π½Π° рис. 3.2.

Рис. 3.2. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Бтатистика Π² дСйствии

ΠŸΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ модуля

Код модуля ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Бтатистика прСдставлСн Π² листингС 3.1.

Листинг 3.1. ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Бтатистика

unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type TForm1 = class(TForm)

 Label1: TLabel;

 Label2: TLabel;

 Label3: TLabel;

 Label4: TLabel;

 Label5: TLabel;

 words: TLabel;

 symbols: TLabel;

 spaces: TLabel;

 lines: TLabel;

 Button1: TButton;

 Edit1: TEdit;

 Button2: TButton;

 Open1: TOpenDialog;

 procedure Button1Click(Sender: TObject);

 procedure Button2Click(Sender: TObject);

private

 { Private declarations }

public

 { Public declarations }

end;


var Form1: TForm1;


implementation

{$R *.dfm}


procedure TForm1.ButtonlClick(Sender: TObject); begin

 //Π½Π°Ρ‡ΠΈΠ½Π°Π΅ΠΌ ΠΎΠ±Π·ΠΎΡ€ с Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠΈ

 Open1.InitialDir:= GetCurrentDir;

 if Open1.Execute // ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° Ρ„Π°ΠΉΠ»Π°

 then Edit1.Text:= Open1.FileName

 else ShowMessage('Π€Π°ΠΉΠ» Π½Π΅ Π²Ρ‹Π±Ρ€Π°Π½!');

end;

procedure TForm1.Button2Click(Sender: TObject);

var

 f: file of byte; //ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»ΠΎΠΌ

 str: byte; //Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ считанный Π±Π°ΠΉΡ‚

 oldstr, symbol, word, line, space: Integer;

begin

 symbol:= 0; //обнуляСм ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹

 word:= 0;

 space:= 0;

 line:= 0;

 if FileExists(Edit1.Text) //провСряСм, сущСствуСт Π»ΠΈ Ρ„Π°ΠΉΠ»

 then begin

  AssignFile(f,Edit1.Text) ; //связываСм Ρ„Π°ΠΉΠ» с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ f

  reset(f); //ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» Π½Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅

  while not eof(f) do

  begin //Ρ‡ΠΈΡ‚Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» Π΄ΠΎ достиТСния ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π°

   oldstr:= str;

   Read(f, str); //считываСм символ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ str

   if ((str <> 32) and (str <> 13) and (str <> 10))

    then symbol := symbol + 1; {пополняСм количСство символов, Ссли ΠΎΠ½ Π½Π΅ являСтся ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠΌ строки, ΠΊΠΎΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΉ строки ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠΌ}

   //Ссли считан ΠΏΡ€ΠΎΠ±Π΅Π», ΠΏΠΎΠΏΠΎΠ»Π½ΠΈΠΌ счСтчик ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ²

   if str = 32 then space:= space + 1;

   if str = 13 then line:= line + 1; //счСтчик строк

   if ((str = 32) or (str = 13) or (str = 10)) then

    if ((oldstr<>32) and (oldstr<>10) and (oldstr<>13))

     then word: = word + 1; //счСтчик слов

  end;

  CloseFile(f); //Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ Ρ„Π°ΠΉΠ»

 end

 else ShowMessage('Ошибка: Π€Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ !'); {Ссли Ρ„Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, Ρ‚ΠΎ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ сообщСниС ΠΎΠ± ошибкС}

  symbols.caption:= IntToStr(symbol); //Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ всю

  spaces.caption:= IntToStr(space); //ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ

  lines.caption:=IntToStr(line); //ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ„Π°ΠΉΠ»Π΅

  words.caption:= IntToStr(word);

 end;

end.

⊚ ВсС Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ исполняСмый Ρ„Π°ΠΉΠ» рассмотрСнной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ находятся Π½Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΠΎΠΌ ΠΊ ΠΊΠ½ΠΈΠ³Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚-дискС Π² ΠΏΠ°ΠΏΠΊΠ΅ Chapter 03.

Π“Π»Π°Π²Π° 4

Π‘Π½ΠΈΠΌΠΎΠΊ экрана

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ копию экрана.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„ΠΎΡ€ΠΌΡ‹

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Delphi ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ„ΠΎΡ€ΠΌΡ‹ (свойство Caption) Π½Π° Screenshot. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΠΌΠΎΠ³ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠΊΠ½Π° ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ, слСдуСт ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ свойству BorderStyle Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ bsDialog. Для удобства создания ΠΊΠΎΠΏΠΈΠΉ экрана ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ всСгда Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ… ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΊΠΎΠ½. Для этого присвоим свойству FormStyle Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ fsStayOnTop. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ сСбС это ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ: Π½Π° самой ΠΊΠΎΠΏΠΈΠΈ экрана ΠΎΠΊΠ½ΠΎ нашСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ создания ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ сокрыто.

Для сохранСния ΠΊΠΎΠΏΠΈΠΈ экрана Π½Π°ΠΌ понадобится ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ SaveDialog ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Dialogs. РазмСститС этот ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ рисунок, Ρ‚ΠΎ свойству SaveDialog1.Filter присвойтС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Рисунок|*.bmp|ВсС Ρ„Π°ΠΉΠ»Ρ‹|*.*. ΠŸΡ€ΠΈ сохранСнии Ρ„Π°ΠΉΠ»Π° Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€: ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» ΠΊΠ°ΠΊ рисунок (*.bmp) ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„Π°ΠΉΠ» (*.*).

РазмСститС вдоль ΠΏΡ€Π°Π²ΠΎΠ³ΠΎ края Ρ„ΠΎΡ€ΠΌΡ‹ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Button ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Standard) со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΌΠΈ (свойство Caption): Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ снимок экрана, ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ снимок, ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΈ Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ. Π’Π°ΠΊΠΆΠ΅ Π½Π°ΠΌ потрСбуСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ копию экрана. Для этих Ρ†Π΅Π»Π΅ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Image ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Additional. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ имя (свойство Name) Π½Π° Screen1, Π° свойству Proportional присвоим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True.

На этом Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„ΠΎΡ€ΠΌΡ‹ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ рис. 4.1.

Рис. 4.1. Π€ΠΎΡ€ΠΌΠ° для создания ΠΊΠΎΠΏΠΈΠΉ экрана

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

Для Π½Π°Ρ‡Π°Π»Π° объявим всС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅:

var

 Form1: TForm1; //главная Ρ„ΠΎΡ€ΠΌΠ°

 Π’ΠœΠ 1 :Graphics.Π’Π’itmap; //для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рисунками (*.bmp)

 DC1: HDC;//простоС ΠΏΠΎΠ»Π΅ для Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ

 Image1:TImage;

Π‘Π°ΠΌΠΎΠ΅ Π³Π»Π°Π²Π½ΠΎΠ΅ событиС Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ β€” это Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ снимок экрана. Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ этого события:

procedure TForm1.Button1Click(Sender: TObject);

begin

 Form1.Visible := False;//прячСм Ρ„ΠΎΡ€ΠΌΡƒ

 Sleep(15); //ΠΏΠ°ΡƒΠ·Π° 15 мс

 BMP1:= Graphics.TBitmap.Create;

 //Π·Π°Π΄Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ рисунка Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ экрана

 Π’ΠœΠ 1.Height:= Screen.Height;

 Π’ΠœΠ 1.Width:= Screen.Width;

 DC1:=GetDC(0);

 //Π”Π΅Π»Π°Π΅ΠΌ копию экрана

 BitBlt(BMP1.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC1, 0, 0, SRCCOPY);

 Form1.Visible:= True;//восстанавливаСм ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

 Image1:= TImage.Create(nil);

 BMP1.IgnorePalette:= True;

 Image1.Picture.Assign(BMP1);

 Π’ΠœΠ 1.SaveToFile('с:\1.bmp'); //сохраняСм снимок Π² Ρ„Π°ΠΉΠ» 1.bmp Π½Π° дискС Π‘:\

end;

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ снимок экрана, ΠΌΡ‹ прячСм ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΠ°ΡƒΠ·Ρƒ Π² 15 мс ΠΈ Π·Π°Π΄Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ рисунка. ПослС этого Π΄Π΅Π»Π°Π΅ΠΌ снимок экрана ΠΈ сохраняСм Π΅Π³ΠΎ Π² Ρ„Π°ΠΉΠ» 1.bmp, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ находится Π½Π° дискС C:\.

По Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ рисунок выполняСм ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

procedure TForm1.Button4Click(Sender: TObject);

begin

 Screen1.Show; // Π΄Π΅Π»Π°Π΅ΠΌ рисунок Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΌ

 if FileExists('с:\1.bmp') then //Ссли рисунок сущСствуСт,

  Screen1.Picture.LoadFromFile('c:\1.bmp'); //Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ Π΅Π³ΠΎ

end;

По Π½Π°ΠΆΠ°Ρ‚ΠΈΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ рисунок ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π΅Π³ΠΎ с диска:

procedure TForm1.Button3Click(sender: TObject);

begin

 //удаляСм рисунок с диска

 if FileExists('с:\1.bmp') then DeleteFile('Π‘:\1.bmp');

 Screen1.Hide; //скрываСм рисунок

end;

Для сохранСния рисунка Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ. Код наТатия ΠΊΠ½ΠΎΠΏΠΊΠΈ Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ:

procedure TForm1.Button2Click(Sender: TObject);

begin

 if SaveDialog1.Execute then

  BMP1.SaveToFile(SaveDialog1.FileName)//сохраняСм рисунок

 else ShowMessage('Π€Π°ΠΉΠ» Π½Π΅ Π±Ρ‹Π» сохранСн!');

end;

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ провСряСм, Π²Ρ‹Π±Ρ€Π°Π» Π»ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ мСсто сохранСния Ρ„Π°ΠΉΠ»Π°. Если Π΄Π°, Ρ‚ΠΎ сохраняСм рисунок ΠΏΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ.

ΠžΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ запустим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ (Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ β€” Π½Π° рис. 4.2).

Рис. 4.2. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ScreenShot Π² дСйствии

ΠŸΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ модуля

ΠŸΠΎΠ»Π½Ρ‹ΠΉ исходный ΠΊΠΎΠ΄ модуля ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ScreenShot прСдставлСн Π² листингС 4.1.

Листинг 4.1. ΠœΠΎΠ΄ΡƒΠ»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ScreenShot

unit Unit1;


interface


uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Registry, WinProcs, jpeg;


type TForm1 = class(TForm)

 Button1: TButton;

 Button2: TButton;

 Screen1: TImage;

 SaveDialog1: TSaveDialog;

 Button3: TButton;

 Button4: TButton;

 procedure Button1Click(Sender: TObject);

 procedure Button2Click(Sender: TObject);

 procedure Button3Click(Sender: TObject);

 procedure Button4Click(Sender: TObject);

private

 { Private declarations }

public

 { Public declarations }

end;


var

 Form1: TForm1; //главная Ρ„ΠΎΡ€ΠΌΠ°

 Π’ΠœΠ 1: Graphics.TBitmap; //для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с рисунками (* .bmp)

 DC1: HDC; //простоС ΠΏΠΎΠ»Π΅ для Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ

 Image1: TImage;


implementation

{$R *.dfm}


procedure TForm1.ButtonlClick(Sender: TObject);

begin

 Form1.Visible:= False; //прячСм Ρ„ΠΎΡ€ΠΌΡƒ

 Sleep(15);//ΠΏΠ°ΡƒΠ·Π° 15 мс

 BMP1:= Graphics.TBitmap.Create;

 //Π·Π°Π΄Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ рисунка Ρ‚Π°ΠΊΠΈΠ΅ ΠΆΠ΅ ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ экрана