ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

2.3 Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠŸΡ€ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ трСбуСтся Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΎΡˆΠΈΠ±ΠΎΠΊ, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… случайными Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΌΠΈ дСйствиями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Для этого Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ… Π²Ρ‹Π·ΠΎΠ²Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… Ρ„ΠΎΡ€ΠΌ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Enabled Ρ€Π°Π²Π½ΠΎΠ΅ False. Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠ°Ρ Ρ„ΠΎΡ€ΠΌΠ° станСт Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ‚ внСсти Π² Π½Π΅Ρ‘ измСнСния, Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ² Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΉ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π½ΠΈΠΆΠ΅: Π­Ρ‚ΠΎΡ‚ элСмСнт… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

2.3 Π’Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ интСрфСйса ΡƒΠ΄Π΅Π»ΡΠ»ΠΎΡΡŒ большоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π΅Π³ΠΎ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½ΠΈΡŽ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ знаниями ΠΈ Π½Π°Π²Ρ‹ΠΊΠ°ΠΌΠΈ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ ΠΌΠΎΠ³ Π±Π΅Π· особого Ρ‚Ρ€ΡƒΠ΄Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π‘Π£Π‘Π”.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ внСшний Π²ΠΈΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Для экономии Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ мСста Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ вынСсти Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹. Доступ ΠΊ Π½ΠΈΠΌ осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· Π½ΠΈΡΠΏΠ°Π΄Π°ΡŽΡ‰Π΅Π΅ мСню. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ ΠΈΡ… Π²Π½Π΅ΡˆΠ½ΠΈΠΉ Π²ΠΈΠ΄:

Рис. 2.6 Π€ΠΎΡ€ΠΌΠ° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°

2.4 ОписаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Кнопки Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ… Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ рСдактирования ΠΈ ΠΏΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π° Π΄Π°Π½Π½Ρ‹Ρ…. Основной Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Π‘Π” Π² ΠΎΠΊΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, носит Π½Π°Π·Π²Π°Π½ΠΈΠ΅ StringGrid.

Π­Ρ‚ΠΎΡ‚ элСмСнт позволяСт вывСсти Π΄Π°Π½Π½Ρ‹Π΅, Π½ΠΎ ΠΊ ΡΠ°ΠΌΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ SQLite3. pas, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠΉ собствСнный Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ SQLite3.dll. Как Π±Ρ‹Π»ΠΎ ΡƒΠΊΠ°Π·Π°Π½ΠΎ Ρ€Π°Π½Π΅Π΅, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ для Delphi 7 ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ ΠΏΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° SQLite.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ SQLite3 ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ запросы ΠΊ Π‘Π” Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ SQL. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Ρ‘Π½ ΠΊΠΎΠ΄ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€, выполняСмых Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Stringgrid ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (выполняСтся ΠΏΡ€ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ Ρ„ΠΎΡ€ΠΌΡ‹).

procedure TfrmMain. FormCreate (Sender: TObject);

begin.

strngrd.ColCount:=4;

strngrd.Cells[0,0]: ='β„–';

strngrd.Cells[1,0]: ='Ѐ.И.О.';

strngrd.Cells[2,0]: ='Π”ΠΎΠ»ΠΆΠ½ΠΎΡΡ‚ΡŒ';

strngrd.Cells[3,0]: ='ΠžΡ‚Π΄Π΅Π»';

strngrd.ColWidths[0]: =30;

strngrd.ColWidths[1]: =200;

strngrd.ColWidths[2]: =250;

strngrd.ColWidths[3]: =230;

sldb := TSQLiteDatabase. Create ('czn.db');

try.

if not sldb. TableExists ('po') then.

begin.

ShowMessage ('Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π΅Π½Π°. Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚Ρ€Π°Ρ‚ΠΎΡ€Ρƒ.');

Application.Terminate;

end;

except.

ShowMessage ('ΠŸΡ€ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊ Π±Π°Π·Π΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° ошибка.');

Application.Terminate;

exit;

end;

UpdatePO;

end;

Для экономии мСста, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ читаСмости исходного ΠΊΠΎΠ΄Π°, Π΅Π³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ вынСсСн Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ UpdatePo, которая обновляСт список Π΅Π΄ΠΈΠ½ΠΈΡ† ΠŸΠž.

procedure TfrmMain. UpdatePO ();

var.

sltb:TSQLiteTable;

begin.

sltb := sldb. GetTable ('SELECT name FROM po');

try.

cbbBezRab.Clear;

while not sltb. EOF do.

begin.

cbbBezRab.AddItem (UTF8Decode (sltb.FieldAsString (0)), self);

sltb.Next;

end;

finally.

sltb.Free;

end;

end;

Π’ Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… модулях ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Π°ΠΊ ΠΆΠ΅ содСрТатся ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· Π½ΠΈΡ…:

procedure TfrmGr. UpdateTable ();

var.

sltb, sltb2: TSQLiteTable;

i:integer;

begin.

for i:=strngrd.FixedRows to strngrd. RowCount-1 do.

strngrd.Rows[i]. Clear;

sltb := sldb. GetTable ('SELECT * FROM po');

try.

strngrd.RowCount := sltb. Count+1;

strngrd.ColCount := sltb. ColCount;

i := strngrd. FixedRows;

while not sltb. EOF do.

begin.

strngrd.Cells[0,i] := UTF8Decode (sltb.FieldAsString (0));

strngrd.Cells[1,i] := UTF8Decode (sltb.FieldAsString (1));

strngrd.Cells[2,i] := UTF8Decode (sltb.FieldAsString (2));

strngrd.Cells[3,i] := UTF8Decode (sltb.FieldAsString (3));

strngrd.Cells[4,i] := UTF8Decode (sltb.FieldAsString (4));

strngrd.Cells[5,i] := UTF8Decode (sltb.FieldAsString (5));

strngrd.Cells[6,i] := UTF8Decode (sltb.FieldAsString (6));

sltb.Next;

i:=i+1;

end;

finally.

sltb.Free;

end;

end;

procedure TfrmDol. UpdateTable ();

var.

sltb, sltb2: TSQLiteTable;

i:integer;

begin.

for i:=strngrd.FixedRows to strngrd. RowCount-1 do.

strngrd.Rows[i]. Clear;

sltb := sldb. GetTable ('SELECT * FROM sotr');

try.

strngrd.RowCount := sltb. Count+1;

strngrd.ColCount := sltb. ColCount;

i := strngrd. FixedRows;

while not sltb. EOF do.

begin.

strngrd.Cells[0,i] := UTF8Decode (sltb.FieldAsString (0));

strngrd.Cells[1,i] := UTF8Decode (sltb.FieldAsString (1));

strngrd.Cells[2,i] := UTF8Decode (sltb.FieldAsString (2));

strngrd.Cells[3,i] := UTF8Decode (sltb.FieldAsString (3));

sltb2:=sldb.GetTable ('SELECT name FROM po WHERE id='+UTF8Decode (sltb.FieldAsString (4)));

strngrd.Cells[4,i]: = UTF8Decode (sltb2.FieldAsString (0));

sltb2.Free;

sltb.Next;

i:=i+1;

end;

finally.

sltb.Free;

end;

UpdateOrg;

end;

procedure TfrmDol. UpdateOrg ();

var.

sltb:TSQLiteTable;

begin.

sltb := sldb. GetTable ('SELECT name FROM po');

try.

cbbEdPo.Clear;

while not sltb. EOF do.

begin.

cbbEdPo.AddItem (UTF8Decode (sltb.FieldAsString (0)), Self);

sltb.Next;

end;

finally.

sltb.Free;

end;

end;

ΠŸΡ€ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„ΠΎΡ€ΠΌΠ°ΠΌΠΈ трСбуСтся Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ ΠΎΡˆΠΈΠ±ΠΎΠΊ, Π²Ρ‹Π·Π²Π°Π½Π½Ρ‹Ρ… случайными Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΌΠΈ дСйствиями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Для этого Π² ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ… Π²Ρ‹Π·ΠΎΠ²Π° Π΄ΠΎΡ‡Π΅Ρ€Π½ΠΈΡ… Ρ„ΠΎΡ€ΠΌ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ Enabled Ρ€Π°Π²Π½ΠΎΠ΅ False. Π ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠ°Ρ Ρ„ΠΎΡ€ΠΌΠ° станСт Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ‚ внСсти Π² Π½Π΅Ρ‘ измСнСния, Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ² Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π΄ΠΎΡ‡Π΅Ρ€Π½Π΅ΠΉ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π½ΠΈΠΆΠ΅:

procedure TfrmMain. N3Click (Sender: TObject);

begin.

frmOrg.show;

frmMain.Enabled:=false;

end;

ΠžΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π‘Π£Π‘Π”. Запросы, вносящиС измСнСния Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ExecSQL, примСняСмого ΠΊ ΡƒΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° TSQLiteDatabase с Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ SQL запрос ΠΈ ΠΎΡ‚ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π΅Π³ΠΎ выполнСния (ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΉ ΠΈΠ»ΠΈ с ΠΎΡˆΠΈΠ±ΠΊΠΎΠΉ). НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ использования Ρ‚Π°ΠΊΠΈΡ… конструкций Π½Π° ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ… рСдактирования Π² Ρ„ΠΎΡ€ΠΌΠ΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π°.

//Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅:

procedure TfrmGr. btnAddClick (Sender: TObject);

begin.

sldb.ExecSQL ('INSERT INTO po (name, desc, price, dev, datebuy, dateend) VALUES («'+AnsiToUtf8(edtName.text)+.

'" ," '+AnsiToUtf8(edtDesc.text)+.

'" ," '+AnsiToUtf8(edtPrice.text)+.

'" ," '+AnsiToUtf8(edtDev.text)+.

'" ," '+AnsiToUtf8(edtBuy.text)+.

'" ," '+AnsiToUtf8(edtEnd.text)+.

'")');

edtName.Text:='';

edtDesc.Text:='';

edtPrice.Text:='';

edtDev.Text:='';

edtBuy.Text:='';

edtEnd.Text:='';

ShowMessage ('Π“ΠΎΡ‚ΠΎΠ²ΠΎ!');

UpdateTable;

end;

//ВнСсСниС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ:

procedure TfrmGr. btnSaveClick (Sender: TObject);

begin.

if idn='' then.

ShowMessage ('Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ запись!').

else.

begin.

sldb.ExecSQL ('UPDATE po SET name="'+AnsiToUtf8(edtName.text)+.

'", desc="'+AnsiToUtf8(edtDesc.text)+.

'", price="'+AnsiToUtf8(edtPrice.text)+.

'", dev="'+AnsiToUtf8(edtDev.text)+.

'", datebuy="'+AnsiToUtf8(edtBuy.text)+.

'", dateend="'+AnsiToUtf8(edtEnd.text)+.

'" WHERE id='+idn);

UpdateTable;

end;

end;

//Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅:

procedure TfrmGr. btnDelClick (Sender: TObject);

begin.

if idn='' then.

ShowMessage ('Π‘Π½Π°Ρ‡Π°Π»Π° Π²Ρ‹Π±Π΅Ρ€Π΅Ρ‚Π΅ запись!').

else.

begin.

sldb.ExecSQL ('DELETE FROM po WHERE id='+idn);

UpdateTable;

end;

end;

Помимо основных Ρ„ΠΎΡ€ΠΌ для Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹.

ΠžΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π΅ срСдство прСдставлСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π½ΠΎΠ³ΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ двумя ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ прСимущСствами:

ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΡˆΠΈΡ€ΠΎΠΊΠΈΠ΅ возмоТности для Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΈ ΠΎΠ±Ρ‰ΠΈΡ… ΠΈΡ‚ΠΎΠ³ΠΎΠ² для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π½Π°Π±ΠΎΡ€ΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ…;

ΠΎΡ‚Ρ‡Π΅Ρ‚Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ для получСния красиво ΠΎΡ„ΠΎΡ€ΠΌΠ»Π΅Π½Π½Ρ‹Ρ… ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ², Π½Π°ΠΊΠ»Π΅Π΅ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Для формирования ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ² Π² Π½Π°ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΅ΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Ρ„ΠΎΡ€ΠΌΠ°. Она позволяСт ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ ΠΈ ΠΏΠΎΡ‚ΠΎΠΌ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π΅Π³ΠΎ (ΠΈΠ»ΠΈ вывСсти Π² Ρ„Π°ΠΉΠ»). Для формирования ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ встроСнный ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ срСды Delphi 7 ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Printers.pas. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€, установлСнный Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅, Ρ‡Ρ‚ΠΎ Π±Ρ‹ вывСсти ΠΎΡ‚Ρ‡Ρ‘Ρ‚. Если физичСского ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π° Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ Π½Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½ΠΎ, ΠΈΠ»ΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²Ρ‹Π±Ρ€Π°Π½ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€, ΠΎΡ‚Ρ‡Ρ‘Ρ‚ вывСдСтся Π² Ρ„Π°ΠΉΠ».

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π°:

procedure PrintGrid (sGrid: TStringGrid; sTitle: string);

var.

X1, X2: Integer;

Y1, Y2: Integer;

TmpI: Integer;

F: Integer;

TR: TRect;

begin.

Printer.Title := sTitle;

Printer.BeginDoc;

Printer.Canvas.Pen.Color := 0;

Printer.Canvas.Font.Name := 'Times New Roman';

Printer.Canvas.Font.Size := 12;

Printer.Canvas.Font.Style := [fsBold, fsUnderline];

Printer.Canvas.TextOut (0, 100, Printer. Title);

for F := 1 to sGrid. ColCount — 1 do.

begin.

X1 := 0;

for TmpI := 1 to (F — 1) do.

X1 := X1 + 5 * (sGrid.ColWidths[TmpI]);

Y1 := 300;

X2 := 0;

for TmpI := 1 to F do.

X2 := X2 + 5 * (sGrid.ColWidths[TmpI]);

Y2 := 450;

TR := Rect (X1, Y1, X2 — 30, Y2);

Printer.Canvas.Font.Style := [fsBold];

Printer.Canvas.Font.Size := 7;

Printer.Canvas.TextRect (TR, X1 + 50, 350, sGrid. Cells[F, 0]);

Printer.Canvas.Font.Style := [];

for TmpI := 1 to sGrid. RowCount — 1 do.

begin.

Y1 := 150 * TmpI + 300;

Y2 := 150 * (TmpI + 1) + 300;

TR := Rect (X1, Y1, X2 — 30, Y2);

Printer.Canvas.TextRect (TR, X1 + 50, Y1 + 50, sGrid. Cells[F, TmpI]);

end;

end;

Printer.EndDoc;

end;

ΠŸΡ€ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π΅ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Π° Π² Ρ„Π°ΠΉΠ» ΠΎΠ½ Π²Ρ‹Π³Π»ΡΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ