Език за програмиране DELPHI.
2Структура на Delphi приложениеВсяко Delphi приложение се състои от един проектен файл иедин или няколко unit файла (модули).Проектният файл (.dpr) съдържа главната програма, т.е.
действията които се изпълняват след стартиране на
програмата. Той се генерира автоматично от системата и има
примерно следния вид:program Project1;usesForms,
Unit1 in ‘Unit1.PAS’ {Form1DateForm};beginApplication.Initialize;
Application.CreateForm (TForm1, Form1);
Application.Run;end.
3Клаузата program съдържа името на проекта. Това всъщност е
името на самата програма.
Частта uses изброява всички отделни unit части, които са
включени в проекта.
Блокът на програмата е заграден с оператори begin и end и
съдържа методи за стартиране на изпълнението на програмата.
Всеки Unit е отделен модул на програмата и се съхранява в
отделен .pas файл. Част от тяхното съдържание се създава
автоматично при добавяне на форма към проекта, но основното
съдържание се получава когато програмистът поставя върху нея
нови компоненти, процедури и функции.
Примерен вид на Unit файл:
4unit unitName;interface// other units we need to refer tousesA, B, C;
// exported type definitiontypenewType = TypeDefinition;
// exported constantsconstZero = 0;
//global variablesvarTotal: Integer;implementation
usesD, E;
// hiden global variablevarPartialTotal: Integer;procedure MyProc;begin//….code of procedure MyProcend;initialization// optional initialization partfinalization// optional clean-up codeend.В клауза unit се посочва името на формата. То трябва да е
уникално за всяка форма в рамките на проекта.
Файлът има четири части:Interface - тук се включват имена на други използвани модули,
декларации на типове (включително и потребителски
дефинирани), на константи и глобални променливи (достъпни и
за други клиенти - други програми и модули).
5Implementation - тук са описани основно потребителските
функции и процедури, които отговарят за обработка на
възникващите събития. Могат да се включат uses клаузи и да се
декларират променливи, които са недостъпни за клиенти
(вътрешни променливи).Initialization - тази част не е задължителна. В нея се включва
код, който се изпълнява при стартирането на програмата.
Например задаване на начално стойност на променливи,
използвани при работата на програмата.Finalization - тази част не е задължителна. В нея се включва
код, който се изпълнява при затварянето на програмата.
Напремер команди за освобождаване на заети ресурси при
работата на програмата.
Файлът завършва със служебната дума end с точка.
6Стил на кодиранеЦел на всеки стил на кодиране е ясност и четливост на
програмата. Постига се чрез няколко общоприети подхода като:
- поставяне на коментари
- използване на главни букви
- структуриране на операторитеКоментарите се ползват, за да се вмъкне в програмата
обяснителен текст на естествен език. Коментарите се включват
по три начина:
{това е един начин}
(* това е друг начин *)
// този коментар е само до края на реда
Коментарите могат да съдържат произволни символи, а не само
разрешените в Pascal
7Големи и малки букви• Допустими букви в Pascal са: латинските букви, цифрите и
препинателни знаци като , = < > и т.н.
• Pascal не различава малките от големите букви.
• Имената в Pascal (ще ги наричаме по- нататъкидентификатори) се образуват като низ само от букви и цифри,
започващ с буква.
• Признак на добър стил е имената да започват с главна буква.
Ако името се състои от няколко думи, то всяка дума да
започва с главна.
MyLongIdentifier
MyVreyLongAndStupidIdentifier
8Структуриране на операторите• Символите, които нямат графично изображение се наричат
“бели”, като интервал, нов ред, табулация и т.н.
• За компилатора програмата е един ред без коментарите и
без белите символи.
• Белите символи се ползват, за да се подчертае за читателя
структурата на програмата и да се повиши нейната
разбираемост.if … then if … thenоператор; begin
if … thenoperator1;
operator2;end;
9Някои последователности от букви са резервирани от
системата и не могат да се ползват от програмиста за други
цели, освен определената от системата. Така например:if, begin, end, type, var и др.
Те ще бъдат въвеждани при възникване на съответната
необходимост.Служебни думи в Delphi
10and
array
as
asm
begin
case
class
const
constructor
destructor
dispinterface
div
do
downto
else
end
except
exports
file
finalization
finally
for
function
goto
if
implementation
in
inherited
label
library
mod
nil
not
object
of
or
out
packed
procedure
program
property
raise
record
repeat
resourcestring
set
shl
shr
string
then
threadvar
to
try
type
until
uses
var
while
with
xorСлужебни думи в Delphi
11Изрази• Изразите се използват за определяне на някаква стойност.
• Изразите се образуват като се използват константи,
променливи, скоби, оператори и обръщения към функции.
• Според използваните оператори изразите биват аритметични,
логически, множествени и др.
• Аритметичните оператори са (+) сума, (-) разлика, (*)
умножение, (/) деление, div - целочислено деление, mod -
деление по модул.
• Приоритетът на операциите задава редът, в който се
изпълняват операторите в един израз. Първо се изпълняват
операциите с по-висок приоритет, а след това всички останали
които са с по-нисък приоритет. Ако всички оператори в даден
израз са с еднакъв приоритет, то те се изпълняват в реда си на
записване от ляво на дясно.
12• Редът определен от приоритета се променя чрез скоби.
4 +5*6; | (4 + 5) * 6; |
7 / 3 = 2.333; | 7 div 3 = 2; 7 mod 3 = 1; |
(a +b)/(c – d); | използвани са променливи |
(a > c) or (b <= d) използвани са логическа
функция ИЛИ и оператори за сравнение
( )
not
* / div mod and
+ - or
< <= = >= > <>
Най-висок
Най-нисъкПриоритет на операциите
13Типове• Програмата може да разглеждаме като множество от
променливи и взаимодействие между тях.
• Променливите се означават с идентификатори.
• В хода на изпълнение на програмата те получават
различни, променящи се стойности (затова ги наричаме
променливи).
• Възможните стойности биват различни: числа, букви,
низове, истина или лъжа, сложни структури като книга и
т.н.
• Над всеки вид стойност се изпълняват специфични
операции.
Над числата известните аритметични операции;
над низовете сцепление, разделяне и т.н.
14* Прости данни* Подредени данни
цели
символни
булеви
изброени
диапазон
* реални
* низови* Структурирани даннимножество
масив
запис
файл
клас
псевдоним към класа
интерфейс
* указатели* процедури* данни тип вариантДърво на типовете в Delphi
15Какво определя типът• Всяка променлива може да получава стойности само от
едно предварително определено множество. Над него
могат да се извършват само допустимите за това
множество операции. Това се определя от типа на
променливата.• Типът определя:
1. множеството допустими стойности
2. множеството допустими операции
3. количеството заделена памет за променливата• Типовете биват: Вградени (предлагани от системата) Потребителски (структурирани от потребителя)
16Деклариране на променливи• Pascal изисква променливите да са декларирани, преди да
са използвани. Частта за деклариране започва с var.• Общ вид на декларациясписък от идентификатори : тип;var
Value: Integer;
IsCorect: Boolean;
A, B : Char;• Променливите получават стойности само от своя тип.Value := 10; // Допустимо е!
Value := IsCorect; // Error!!!• Начална инициализация на стойностиValue: Integer = 10;
IsCorect: Boolean = True;
17КонстантиАко един идентификатор не трябва да променя стойността си по
време на изпълнение на програмата, то той се декларира като
константа в частта const.сonstPi = 3.14159;
AuthorName = ‘Niclaus Wirth’;В случая типът на данните се подразбира от посочената стойност
за константата.
Константите могат да са и типизирани, т.е. с явно посочен тип на
данните.сonstThousand: Integer = 1000;Типизираните константи не могат да се използват в декларациите
на други константи.XX= Thousand + 20; // Error!!!
X=Pi + 12; // Допустимо е!
18Стандартната функция SizeOf работи с всички променливи и
типове. Тя връща цяло число, равно на обема памет (в брой
байтове) заделени за променливата/типа.
Пример: SizeOf(Longint) връща 4.Типове данни в Object Pascal
Подредени данниПодредените данни са:
Integer - цели числа
Character - символи
Boolean - логически тип
изброени данни;данни диапазон.
19Подредените данни дефинират подредено множество от
стойности, където всяка стойност, без първата има уникален
предшественик и всяка стойност, без последната, има уникален
следващ елемент, т.е. налице е подреденост на данните.
- За тип integer подредбата на елементите съвпада с тяхната
стойност.
- За всички останали типове, с изключение на данни
диапазон, първата стойност заема позиция 0 в реда,
следващата е на позиция 1. т.н.Обявяване:varIndex, Number: Integer;
Допустими операции: +, -, *, /, div, mod
20
High | Най-високата допустима стойност |
Low | Най-ниската допустима стойност |
Ord | Връща поредния номер на аргумента |
Succ | Връща стойност след тази на аргумента |
Връща стойност предхождаща тази на аргумента | Pred |
Odd | Връща True, ако аргумента е нечетен |
Inc | Увеличава стойността на аргумента |
Dec | Намалява стойността на аргумента |
Допустими функции (за скаларни изброими типове):
21
Cardinal0..4294967295 | Integer-2 147 483 684 to 2 147 483 684 | 16/32 bits |
64 bits | Int64 -263..263-1 | |
LongWord0 to 4 294 967 295 | LongInt-2 147 483 684 to 2 147 483 684 | 32 bits |
Word0 to 65 535 | SmallInt-32 768 to 32 767 | 16 bits |
Byte0 to 255 | ShortTnt-128 to 128 | 8 bits |
Size | Signed Range | Unsigned Range |
Допустими стойности за целочислени данни:
22Символен тип• Те са вградени в системата.
• Те са скаларни, изброими и наредени.
• Допустими стойности: всички символи от ASCII таб.
(съдържа кодовете на всички символи от клавиатурата
включително функционалните и белите символи)
• Обявяване:varSim, YesNot: char;
• Константни символи: ‘к’ или #78
• Фукции: Chr(78) k; Ord(‘k’) 78;
• Някои бели символи:
#7 beep
#9 tabulator
#10 new line
#13 carriage return (enter)
23Логически тип• Данните от този тип са скаларни, изброими и наредени
• Допустими стойности: False, True (наредени в този ред)
• Операция отношение се реализира с операторите за сравнение:
=, <, >, <=, >=, <>
• Отношенията връщат булева стойност
• Обявяване:varLowest, Cheapest: Boolean;
• В сила са правилата: False < True , Ord(False) = 0 , Ord(True) = 1
Succ(False) = True , Pred(True) = False
• Преобразуването на променлива до Boolean ще даде
непредсказуем резултат.
• Допустими операции: Not, Or, And
24Логически функции
true | true | true |
false | false | true |
Or | false | true |
true | false | true |
false | false | false |
And | false | true |
true | false | |
Not | false | true |
Пример: a:=1; b:= 3; x:= -2;
а < b True (a < x) Or (x < b) True
(a < x) And (x < b) False
25Реални типове• Те са скаларни и неизброими.
• Представят числа с плаваща запетая. Обхвата и точността
зависят от размера на заеманата памет.
• Допустими операции: +, -, *, /
• Допустими функции: Delphi има unit Math, където са
включени разнообразни математически функции.
real | 6 байта | 2.9 x 10^-39 .. 1.7 x 10^38 |
extended | 10 байта | 3.6 x 10^-4951 .. 1.1 x 10^4932 |
double | 8 байта | 5.0 x 10^-324 .. 1.7 x 10^308 |
single | 4 байта | 1.5 x 10^-45 .. 3.4 x 10^38 |
тип | Размер | Обхват |
26Дата и времеОсвен вградените в езика типове, Delphi предлага и
предварително дефинирани в units типове. Пример за такъв
тип е TDateTime, който е дефиниран в System unit и се
съпровожда с някои вградени функции
DayOfWeek | Връща номер според деня от седмицата |
FormatDateTime | Форматира дата и време чрез низ |
DateToStr | Превръща дата от TDateTime в низ |
TimeToStr | Превръща време от TDateTime в низ |
Time | Връща текущо време |
Date | Връща текуща дата |
Now | Връща текуща дата и време |
Routine | Описание |
27Превръщане на типовеDelphi забранява присвояване на стойности от друг тип.
Това може да се заобиколи по два начина:1. TypecastingvarN: Integer;
C: Char;
B: Boolean;BeginN := Integer(‘X’);
C := Char(N);2. Използване на подпрограми за преобразуване на типове
28
Trunc | Превръща в Integer като взема сaмо цяла част |
StrToFloat | Превръща низ в число в плаваща запетая |
FloatToStr | Превръща число в плаваща запетая в низ |
Str | Като IntToStr, оставен за съвместимост |
Val | Като StrToInt, оставен за съвместимост |
StrToInt | Превръща низ в число |
IntToStr | Превръща число в низ |
Взема цялата част от стойност в плаваща запетая | Int |
Round | Превръща real в integer чрез закръгляване |
Routine | Description |
ЗАПОЗНАВАНЕ С КОМПОНЕНТИ ОТ ПАЛЕТА STANDARDПалетата Standard е избрана по подразбиране след стартиране на Delphi.
Тя съдържа така наречените GUI(Graphical User Interface) компоненти. Това са
всички прозорци, бутони, диалози, менюта и всичко видимо в едно модерно приложение.
Delphi позволяване изграждането на една мощна програма използвайки богата гама от
такива компоненти. Тези компоненти подобно на Формата имат свои собствени Свойства
и Събития, които сега ще опишем.Main menu(Главно меню)Дава възможност на потребителя да добави в своето приложение меню. За да се
добавят елементите на менюто трябва да се избере свойството Items от Object Inspector и
да се натисне многоточието. След това в зависимост от заданието се попълват нужните
елементи(подменюта) към менюто, като се попълват техните Captions. След оформяне на
менюто трябва на всеки един елемент да се опише програмния код, като това става като се
избере съответния елемент от разработчика и с двойно натискане левия бутон на мишката
се премине към неговия програмен код.Popup menu(Изскачащо меню)Служи за добавяне на изскачащо меню. За добавяне на елементи към менюто
подобно на Главното меню трябва да се избере свойството Items от Object Inspector и да се
натисне многоточието. За разлика обаче от Главното меню, което се появява в самото
стартиране на формата, изскачащото меню трябва да бъде извикано от потребителя при
определено събитие(например натискане на бутон). Самото извикване става със
свойството PopUp :
PopupMenu1.Popup(x,y);
За да бъде извикано свойство на компонент в Delphi чрез програмен код e нужно
първо да бъде написано името на компонента за когото ще викаме избрано свойство, след
това точка и самото свойство. Разделителя между име на компонент, свойство или под
свойство е точката. X и Y в този пример са координатите където желаете това меню да се
визуализира. Те са изискване на самото свойство PopUp. Описанието програмния код на
елементите става като при Главното меню – след двойно натискане левия бутон на
мишката върху избрания елемент.Label(Етикет)Етикета е статичен текст, който буквално служи за да бъде сложен етикет на друг
компонент в приложението.
Свойствата на етикета са следните :
1) AutoSize - определя дали големината на етикета автоматично да се променя
спрямо написания текст в него
2) Caption – заглавие на етикета
3) Color – цвета на фона на етикета, избор от падащо меню
4) Enable – Активност на етикета. При избор false етикета ще бъде неактивен.
5) Font – Шрифт и цвят на символите на етикета.
6) Name – Име на етикета. То не е неговото заглавие. Това е името с което
разработчика се обръща към етикета в програмния код.
7) Hint, ShowHint – Добавяне на подсказка към етикета, която се визуализира при
позициониране курсора на мишката върху него от страна на потребителя. За да
бъде активно на свойството ShowHint трябва да се избере стойност True.
8) Transparent – Прозрачност на етикета. Избор между True/False, като при True
етикета ще бъде прозрачен.
9) Visible – Видимост на етикета. Избор между True/False, като при False етикета ще
бъде невидим за потребителя.
10) WordWrap – Пренос на думите. Избор между True/False, като при True думите ще
се пренасят на нов ред, при недостатъчна дължина на етикета.
11) Top, Left – координати на етикета спрямо формата, а не десктоп-а.
12) Height, Width – размери на етикета. За да бъдат ефективни трябва на свойството
AutoSize да се избере False.
Събития на етикета :
1) OnClick - служи за изпълнение на програмен код при натискане на левия бутон на
мишката върху етикета.
2) OnDblClick - служи за изпълнение на програмен код при двукратно натискане на
левия бутон на мишката върху етикета.
3) OnMouseEnter - служи за изпълнение на програмен код при навлизане курсора на
мишката върху етикета.
4) OnMouseLeave - служи за изпълнение на програмен код при напускане курсора на
мишката от етикета.Edit(Едит)Edit-а позволява на потребителя да въвежда едноредов текст. Например Име,
Презиме, Фамилия и т.н.
Свойства на Edit-а :
1) AutoSize - определя дали големината на Edit-а автоматично да се променя спрямо
написания текст в него
2) BorderStyle – избор дали Edit-а да има граници или не. При избор на bsNone ще
бъде без.
3) CharCase – 3 възможности за избор : ecLowerCase, ecNormal, ecUpperCase. При
избор на ecLowerCase потребителя ще има възможност да въвежда само малки
букви, при избор ecUpperCase – само големи. ecNormal дава възможност за
въвеждане на всякакъв вид букви.
4) Color - цвета на фона на Edit-а, избор от падащо меню
5) Enabled - Активност на Edit-а. При избор false Edit-а ще бъде неактивен.
6) Font - Шрифт и цвят на символите на Edit-а.
7) Hint, ShowHint - Добавяне на подсказка към Edit-а, която се визуализира при
позициониране курсора на мишката върху него от страна на потребителя. За да
бъде активно на свойството ShowHint трябва да се избере стойност True.
8) MaxLength – максимална дължина на символите в Edit-а.
9) Name – Името с което разработчика се обръща към Edit-a в програмния код.
10) ReadOnly – При избор True Edit-а ще бъде заключен за въвеждане на символи.
11) TabOrder – Номер в поредноста на преминаване след натискане на бутон Tab от
клавиатурата .
12) TabStop – Избор дали при натискане на бутона Tab да се преминава през Edit-а
или не.
13) Text – текста на Edit-а, който ще бъде зададен по подразбиране. Препоръчва се да
няма такъв за да може потребителя да вижда празен Edit.
14) Visible - Видимост на Edit-а. Избор между True/False, като при False Edit-а ще
бъде невидим за потребителя.
15) Top, Left – координати на Edit-а спрямо формата, а не десктоп-а.
16) Height, Width - размери на Edit-а. За да бъдат ефективни трябва на свойството
AutoSize да се избере False.
Събития на Edit-а :
1) OnChange - служи за изпълнение на програмен код при промяна стойността на
Edit-а
2) OnClick - служи за изпълнение на програмен код при натискане на левия бутон на
мишката върху Edit-а
3) OnDblClick - служи за изпълнение на програмен код при двукратно натискане на
левия бутон на мишката върху Edit-а
4) OnEnter - служи за изпълнение на програмен код при избиране на Edit-а
5) OnExit - служи за изпълнение на програмен код при излизане от Edit-а
6) OnKeyPress - служи за изпълнение на програмен код при натискане на определен
бутон, до като сме избрали Edit-аMemoДава възможност за въвеждане на много редов текст, но без възможност за
форматиране на самия текст.
Свойства на Memo-то :
1) Alignment – Ориентировка на текста : Left, Right или Centre
2) BorderStyle - избор дали Memo-то да има граници или не. При избор на bsNone
ще бъде без.
3) Color - цвета на фона на Memo-то , избор от падащо меню
4) Enabled - Активност на Memo-то. При избор False Memo-то ще бъде неактивен.
5) Font - Шрифт и цвят на символите на Memo-то.
6) Hint, ShowHint - Добавяне на подсказка към Memo-то, която се визуализира при
позициониране курсора на мишката върху него от страна на потребителя. За да
бъде активно на свойството ShowHint трябва да се избере стойност True.
7) Lines – текста на Memo-то. След избор на свойството и натискане върху
многоточието се отваря редактор в който може да въвеждаме/редактираме текст в
процеса на разработване на приложението.
8) MaxLength – максимална дължина на символите в Memo-то .
9) Name – Името с което разработчика се обръща към Edit-a в програмния код.
10) ReadOnly – При избор True Memo-то ще бъде заключен за въвеждане на символи.
11) ScrollBars – възможност за добавяне на вертикални и/или хоризонтални ScrollBars
12) TabOrder – Номер в поредноста на преминаване след натискане на бутон Tab от
клавиатурата .
13) TabStop – Избор дали при натискане на бутона Tab да се преминава през Memo-то
или не.
14) Visible - Видимост на Memo-то . Избор между True/False, като при False Memo-то
ще бъде невидим за потребителя.
15) WordWrap - Пренос на думите. Избор между True/False, като при True думите ще
се пренасят на нов ред, при недостатъчна дължина на Memo-то.
16) Top, Left – координати на Memo-то спрямо формата, а не десктоп-а.
17) Height, Width - размери на Memo-то . За да бъдат ефективни трябва на свойството
AutoSize да се избере False.
Събития на Memo-то :
1) OnChange - служи за изпълнение на програмен код при промяна стойността на
Memo-то
2) OnClick - служи за изпълнение на програмен код при натискане на левия бутон на
мишката върху Memo-то
3) OnDblClick - служи за изпълнение на програмен код при двукратно натискане на
левия бутон на мишката върху Memo-то
4) OnEnter - служи за изпълнение на програмен код при избиране на Memo-то
5) OnExit - служи за изпълнение на програмен код при излизане от Memo-то
6) OnKeyPress - служи за изпълнение на програмен код при натискане на определен
бутон, до като сме избрали Memo-тоButton(Бутон)Бутона е най-простия активен елемент в Delphi. След натискане върху него той
извършва някакво действие заложено в програмния код.
Свойства на Бутона :
1) Caption – заглавие на Бутона
2) Enabled - Активност на Бутона. При избор False Бутона ще бъде неактивен.
3) Font - Шрифт и цвят на символите на Бутона.
4) Hint, ShowHint - Добавяне на подсказка към Бутона, която се визуализира при
позициониране курсора на мишката върху него от страна на потребителя. За да
бъде активно на свойството ShowHint трябва да се избере стойност True.
5) Name – Името с което разработчика се обръща към Бутона в програмния код.
6) TabOrder – Номер в поредноста на преминаване след натискане на бутон Tab от
клавиатурата .
7) TabStop – Избор дали при натискане на бутона Tab да се преминава през Edit-а
или не.
8) Visible – Видимост на Бутона. Избор между True/False, като при False Бутона ще
бъде невидим за потребителя.
9) WordWrap – Пренос на думите. Избор между True/False, като при True думите ще
се пренасят на нов ред, при недостатъчна дължина на Бутона.
10) Top, Left – координати на Бутона спрямо формата, а не десктоп-а.
11) Height, Width – размери на Бутона. За да бъдат ефективни трябва на свойството
AutoSize да се избере False.
Събития на Бутона :
1) OnClick - служи за изпълнение на програмен код при натискане на левия бутон на
мишката върху Бутона.
2) OnEnter - служи за изпълнение на програмен код при избиране на Бутона
3) OnExit - служи за изпълнение на програмен код при излизане от Бутона
4) OnKeyPress - служи за изпълнение на програмен код при натискане на определен
бутон, до като сме избрали БутонаCheckBoxCheckBox-а дава на потребителя избор тип Да/Не. Например дали даден пациент е
осигурен или не.
Свойства на CheckBox-а :
1) Alignment – Ориентировка на текста : Left, Right или Centre
2) Caption – заглавие на CheckBox-а
3) Checked
4) Color - цвета на фона на CheckBox-а , избор от падащо меню
5) Enabled - Активност на CheckBox-а. При избор False CheckBox-а ще бъде
неактивен.
6) Font - Шрифт и цвят на символите на CheckBox-а.
7) Hint, ShowHint - Добавяне на подсказка към CheckBox-а, която се визуализира
при позициониране курсора на мишката върху него от страна на потребителя. За
да бъде активно на свойството ShowHint трябва да се избере стойност True.
8) Name - Името с което разработчика се обръща към CheckBox-а в програмния код.
9) TabOrder – Номер в поредноста на преминаване след натискане на бутон Tab от
клавиатурата .
10) TabStop – Избор дали при натискане на бутона Tab да се преминава през
CheckBox-а или не.
11) Visible - Видимост на CheckBox-а . Избор между True/False, като при False
CheckBox-а ще бъде невидим за потребителя.
12) WordWrap - Пренос на думите. Избор между True/False, като при True думите ще
се пренасят на нов ред, при недостатъчна дължина на CheckBox-а.
13) Top, Left – координати на CheckBox-а спрямо формата, а не десктоп-а.
14) Height, Width - размери на CheckBox-а . За да бъдат ефективни трябва на
свойството AutoSize да се избере False.
Събития на CheckBox-а :
1) OnClick - служи за изпълнение на програмен код при натискане на левия бутон на
мишката върху CheckBox-а
2) OnEnter - служи за изпълнение на програмен код при избиране на CheckBox-а
3) OnExit - служи за изпълнение на програмен код при излизане от CheckBox-а
4) OnKeyPress - служи за изпълнение на програмен код при натискане на определен
бутон, до като сме избрали CheckBox-аRadioButtonRadioButton-ите дава възможност за множествен избор.
Свойства на RadioButton:
1) Alignment – Ориентировка на текста : Left, Right или Centre
2) Caption – заглавие на RadioButton
3) Checked
4) Color - цвета на фона на RadioButton , избор от падащо меню
5) Enabled - Активност на RadioButton. При избор False RadioButton ще бъде
неактивен.
6) Font - Шрифт и цвят на символите на RadioButton.
7) Hint, ShowHint - Добавяне на подсказка към RadioButton, която се визуализира
при позициониране курсора на мишката върху него от страна на потребителя. За
да бъде активно на свойството ShowHint трябва да се избере стойност True.
8) Name - Името с което разработчика се обръща към RadioButton в програмния код.
9) TabOrder – Номер в поредноста на преминаване след натискане на бутон Tab от
клавиатурата .
10) TabStop – Избор дали при натискане на бутона Tab да се преминава през
RadioButton или не.
11) Visible - Видимост на RadioButton. Избор между True/False, като при False
RadioButton ще бъде невидим за потребителя.
12) WordWrap - Пренос на думите. Избор между True/False, като при True думите ще
се пренасят на нов ред, при недостатъчна дължина на RadioButton.
13) Top, Left – координати на RadioButton спрямо формата, а не десктоп-а.
14) Height, Width - размери на RadioButton . За да бъдат ефективни трябва на
свойството AutoSize да се избере False.
Събития на RadioButton :
1) OnClick - служи за изпълнение на програмен код при натискане на левия бутон на
мишката върху RadioButton
2) OnDblClick - служи за изпълнение на програмен код при двукратно натискане на
левия бутон на мишката върху RadioButton
3) OnEnter - служи за изпълнение на програмен код при избиране на RadioButton
4) OnExit - служи за изпълнение на програмен код при излизане от RadioButton
5) OnKeyPress - служи за изпълнение на програмен код при натискане на определен
бутон, до като сме избрали RadioButtonRadioGroupRadioGroup-а действа като RadioButton-а, но действа в един по-чист и динамичен
начин. Препоръчително е да се използва той.
Свойства на RadioGroup:
1) Caption – заглавие на RadioGroup
2) Color - цвета на фона на RadioGroup , избор от падащо меню
3) Enabled - Активност на RadioGroup. При избор False RadioGroup ще бъде
неактивен.
4) Font - Шрифт и цвят на символите на RadioGroup.
5) Hint, ShowHint - Добавяне на подсказка към RadioGroup, която се визуализира
при позициониране курсора на мишката върху него от страна на потребителя. За
да бъде активно на свойството ShowHint трябва да се избере стойност True.
6) Name - Името с което разработчика се обръща към RadioGroup в програмния код.
7) Items – След избор на свойството Items и натискане на многоточието се
визуализира редактор, където може да въведем всички желани избори за
RadioGroup, като трябва всяка една да е на нов ред.
8) TabOrder – Номер в поредноста на преминаване след натискане на бутон Tab от
клавиатурата .
9) TabStop – Избор дали при натискане на бутона Tab да се преминава през
RadioGroup или не.
10) Visible - Видимост на RadioGroup . Избор между True/False, като при False
RadioGroup ще бъде невидим за потребителя.
11) Top, Left – координати на RadioGroup спрямо формата, а не десктоп-а.
12) Height, Width - размери на RadioGroup . За да бъдат ефективни трябва на
свойството AutoSize да се избере False.
Събития на RadioGroup :
1) OnClick - служи за изпълнение на програмен код при натискане на левия бутон на
мишката върху RadioGroup
2) OnEnter - служи за изпълнение на програмен код при избиране на RadioGroup
3) OnExit - служи за изпълнение на програмен код при излизане от RadioGroupComboBox(Падащо меню)Падащото меню се използва за избор на 1 елемент от предварително въведен списък.
Например диагнозата на пациент.
Свойства на ComboBox-а:
1) AutoComplete – При избор True и директно писане в ComboBox-а след избор на
буква/и директно довършва, ако има отговарящ на започнатото елемент от
списъка.
2) CharCase – 3 възможности за избор : ecLowerCase, ecNormal, ecUpperCase. При
избор на ecLowerCase потребителя ще има възможност да въвежда само малки
букви, при избор ecUpperCase – само големи. ecNormal дава възможност за
въвеждане на всякакъв вид букви.
3) Color - цвета на фона на ComboBox-а, избор от падащо меню
4) Enabled - Активност на ComboBox-а. При избор false ComboBox-а ще бъде
неактивен.
5) Font - Шрифт и цвят на символите на ComboBox-а.
6) Hint, ShowHint - Добавяне на подсказка към ComboBox-а, която се визуализира
при позициониране курсора на мишката върху него от страна на потребителя. За
да бъде активно на свойството ShowHint трябва да се избере стойност True.
7) Items – След избор на свойството Items и натискане на многоточието се
визуализира редактор, където може да въведем списъка от елементи за
ComboBox-а, като трябва всеки един да е на нов ред.
8) MaxLength – максимална дължина на символите в ComboBox-а.
9) Name – Името с което разработчика се обръща към ComboBox-a в програмния
код.
10) Sorted – При избор True елементите от списъка се подреждат автоматично по
азбучен ред
11) TabOrder – Номер в поредноста на преминаване след натискане на бутон Tab от
клавиатурата .
12) TabStop – Избор дали при натискане на бутона Tab да се преминава през
ComboBox-а или не.
13) Text – текста на ComboBox-а, който ще бъде зададен по подразбиране.
Препоръчва се да няма такъв за да може потребителя да вижда празен ComboBox.
14) Visible - Видимост на ComboBox-а. Избор между True/False, като при False
ComboBox-а ще бъде невидим за потребителя.
15) Top, Left – координати на ComboBox-а спрямо формата, а не десктоп-а.
16) Height, Width - размери на ComboBox-а. За да бъдат ефективни трябва на
свойството AutoSize да се избере False.
Събития на ComboBox-а :
7) OnChange - служи за изпълнение на програмен код при промяна стойността на
ComboBox-а
8) OnClick - служи за изпълнение на програмен код при натискане на левия бутон на
мишката върху ComboBox-а
9) OnDblClick - служи за изпълнение на програмен код при двукратно натискане на
левия бутон на мишката върху ComboBox-а
10) OnEnter - служи за изпълнение на програмен код при избиране на ComboBox-а
11) OnExit - служи за изпълнение на програмен код при излизане от ComboBox-а
12) OnKeyPress - служи за изпълнение на програмен код при натискане на определен
бутон, до като сме избрали ComboBox-а
1Оператори в DELPHI
2ОператориАко типовте данни са едната базова част на Pascal, то другата
съществена част са операторите. Те описват какви действия
трябва да се изпълняват върху данните и в какъв ред.
Операторите в Delphi завършват с точка и запетайка ;Операторите са два вида прости и съставни.Простите опeратори изпълняват единични действия, т.е.
само една инструкция. Например една поредица от n прости
оператори изглежда така:оператор 1;
оператор 2;
....................
оператор n;
3Сложните оператори се образуват, когато поредица от
няколко прости оператора се загради с операторни скобиbegin и end.beginоператор 1;
оператор 2;
..................
оператор n;end;Съставният оператор може да се постави навсякъде, където
може да се постави и прост оператор.
4Примери• Прости операториX := Y + Z; // оператор за присвояванеRandomize; // обръщение към процедураM := X*(A - B); // оператор за присвояване
• Съставен операторbeginA := B + Z;
C := A * 2;end;• Символът ‘;’ след последния оператор и преди end не е
задължителен, но силно препоръчителен
5Оператор за присвояване• Общият вид на оператора за присвояване е:променлива := израз;• Изчислява се стойността на израза и тази стойност
заменя предишната стойност на променливата.
• Типът на променливата и типът на израза трябва да
съвпадат. В противен случай трябва да се извърши
преобразуване (casting) на типовете, където това е
възможно.
6Условни оператори• Основен принцип на програмното управление е, че
операторите се изпълняват последователно, ако не е казано
противното.
• Условните оператори служат точно за тази цел --- да
сменят реда на изпълнение на операторите.
• Чрез тях се реализират разклонения в алгоритъма за
работа на програмата и се създават алтернативни пътища в
него, т.е. данните в програмата могат да се обработят по
един от два алтернативни начина.
• Разклоненията се реализират на базата на проверка за
изпълнението на дадено логическо условие.
7Оператор IFа)
• Структурно този оператор се проявява в две разновидности:if – then структура (съкратен оператор)
True Условие
False
Оператор
Първо се проверява
логическото условие.
Операторът се изпълнява само
ако то е изпълнено. В противен
случай нищо не се прави. Тази
форма се използва, когато е
важен единствено случая на
изпълнено условие.
8б) if --- then --- else структура (пълна форма)
True Условие False
Оператор1 Оператор2Първо се проверява
логическото условие. Ако
условието е изпълнено, се
изпълнява Оператор1 . В
противен случай се
изпълнява Оператор2. При
всички случаи се изпълнява
само единия от двата
възможни оператора.
9if a > 0 then
begina := a + 1;
b := b +a;end;Пример 1:if (a + b) < c then
begina := a +2;
c := a+b;end
elseShowMessage(‘Uslovieto ne e izpalneno!’);Пример 2:
10• Синтаксис: Тези две структури се описват така
a) if условие then оператор;
b) if условие then оператор1 else operator2; Условие е булев израз Пред else не се поставя символа ‘;’ Операторите могат да бъдат прости или
съставни Операторите могат да бъдат произволни,
включително други if оператори
• Семантика: В зависимост от стойността на
булевия израз се изпълнява единия или другия клон.
11Case оператор• Операторът if разклонява само на два клона изчислителния
процес. Ако той трябва да се разклони на повече клонове,
могат да се приложат вложени един в друг оператори if. Но
това прави програмата непрегледна. В такива случаи се
препоръчва употребата на CASE оператор.
•Структурата на този оператор е:
Op era tor n |
Op era tor |
Op era tor 1 |
Op era tor 2 |
…Изброим израз
12• Синтаксис
case селектор ofсписък константи 1: оператор 1;
списък константи 2: оператор 2;
.......................................................
списък константи n: оператор n;elseоператор;end;
Частта <else оператор;> може да се изпусне.
13• СемантикаОпределя се стойността на селектора и полученият
резултат се сравнява със списъците от константи. При
съвпадение с някоя константа се изпълнява съответстващия
му оператор и се прекратяват сравненията, т.е. преминава се
след end. Ако не се намери съвпадение, се изпълнява
операторът след else (ако тази част е включена в оператора).Списъците от константи се състоят от една или повече
константи (разделени със запетая), които са от типа на
селектора.Операторите могат да бъдат прости или съставни.Сравненията се правят в реда, в който са записани
константите. Ако търсената константа е по-напред в
списъка, то тя ще бъде по-бързо намерена.
14case Number of1: Text := ‘One’;
2: Text := ‘Two’;
3: Text := ‘Three’;end;Пример 3:case MyChar of‘+’: Text := ‘Plus sign’;
‘-’: Text := ‘Minus sign’;
‘*’, ’/’: Text := ‘Multiplication or division’;
‘0’..’9’: Text := ‘Number’;
‘a’..’z’: Text := ‘Lowercase character’;
‘A’..’Z’: Text := ‘Uppercase character’;elseText := ‘Unknown character’;end;Пример 4:
15Оператори за цикъл• Служат за многократно повторение на група оператори.
Тези оператори наричаме тяло на цикъла.
• Тялото може да включва прост или съставен оператор.
• Повторенията спират след като се достигне определено
състояние на булев израз. Това е логическо условие за край
на цикъла.
• Езиците за програмиране предлагат по няколко оператора
за цикъл. Те се различават по начина на проверка за край на
повторенията (край на цикъла).
16• Delphi предлага три вида оператори за цикъл:while условието за край е
логически израз и се проверява предиизпълнение тялото на цикъла.repeat условието за край е
логически израз и се проверява следизпълнение тялото на цикъла.
for | края се проверява чрез |
изброяване на повторенията. Това е така | |
наречения броячен цикъл. |
17Оператор while• Структура (цикъл с предпроверка, с предусловие)
• Синтаксисwhile булев израз do оператор;Операторът може да бъде и съставен
Условие
True
False
Оператор
Изход
18• Семантика
Най-напред се изчислява булевия израз. Ако е False
цикълът се прекъсва. Иначе се изпълнява оператор и
отново се изчислява булевия израз.
Пример 5:while (I <= 100) and (J <= 100) do
beginI := I +10;
J := J + 10;end;
19Оператор repeat• Структура (цикъл с постпроверка, с постусловие)
Условие
False
True
Оператор |
Изход
20• Синтаксисrepeatоператор1;
оператор2;
..................
операторn;until булев израз;Операторите могат да бъдат един или много.
В последния случай не е нужно да се заграждат с beginи end защото са заградени с repeat и until
21•Семантика Най-напред се изчисляват операторите После се изчислява булевия израз Ако е false, повтаря се изпълнението на
операторитеАко е true цикълът се прекратява
• Цикълът repeat се повтаря при false, а при while се
повтаря ако условието е true.
• Този цикъл гарантира поне еднократно изпълнение на
операторите.
Пример 6:repeatI := I+10;
J := J+10;until (I > 100) and (J > 100);// Тук условието е обратно на това за while
22Оператор for• Структура (преброяване, броячен цикъл)
Променлива := нач. с-т |
Оператор |
Пром. <> кр. с-т Пром. :=
нова с-т
True
False
Изход
23• Синтаксисfor I := начална стойност to крайна стойност do оператор;for I := начална стойност downto крайна стойност do оператор; I е произволна променлива от нареден изброим тип. оператор е прост или съставен. версията to взема следваща стойност на I. версията downto взема предхождаща стойност на I.
• Семантика I може да взема само последователни стойности от
началната към крайната I не може да променя стойността си в тялото на
цикъла
24• Примерvar k, i : Integer; var k, i : Integer;
………………….. …………………..
k := 0; k := 0;for i := 1 to 10 do for i := 10 downto 1 dok := k + 1; k := k + 1;
…………………… ……………………….
25Системни процедури• Continue; прекъсва текущата итерация на цикъла и
преминава към следващата.
• Break; прекъсва изпълнението на цикъла и преминава
към следващ оператор.
• Exit; прекъсва изпълнението на текуща функция или
процедура.
• Halt; прекъсва изпълнението на цялата програма.
26Оператор withТози оператор не разширява възможностите на езика, а само
съкращава писането. Когато се работи примерно с
компоненти, той позволява да се изпусне част от
описанието.
Така вместоButton1.Width := 200;
Button1 Caption := ‘New Caption’;се замества сwith Button1 do
beginWidth := 200;
Caption := ‘New Caption;end;
27Примерна задачаЗадание: Да се определи сумата на положителните числа,
сумата на отрицателните числа и общата сума на въведени от
клавиатурата произволен брой числа.Общ вид на интерфейса на програмата:1 2
3 4
5
6 7
27354 61
28Код на програмата:procedure TForm1.FormCreate(Sender: TObject);beginsum:=0; sum1:=0; i:=1; // глобални променливиend;procedure TForm1.btnAddClick(Sender: TObject);var tmp:Integer; // локална променливаbegintmp:=StrToInt(txtEnter.Text);If (tmp >= 0) thensum:=sum+tmpElsesum1:=sum1+tmp;
lblResult.Caption:=IntToStr(sum);
lblResult1.Caption:=IntToStr(sum1);
lblResult_Index.Caption:=IntToStr(i);
txtEnter.Clear;
txtEnter.SetFocus;
i:=i+1;end;
29procedure TForm1.btnTotalClick(Sender: TObject);beginbtnAdd.Enabled:=False;
lblSum.Visible:=False;
lblResult.Visible:=False;
lblSum1.Visible:=False;
lblResult1.Visible:=False;
lblTotal_All.Caption:=IntToStr(sum+sum1);end;
УВОД В DELPHI. ОСНОВНИ ПОНЯТИЯ И ИЗГЛЕДИ. КЛАВИШНИ
КОМБИНАЦИИКакво е DelphiDelphi е език създаден първоначално за разработване на Microsoft Windows, а после и
за Linux и .NET програми. Delphi е мощен, но същевременно лесен за използване
инструмент за генериране на приложения с дружелюбен интерфейс. Delphi предизвиква
революция в разработването на софтуер чрез така наречената RAD(Rapid Application
Development) техника и става основен инструмент за много хора занимаващи се с бази
данни, приложения за интернет и др.
Езикът на средата Delphi е първоначално наречен Object Pascal (Pascal с обектноориентирани разширения). Във версия 7 на Delphi, Borland променят името на езика на
Delphi. И макар че вече официално езика се казва Delphi много хора все още използват
старото му име — Object Pascal.
Delphi автоматизира процеса на създаването на програми, давайки възможност в
кратки срокове, да се създават напълно функционални и завършени програми само от
един програмист.
Първата версия на Delphi излиза през 1995 и позволява разработката на 16-битови
Windows приложения. Следващата година Borland пускат Delphi 2, който генерира 32-
битови приложения. През 2001 се появява версия за Linux, наречена Kylix. Delphi 8 излиза
през 2003 с поддръжка на .NET. Последната версия на Delphi, произведена от Borland е
Delphi 2006 и към нея освен езикът Object Pascal/Delphi е включен и C#. През Март 2007
излиза първата версия, произведена от CodeGear - Delphi 2007. В тази версия фокусът
отново е поставен върху разработването на Win32 приложения.Основни изгледи
(изглед Форма)
1) Palette (Палета с компоненти)
Служи за избор на компонент с който ще се работи. За да се избере търсения
компонент първо трябва да се избере съответната палета към която той спада, а след
това и самия компонент. След избора му просто трябва да се натисне върху формата и
той ще се появи на избраното място.
2) Form (Форма)
Служи за “плот” на компонентите. В един Delphi проект може да има една или
повече форми, като това зависи от конкретното задание и нужди на програмиста.
3) Object Inspector (Инспектор на обектите)
Предоставя на програмиста достъп до свойствата(properties) и събитията(events) за
избрания компонент. За всеки компонент те са различни, като ще се запознаем
подробно с тях в следващите лекции.
4) Object Tree View (Дърво на обектите)
Списък с компонентите за избраната форма
(изглед Unit)
Това е изглед към Unit-a. В него се съдържа програмния код(source). Преминаването от
Unit към Form става с клавиша F12.
Добавяне на нова ФормаЗа да се добави нова форма към Delphi проекта е необходимо да изберем меню File ->
New -> Form. След този избор Форма със следващ по поредност номер ще се добави към
проекта ни.Преминаване от една форма към друга
Преминаването от една в друга форма става с клавишната комбинация Shift+F12.
След изпълнението и се появява прозорец с всички форми в проекта. Избираме формата
към която желаем да преминем и натискаме ОК.Премахване на форма от проектаЗа да премахнем форма от Delphi проекта е необходимо да изберем менюто Project ->
Remove from project, след което ще излезе диалогов прозорец с формите в проекта. Трябва
да изберем желаната за премахване, натиснем ОК и потвърдим запитването.Свойства и събития на FormТук ще разгледаме някои от по-важните свойства и събития на обекта Form. Тях
може да ги видим, като изберем формата и разгледаме Object Inspector-а.
Свойства :
1) Border icons
a. biMinimize – Ако присвоим на това свойство стойност False, то би ни
изчезнала стандартната Windows икона за минимизиране на прозореца за
избраната форма.
b. biMaximize – Ако присвоим на това свойство стойност False, то би ни
изчезнала стандартната Windows икона за разширяване на прозореца за
избраната форма.
2) BorderStyle – от падащо меню избираме стила на границите на формата – вид и
подвижност
3) BorderWidth – ширина на границите на формата. По подразбиране стойността е 0,
като при желание може да бъде променяна по желание на разработчика.
Стойността и е цяло число
4) Caption – Заглавие на формата. Появява се в горната и част.
5) Color – цвят на формата. Избира се от предоставени такива.
6) Height – височина на формата. Стойността е цяло число.
7) Left – позиция на формата спрямо лявата страна на работния плот. Служи за
позициониране на формата хоризонтално. Стойността е цяло число.
8) Name – име на формата. Задължително трябва да бъде на латиница, както и без
паузи в него. Служи за системно извикване на формата.
9) Position – служи за автоматично позициониране на формата, като има възможност
за избор на няколко варианта
10) Top - позиция на формата спрямо горната страна на работния плот. Служи за
позициониране на формата вертикално. Стойността е цяло число.
11) Visible - Ако присвоим на това свойство стойност False, то формата няма да бъде
видима за потребителя, съответно True я прави обратно видима
12) Width - ширина на формата. Стойността е цяло число.
Събития :
Събитията на даден обект в Delphi служат за изпълнение на програмен код при
определено действие или случка с въпросния обект. Те се задействат след стартиране на
програмата, а не по време на нейното проектиране.
1) OnActivate – служи за изпълнение на програмен код при активирането
(отварянето) на формата.
2) OnClick - служи за изпълнение на програмен код при натискане на левия бутон на
мишката върху формата.
3) OnClose - служи за изпълнение на програмен код при затваряне на формата
4) OnCreate - служи за изпълнение на програмен код при създаване на формата.
Обикновено това е събитие, което се изпълнява само един път, поради това че
формата се създава при стартиране на програмата. За да бъде изпълнено отново
трябва да се затвори програмата и да се стартира отново.
5) OnDblClick - служи за изпълнение на програмен код при двукратно натискане на
левия бутон на мишката върху формата.
6) OnKeyPress - служи за изпълнение на програмен код при натискане на
специфичен клавиш от клавиатурата, който е описан в програмния код.Основни клавишни комбинацииF1 – клавиш за извикване на Help менюто. При извикване върху компонент или дума
от програмния код насочва директно към избраното нещо, стига да има съвпадение
F9 – Стартира проекта
F11 – Показва Object Inspector, ако е затворен
F12 – Преминаване от режим Form към режим Unit и обратно
Shift + F12 – Визуализиране на меню избор на активна форма
Alt + Shift + F11 – Показва Object Tree View, ако е затворено
Shift + Ctrl + F11 – Визуализира меню Options
Ctrl + S – Запис само на активната форма
Ctrl + Shift + S – Запис на всички форми в проекта
Ctrl + F – Търсене в програмния код
Ctrl + R – Заместване на намерен текст в програмния код с друг избран такъв
ПО-ВАЖНИ КОМПОНЕНТИ ОТ ПАЛЕТИ ADDITIONAL, WIN32,SYSTEM
Additional
BitBtnBitBtn-а е бутон с допълнителни опции. Това са цвят на буквите, както и
възможност за добавяне на изображение към бутона. Свойствата и събитията
отговарящи за бутона са валидни и за BitBtn-а.
Допълнителни свойства за BitnBtn-а :
1) Font – Шрифт и цвят на символите на етикета.
2) Glyph – След избиране на свойството Glyph и натискане на многоточието
на потребителя се дава възможност да зареди Bitmap изображение на
бутона.
3) Kind - Дава възможност за избор от падащо меню на няколко зададени
типове бутони.
4) Layout – Позиция на изображението спрямо текста.
5) Margin – Отместване на текста и изображението от лявата страна на бутона
в пиксели. Стойността “-1” позиционира централно текста и
изображението.
6) Spacing – Разстояние между текста и изображението.MaskEditMaskEdit-а служи за въвеждане на шаблонни текстове като дата, време, телефон и
т.н. Свойствата и събитията отговарящи за Edit-а са валидни и за MaskEdit-а.
Допълнителни свойства за MaskEdit-а :
1) EditMask - След избиране на свойството EditMask и натискане на
многоточието на потребителя се дава възможност да избере някоя от
предварителното въведени шаблони. Има възможност шаблона да се
редактира, за да отговаря напълно на заданието.
Image(Изображение)Изображението служи за поставяне на някакъв графичен файл в разработката.
Позволените типове са : jpg, bmp, ico, emf, wmf.
Свойства на изображението :
1) AutoSize - определя дали размера на изображението автоматично да се
променя спрямо оригиналния размер на графичния файла.
2) Center – При AutoSize – False и размер на изображението по-голям от
оригиналния размер на графичния файл, поставянето на свойството Center
– True би позиционирало графичния файл в центъра на изображението. При
стойност – False, то е позиционирано в горен ляв ъгъл.
3) Enable – Активност на изображението. При избор false изображението ще
бъде неактивно.
4) Name – Име на изображението. Това е името с което разработчика се
обръща към изображението в програмния код.
5) Hint, ShowHint – Добавяне на подсказка към изображението, която се
визуализира при позициониране курсора на мишката върху него от страна
на потребителя. За да бъде активно на свойството ShowHint трябва да се
избере стойност True.
6) Picture – след избор на свойството Picture и натискане на многоточието на
потребителя се дава възможност за избере графичния файл, който иска да
зареди в изображението.
7) Stretch – Променя размера на графичния файл в приложението, като го
прави еднакъв с този на изображението.
8) Transparent – Прозрачност на изображението. Избор между True/False, като
при True етикета ще бъде прозрачен.
9) Top, Left – координати на изображението спрямо формата, а не десктоп-а.
10) Height, Width – размери на изображението. За да бъдат ефективни трябва на
свойството AutoSize да се избере False.
LabeledEditLabeledEdit e компонент, който обединява Edit и Caption. Прижава свойствата и
събитията на двата компонента, като за да се достигне до свойствата на Caption-a
трябва да се натисне “+” на свойството EditLabel, съответно до събитията се достига,
като се натисне “+” на събитието EditLabel.Win32
ProgressBarДобавя компонент за обратна връзка относно развитието на дадена операция
зададена от потребителя.
Свойства на ProgressBar-а :
1) Enable – Активност на ProgressBar-а. При избор false ProgressBar-a ще бъде
неактивен.
2) Max – Максимална стойност на ProgressBar-а.
3) Min – Минимална стойност на ProgressBar-а.
4) Name – Име на ProgressBar-а. Това е името с което разработчика се обръща към
ProgressBar-a в програмния код.
5) Orientation – Избор между хоризонтален и вертикален ProgressBar.
6) Position – Текуща позиция на ProgressBar-а.
7) Hint, ShowHint – Добавяне на подсказка към ProgressBar-а, която се визуализира
при позициониране курсора на мишката върху него от страна на потребителя. За
да бъде активно на свойството ShowHint трябва да се избере стойност True.
8) Smooth – Избор дали ProgressBar да бъде с разделители или не.
9) Step – Стъпка на ProgressBar-а.
10) TabOrder – Номер в поредноста на преминаване след натискане на бутон Tab от
клавиатурата .
11) TabStop – Избор дали при натискане на бутона Tab да се преминава през
ProgressBar-а или не.
12) Visible - Видимост на ProgressBar-а. Избор между True/False, като при False
ProgressBar-а ще бъде невидим за потребителя.
13) Top, Left – координати на ProgressBar-а спрямо формата, а не десктоп-а.
14) Height, Width - размери на ProgressBar-а. За да бъдат ефективни трябва на
свойството AutoSize да се избере False.
System
TimerTimer-а служи за добавяне на циклично събитие към приложението. Timer-а не е
GUI компонент.
Свойства на Timer-а :
1) Enabled - Активност на Timer-а. При избор false Timer-а ще бъде неактивен.
2) Interval – задаване времето на цикъла в милисекунди.
3) Name - Име на Timer-а Това е името с което разработчика се обръща към
Timer-а в програмния код.
Събития на Timer-а :
1) Timer-а има едно единствено събитие – OnTimer. То се изпълнява веднъж
за времето зададено в свойството Interval, стига свойството Enabled да е
True.MediaPlayerMediaPlayer-а дава възможност за възпроизвеждане на аудио и видео файлове в
Delphi приложението.
Свойства на MediaPlayer-а :
1) AutoOpen – Избор между True и False. При задаване на True MediaPlayer-а e
автоматично зареден за възпроизвеждане на избрания файл.
2) AutoEnabled - Избор между True и False. При задаване на True MediaPlayerа е автоматично активен.
3) AutoRewind - Избор между True и False. При задаване на True MediaPlayerа автоматично превърта избрания файл до неговото начало.
4) Enabled - Активност на MediaPlayer-а. При избор false MediaPlayer-а ще
бъде неактивен.
5) EnabledButtons – След натискане на бутона “+” може да изберем някои от
бутоните на MediaPlayer-а да бъдат неактивни. По подразбиране всички са
активни.
6) FileName – Име и път на текущо заредения аудио или видео файл.
7) Name - Име на MediaPlayer-а. Това е името с което разработчика се обръща
към MediaPlayer-а в програмния код.
8) Hint, ShowHint – Добавяне на подсказка към MediaPlayer-а, която се
визуализира при позициониране курсора на мишката върху него от страна
на потребителя. За да бъде активно на свойството ShowHint трябва да се
избере стойност True.
9) TabOrder – Номер в поредноста на преминаване след натискане на бутон
Tab от клавиатурата .
10) TabStop – Избор дали при натискане на бутона Tab да се преминава през
MediaPlayer-а или не.
11) Visible - Видимост на MediaPlayer-а. Избор между True/False, като при
False MediaPlayer-а ще бъде невидим за потребителя.
12) VisibleButtons – След натискане на бутон “+” може да изберем някои от
бутоните на MediaPlayer-а да бъдат невидими за потребителя. По
подразбиране всички са видими.
13) Top, Left – координати на MediaPlayer-а спрямо формата, а не десктоп-а.
14) Height, Width - размери на MediaPlayer-а.
ЗАПОЗНАВАНЕ С ПРОГРАМНИЯ КОД НА DELPHI. ТИПОВЕ ДАННИ.
ОПЕРАТОРИ.Както споменахме в Лекция 1 първоначалното име на Delphi е било Object Pascal.
Поради тази причина в същността си програмния код на Delphi е наследен от езика
Pascal. Езикът Pascal e създаден от швейцарският професор Никлаус Вирт и носи името
си от френския философ Блез Паскал.
Пример за програма на Delphi :
unit Unit1;
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.
Една програма разработена на Delphi се състои от една или повече форми, за всяка
от която отговаря по един unit. Unit-а е мястото съдържащо програмния код за всяка
една форма.Анатомия на Delphi програма :В момента на създаване на новия Unit Delphi автоматично добавя в него следните
секции :
1) Заглавна част име на Unit-а. С него започва всеки един Unit.
2) Част Interface - Тази секция съдържа uses клаузите където се посочват
всички други Unit-и(готови библиотеки или други Unit-и от проекта), които
ще бъдат използвани по някакъв начин в текущия. В случай че това е друг
Unit от проекта Delphi ще го добави сам към списъка. В Interface секцията
можем да добавим глобални константи, променливи, процедури, функции
и типове данни.
Interface секцията завършва със запазената дума implementation.3) Част implementation – В тази част се съдържа фактическия код на
програмата описан в процедури и функции. Съдържа всяко събитие в което
разработчика е писал код. Освен това разработчика може да добави свои
процедури и функции, като те трябва да бъдат добавени и в частта Interface.4) End. – край на програматаПример за процедура :
procedure TForm1.Button1Click(Sender: TObject);
var
begin
end;
Първия ред дава името на процедурата/събитието. В случая е събитието Onclick за
компонента Button1. Ключовите думи “begin” и “end” отбелязват началото и края на
процедурата(тялото на процедурата). Евентуалния код, който ще се извиква при
събитие click на мишката върху този бутон трябва да бъде писан там. Частта “var” не е
задължителна, като в нея се описват всички променливи, които използваме в тялото на
процедурата. Описването на променливите става по следния начин :
var
x,y,z : Integer;
x,y и z са имената на променливите, до като Integer е типа им. Променливи от един
и същи тип могат да бъдат изписвани на един ред с разделители запетайки. Ако искаме
променливи от различни типове те трябва да бъдат на отделни редове.Типове данниТук ще разгледаме основните типове данни използвани в DelphiBoolean – Булев типМножеството от стойностите на този тип се състои от два елемента – стойностите
true (истина) и false (лъжа). Числовите им стойности са 1 за true и 0 за false.
С данните от тип Boolean може да се извършват следните операции :
1) And – Логическо “и” (конюнкция)
X | Y | X and Y |
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
При конюнкцията резултата има стойност “истина”, само когато и двата
оператора са със стойност “истина”.
2) Or – Логическо “или” (дизюнкция)
X | Y | X or Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
При дизюнкцията резултата има стойност “истина”, когато дори един от
двата оператора е със стойност “истина”.
3) Not – Логическо “не” (отрицание)
X | Not X |
0 | 1 |
1 | 0 |
При отрицанието резултата има стойност “истина”, когато оператора има
стойност “лъжа” и обратно.
4) Операторите за сравнение също могат да се прилагат над данни от булев
тип :
= равно <= по-малко или равно
<> различно > по-голямо
< по-малко >= по-голямо или равно
Сравняването се извършва, като се сравнят кодовете на булевите
константи. Например true<=false получава стойност false, false=true също
получава стойност false, true>=false получава true и т.н.
5) Odd(x) – Връща стойност “true”, ако x е нечетно число.
6) Eof(End of File) – връща стойност “true”, ако е достигнат края на даден
файл.Integer- Целочислен типМножеството данни в този тип са целите числа, като в зависимост от различните
подтипове на Integer диапазона се мени. Двата разширени(generic) типа са Integer и
Cardinal :
Тип | Диапазон | Формат |
Integer | От -2147483648 до 2147483647 | 32 битов със знак |
Cardinal | От 0 до 4294967295 | 32 битов без знак |
Освен това съществува и по-голямо разделение, така наречените
основни(fundamental) Integer типове :
Тип | Диапазон | Формат |
Shortint | От -128 до 127 | 8 битов със знак |
Smallint | От -32768 до 32767 | 16 битов със знак |
Longint | От -2147483648 до 2147483647 | 32 битов със знак |
Int64 | От -2^63 до 2^63-1 | 64 битов със знак |
Byte | От 0 до 255 | 8 битов без знак |
Word | От 0 до 65535 | 16 битов без знак |
Longword | От 0 до 4294967295 | 32 битов без знак |
С данните от тип Integer могат да бъдат извършвани следните операции :
1) Събиране +
2) Изваждане -
3) Умножение *
4) Частно от деление – div. Взима се само цялата част след делението :
7 div 2 = 3
5) Остатък от деление – mod. Взима се само остатъка след делението :
7 mod 2 = 1
6) Abs(x) – абсолютна стойност
7) Sqr(x) – корен квадратен
8) Trunc(x) – отрязва дробната част и запазва цялата
Trunc(7,9) = 7
9) Round(x) – закръгля x.
Round(7,9) = 8Real – Реален типМножеството данни в този тип са реалните числа(дробите), като в зависимост от
различните подтипове на Real диапазона се мени.
Разширен(generic) тип :
Тип | Диапазон | Значими цифри | Големина в битове |
Real | От 5.0 x 10^-324 до 1.7 x 10^308 | 15-16 | 8 |
Основни(Fundamentаl) типове :
Тип | Диапазон | Значими цифри | Големина в битове |
Real48 | От 2.9 x 10^-39 до 1.7 x 10^38 | 11-12 | 6 |
Single | От 1.5 x 10^-45 до 3.4 x 10^38 | 7-8 | 4 |
Double | От 5.0 x 10^-324 до 1.7 x 10^308 | 15-16 | 8 |
Extended | От 3.6 x 10^-4951 до 1.1 x 10^4932 | 19-20 | 10 |
Comp | От 2^63+1 до 2^63 -1 | 19-20 | 8 |
Currency | От -922337203685477.5808 до 922337203685477.5807 | 19-20 | 8 |
С данните от тип Integer могат да бъдат извършвани следните операции :
1) Събиране +
2) Изваждане -
3) Умножение *
4) Деление /
5) Abs(x) – абсолютна стойност
6) Sqr(x) – корен квадратен
7) Sin(x) – намира синуса на даден ъгъл зададен в радиани
8) Cos(x) – намира косинуса на даден ъгъл зададен в радиани
9) Sqrt(x) – намира корен квадратен от x, като x>0String – символен типПредставлява поредица от символи. В Delphi се поддържат следните подтипове :
Тип | Максимална дължина | Нужна памет |
ShortString | 255 символа | От 2 до 256 байта |
AnsiString | ~2^31 символа | От 4 байта до 2GB |
WideString | ~2^30 символа | От 4 байта до 2GB |
AnsiString-а, който понякога се нарича LongString е препоръчания тип за повечето
цели.Оператори
Оператор за присвояванеТова е един от най-важните оператори. Синтаксисът му е <променлива> :=
<израз>.
Y:=5;
Променливата и израза задължително трябва да бъдат от един и същ тип.
Изключение прави случая когато променливата е от тип Real, а израза Integer, защото
реалният тип припокрива целочисления.Съставен операторСъставният оператор обединява в логическо цяло няколко оператора. Състои се
от “заграждащи скоби” begin и end :
Begin
Оператор 1;
Оператор 2;
……
Оператор N;
End;
Условни операториТова са оператори, които дават възможност да се изпълни или не друг оператор
след удовлетворяване на някакво условие.
1) Оператор If Then Else
Синтаксиса на този оператор е :
If <условие> then <оператор> else <оператор>
Ако условието е удовлетворено(връща стойност “true”) се изпълнява оператора
след “then”, в противен случай – този след “else”. Частта “else” не е задължителна, като
в такъв случай при неудовлетвореност на условието няма да стане нищо.
If <условие> then <оператор>
Считайки се за правило след всеки ред в Delphi да следва “;” преди ключовата
дума “else” е точно обратно – преди “else” не трябва да има “;”.
След запазените думи “then” и “else” трябва да стои точно един оператор. Ако
имаме нужда от използване на повече оператори е необходимо те да се обединят в един
съставен оператор.
2) Оператор case of
Синтаксиса на този оператор е :
Case <израз> of
<Израз1> : <Оператор1>;
<Израз2> : <Оператор2>;
.....
<ИзразN> : <ОператорN>;
else
<Оператор>;
End;
В частта <израз> се задава търсената стойност, а в <Израз1>,<Израз2> и т.н.
възможните вариации. В зависимост дали попада в някоя от тях се изпълнява
Оператора след нея. Ако не попада в никоя се изпълнява Оператора след “else”. Тук
отново “else” не е задължителен, като ако го няма и не попада в някоя от изброените
няма да се изпълни действие.
За да се изпълнят повече от един оператора след Изразите е необходимо те да
бъдат обединени в съставен оператор.Оператори за цикълОператорите за цикъл се използват за реализиране на циклични изчислителни
процеси. Това са процеси, при които оператор или група от оператори се изпълнява
многократно за различни стойности на техни параметри.
Оператор ForТози оператор за цикъл е с параметър. Съществуват 2 варианта :
For <израз1> to <израз2> dо <оператор>
For <израз1> downto <израз2> dо <оператор>
Разликата между двата е че при първия вариант стойността на <израз1> трябва да
бъде по-малка и да нарасне до <израз2>, до като при втория трябва да бъде по-голяма и
да се смали до <израз2>. Отново ако желаем изпълнение на няколко оператора след
запазената дума “do” е нужно те да бъдат обединени в съставен оператор. За
изпълнение на повече оператори е необходимо те да бъдат обединени в съставен
оператор
Пример :
For i:=0 to 9 do
Begin
Suma:=Suma+i;
Broi:=Broi+1;
End;
За да работи този цикъл трябва да бъдат обявени в частта “var” трите променливи
Suma,Broi и I :
Var
Suma,Broi,i : Integer;
Също така за правилно пресмятане е добре преди изпълнение на цикъла двете
променливи които ще манипулираме – Suma и Broi да бъдат “занулени” :
Suma:=0;
Broi:=0;
След това цикъла ще може да изпълни правилно задачата си, а именно 10 пъти(от
0 до 9 включително) да извърши действията Suma:=Suma+i и Broi:=Broi+1.
При първото действие в началото Suma e 0, защото сме я “занулили” преди
цикъла. I също е 0 при първото завъртане на цикъла. Сбора ще ни даде 0. При второто
обаче вече i e 1. 0 +1=1 и сума получава стойност 1. При следващото 1 ще го съберем
със следващата стойност на i – 2 и Suma ще стане 3 и т.н. Крайният резултат ще бъде
45, колкото е сбора на числата от 0 до 9.
При второто действие стойността на Broi ще нараства с всяко завъртане с 1.
Крайният резултат ще даде 10, колкото са броя на завъртанията.Оператор WhileЧрез този оператор може да се реализира произволен цикличен процес.
While <Условие> do <Оператор>
Тялото на цикъла(Оператора) ще се изпълнява до като e удовлетворено условието.
За изпълнение на повече оператори е необходимо те да бъдат обединени в съставен
оператор.
Пример :
Var
I : Integer;
………………
i:=0;
While i<>10 do
Begin
i:=i+1;
Edit1.Text:=InttoStr(i);
End;
При първото влизане в цикъла i ще бъде със стойност 0. Условието i различно ли е
от 10 ще даде “true”. Тъй като условието е удовлетворено цикъла ще се завърти. i ще
стане 1(0+1) и ще се появи в полето Text на Edit1. Второто завъртане ще пита
1(стойността на i) различно ли е от 10 и отново ще е “true”. Съответно i ще стане 2 и ще
се появи в полето Text на Edit1 с новата си стойност. Това ще продължи до като i стане
10. Тогава условието i(10) различно ли е от 10 ще даде “false” и цикъла няма да се
изпълни, като програмата ще продължи своя ход със следващите оператори, ако има
такива, ако не – ще приключи. Крайният резултат ще бъде, че в Edit1.Text ще стои
стойността 10, а цикъла ще се е извъртял 10 пъти.
Excel :var
WorkBk : _WorkBook; // Define a WorkBook
WorkSheet : _WorkSheet; // Define a WorkSheet
IIndex : OleVariant;
begin
IIndex := 1;
// Connect to the server TExcelApplication
XLApp.Connect;
// Add WorkBooks to the ExcelApplication
XLApp.WorkBooks.Add(xlWBatWorkSheet,0);
// Select the first WorkBook
WorkBk := XLApp.WorkBooks.Item[IIndex];
// Define the first WorkSheet
WorkSheet := WorkBk.WorkSheets.Get_Item(1) as _WorkSheet;
// Customise the WorkSheet
WorkSheet.Name := 'Statistika';
Worksheet.Columns.Font.Bold := False;
Worksheet.Columns.Font.Size:=9;
Worksheet.Columns.Font.FontStyle:='Arial';
Worksheet.Columns.HorizontalAlignment := xlCenter;
WorkSheet.Columns.ColumnWidth := 22;
// Customise the first Line
WorkSheet.Range['A' + IntToStr(1),'Z' + IntToStr(1)].Font.Size := 9;
WorkSheet.Range['A' + IntToStr(1),'Z' + IntToStr(1)].Font.Bold := True;
WorkSheet.Range['A' + IntToStr(1),'Z' + IntToStr(1)].HorizontalAlignment :=
xlHAlignCenter;
WorkSheet.Range['A' + IntToStr(1),'Z' + IntToStr(1)].ColumnWidth := 22;
//Customise the Titles
WorkSheet.Range['A' + IntToStr(1),'A' + IntToStr(1)].Value2 := 'Антималарици';
WorkSheet.Range['B' + IntToStr(1),'B' + IntToStr(1)].Value2 := 'Кортикостероиди';
WorkSheet.Range['C' + IntToStr(1),'C' + IntToStr(1)].Value2 := 'Имуносупресори';
WorkSheet.Range['D' + IntToStr(1),'D' + IntToStr(1)].Value2 := 'Био.средства
имуновенин';
WorkSheet.Range['E' + IntToStr(1),'E' + IntToStr(1)].Value2 := 'Био.средства МАВ';
WorkSheet.Range['F' + IntToStr(1),'F' + IntToStr(1)].Value2 := 'Био.средства други';
WorkSheet.Range['G' + IntToStr(1),'G' + IntToStr(1)].Value2 := 'Мезинхимни
инхибритори';
WorkSheet.Range['H' + IntToStr(1),'H' + IntToStr(1)].Value2 := 'Антикоакуланти';
WorkSheet.Range['I' + IntToStr(1),'I' + IntToStr(1)].Value2 := 'Хормони';
WorkSheet.Range['J' + IntToStr(1),'J' + IntToStr(1)].Value2 := 'Имуномодулатори';
WorkSheet.Range['K' + IntToStr(1),'K' + IntToStr(1)].Value2 := 'Плазма-фереза';
WorkSheet.Range['L' + IntToStr(1),'L' + IntToStr(1)].Value2 := 'Хемодиализа';
WorkSheet.Range['M' + IntToStr(1),'M' + IntToStr(1)].Value2 := 'Бъбречна
трансплантация';
WorkSheet.Range['N' + IntToStr(1),'N' + IntToStr(1)].Value2 := 'TLR';
WorkSheet.Range['O' + IntToStr(1),'O' + IntToStr(1)].Value2 := 'Антибиотик';
WorkSheet.Range['P' + IntToStr(1),'P' + IntToStr(1)].Value2 := 'НСПВС';
WorkSheet.Range['Q' + IntToStr(1),'Q' + IntToStr(1)].Value2 := 'Пулсова терапия МПТ';
WorkSheet.Range['R' + IntToStr(1),'R' + IntToStr(1)].Value2 := 'Пулсова терапия ПТЦ';
WorkSheet.Range['S' + IntToStr(1),'S' + IntToStr(1)].Value2 := 'Пулсова терапия ПТИВ';
WorkSheet.Range['T' + IntToStr(1),'T' + IntToStr(1)].Value2 := 'Друго';
//Customise the Records
WorkSheet.Range['A' + IntToStr(2),'A' + IntToStr(2)].Value2 := Edit1.Text;
WorkSheet.Range['B' + IntToStr(2),'B' + IntToStr(2)].Value2 := Edit2.Text;
WorkSheet.Range['C' + IntToStr(2),'C' + IntToStr(2)].Value2 := Edit3.Text;
WorkSheet.Range['D' + IntToStr(2),'D' + IntToStr(2)].Value2 := Edit4.Text;
WorkSheet.Range['E' + IntToStr(2),'E' + IntToStr(2)].Value2 := Edit5.Text;
WorkSheet.Range['F' + IntToStr(2),'F' + IntToStr(2)].Value2 := Edit6.Text;
WorkSheet.Range['G' + IntToStr(2),'G' + IntToStr(2)].Value2 := Edit7.Text;
WorkSheet.Range['H' + IntToStr(2),'H' + IntToStr(2)].Value2 := Edit8.Text;
WorkSheet.Range['I' + IntToStr(2),'I' + IntToStr(2)].Value2 := Edit9.Text;
WorkSheet.Range['J' + IntToStr(2),'J' + IntToStr(2)].Value2 := Edit10.Text;
WorkSheet.Range['K' + IntToStr(2),'K' + IntToStr(2)].Value2 := Edit11.Text;
WorkSheet.Range['L' + IntToStr(2),'L' + IntToStr(2)].Value2 := Edit12.Text;
WorkSheet.Range['M' + IntToStr(2),'M' + IntToStr(2)].Value2 := Edit13.Text;
WorkSheet.Range['N' + IntToStr(2),'N' + IntToStr(2)].Value2 := Edit14.Text;
WorkSheet.Range['O' + IntToStr(2),'O' + IntToStr(2)].Value2 := Edit19.Text;
WorkSheet.Range['P' + IntToStr(2),'P' + IntToStr(2)].Value2 := Edit20.Text;
WorkSheet.Range['Q' + IntToStr(2),'Q' + IntToStr(2)].Value2 := Edit15.Text;
WorkSheet.Range['R' + IntToStr(2),'R' + IntToStr(2)].Value2 := Edit16.Text;
WorkSheet.Range['S' + IntToStr(2),'S' + IntToStr(2)].Value2 := Edit17.Text;
WorkSheet.Range['T' + IntToStr(2),'T' + IntToStr(2)].Value2 := Edit18.Text;
//cikul za cqlata tablica
My Query1.First;
i:=2
While not My Query.Eof do
Begin
My Query1.Field by name(‘ime’).value;
My Query1.Next
i:=i+1;
end;
// Show Excel
XLApp.Visible[0] := True;
// Disconnect the Server
XLApp.Disconnect;
// Unassign the Delphi Variant MatrixWord :WordApplication1.Connect;
WordApplication1.Visible := True;
FileName:='C:\Program Files\OS2007\Documents\SpravkaZVN.doc';
WordApplication1.Documents.Open(FileName,EmptyParam,EmptyParam,EmptyParam,Emp
tyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,Em
ptyParam,EmptyParam,EmptyParam,EmptyParam);
Doc := WordApplication1.ActiveDocument;
WordDocument1.ConnectTo(Doc);
WordApplication1.Disconnect;
//Zaboliavane
SearchText := ' Zaboliavane ';
ReplaceText := '"'+ComboBox3.Text;
Wrap := wdFindContinue;
All := wdReplaceAll;
WordDocument1.Content.Find.Execute(SearchText, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, Wrap, EmptyParam, ReplaceText,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
//Godina
SearchText := 'Godina';
ReplaceText := '"'+Edit24.Text+'"';
Wrap := wdFindContinue;
All := wdReplaceAll;
WordDocument1.Content.Find.Execute(SearchText, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, Wrap, EmptyParam, ReplaceText,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
ComboBox :
Var
i : Integer;
begin
ComboBox3.Items.text:='';
i:=0;
Try
Table2.First;
While not Table2.EOF do
begin
begin
ComboBox3.Items.Insert(i,Table2.FieldByName('Name').asString);
i:=i+1;
End;
Table2.next;
end;
finally Table2.last;
end;
Form1.Activate :
1. Изчистване на полето текст за Edit :for j := 0 to ComponentCount-1 do
if (Components[j] is TEdit) then
(Components[j] as TEdit).Text := '';
for j := 0 to ComponentCount-1 do
if (Components[j] is TMemo) then
(Components[j] as TMemo).Text := '';
j трябва да бъде обявено във var, като integer :
var
j : integer;2. За позициониране на първия Edit :Edit1.SetFocus;Button1.OnClick
1. Проверка за задължително поле :А)
If LabeledEdit1.Text='' then
Begin
LabeledEdit1.Color:=clSkyBlue;
LabeledEdit1.SetFocus;
ShowMessage('Моля въдете инициали!');
Exit;
End;
Б)
If ComboBox6.Text='' then
Begin
ComboBox6.Color:=clSkyBlue;
ComboBox6.SetFocus;
ShowMessage('Моля изберете Вид на консултацията!');
Exit;
End;2. ЗаписIf MessageDlg('Сигурни ли сте че искате да запишете
данните?',MTWarning,[MBYes,MBNo],0)=MRYes then
Begin
MyTable1.Last;
MyTable1.Insert;
MyTable1.FieldByName(‘Ime’).Value:=Edit1.Text;
MyTable1.FieldByName(‘Prezime’).Value:=Edit2.Text;
MyTable1.FieldByName('Familia').Value:=Edit3.Text;
MyTable1.FieldByName('Info').Value:=Memo1.Text;
MyTable1.Post;
ShowMessage(‘Записа бе успешен);
Тук отново изчистване, като на Form1.Activate:
for j := 0 to ComponentCount-1 do
if (Components[j] is TEdit) then
(Components[j] as TEdit).Text := '';
for j := 0 to ComponentCount-1 do
if (Components[j] is TMemo) then
(Components[j] as TMemo).Text := '';
End;
Няма коментари:
Публикуване на коментар