КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
InterfaceСтр 1 из 7Следующая ⇒ Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; Type TForm1 = class(TForm) Private { Private declarations } Public { Public declarations } end; Var Form1: TForm1; Implementation {$R *.dfm} end.
var Form1 : TForm1;
Button1: TButton;
. . Type TForm1 = class(TForm) Button1: TButton; Private { Private declarations } . .
<название компонента>:<класс компонента>;
{$R *.DFM}
Tools/Environment Options Preferences Editors files,
Рис. 17 - properties (свойства); - events (события).
<название><значение>
Color Width Height
· простые; · перечисляемые: · сложные (множественные); · объекты.
q visible
+
<Object>.Color := Value; GetColor, SetCoLor
Рис. 18
Листинг 19 program Project1; Uses Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} Begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
Project/View Source
Tools/Image Editor
Form2.Edit1.Clear
Color := clFuchsia Û Form1.Color := clFuchsia
Uses
Project/Options Application .ico
File/Save All
F9 Ctrl/F9
Run/ProgramReset Þ Ctrl/F2
Caption Delphi 4 170, Delphi 5 - 200, Delphi 6 – 227
TLabel
Font Size Color Style
OnClick
Листинг 20 Type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); …. end;
procedure TForm1.Button1Click(Sender: TObject); Begin . . . end;
Button1.сaption := "Запуск расчета";
Ctrl/J
Sender:Tobject
onCreate, onMouseMove, onPaint
procedure TForml.Label1Click(Sender: TObject); Begin … end;
position Þ poScreenCenter Рис. 19
TForm TMemo TLabel TEdit TBitBtn
caption height width name
align ® alBottom ® alLeft ® alTop ® alRight ® alClient ® alCustom ® alNone
Additional Þ TBitBtn
Kind - OK; - Close; - Cancel; - Help и др.
TEdit
TLabel
TMemo - lines - text - scrollBars: ® ssNone ® ssVertical ® ssHorizontal ® ssBoth - WordWrap:boolean
FfhhjhVcvv hjjkkjk
Листинг 21 procedure TfmExample.bbRunClick(Sender:ТObject); Begin lbOutput.Caption := edInput.Text; mmOutput.Lines.Add(edInput.Text); edInput.Text := ''; edInput.SetFocus; end;
OnActivate OnCreate
Events
procedure TfmExample.FormActivate(sender:TObject); begin edInput.SetFocus; end;
Form1.ActivateControl := BitBtn1;
Рис. 20
Additional -> TMaskEdit EditMask
Рис. 21
- name → bbResult; - visible → false.
var x, y:integer;
Листинг 22 OnActivate procedure TfmExample.FormActivate(sender:TObject); Begin edInput.SetFocus; lbOutput.Caption := 'Введите первый опреранд'; end;
Листинг 23 procedure TfmExample.bbRunClick(Sender:TObject); Begin x := strToInt(Trim(edInput.Text)); //преобразование в число первого операнда mmOutput.Lines.Add('1-ый операнд: '+ edInput.Text); edInput.Text := ''; edInput.SetFocus; mmOutput.Caption := 'Введите 2-ый операнд'; bbResult.Show; bbRun.Hide; end;
Листинг 24 procedure TfmExample.bbResultClick(Sender:TObject); Begin y := strToInt(Trim(edInput.Text)); //второй операнд преобразуется в число mmOutput.Lines.Add('2-ой операнд: '+ edInput.Text); mmOutput.Lines.Add('Результат: '+ IntToStr(x) + ' ' + IntToStr(y) + '=' + IntToStr(x + y)); //вычисляем и показываем результат edInput.Text := ''; //очищаем строку ввода edInput.SetFocus; lbOutput.Caption := 'Введите первый операнд'; //приглашение к вводу первого операнда bbResult.Hide; bbRun.Show; end;
Trim - удаляет из вводимой строки обрамляющие пробелы; StrToInt - преобразует строку символов в целое число; IntToStr – производит обратное преобразование. \
Visible:boolean visible := true
Hide Show
if edInput.Text = '' then Exit;
Листинг 25 procedure TfmExample.bbRunClick(Sender:TObject); Var i, n, sum:integer; Begin if edInput.Text = '' then exit; n := strToInt(Trim(edInput.Text)); edInput.Text := ''; edInput.SetFocus sum := 0; for i := 1 to n do sum := sum + i; mmOutput.Lines.Add('сумма всех чисел в диапазоне 1..'+ IntToStr(n) + 'равна' + IntToStr(Sum)); end;
Листинг 26 procedure TfmExample.FormActivate(sender:TObject); Begin edInput.SetFocus; lbOutput.Caption := 'Введите исходное целое число'; end;
Рис. 22
TListBox
StringList Editor
+ - * /
ItemIndex
ItemIndex := -1
Листинг 27 procedure TfmExample.bbRunClick(Sender:TObject); Var x, y, z:real; Begin if(edInput1.Text = '') or (edInput2.Text = '') or (lbSign.ItemIndex < 0) then Begin beep; lbOutput.Caption := 'Не все требуемые параметры введены' End Else Begin Try x := strToFloat(Trim(edInput1.Text)); Except ShowMessage('Ошибочная запись числа: '+ edInput1.Text); edInput1.SetFocus; Exit end; Try y := strToFloat(Trim(edInput2.Text)); Except ShowMessage('Ошибочная запись числа: '+ edInput2.Text); edInput2.SetFocus; Exit end; case lbSign.ItemIndex of 0: z := x + y; 1: z := x - y; 2: z := x * y; 3: try z := x/y; Except z := 1.1e38; end; end; lbOutput.Caption := Trim(edInput1.Text) + ' ' + lbSign.Items[lbSign.Item-Index] + Trim(edInput2.Text) + ' = '; if z > 1.1e38 then lbOutput.Caption := lbOutput.Caption + 'бесконечность' Else lbOutput.Caption := lbOutput.Caption + FloatTostr(z); edInput1.Text := ''; edInput2.Text := ''; lbSign.ItemIndex := -1; end; end; Листинг 28 procedure TfmExample.FormActivate(sender:TObject); Begin edInput1.SetFocus; lbSign.ItemIndex := -1; lbOutput.Caption := 'Введите исходные данные'; end; SmallInt -32768 .. 32767 Integer -2147483648 .. 2147483647 LongWord 0 .. 4294967295 Int64 -9*1018 .. 9*1018 Cardinal 0 .. 2147483647
Currency ± 922 337 203 685 477, 5897
«Дата-Время» (TDateTime)
1. Date():TDateTime; 2. DateToStr(d:TDateTime):string; 3. DateTimeToStr(d:TDateTime):string; 4. Time: TDateTime; 5. TimeToStr(d:TDateTime):string; 6. DayOfWeek(Date: TDateTime):integer; (1-й день - воскресенье); 7. YearOf(Date: TDateTime): integer; 8. procedure DecodeDate(Date:TDateTime; var Year, Month, Day: Word); 9. procedure DecodeTime(Time:TDateTime; var Hour, Min, Sec, MSec: Word); 10. Now():TDateTime;
D := date - 120;
T := time + StrToTime('1:30');
Листинг 29 var A: array of integer; B: array of array ofreal; C: array of array of array ofchar;
SetLength(<название массива>, <размерность>);
SetLength(a, 7); SetLength(b[2], 9); SetLength(b[3], 11);
A := nil; Finalize(b);
Листинг 30 var v1, v2, v3, v4, v5, v6: variant; begin v1 := 2; v2 := 1234.5678; v3 := 'пример строки'; v4 := '1000'; v5 := v1 + v2 + v4; // v5 = 2236.5678
VarType(v: variant):integer; 0 - нет данных; 1 - неизвестный тип; 2 – целый тип SmallInt; 3 – целый тип Integer; 4 – вещественный тип Single; 5 – вещественный тип Double; 6 – вещественный тип Currency; 7 – тип дата/время; 11 – логический тип WordBool; 12 - вариантный массив; 16 – целый тип Byte; 17 – строковый тип и т.д.
VarToStr(v:variant):string;
VarArrayCreate(bounds:array of integer; varType:integer):variant;
Листинг 31 var a: variant; begin а := VarArrayCreate([0, 4], 1); а[0] := 1; а[1] := 1234.5678; а[2] := 'здравствуйте'; а[3] := True; а[4] := VarArrayOf([1, 10, 100, 1000]); {создание и заполнение одномерного массива} WriteLn(а[2]); {здравствуйте} WriteLn(а[4][2]); { 100 }
ShortString
String
AssignFile(f, <строка>);
CloseFile(f);
Menu
MenuDesigner
ОИО Items . . .
<название формы>.MainMenu1
ОИО Caption
Ctrl/→
Create Submenu
ОИО ShortCut
-
Insert
Delete
TMenuItem
N<номер>
Bitmap : TBitmap
Break:
Checked: Boolean Ö
OnClick
PopupMenu
AutoPopup:boolean
Caption: text
AutoSize: boolean
Layout:
Transparent: boolean
WordWrap: boolean
AutoSize: boolean
CharCase:
MaxLength: integer
PasswordChar: char
ReadOnly: boolean
OnKeyPress
Листинг 32 procedure TForm1.EditKeyPress(Sender:TObject; var Key: char); Begin if (Key < '0') or (Key > '9') then Key := #0; //введенный символ игнорируется end;
TMemo
Lines:TStrings
Memo.Lines.Count
Text
TCheckBox
Caption
State:
Checked: boolean
AllowGrayed: Boolean
Alignment: taLeftJustify / taRightJustify
TRadioButton
Checked
Caption
TListBox
TComboBox Рис. 23
TListBox + TEdit
Style = csSimple
Рис. 24
TScrollBar Рис. 25
SetParams(Position, Max, Min: integer)
OnScroll
TRadioGroup
TRadioButton
TPanel *
Caption
TGroupBox
ADDITIONAL
TBitBtn
Glyph
Program Files\Common Files\Borland Shared\Images\Buttons
Kind Рис. 26
Kind = bkCustom
TSpeedButton
GroupIndex: integer
AllowAllUp:boolean
Down:boolean
Flat:boolean
TMaskEdit
EditMask:string
IsMasked:boolean
<шаблон>;<переключатель 0/1>;<символ-заполнитель>
L - буква; l - может быть буква; А - буква или цифра; а - может буква или цифра; С - любой символ; с - может любой символ; 0 - цифра; 9 - может цифра; # - может цифра или знаки +, -.
: - разделитель для часов, минут, секунд; / - разделитель полей даты; ; - разделитель частей шаблона; ! - подавляет все ведущие пробелы; > - следующие за ним все буквы преобразуются в заглавные; < - следующие за ним все буквы преобразуются в строчные; <> - отменяются все преобразования букв.
ХХ-ХХ-ХХ
Text:string
EditText:string 78-15-64 TStringGrid Рис. 27 RowCount: integer ColCount: integer FixedRows:integer FixedCols:integer Height Width DefaultColWidth 64 DefaultHeight 24 Color Cells[<столбец>, <строка>] Form1.StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] := ‘стол’; OnKeyDown Form1.StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] := Form1.StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] + Chr(Key). Selection Selection.Left, Selection.Top, Selection.Right, Selection.Bottom
TImage
Image1.Picture.LoadFromFile(‘ ‘);
Stretch:boolean
AutoSize:Boolean
Transparent:boolean
TShape
Shape := (stRectangle, stSquare, stRoundRect, stRoundSquare, stEllipse, stCircle)
Pen
Brush
Color
Style bsSolid bsClear
Mode pmBlack pmNotCopy
Style psClear psSolid psDash
Width
Листинг 33 procedure TForm1.Button1Click(Sender: TObject); Begin Shape1.Left := Shape1.Left + 1; end;
Run/Step over (F8)
Run/Trace into (F7)
Run/Run
Run/Run to cursor (F4)
Breakpoint
Run/Add Breakpoint/Add Source Breakpoint (F5)
Рис. 28
Рис. 29
View/Debug Windows/Breakpoints
View/Debug Windows/Watches (Ctrl+Alt/W)
Рис. 30
Add Watch
Expression
Project/Options
Compiler
Stopped
Error
Run / Program Reset
Листинг 34
Try <операторы, способные вызвать нарушения> Except on <тип исключения 1> do <обработчик 1>; on <тип исключения 2> do <обработчик 2>; X on <тип исключения n> do <обработчик n> [else <обработчик остальных исключений> ] end;
→ EdivByZero → EconvertError → EintOverflow → EfilerError
→ EintOverflow → EfilerError Project/Options Compiler
Рис. 31
Листинг 35 procedure Form1.Button1Click(Sender:Tobject); Var u, r, i: real; Begin Try u := StrToFloat(Form1.Edit1.Text); r := StrToFloat(Form1.Edit2.Text); i := u/r; Except On EzeroDivide do Begin ShowMessage('Не задана величина сопротивления'); exit; end; On EconvertError do Begin ShowMessage('Исходные величины задаются числами. Десятичный разделитель – запятая'); exit; end; end; Form1.Label4.Caption := FloatToStr(i) + ‘A’; end;
Рис. 32
Листинг 36 procedure Form1.Edit1KeyPress(Sender:Tobject; var Key:Char); Begin Case Key of '0'..'9', chr(8):; //символ появляется в окне редактора, chr(8) – Backspace ‘,’:if pos(‘,’, Edit1.Text)<>0 then key := chr(0); //игнорируется вторая десятичная запятая ‘-‘:if Length(Edit1.Text)<>0 then key := chr(0); //игнорируется минус внутри числа chr(13): Edit2.SetFocus; //передача фокуса во второй редактор при нажатии клавиши Enter '.': begin MessageDlg('Десятичный разделитель – запятая', mtInformation, [mbOK], 0); key := chr(0); //введенный символ игнорируется End Else key := chr(0); //введенные символы игнорируются end; end;
MessageDlg(<сообщение>:string, <тип диалога>:TmsgDlgType, <кнопка>:TmsgDlgButtons; <ссылка на помощь>:longInt);
· mtWarning; · mtError; U · mtInformation; · mtConfirmation; ? · mtCustom
TmsgDlgButtons: · mbYes; · mbNo; · mbOk; · mbCancel; · mbHelp и др.
Листинг 37 resp:=MessageDlg('Файл базы данных не найден.' + ‘Создать новую БД?’, mtlnformation,[mbYes,mbNo],0); if resp = mrYes then begin …
Листинг 38 Type TForm1 = class(TForm) Label1: Tlabel; //метка для вывода результата Label2: Tlabel; //заголовки полей ввода коэффициентов Edit1: Tedit; // окно ввода коэффициента a Edit2: Tedit; // окно ввода коэффициента b Edit3: Tedit; // окно ввода коэффициента c Button1: Tbutton; // кнопка Вычислить Button2: Tbutton; // кнопка Очистить Button3: Tbutton; // кнопка Закрыть procedure Button1Click(Sender: Tobject); procedure Button2Click(Sender: Tobject); procedure Button3Click(Sender: Tobject); Procedure Edit1KeyPress((Sender:Tobject; var Key:Char); end; Var Form1: TForm1;
procedure SqRoot(str1, str2, str3:string: Label1:Tlabel); Var a, b, c, d, x1, x2: real; Begin if (str1 = ‘’) or (str2 = ‘’) or (str3 = ‘’) then MessageDlg('Необходимо задать все коэффициенты уравнения', mtWarning, [mbOk], 0) Else Begin A := StrToFloat(str1); b := StrToFloat(str2); c := StrToFloat(str3); if a = 0 then Begin Label1.font.color := clRed; Label1.Caption := 'Коэффициент при второй степени неизвестного равен нулю'; End Else Begin D := sqr(b) – 4 * a * c; If d < 0 then Begin Label1.font.color := clGreen; Label1.Caption := 'Дискриминант меньше нуля. Уравнение не имеет корней' End Else Begin X1 := (-b + sqrt(d))/ 2/ a; X2 := (-b – sqrt(d))/ 2/ a; Label1.font.color := clBlack; Label1.Caption := ‘Корни уравнения: ‘+ #13 +’ x1 =’ + FloatToStr(x1) + #13 +’ x2=’ + FloatToStr(x2) End; End End End;
procedure Form1.Edit1KeyPress(Sender:Tobject; var Key:Char); Var buf: string[20]; Begin If Sender = Edit1 then Buf := Edit1.Text; If Sender = Edit2 then Buf := Edit2.Text; IfSender = Edit3 then Buf := Edit3.Text; Case Key of '0'..'9', chr(8):; //символ просто выводится, т.е. появляется в окне редактора ‘,’:if (pos(‘,’, buf)<>0) or (Length(buf) = 0) or (buf = ‘-‘) then key := chr(0); //игнорируется вторая десятичная запятая ‘-‘:if Length(buf)<>0 then key := chr(0); //игнорируется минус внутри числа chr(13): begin ifSender = Edit1 then Edit2.SetFocus; if Sender = Edit2 then Edit3.SetFocus; if Sender = Edit3 then Begin Button1.SetFocus; SqRoot(Edit1, Edit2, Edit3, Label1); End; End; ‘.’: begin MessageDlg(‘Десятичный разделитель – запятая’, mtInformation, [mbOK], 0); key := chr(0); End Else key := chr(0); End; End;
Procedure Form1.button2Click(Sender:Tobject); Begin Edit1.Text := ‘’; Edit2.Text := ‘’; Edit3.Text := ‘’; Label1.Font.Color := clBlack; Label1.Caption := ‘’; Edit1.SetFocus; end;
procedure Form1.Button1Click(Sender:Tobject); Begin SqRoot(Edit1, Edit2, Edit3, Label1); end;
procedure Form1.Button3Click(Sender:Tobject); Begin Form1.Close; end;
FloatToStrF(<переменная вывода>, <тип формата>, <параметры формата>). FloatToStrF(x1, ffGeneral, 7.2)
ffExponent Þ <один знак>.<дробная часть>E<показатель десятичной степени>
ffCurrency
Str(<число>[:<общее число позиций>][:<число десятичных знаков>], <строка>)
# Enter (chr(13) Û #13)
Canvas (холст)
Рис. 33
Shape
BringToFront, SendToBack
Delay(<миллисекунды>)
Листинг 39 procedure TForm1.OnActivate(Sender: TObject); Var i:integer; Begin for i := 1 to 50 do Begin Shape1.Left := Shape1.Left + 1; Delay(500); end; end;
Рис. 34
TTimer
Enabled:boolean Interval:integer
OnTimer
Листинг 40 procedure TForm1.Timer1Timer(Sender: TObject); Begin Shape1.Left := Shape1.Left + 1; end;
Листинг 41 procedure TForm1.FormActivate(Sender: TObject); Begin i := 0; end;
Листинг 42 procedure TForm1.Timer1Timer(Sender: TObject); Begin Shape1.Left := Shape1.Left + 1; i := i + 1; if i >= 50 then Timer1.enabled := false; end;
Рис. 35
Листинг 43 procedure Form1.FormActivate(Sender: TObject); Begin Timer1.enabled :=false; end;
procedure TForm1.Timer1Timer(Sender: TObject); Begin Shape1.Left:=Shape1.Left +1; i := i + 1; if i >= 50 then Timer1.enabled := false; end;
TCanvas
224
Height, Width Image1. Height
ClientHeight, Clientwidth
Pen Brush
Canvas.MoveTo(x, y)
PenPos.x, PenPos
Canvas.Pixels[x, y] := <цвет>
<переменная> := <объект>.canvas.pixels[x, y];
Canvas.LineTo(x, y)
PolyLine(<массив точек>: TPoint)
Canvas.PolyLine([Point(10, 30), Point(20, 70), …]);
Листинг 44 … Var … m: array[1..10] of TPoint; … Begin … m[1].x := 10; m[1].y := 30; m[2].x := 20; m[2].y := 70; … m[10].x := 160; m[10].y := 130; Canvas.PolyLine(m) …
Canvas.PolyBezier(m)
Canvas.Ellipse(x1, y1, x2, y2)
Рис. 36
Canvas.Arc(x1, y1, x2, y2, x3, y3, x4, y4)
Рис. 37
Canvas.Pie(x1, y1, x2, y2, x3, y3, x4, y4).
Рис. 38
Canvas.Chord(x1,y1,x2,y2,x3,y3,x4,y4)
Рис. 39
Canvas.Rectanle(x1, y1, x2, y2) Canvas.RoundRec(x1, y1, x2, y2, x3, y3)
Рис. 40
FillRect(<прямоугольник>:TRect)
FrameRect(<прямоугольник>: TRect)
Листинг 45 Var … rec1, rec 2: Trect; {определение двух прямоугольников} … Begin rec1 := Rect(10, 10, 100, 100); {задание координат первого прямоугольника} rec2 := Rect(110, 10, 200, 100); {задание координат второго прямоугольника} Form1.Canvas.Brush.Color := clGreen; {задание цвета кисти} FillRect(rec1); {создание закрашенного зеленым цветом прямоугольника без контура} FrameRect(rec2); {создание прямоугольника c контуром зеленого цвета без закраски}
Polygon(<массив точек>:TPoint)
FloodFill(x, y, Color, FillStyle)
TextOut(X, Y: Integer; const Text: string)
Рис. 41
<объект>.Canvas.Font.Style := [fsBold, fsItalic];
TImage
Image1.Picture.SaveToFile('<путь и имя файла>.bmp');
Image1.Picture.LoadFromFile('<путь и имя файла>.bmp');
Form1.Image1.Canvas.Pen.Color := clRed;
Рис. 42
Листинг 46 procedure Form1.FormCreate(Sender:TObject); Var nc:TColor; Begin Image1.Canvas.Pen.Color := clRed; //задание цвета будущей линии Image1.Canvas.Pen.Width := 3; //установка толщины будущей линии Image1.Canvas.MoveTo(20, 20); //установка графического курсора в точку начала будущей линии Timer1.Enabled := False; //дезактивирование таймера при запуске проекта Timer1.Interval := 300; //установка временного интервала таймера nc := Form1.Color; //определение цвета фона формы Image1.Canvas.Brush.Color := nc.; //задание цвета заливки Image1.Canvas.FillRect(Rect(0, 0, Image1.Width, Image1.Height)); //заливка фона Image1 таким же цветом, что и фон формы Image1.Canvas.LineTo(100, 100); //создание рисунка линии end;
procedure Form1.Timer1Timer(Sender:TObject); Begin Image1.Left := Image1.Left + 1; //сдвиг линии на один пиксель вправо end;
procedure Form1.Button1Click(Sender:TObject); Begin Timer1.Enabled := True; //запуск таймера end;
procedure Form1.Button2Click(Sender:TObject); Begin Timer1.Enabled := False; //остановка таймера end;
224
TСolor 0 ¸ 224-1
clRed, clYellow, clBlue
Form1.Color := 3127;
Листинг 47 … Var … nc: Tcolor; … Begin … nc := 3127; … Form1.Color := 3127; … RGB (Red, Green, Blue)
28 = 256
nc := RGB(104, 67, 201);
Рис. 43
Листинг 48 unit SelectColor; interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; Type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; ScrollBar1: TScrollBar; ScrollBar2: TScrollBar; ScrollBar3: TScrollBar; Label4: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; procedure ScrollBar1Change(Sender: TObject);
|