Professional Documents
Culture Documents
g. janeliZe
daprogrameba Delphi - Si
damtkicebulia stu-s
saredaqcio-sagamomcemlo
sabWos mier
Tbilisi
2005
1
uak 681.3.06
2
Sesavali
Delphi es aris obieqtur-orientirebuli
programirebis mZlavri sistema, romelic mravali
amocanis amoxsnis saSualebas iZleva, kerZod:
3
I Tavi
Delphi, Tanamedrove stilis danarTis
Seqmnis instrumentuli saSualeba
1.1 obieqtur-orientirebuli
programireba.
obieqtur-orientirebuli programireba es sruliad
Tanamedrove midgomaa rTuli programebisa da sistemebis
SeqmnisaTvis. Windows-is nebismieri programis gaxsnisas,
Tqven xedavT fanjaras mravali RilakebiT, menius,
redaqtirebis fanjaras da a.S. yvelaferi es aris obieqti.
Tanac isini TviTon arafers ar akeTeben, elodebian
raRac xdomilebas - Rilakis an Tagvis dawkapunebas,
kursoris gadaadgilebas da a.S. roca xdeba esa Tu is
xdomileba, obieqti iRebs amis Sesaxeb Setyobinebas da
masze axdens reagirebas: awarmoebs gamoTvlebs, Seaqvs
simbolo da sxva. Windows-is aseT programebs ewodebaT
obieqtur-orientirebuli programebi.
4
uzrunvelyofen yvela operaciebs. (wakiTxvas, Caweras,
gardaqmnas). am procedurebs da funqciebs hqvia meTodebi
da maTi meSveobiT xdeba obieqtis monacemebTan
urTierToba.
5
proeqtis awyoba
Tvisebebi
xdomiloba
meTodebi
xdomilebis damuSaveba
xdomileba
6
Tqven SegaqvT Tqveni kodi, sxvadasxva xxdomilebis
damuSavebis programis Sesaqmnelad, magram saTao
programas Tqven sasurvelia xeli ar axloT. mxolod
iSviaT SemTxvevaSi iqneba saWiro saTao programaSi
cvlilebebis Setana. Tundac am iSviaTi SemTxvevisaTvis
sasurvelia codna, Tu rogor gamoiyureba saTao
programa da ras aRniSnavs misi operatorebi. danarTis
ti piur saTao programas aqvs saxe:
Program Project1;
Uses
Forms,
{SR*.Res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
7
Application.Run;
End.
Application.CreateForm(TForm2, Form2);
if (paramStr(1)=’Y’) then
Application.CreateForm(TForm2, Form2);
8
calke modulSi. aseTi moduli, romelic ar aris
dakaSirebuli raime formasTan SeiZleba CairTos da-
narTSi File -->New brZanebaSi, Unit-is arCeviT.
Unit Unit1;
interface
Uses
type
TForm1 = class(TForm)
private
{Private declarations}
public
9
{Public declarations}
end;
var
Form1: TForm1;
implementation
{SR *.DFM}
rnd.
10
klasis daxuruli nawili da Public - klasis Ria nawili.
rasac gamovacxadebT Public - nawilSi, misawvdomi iqneba
sxvadasxva klasebisa da modulebisaTvis. is rac
gamocxadebulia Private nawilSi, misawvdomia mxolod
mocemuli modulis farglebSi.
Var
Form1 : TForm1;
11
Unit Unit1;
interface
Uses
type
TForm1 = class(TForm)
Label1: TLabel;
Button1: TButton;
private
public
Ch1:char;
end;
var
Form1: TForm1;
12
Ch2: char;
implementation
uses unit2;
begin
Form1.Label1.Caption := Form1.Label1.Caption+
Ch+Form1.Ch1;
end;
begin
end;
procedure TForm1.F2(Ch:char);
begin
end;
Form1.Label1.Caption := Form1.Label1.
Caption+Ch+Form1.Ch1;
end;
var Ch4:char;
procedure F5(Ch:char);
begin
Label.Caption := Label1.Caption+Ch+Ch1;
end;
begin
Ch1:=’-’;
Ch2 := ‘A’;
Ch3 := ‘B’;
Ch4 := ‘C’;
Label1.Caption :=’’;
F1(Ch1);
F2(Ch2);
F3(Ch3);
14
F4(Ch4);
F5(‘D’);
Label1.Font.Color := clRed;
end;
end.
LLabel1 : TLabel;
Button1 : TButton;
15
TiToeuli procedura F1-F5 iRebs am warweris
mniSvnelobas, miamatebs mas Ch parametris saxiT
gadmocemul simbolos, Semdeg miamatebs Ch1 cvladSi
Senaxul simbolos da Wdes daubrunebs warweras,
aRniSnuli damatebebiT.
16
komponentebis formaze ganTavsebisas Delphi avtomaturad
amzadebs programis kods, romelic aRwers mocemul
komponents.
Label1.Font.Color
17
daiweros Semdegi operatori:
Label1.Free
II Tavi
Delphi - is komponentebis mimoxilva
2.1. teqsturi informaciis Setanisa da
asaxvis komponentebi
Delphi-is vizualuri komponentebis biblioTekaSi
aris mravali komponenti, romlebic teqsturi
informaciis Setanisa da redaqtirebis saSualebas iZleva.
18
da redaqtirebisaTvis. ZiriTadi Tvisebaa Text.
19
aerTianebs ListBox da Edit Tvisebebs.
20
magaliTad:
StaticText1.Repaint;
22
moTavsdes sasurveli teqsti.
23
2.3 Edit, LabelEdit da MaskEdit
redaqtirebis fanjrebi.
redaqtirebis fanjrebis garegnuli saxe ganisazRvreba
BorderStyle TvisebiT.
24
Modified Tviseba misawvdomia mxolod Sesrulebis
dros, uCvenebs moxda Tu ara teqstis redaqtireba. Tu
am Tvisebis gamoyeneba aris saWiro Modified Tviseba
unda iyos false mdgomareobaSi.
25
mZime (;). `niRabis~ Setana SeiZleba marTalia, uSualod
EditMask TvisebaSi, magram ufro moxerxebulia specia-
luri redaqtoriT, romelic gamoiZaxeba obieqtebis
inspeqtorSi EditMask Tvisebis striqonSi mravalwer-
tiliani RilakiT.
26
Name(Sriftis saxeli), Size(zoma), Style(stili) da sxva.
ganaTavseT formaze RichEdit komponenti, Sriftis arCevis
dialogi FontDialog da Rilaki Button, romelic
momxmarebels teqstis atributis Secvlis saSualebas
miscems. Sesabamis Rilakze SeitaneT teqsti:
If FontDialog1.Execute then
With RichEdit1.SelAttributes
do begin
Color := FontDialog1.Font.Color;
Name := FontDialog1.Font.Name;
Size := FontDialog1.Font.Size;
Style := FontDialog1.Font.Style;
end;
RichEdit1.SetFocus;
If FontDialog1.Execute then
RichEdit1.SelAttributes.Assign
(FontDialog1.Font);
27
RichEdit1.SetFocus;
RichEdit1.Paragraph.Alignment := taLeftJustify;
RichEdit1.Paragraph.Alignment := taCenter;
28
RichEdit1.Paragraph.Alignment := taRightJustify;
RichEdit1.Paragraph.Numbering := nsBullet;
RichEdit1.Paragraph.Numbering := nsNone;
if (ABullet.Checked) then
RichEdit1.Paragraph.Numbering := nsNone
z e m o T g a n x i l u l i a Memo-s d a RichEdit-i s
29
ganmasxvavebeli Tvisebebi. exla ganvixiloT maTi saerTo
Tvisebebi.
30
am SemTxvevaSi teqstTan muSaobis damTavrebisas,
konteqstur meniuSi airCieT ClosePage brZaneba da
upasuxeT SekiTxvas, teqstis Senaxvis Sesaxeb.
Memo1.Clear;
Memo1.Lines.Add(‘daxasiaTeba’);
31
Memo1.Lines.Add(‘TanamSromeli ’+ Edit1.Text);
Memo1.SetFocus;
Memo1.Lines.LoadFromFile(‘Text.Txt’);
Memo1.Lines.SaveToFile(‘Text.Txt’);
32
2.5 siebidan arCevis komponentebi
ListBox, CheckListBox, ValueListEditor,
ComboBox, ComboBoxEx.
suraTze mocemulia ListBox, CheckListBox, da
ValueListEditor komponentebi.
33
gamoyeneba, rogoricaa Clear, Add da sxva.
34
IbOwnerDrawFixed da IbOwnerDrawVariable gamoiyeneba
siaSi gamosaxulebis Sesatanad. am dros IbOwnerDraw-
Fixed niSnavs, rom siaSi yvela elementis simaRle
erTnairia. IbOwnerDrawVariable niSnavs, rom siaSi
elementebis simaRle sxvadasxvaa. IbVirtual da IbVirtual-
OwnerDraw mniSvnelobebi Seesabamebian virtualur siebs,
teqstebisa da gamosaxulebebis striqonebis Sesabamisad.
ganvixiloT magaliTi:
var i : integer;
begin
ListBox1.ItemHeight := ToolBar1.Images.Height;
For i := 0 to ToolBar1.ButtonCount-1 do
ListBox1.Items.Add(‘’);
35
end;
GetLongHint(ToolBar1.Buttons[Index].Hint));
end;
36
Index saSualebas iZleva ToolBar1.Buttons TvisebiT
daukavSirdes analogiuri indeqsis mqone Rilaks.
ImageList - Si asaxuli `ikonis~ indeqsi ganisazRvreba
ImageIndex Rilakis TvisebiT.
37
Procedure TForm1.ListBox1DataObject(Control: TWin Con-
trol; Index: Integer; var DataObject: TObject);
CheckListBox1.Header[1] := true;
CheckListBox1.Header[9] := true;
38
SeiZleba Seicvalos TitleCaptions TvisebiT.
39
iZleva. elementi mocemulia saxeliT an striqonis
indeqsiT. (0 dan dawyebuli).
operatori:
ValueListEditor1.ItemProps[‘telefoni’].
EditStyle := esPickList;
PickList.Add(‘kadrebi’);
PickList.Add(‘buRalteria’);
PickList.Add(‘kancelaria’);
40
mravalwertiliani Rilakis dayenebas. masze daWerisas
amoqmeddeba OnEditButtonClick xdomiloba.
41
striqonebiT da redaqtirebis fanjriT. esSimple - sia
erTnairi simaRlis striqonebiT da redaqtirebis
fanjriT.
42
MaxLength Tviseba gansazRvravs redaqtirebis fanja-
raSi Setanil simboloebis maqsimalur raodenobas.
Tu ItemIndex = 0, maSin Sesatani simboloebis raodenoba
ar aris SezRuduli.
DropDownCount Tviseba uCvenebs striqonebis raode-
nobas, romelic gamoCndeba CamoSlad meniuSi, gadaxvevis
xazis gamoCenis gareSe.
ise rogorc ListBox komponentSi, Sorted Tviseba sias
moawesrigebs anbanis mixedviT. Tu Sorted = true, maSin
siaSi axali elementebi daemateba ara boloSi, aramed
anbanis mixedviT.
ComboBoxEx komponenti moxerxebulia imiT, rom igi
amartivebs siis elementebSi gamosaxulebis Setanas.
marTalia am komponents ara aqvs sortirebis saSualeba,
magram SeiZleba sakuTari gamosaxulebis Seqmna.
elementebSi asaxul gamosaxulebebs unda Seicavdes
ImageList komponenti. am komponentTan dakavSireba
SeiZleba Images TvisebiT. redaqtirebisas siis
elementebis Setana SeiZleba ItemsEx Tvisebis gverdiT
mravalwertilian Rilakze dawkapunebiT. gaixsneba
fanjara. Add New Rilaki axali elementis Setanis
saSualebas iZleva. Tu elements SeitanT da moniSnavT,
obieqtebis inspeqtoris fanjaraSi dainaxavT mis Tvisebas.
maT Soris ZiriTadia: Caption - teqsturi striqoni,
43
ImageIndex - indeqsi, romelic Seesabameba ImageList siis
piktogramebs, Indent - siis elementebis marcxena velidan
daZvraa.
Style Tviseba gansazRvravs elementis stils da tolia
csExDropDown, csExSimple an csExDropDownList.
44
ARow indeqsebiani ujra.
ColCount da RowCount Tvisebebi gansazRvraven
Sesabamisad svetebisa da striqonebis raodenobas.
FixedCols da FixedRows Tvisebebi gansazRvraven
dafiqsirebuli svetebisa da striqonebis raodenobas.
FixedColor gansazRvravs dafiqsirebuli ujrebis fonis
fers.
LeftCol da TopRow Tvisebebi uCvenebs gadaxvevis
momentSi pirveli svetisa da striqonis indeqss.
ScrollBars UuCvenebs gadaxvevis zolis arsebobas.
Options TvisebaSi SeiZleba avirCioT Semdegi brZanebebi:
fiqsirebuli horizontaluri da vertikaluri xazebis
arseboba (goFixedVertLine da goFixedHorzLine), fiqsire-
buli xazebis arseboba (goVertLine da goHorzLine),
striqonebisa da svetebis zomebis Secvlis saSualeba
(goColSizing, goRowSizing), striqonebisa da svetebis
gadaadgileba (goColMoving, goRowMoving) da sxva. erT-
erTi mniSvnelovani Tvisebaa goEditing - cxrilis
Semadgenlobis redaqtirebis SesaZlebloba.
Col da Row Tvisebebi uCveneben arCeuli ujris svetisa
da striqonis indeqss. SeiZleba mravali ujris
gamoyofac.
StringGrid komponentis xdomilobebidan unda aRiniSnos
OnSelectCell, romelic aRiZvreba ujrebis amorCevisas.
45
CanSelect bulis ti pis parametria, romelic gansazRv-
ravs ujrebis moniSvnis SesaZleblobas. Tu CanSelect
aqvs false mniSvneloba, maSin ujrebis amorCeva ar moxdeba.
operatori:
Label1.Caption := ‘arCeulia ujra’ + IntToStr(ARow)
+ ‘:’ + IntToStr(ACol); gadascems Label1Wdes arCeuli
ujris nomers, xolo operatori:
Label1.Caption := StringGrid1.Cells[ACol,ARow];
imave WdeSi gamoitans gamoyofili ujris teqsts.
46
DateTimePicker komponents aqvs TariRis Setanis meti
SesaZlebloba. ZiriTadi Tvisebebia-Month da Day.
F1Book (ActiveX gverdi)- ricxviTi informaciis
Setanisa da damuSavebis komponentia, Excel gverdebis
msgavsad.
48
SpinEdit komponents aqvs wina ganxiluli Tvisebebi,
mxolod maTi saxelebi gansxvavebulia, magaliTad Min,
Max, Position Tvisebebi iwodebian Sesabamisad: MinValue,
MaxValue, Value. im SemTxvevaSi, roca ar aris aucilebeli
Rilakebis arastandartuli ganlageba an ricxvTa
`wriuli~ cvlileba da msgavsi Tvisebebis gamoyeneba,
rekomendirebulia SpinEdit komponentiT sargebloba.
50
ekranze asaxvisaTvis unda mivceT Month da Year-s
Sesabamisi mniSvnelobebi, Tu gvinda mimdinare Tvis
kalendris Seqmna VseCurrentDate Tvisebas unda mivceT
true mniSvneloba. StartOfWeek Tviseba iZleva dRes,
romliTac iwyeba kvira. dumiliT mniSvneloba aris 0-
kvira, rogorc es miRebulia dasavleTis kalendarze.
CvenTvis moxerxebulia StartWeek = 1, rac niSnavs, rom
kvira iwyeba orSabaTidan.
51
2.11 ierarqiuli monacemebis asaxvis
komponentebis sia
ierarqiul; monacemebad iTvleba dawesebulebis
struqtura, rTuli proeqtis struqtura, dokumentaciis
Semadgenloba da a.S. ganvixiloT msgavsi informaciis
asaxvis komponentebis sia:
TreeView (gverdi Win32) ierarqiuli monacemebis
struqturis daTvaliereba. Windows 95/98/2000/xp
stilSi.
OutLine (gverdi Win 3.1) Windows 3.X stilis
ierarqiuli monacemebis struqturis daTvaliereba.
ListView (gverdi Win32) siebis svetebSi an piktogramis
saxiT asaxva.
52
TreeView.Items[1] es aris xis kvanZi 1 indeqsiT(xis
meore kvanZi). TiToeuli kvanZi aris TTreeNodes ti pis
obieqti, Tavisi TvisebebiT da meTodebiT.
redaqtirebis procesSi xis formireba xorcieldeba
fanjaraSi, romlis gamotana SeiZleba TreeView
komponentze orjer dawkapunebiT an Items Tvisebis
gverdiT mravalwertilian Rilakze daWeriT.
New Item Rilaki xeze axali kvanZis damatebis
saSualebas iZleva.
New SubIten Rilaki xeze Svili kvanZis damatebis
saSualebas iZleva.
Delete waSlis xis moniSnul kvanZs. Load Rilaki
failidan xis struqturis CatvirTvis saSualebas iZleva.
53
xis struqturis fails SeiZleba hqondes Semdegi
saxe:
dawesebuleba
ganyofileba 1
ganyofileba 2
ganyofileba 3
marTva
administracia
buRalteria
xis TiToeuli axali kvanZisaTvis fanjris Item
Properties panelze SeiZleba mieTiTos mTeli rigi Tvise-
bebi. pirvel rigSi es aris Text Tviseba, warwera romelic
gamova xis mocemul kvanZTan. Image Index da Selected In-
dex Tvisebebi gansazRvraven piktogramis indeqss. es
indeqsi Seesabameba gamosaxulebis sias, romelic inaxeba
54
ImageList komponentSi. indeqsi iwyeba 0-dan. Tu indeqss
mivcemT -1 mniSvnelobas, piktograma ar aisaxeba.
State Index mocemul kvanZze meore piktogramis
damatebis saSualebas iZleva. es SeiZleba emsaxurebodes
kvanZis damatebiT xasiaTs. State Index-Si miTiTebuli
indeqsi Seesabameba TreeView komponentis State Images
Tvisebis calkeul ImageList komponentis gamosaxulebis
sias.
Cven ganvixileT xis formireba proeqtirebis procesSi.
xis formireba da gadawyoba SeiZleba danarTis
Sesrulebis drosac. amisaTvis gamoiyeneba TTreeNodes
ti pis obieqtebis mTeli rigi meTodebi.
56
avagoT danarTi, romelic momxmarebels ListView
fanjaraSi siis saxis Secvlis saSualebas miscems, garda
amisa vsIcon da vsSmallIcon stilSi piktogramis
gadaadgilebis saSualeba iqneba. aseTi danarTis
realizebisaTvis saWiroa MainMenu komponenti. aq
gamoyenebuli iqneba Drag&Drop teqnologia. (rasac
SemgomSi ufro dawvrilebiT ganvixilavT).
SeasruleT Semdegi moqmedebebi:
- SeitaneT danarTze menius ganyofilebebi, didi
niSnebi (saxeliT MIcon), mcire niSnebi (saxeliT
MSmallIcon) da cxrili (saxeliT MReport).
- yvela am nawilebisaTvis daayeneT nulisagan
gansxvavebuli GroupIndex indeqsi xolo RadioItem true
mdgomareobaSi.
akrifeT Semdegi brZanebebi am nawilebze dawkapunebisas:
procedure TForm1.MIconClick(Sender: TObject);
begin
ListView1.ViewStyle := vsIcon;
MIcon.Checked := true;
ListView1.DragMode := dmAutomatic;
end;
procedure TForm1.MSmallIconClick(Sender: TObject);
begin
ListView1.ViewStyle := vsSmallIcon;
57
MSmallIcon.Checked := true;
ListView1.DragMode := dmAutomatic;
end;
procedure TForm1.MListClick(Sender: TObject);
begin
ListView1.ViewStyle := vsList;
MList.Checked := true;
ListView1.DragMode := dmManual;
end;
procedure TForm1.MReportClick(Sender: TObject);
begin
ListView1.ViewStyle := vsReport;
MReport.Checked := true;
ListView1.DragMode := dmManual;
end;
dawereT ListView komponentis OnDragOver da OnDrag-
Drop xdomilebebis damuSavebis programebi:
procedure TForm1.ListView1DragOver(Sender, Source:
TObject; x, y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := (Source = ListView1);
end;
procedure TForm1.ListView1DragDrop(Sender, Source:
TObject; x,y: Integer);
58
begin
ListView1.Selected.Position := Point(x,y);end;
aRniSnulis Sesrulebis Semdeg obieqtebi gadaadgil-
debian Tagvis saSualebiT, rac miekuTvneba Drag&Drop
meTods, maTi mowesrigebisaTvis saWiro gaxdeba Arrange
meTodis gamoyeneba:
procedure Arrange(code: TListArrangement);
rac awesrigebs piktogramebs vsIcon da vsSmallIcon
reJimebSi. Code parametri gansazRvravs mowesrigebis
wess.
arAlignBottom-qveda kideze gasworeba;
arAlignLeft-marcxena kideze gasworeba;
arAlignRight-marjvena kideze gasworeba;
arAlignTop-zeda kideze gasworeba;
arDefault-usityvod gasworeba(zeda kideze);
arSnapToGrid-TiToeuli piktogramis badis uaxloes
kvanZTan ganTavseba.
danarTze SegiZliaT ganaTavsoT nawili `gasworeba~
da daweroT misTvis operatori:
ListView1.Arrange(arAlignTop);
menius am brZanebis arCevisas yovelTvis mowesrigdeba
piktogramebi.
ListView-is erT-erTi saintereso Tvisebaa WorkAreas,
romelic gamoyofs samuSao ares, sworkuTxa CarCoTi,
59
WorkAreas Tviseba warmoadgens indeqsirebul sias Items
msgavsad. Tu WorkAreas carieli siaa, maSin piktogramebis
mowesrigeba warmoebs ListView-is yvela klientis areSi.
axali samuSao ares damateba xdeba Add meTodiT. Rect
Tviseba TRect ti pisaa, igi gansazRvravs ares sazRvrebs
DisplayName Tviseba gansazRvravs CarCos qvemoT
warweras. CarCoc da warwerac aisaxeba Tu Show-
WorkAreas Tviseba true mdgomareobaSia.
qvemoT moyvanilia operatorebi, romlebic qmnian or
samuSao ares:
ListView1.WorkAreas.Add( );
ListView1.WorkAreas.Items[0].Rect :=
Rect(20,0,ListView1.ClientWidth div 4 + 20,
ListView1.ClientHeight - 20);
ListView1.WorkAreas.Items[0].DisplayName := ‘are 0’;
ListView1.WorkAreas.Items[0].Color := clRed;
ListView1.WorkAreas.Add( );
ListView1.WorkAreas.Items[1].Rect :=
Rect(ListView1.ClientWidth div 4 + 20,
0, (ListView1.ClientWidth div 4)*3+20,
ListView1.ClientHeight - 20);
ListView1.WorkAreas.Items[1].DisplayName := ‘are 1’;
ListView komponentis gamoyeneba SeiZleba sruliad
gansxvavebuli informaciis asaxvisaTvis, kerZod failebisa
60
da katalogebis asaxvisaTvis.
62
2.16 Shape komponenti
Shape komponenti warmoadgens sxvadasxva geometriul
figuras. komponentis ZiriTadi Tvisebebia:
stRectangle - sworkuTxedi;
stSquare - kvadrati;
stRoundRect - mrgvalkuTxa oTxkuTxedi;
stRoundSquare - mrgvalkuTxa kvadrati;
stEllipse - elifsi;
stCircle - wre;
komponentis arsebiTi Tvisebaa Brush (funji), es
Tviseba TBrush tipisaa, romelsac aqvs rigi qveTvisebebi.
maT Soris: feri(Brush.Color) da stili(Brush.Style). Pen
Tviseba gansazRvravs xazis stils.
64
View3d - uaryofs an mxars uWers diagramis
samganzomilebian asaxvas;
View3DOptions - samganzomilebiani asaxvis daxasia-
Tebebi. (opciebi);
Chart3DPercent - samganzomilebis masStabi.
66
Add(A3,’ganyofileba 3’, clRed);
Add(A4,’ganyofileba 4’, clPurple);
end;
Series2.Clear;
Series3.Clear;
for i := 0 to 100 do begin
Series2.AddXY(0.02 * pi * i,sin(0.02 * pi * i), ‘’, clRed);
Series3.AddXY(0.02 * pi * i, cos(0.02 * pi * i), ‘’, clBlue);
end;
end;
es procedura unda CaerTos romelime Rilakis
dawkapunebisas, menius brZanebaSi an ubralod formis
OnCreate xdomilebaSi. Clear operatori saWiroa monace-
mebis ganaxlebisaTvis. am operatorebis gareSe Add da
AddXY meTodebis xelaxali Sesruleba mxolod
daamatebs axal wertilebs, winas waSlis gareSe.
Tu gaviTvaliswineT monacemebisaTvis ori saxis
diagrama Pie da Bar (Series1, Series2) SegviZlia SevitanoT
procedura, romelic Secvlis diagramis ti ps. es
procedura SeiZleba Setanil iqnas Rilakis OnClick
xdomilobaze, menius brZanebaSi an Chart komponentze.
imisaTvis, rom monacemebi CaitvirTos Series4-Si da es
diagrama dasawyisisaTvis iyos uxilavi, wina proce-
durebis boloSi unda Caisvas operatorebi:
67
Series4.Assgn(Series1);
Series4.Active := false;
pirveli Series1-dan monacemebs gadawers Series4-Si.
meore operatori Series4-s gaxdis uxilavs. diagramis
ti pis cvlas axorcielebs procedura:
Series4.Active := not Series1.Active;
Series4.Active := not Series4.Active;
68
procesis dasasruls, dumiliT mocemulia 100 procentiT;
Min(ProgressBar); MinValue(Gauge)- poziciis sawyisi
mniSvnelobaa, romelic Seesabameba asaxvis procesis
dasawyiss;
Position(ProgressBar); Progress(Gauge)- poziciaa mTeli
procesis manZilze, minimaluridan maqsimaluramde;
Smooth(ProgressBar)-procesis uwyveti an diskretuli
asaxvaa; ProgressBar-is horizontalur komponentze
Smooth = true, vertikalurze Smooth = false;
Step(ProgressBar)-poziciis nazrdia, romelic gamoyene-
bulia StepIt meTodSi. dumiliT mniSvnelobaa - 10;
Orientation(ProgressBar)-komponentis skalis orien-
taciaa: pbHorizontal-horizontaluri, pbVertical-vertika-
luri. Tu mocemulia pbVertical orientacia komponenti
unda gavweloT vertikalurad;
ForeColor(Gauge)-Sevsebis feria;
ShowText(Gauge)-diagramis fonze procentis
teqsturi asaxvaa;
Kind(Gauge)-diagramis ti pia: gkHorizontalBar-hori-
zontaluri zoli, gkVerticalBar-vertikaluri zoli,
gkPie-wriuli diagrama, gkNeedle-seqtoruli diagrama,
gkText-teqstiT asaxva.
procesis msvlelobis asaxva SeiZleba ganxorcieldes
ProgressBar-Si Position an Gauge-Si Progress mniSvnelobis
69
micemiT. magaliTad, Tu procesis mTeli xangrZlivoba
xasiaTdeba Count cvladis mTeli mniSvnelobiT, xolo
Sesrulebuli nawili Current mTeli cvladiT, maSin
diagramis pozicia, Tu minimaluri da maqsimaluri
mniSvnelobebia 0 da 100 (mniSvnelobebi dumiliT)
SeiZleba gamoisaxos operatorebiT:
ProgressBar1.Position := 100*Current div Count;
an
Gauge1.Progress := 100*Current div Count;
Sesabamisad ProgressBar da Gauge-saTvis.
SeiZleba sxvagvaradac: jer mivceT Count toli
maqsimaluri sidide, Semdeg procesis msvlelobaSi mivceT
Current-is toli pozicia.
magaliTad:
Gauge1.MaxValue := Count;
...
Gauge1.Progress := Current;
ProgressBar komponents aqvs ori meTodi, romliTac
SeiZleba visargebloT poziciis asaxvisaTvis.
StepBy(Delta: Integer)-poziciis gazrda Delta-Ti, StepIt
poziciis gazrda erTi bijiT, romlis sidide mocemulia
Step TvisebiT.
70
2.19 Button da BitBtn Rilakebi.
Button martivi da xSirad gamoyenebadi Rilakia.
iSviaTad gamoiyeneba BitBtn Rilaki. masze SeiZleba aisaxos
gamosaxuleba. am Rilakebs meTodebis, Tvisebebisa da
xdomilobebis umetesoba erTnairi aqvT.
Tviseba Cancel = true niSnavs, rom Esc Rilakis daWera
igivea, rac am Rilakze dawkapuneba. gauqmeba RilakisaTvis
umjobesia es Tviseba iyos true mdgomareobaSi.
Default Tviseba true mdgomareobaSi, gansazRvravs rom
enter-is daWera am Rilakze dawkapunebis eqvivalenturi
iqneba.
ModalResult Tviseba gamoiyeneba modaluri forme-
bisaTvis. Cveulebriv danarTSi am Tvisebis mniSvneloba
iqneba mrNone.
BitBtn Rilakze gamosaxuleba miiReba Glyph TvisebiT.
mravalwertilian Rilakze daWerisas gamova fanjara,
masSi Load Rilakze daWeriT Tqven gamoiZaxebT naxatebis
fails, sadac SegiZliaT airCioT .bmp faili, romelic
Seicavs sasurvel gamosaxulebas. saerTod,
gamosaxulebebi ganTavsebulia katalogSi:
\Images\Buttons, xolo TviT katalogi ganTavsebulia
\Program Files\Borland\Borland Shared
gamosaxulebis arCevis Semdeg aWerT Ok-s,
gamosaxuleba gamoCndeba Rilakze warweris marcxniv.
71
gamosaxulebis umetesoba iyenebs or piktogramas.
piktogramebis ricxvis gageba SeiZleba NumGlyphs
TvisebiT.
Rilakze gamosaxulebis da warweris ganTavseba
ganisazRvreba Margin, Layout da Spacing TvisebebiT. Tu
Margin Tviseba udris -1 - s, maSin gamosaxuleba da
warwera ganTavsdeba Rilakis SuaSi. warwerasTan
mimarTebaSi gamosaxulebis mdebareoba ganisazRvreba
Layout TvisebiT, romelmac SeiZleba miiRos Semdegi
mniSvnelobebi:
blGlyphLeft (marcxniv, mniSvneloba dumiliT),
blGlyphRight (marjvniv), blGlyphTop(zemoT), blGlyph-
Bottom (qvemoT), Tu Marjin > 0, maSin Layout mniSvne-
lobaze damokidebulebiT gamosaxulebis warwera
ganTavsdeba Rilakis kididan imdeni piqseliT, ramdenic
mocemulia Margin mniSvnelobiT.
Spacing Tviseba iZleva piqselebis raodenobas,
romliTac gamoiyofa erTmaneTisagan gamosaxuleba da
warwera. dumiliT, Spacing = 4. Tu mivcemT Spacing = 0,
gamosaxuleba da warwera ganTavsdeba mWidrod, interva-
lis gareSe. Tu mivcemT Spacing = -1, teqsti gamoCndeba
SuaSi naxatsa da Rilakis kides Soris.
Tviseba Kind gansazRvravs Rilakis ti ps. dumiliT
misi mniSvnelobaa bkCustom. magram SeiZleba davayenoT
72
Semdegi ti pebi: bkOk, bkCancel, bkHelp, bkYes,bkNo,
bkClose, bkAbort, bkRetry, bkIgnore, bkAll.
74
reblis mier arCeulia Tu ara es Rilaki.
RadioButton Rilaki SeiZleba ganTavsdes sxva ti pis
panelze an pirdapir formaze.
2.22 indikatorebi
CheckBox da CheckListbox
CheckBox gamoiyeneba sxvadasxva opciebis CasarTavad
da gamosarTavad. man SeiZleba miiRos sami mdgomareoba:
moniSnuli(Cans niSani), Sualeduri(indikatoris
nacrisferi fanjara da nacrisferi niSani) da
mouniSnavi(indikatoris carieli fanjara). am sam
mdgomareobas Seesabameba komponentis State Tviseba:
cbChecked, cbGrayed, cbUnchecked. es sami mdgomareoba
dasaSvebia Tu AllowGrayed = true. im SemTxvevaSi Tu
AllowGrayed = false, dasaSvebia mxolod ori mdgomareoba:
moniSnuli da mouniSnavi.
CheckBox komponentze warwera keTdeba Caption
TvisebiT, xolo misi daSoreba indikatoris mimarT
xorcieldeba Alignment TvisebiT.
indikatoriani komponentia aseve CheckListBox,
romelic ListBox-is msgavsia, mxolod siis yovel
komponentTan aris indikatori. CheckListBox komponentis
Tvisebebia: State da Checked. es orive Tviseba SeiZleba
ganvixiloT rogorc indeqsirebuli masivi, romlis
75
TiToeuli elementi Seesabameba striqonis indeqss.
operatorebi:
CheckListBox1.Checked[1] := true;
CheckListBox1.State[2] := cbGrayed;
CheckListBox1 siis meore striqonis imdikators
daayenebs CarTul mdgomareobaSi, xolo mesame striqonis
indikators Sualedur mdgomareobaSi.
operatori:
for i := 0 to CheckListBox1.Items.Count-1 do if
CheckListBox1.Checked[i] then ......
amowmebs siis yvela indikatoris mdgomareobas da
arCeulis mimarT asrulebs raRac moqmedebas.
CheckListBox komponents aqvs OnClickCheck xdomi-
leba, romelic amuSavdeba indikatoris yoveli Secvlisas.
76
mxares.
komponentis ZiriTadi Tvisebaa Position. mcocavis
gadaadgilebisas SeiZleba Position mniSvnelobis wakiTxva,
aseT wakiTxvas uzrunvelyofs OnChange xdomileba,
romlis dammuSavebel programaSi SeiZleba Position
mniSvnelobis wakiTxva da misi gamoyeneba sxvadasxva
obieqtebis samarTavad.
Position mniSvneloba mTelia ricxvia, romlis
mniSvneloba icvleba SualedSi, romelic mocemulia
Min da Max TvisebebiT. dumiliT, Min = 0, Max = 10,
ase rom Position miiRebs mxolod 11 mniSvnelobas 0-
dan 10-mde. Tu mivcemT Max-s ufro met mniSvnelobas,
Sesabamisad gaizrdeba Position-is dasaSvebi mniSvnelobebi:
Min-Max diapazonSi.
Orientation Tviseba gansazRvravs mcocavis orientacias:
trHorizontal-horizontaluri, trVertical-vertikaluri.
TickMarks Tviseba uCvenebs skalis ganTavsebas komponen-
tis mimarT da miiRebs mniSvnelobebs: tmBottomRight-
qvemoT an marjvniv komponentis orientaciis mixedviT,
tmTopLeft-zemoT an marcxniv, tmBoth-orive mxares.
TickStyle Tviseba gansazRvravs skalis gamosaxulebas.
man SeiZleba miiRos mniSvnelobebi: tsAuto-skalis
avtomaturi gamosaxva, tsNone-skalis gareSe, tsManual-
skalis programuli daxatva SetTick meTodiT (Value: In-
77
teger), romelic skalis Wdes moaTavsebs Value sididis
Sesabamis poziciaSi. Wdeebi, romlebic Seesabamebian
skalis dasawyiss da dasasruls, avtomaturad ganTavs-
debian TickStyle = tsManual SemTxvevaSi.
rodesac TickStyle = tsAuto, skalis sixSire ganisazRv-
reba Frequency TvisebiT. es Tviseba iZleva Wdeebs Soris
Tu ramdeni Position dasaSvebi mniSvnelobaa. magaliTad,
Tu Frequency = 2, Wdeebi Seesabamebian poziciis yovel
meore mniSvnelobas.
LineSize da PageSize gansazRvraven ramdenad gadaadgil-
deba mcocavi Tu momxmarebeli masze zemoqmedebs isrebiani
Rilakebis an PageUp, PageDown RilakebiT klavia-
turidan.
SelStart da SelEnd Tvisebebi skalaze diapazonis
vizualuri gamoyofis saSualebas iZlevian.
ScrollBar komponenti mcocavis msgavia. es aris
gadaxvevis zoli, rogorc Windows-Si.
ScrollBar-is ZiriTadi Tvisebebia Position, Min da Max,
rogorc mcocavebis. Kind Tviseba gansazRvravs zolis
horizontalur da vertikalur mdgomareobas da
Sesabamisad iRebs mniSvnelobebs: sbHorizontal an sbVertical.
ScrollBar komponents aqvs sxva Tvisebebic: SmallChange
da LargeChange - `mcire~ daZvra zolis boloSi Rilakze
dawkapunebisas(an isrebiani RilakebiT) da `didi~ daZvra
78
gverdze gadaadgilebisas zolis gverdiT dawkapunebiT
(an PageUp, PageDown RilakebiT).
zolis gadaadgilebis xdomilebaa OnScroll. am
xdomilebis damuSavebis proceduras gadaecema ScrollPos
parametri.
gadaadgilebis parametri SeiZleba iyos: scLineUp,
scLineDown-`mcire daZvra~: gadaadgileba zemoT an
marcxniv da qvemoT an marjvniv, gadaxvevis zolze an
isrebian Rilakze daWerisas;
scPageUp, scPageDown- `didi daZvra~. gverdze
gadaadgileba morbenalis zolis gverdiT dawkapunebiT
an PageUp da PageDown RilakebiT.
scPosition - m o m x m a r e b e l m a gadaaadgila da
gaanTavisufla `morbenali~;
scTrack-momxmarebeli aadgilebs `morbenals~, scTop,
scBottom-`morbenali~ gadaadgilebulia Sesabamisad bolo
zeda an marcxena poziciaSi da bolo qveda an marjvena
poziciaSi.
scEndScroll-gadaadgilebis dasasruli.
79
2.24 saTaurebis komponentebi
HeaderControl da Header
HeaderControl da Header saTauris komponentebia,
romlis daxmarebiTac momxmarebeli gadaawyobs fanjrebs,
panels, sxva komponentebs, Secvlis maT zomebs.
suraTze naCvenebia fanjris mdgomareoba, saTaurebis
gadawyobis Semdeg.
80
romelTagan TiToeuli aRwers saTauris erT seqcias.
Sections Tvisebis gamoZaxebisas gaixsneba saTaurebis
redaqtoris fanjara.
82
komponents aqvs mTeli rigi xdomilobebi.
OnSectionResize amoqmeddeba seqciis siganis Secvlisas,
TagviT seqciis sazRvrebis gadaadgilebisas. es
xdomilobebi amoqmeddeba gadaadgilebis dasrulebisas.
am xdomilebis proceduras aqvs saxe:
procedure TForm1.HeaderControllSectionResize (Header-
Control: THeaderControl; Section: THeaderSection);
HeaderControl komponentia, romelSic moxda xdo-miloba,
Section -seqciaa, romlis siganec Seicvala.
HeaderControl komponentTan muSaobis Sesaswavlad
gadaitaneT igi formaze, gadaitaneT aseve Memo da
Image. Memo komponentze Image Tvisebas mivceT taCenter
mniSvneloba. Lines SvisebaSi SeitaneT teqsti. Image
komponentis Picture TvisebaSi CatvirTeT raime gamosa-
xuleba.
HeaderControl-is Align Tvisebaze daayeneT alNone,
imisaTvis, rom saTauris zoma ar Seicvalos fanjris
zomebis Secvlisas. DragRecord-s mivceT false mniSvneloba,
rac akrZalavs nawilebis mimdevrobis Secvlas. daayeneT
komponentis mTavari Tviseba-Sections. saTaurebis
redaqtorze orjer dawkapunebiT miuTiTeT ori seqcia,
pirvelSi Text Tviseba udris `daxasiaTeba~, meoreSi-
`fotosuraTi~. TiToeul seqcias mieciT Width
moxerxebuli zoma. meore seqciisaTvis AutoSize SeiZleba
83
iyos true. exla ki unda daiweros sxvadasxva xdomi-
lobebis dammuSaveblebi. formis OnCreate xdomilobis
damuSavebis programas aqvs saxe:
procedure TForm1.FormCreate(Sender: TObject);
var i: integer;
begin
for i := 0 to HeaderControl1.Sections.Count - 1 do
begin
if (HeaderControl1.Sections.Items[i].Text = ‘daxasiaTeba’)
then begin
Memo1.Left := HeaderControl1.Sections.Items[i].Left
+ HeaderControl1.Left + 2;
Memo1.Width := HeaderControl1.Sections[i].Width - 4;
end
else begin
Image1.Left := HeaderControl1.Sections.Items[i].Left
+ HeaderControl1.Left + 2;
Image1.Width :=
HeaderControl1.Sections.Items[i].Width - 4;
end;
end;
end;
mocemuli operatorebi Memo1 da Image1 komponentebs
daayenebs ori `piqseliT~ marjvniv Sesabamisi seqciis
84
marcxena sazRvridan da am komponentebis sigane 4
piqseliT naklebi iqneba seqciis siganesTan SedarebiT.
HeaderControl1 komponentis OnSectionResize xdomilebis
dammuSavebeli Sesdgeba erTi operatorisagan:
FormCreate(Self);
es operatori komponentebis gasworebisaTvis ubralod
mimarTavs formis OnGreate xdomilebis dammuSavebels.
danarTi mzad aris. SeamoqmeT misi muSaoba.
moviyvanoT danarTis magaliTi, sadac gamoiyeneba
Header komponenti. (panelis qveda nawili). formis
OnCreate xdomilebis dammuSavebelSi SeitaneT:
Memo2.Left := Header1.Left + 2;
Memo2.Width := Header1.SectionWidth[0] - 4;
Image2.Left := Header1.Left + Header1.SectionWidth[0]
+ 2;
Image2.Width := Header1.SectionWidth[1]-4;
es operatorebi Memo2 da Image2 komponentebs
gaasworeben Header komponentiT. meore seqciisaTvis
saWiroa marcxena koordinatasgamoTvla, rogorc
Header1.Left-isa da Header1.SectionWidth (pirveli seqciis
sigane) jami, ase rom Header komponents momdevno
seqciebisaTvis Left msgavsi Tviseba ara aqvs.
85
2.25 taimeri.
Timer komponenti
Timer komponenti danarTSi drois intervalis daniSvnis
saSualebas iZleva. mas aqvs mravalricxovani daniSnuleba:
multi plikaciis sinqronizacia, sxvadasxva fanjrebis
daxurva (Tu droebiT momxmarebels ar sWirdeba), ekranis
damcavis CarTva, saswavlo programebSi drois daniSvna.
taimeri aravizualuri komponentia, romelic SeiZleba
ganTavsdes formis nebismier adgilas. mas aqvs Tvisebebi:
Interval - drois intervali miliwamebSi da Enabled -
misawvdomoba. Interval Tviseba iZleva taimeris amuSavebis
intervals. Tu Interval mniSvneloba dayenebulia proeqti-
rebisas, taimeri amuSavdeba OnTimer xdomilobis
gamoZaxebiT.
Tu Interval = 0 an Interval = false, maSin taimeri wyvets
muSaobas. drois aTvla rom daiwyos an unda mivceT
Enabled = true, Tu dayenebulia intervalis dadebiTi
mniSvneloba, an mivceT Interval dadebiTi dadebiTi
mniSvneloba, Tu Enabled = false.
Tu saWiroa, rom danarTis gaSvebidan 5 wamSi daixuros
forma, saWiroa ganTavsdes taimeri, sadac Interval = 5000,
xolo OnTimer xdomilebis dammuSavebelSi Caisvas Close.
Tu saWiroa proceduraSi taimeris gaSveba, romelic
gamoiTvlis mocemul intervals, magaliTad 5 wams, romlis
86
Semdegac unda Sesruldes raRac operaciebi da
gamoirTos taimeri, es gakeTdeba Semdegnairad:
proeqtirebisas taimeri misawvdomia (Enabled = true),
xolo Interval Tviseba 0-is toli unda iyos. taimeri
ar imuSavebs sanam momentSi, roca unda gaiSvas taimeri
ar Sesruldeba operatori:
Timer1.Interval := 5000;
5 wamis Semdeg dadgeba OnTimer xdomiloba. mis
dammuSavebelSi unda Caiweros operatori:
Timer1.Interval :=0;
romelic gamorTavs taimers, romlis Semdegac
SeiZleba moTxovnili operaciebis Sesruleba.
amocanis amoxsnis sxva xerxia: Enabled Tvisebis
gamoyeneba. proeqtirebisas avirCioT Semdegi mniSvne-
lobebi Interval := 5000 da Enabled = false, taimeris
gaSvebis momentisaTvis sruldeba operatori:
Timer1.Enabled := true;
OnTimer xdomilobis, romelic dadgeba taimeris
gaSvebidan 5 wamSi, dammuSavebelSi SeiZleba Caisvas
operatori:
Timer1.Enabled := false;
romelic gamorTavs taimers.
87
2. 26 mTavari meniu
MainMenu komponenti
Delphi-Si aris ori komponenti, romelic qmnis menius.
MainMenu - mTavari meniu da PopupMenu mcuravi meniu.
orive moTavsebulia Standard gverdze.
MainMenu aravizualuri komponentia, Sesrulebul
danarTze igi ar Cans, gamoCndeba mxolod mis mier
generirebuli meniu.
formaze ganTavsdeba MainMenu-s erTi komponenti.
misi ZiriTadi Tvisebaa Items. misi Sevseba xdeba menius
konstruqtoris daxmarebiT, MainMenu-ze orjer
dawkapunebiT an obieqtebis inspeqtorze Items gverdiT
mravalwertilian Rilakze daWeriT, ris Sedegadac
gaixsneba fanjara.
am fanjaraSi SegiZliaT mTeli menius proeqtireba.
garda amisa menius asawyobad gamoiyeneba konteqsturi
meniu. moniSneT menius punqti da konteqstur meniuSi
airCieT Insert. qvemenius Sesaqmnelad gamoyofil punqtze
konteqstur meniuSi airCieT Create Submenu.
axali nawilis arCevisas obieqtebis inspeqtorze
dainaxavT am nawilis mraval Tvisebas da xdomilobas.
Items Tvisebis yvela elementi aris TMenuItem ti pis
obieqti, romelsac aqvs Tavisi Tvisebebi, meTodebi da
xdomilobebi.
88
Caption Tviseba aRniSnavs menius brZanebebis warweras.
Tu Caption-is saxiT SeitanT menius simbolos `-~, maSin
menius brZanebis nacvlad gaCndeba gamyofi xazi.
Name Tviseba iZleva obieqtis saxels, romelic
Seesabameba menius brZanebas. ShortCut Tviseba aris `cxeli~
Rilaki, romlis saSualebiTac momxmarebeli meniuSi
Sesvlis gareSe irCevs brZanebas. `cxeli~ Rilakis
daniSvnisaTvis gaxseniT ShortCut Tviseba da airCieT
TqvenTvis sasurveli kombinacia.
Default Tviseba gansazRvravs aris Tu ara mocemuli
punqti Tavisi qvemenius punqti dumiliT, anu Sesruldeba
Tu ara es brZaneba mSobel punqtze ori dawkapunebiT.
Break Tviseba gamoiyeneba grZel meniuebSi, imisaTvis
rom punqtebis (menius brZanebebis) sia daiyos ramodenime
svetad. misi dasaSvebi mniSvnelobebia: mbNone-meniu
ar daiyofa svetebad, mbBarBreak da mbBreak - meniuSi
Seitaneba brZanebebis axali sveti, romelic winasagan
gamoyofilia zoliT (mbBarBreak ) an `probelebiT~
(mbBreak).
Checked Tviseba true mdgomareobaSi, uCvenebs, rom
menius punqtebSi naCvenebi iqneba `droSa~, imis niSnad
rom punqti arCeulia.
meniuSi markeris dasaniSnad gamoiyeneba RadioItem
Tviseba. Tu es Tviseba aris true mdgomareobaSi, niSnavs,
89
rom es punqti imuSavebs sxva punqtebTan erTad
radioRilakebis reJimSi, roca punqtebs aqvT GroupIndex
Tvisebis erTi da igive mniSvneloba. dumiliT GroupIndex
mniSvneloba 0-is tolia, Tumca maT SeiZleba mivceT
nulze meti mniSvneloba da Tu gvaqvs menius brZanebebi
GroupIndex erTnairi mniSvnelobiT da RadioItem = true,
maSin maTze aisaxeba markeri `droSiT~, Tanac erT-erT
maTganze. Tu Tqven miscemT erT-erTs Checked = true,
danarCenebze Checked avtomaturad gaxdeba false.
punqtebis jgufisaTvis, romlebmac unda imuSaon
radioRilakebis msgavsad, AutoCheck = true. am SemTxvevaSi
SeiZleba erT-erTi moniSnuli punqti dawkapunebisas
gamoirTos da aRmoCndes, rom arcerTi punqti ar iqneba
CarTuli. Tu saWiroa, rom ramodenimedan erTi yovelTvis
iyos arCeuli, maSin AutoCheck Tviseba ar unda
gamoiyenoT. (igi unda daayenoT false mdgomareobaSi) da
punqtebisaTvis Checked Tviseba CarToT programulad:
if not (Sender as TMenuItem).Checked
then (Sender as TMenuItem).Checked := true;
es brZaneba markers gadarTavs mxolod im SemTxvevaSi,
roca daawkapunebT menius aurCevel punqtze. TiToeuli
punqtisaTvis SeiZleba CarTuli iyos Tviseba Enabled
(misawvdomia) an Visable (ar Cans). Tu Enabled = false,
maSin punqti aRiniSneba Ria nacrisfrad da igi
90
dawkapunebaze ar reagirebs. Tu Visable = false, maSin punqti
saerTod ar gamoCndeba.
Bitmap failidan punqtSi gamosaxulebis Setanis
saSualebas iZleva. ImageIndex uCvenebs gamosaxulebis
indeqss, romelic inaxeba ImageList komponentSi. MainMenu
komponentis Images TvisebaSi unda mieTiTos ImageList
komponentze. indeqsi iwyeba 0-dan. Tu indeqsi iqneba -1,
gamosaxuleba ar aisaxeba.
danarTSi, sadac gvaqvs mTavari forma da Svili
formebi, Svili formebis meniu gaerTiandeba mTavari
formis meniusTan. ramodenimeformian danarTebSi
gaerTianebis arseboba an ararseboba ganisazRvreba
TMainMenu komponentis AutoMerge TvisebiT. Tu saWiroa,
rom meoradi formis meniu gaerTiandes mTavari formis
meniusTan, yovel meorad formaze AutoMerge unda
davayenoT true mdgomareobaSi. am dros mTavari formis
AutoMerge unda iyos false mdgomareobaSi.
meniuebis gaerTianebis xerxi ganisazRvreba punqtebis
GroupIndex TvisebiT. dumiliT, menius yvela punqtisaTvis
GroupIndex mniSvneloba udris nuls. Tu saWiroa menius
gaerTianeba, punqtebisaTvis GroupIndex nomrebi unda
mieces araklebiT. Tu gasaerTianebeli punqtebis
GroupIndex mniSvneloba igivea, rac mTavari meniusi, maSin
es punqtebi Secvlian mTavari menius Sesabamis punqtebs.
91
winaaRmdeg SemTxvevaSi damxmare menius punqtebi Cadgebian
ZiriTadi menius punqtebs Soris, GroupIndex nomrebis
mixedviT. Tu gasaerTianebel punqts aqvs naklebi
GroupIndex mniSvneloba, ZiriTadi menius punqtTan
SedarebiT, maSin punqti moTavsdeba dasawyisSi.
Tu orive formaSi iqneba erTnairi indeqsebi, maSin
meoradi formis punqtebi Secvlian igive indeqsis mTavari
menius punqtebs.
mravaldokumentian interfeisis danarTSi(MDI),
momxmarebels SeuZlia ramodenime dokumentis gaxsna.
aseT danarTSi aris Window meniu, romelic Seicavs
punqtebs: New, Tile da a.S. boloSi mocemulia momxma-
reblis mier gaxsnili fanjrebis sia, saidanac SeiZleba
erTi fanjridan meoreze gadarTva.
gaxsnili fanjrebis meniuSi Sesatanad, mTavari formis
WindowMenu TvisebaSi unda vuCvenoT menius saxeli,
romlis boloSic ganTavsdeba sia, magaliTad Window.
92
- konteqstur (PopupMenu ) meniuSi SegviZlia
brZanebebis gadmokopireba mTavari meniudan, risTvisac:
a)orjer daawkapuneT PopupMenu komponentze;
b)gamosul fanjaraSi, marjvena RilakiT gamosul
meniuSi airCieT SelectMenu;
g)moniSneT MainMenu1 da Ok, gamova mTavari meniu;
d)airCieT sasurveli brZanebebi, aWerT [Ctrl-C];
e) imave fanjris konteqstur meniuSi airCieT
SelectMenu, moniSneT PopupMenu1 da Ok, rac gadagiyvanT
PopupMenu-ze da aWerT [Ctrl-V] (Casmas);
- ganaTavseT ekranze RichEdit1 da PopupMenu
Tvisebaze airCieT PopupMenu1.
94
komponenti, romlis erT-erT punqts daarqviT Setting,
romlis arCeviTac gamoCndeba damxmare forma.
danarTs daumateT kidev erTi forma (File|New|Form).
es iqneba damxmare forma. mTavari formis Setting punqtis
damuSavebis programaSi SeitaneT operatori:
Form2.ShowModal; rac niSnavs, rom damxmare forma
modaluria, e.i. momxmarebeli misi daxurvis gareSe ver
gadava mTavar formaze. es operatori rom gaigos
kompilatorma Unit1-Si (mTavari formis moduli) unda
Caisvas Uses operatori, romelic Unit2 modulze
gadacemas axorcielebs. amis gansaxorcieleblad gadadiT
Unit1 modulSi, SeasruleT File|Use Unit brZaneba da
uCveneT rom gsurT Unit2 modulTan dakavSireba.
analogiurad daamyareT ukukavSiri-Unit2, Unit1-Tan.
daaproeqteT damxmare forma. ganaTavseT masze
ListBox1, sadac aisaxeba menius saTaurebi da ListBox2,
sadac aisaxeba menius punqtebi, romlebic arCeul
saTaurebs Seesabameba. formis qvemoT ganaTavseT HotKey
da Button Rilaki, romelic afiqsirebs arCeul brZanebas
da daxuravs formas. HotKey komponentis HotKey
Tvisebaze waSaleT dumiliT arCeuli mniSvneloba.
95
exla unda daiweros xdomilobis dammuSavebeli,
romelic CatvirTavs ListBox1 da ListBox2-s punqtebis
dasaxelebebiT da swrafi Rilakebis daWerisas
daafiqsireben am arCevans Form1- menius Sesabamis punqtSi.
kodi gamoiyureba Semdegnairad:
Procedure TForm2.FormShow(Sender: TObject);
var i: integer;
begin
{ListBox1-is CatvirTva menius saTaurebiT}
ListBox1.Clear;
for i := 0 to Form1.MainMenu1.Items.Count-1 do
ListBox1.Items.Add(Form1.MainMenu1.Items[i].Caption);
96
ListBox1.ItemIndex := 0;
{ListBox2-is CatvirTvis proceduraze mimarTva
Form2-is OnShow xdomilobisas}
ListBox1Click(Sender);
end;
Procedure TForm2.ListBox1Click(Sender: TObject);
var i: integer;
begin
{ListBox2-is CatvirTva menius saTaurebiT
MainMenu1.Items[ListBox1.ItemIndex],
romelsac airCevs momxmarebeli ListBox1-Si
Form2-is OnShow xdomilebisas}
LListBox2.Clear;
for i := 0 to Form1.MainMenu1.Items
[ListBox1.ItemIndex].Count-1 do
ListBox2.Items.Add(Form1.MainMenu1.Items[
ListBox1.ItemIndex].Items[i].Caption);
ListBox2.ItemIndex := 0;
{ListBox2-ze dawkapunebis proceduraze mimarTva}
ListBox2Click(Sender);
end;
Procedure TForm2.ListBox2Click(Sender: TObject);
begin
{ListBox2-Si gamoyofili punqtis `cxeli~ Rilakis
97
Setana HotKey komponentSi}
HotKey1.HotKey := Form1.MainMenu1.Items[
ListBox1.ItemIndex].Items[ListBox2.ItemIndex].ShortCut;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
{arCeuli menius `cxeli~ Rilakis Secvla da damxmare
formis daxurva}
Form1.MainMenu1.Items[
ListBox1.ItemIndex].Items[ListBox2.ItemIndex].ShortCut:=
HotKey1.HotKey;
Close;
end;
98
GroupBox panels ara aqvs sxvadasxva gaformebis stili,
magram mas aqvs CarCo warweriT.
Bevel aris komponentebis konteineri. misi saSualebiT,
magaliTad ar SeiZleba radioRilakebis dajgufeba. Bevel
komponentis stili ganisazRvreba Style TvisebiT,
romelmac SeiZleba miiRos sxvadasxva mniSvneloba.
konturi ganisazRvreba Shape TvisebiT.
ScrollBox gadaxvevis zolia. misi Tvisebaa BorderStyle,
romelic gansazRvravs CarCos stils. AutoScroll Tviseba
saWiroebis SemTxvevaSi ScrollBox komponentis gamoCenis
saSualebas iZleva. Tu es araaucilebelia, SegiZliaT
moTxovnis mixedviT CarToT HorzScrollBar-horizon-
taluri da VertScrollBar-vertikaluri gadaxvevis zoli.
Range Tviseba gansazRvravs gadaxvevis ares zomas
piqselebSi. Tviseba Smooth = true, niSnavs, rom erTi
dawkapunebiT gadaadgilebis sigrZe SeirCeva avtomaturad,
winaaRmdeg SemTxvevaSi SegiZliaT SeirCioT erTjeradi
gadaadgilebis sigrZe Increment TvisebaSi.
100
maSin maTi zomebi ganisazRvreba avtomaturad maTze
warweris mixedviT.
Images - ImageList komponentze mimarTvaa, romelic
Seicavs gamosaxulebebs iarliyebisaTvis. Image - Index
Tviseba Seicavs indeqsebs, romlebic Seesabameba am sias.
ScrollOpposite-CanarTebis ramodenime striqonad
ganTavsebis xerxs gansazRvravs;
ActivePage - aqtiuri gverdi saxeli;
Pages[Index: Integer] - indeqsis mixedviT gverdze
mimarTva, Tviseba mxolod wakiTxvisaTvis;
PageCount-gverdebis saerTo raodenoba, Tviseba
mxolod wakiTxvisaTvis;
komponentis ZiriTadi xdomilobebia: OnChanging da
OnChange. pirveli maTgani amoqmeddeba axal CanarTze
dawkapunebisas, Tu am dros AllowChange = false, gadarTva
ar moxdeba. OnChange xdomileba amoqmeddeba gadarTvis
momentSive.
TabControl komponenti gamoiyureba PageControl-is
msgavsad da aqvs igive Tvisebebi, mxolod gansxvaveba
imaSia, rom mas ara aqvs mravali gverdi. is erTgverdiania,
romelsac aqvs mmarTveli Rilaki mravali mdgomareobiT.
mas aqvs kidev erTi Tviseba - MultiSelect, romelic
mravali CanarTis erTdrouli arCevis saSualebas iZleva.
TabbedNoteBook aris erTgverdiani komponenti, misi
101
ZiriTadi Tvisebaa Pages, romelic gansazRvravs gverdebis
raodenobas da CanarTebis warweras. ActivePage Tviseba
gansazRvravs aqtiuri gverdis warweras. PageIndex
gansazRvravs aqtiuri gverdis indeqss (0 - pirveli
gverdia). Tabs Tviseba gansazRvravs CanarTebis raode-
nobas. StartMargin da EndMargin gansazRvravs ganapira
CanarTebis komponentis kideebisagan daSorebas. AutoScroll
gansazRvravs CairTos Tu ara gadaxvevis zoli.
NoteBook komponenti aris panelebis dasta, romelTa
saxelebi da raodenoba ganisazRvreba Pages TvisebiT.
PageIndex gansazRvravs arCeuli CanarTis indeqss. am
CanarTSi ar aris CanarTebis mmarTveli elementi,
gverdebis gadarTva SeiZleba RilakebiT.
instrumentuli panelebi
2.31 ToolBar da PageScroll komponentebi
ganaTavseT ToolBar komponentebi formaze. dumiliT,
igi ganTavsdeba zemoT, radgan misi Align Tviseba Tavidanve
aris AlTop. Tu gsurT misi sxva adgilas ganTavseba,
daayeneT Align = alNone. masze Rilakis gansaTavseblad,
konteqstur meniuSi avirCioT New Button; Wrap = true,
niSnavs, rom am Rilakis Semdegi Rilakebi ganTavsdeba
momdevno striqonze.
ganvixiloT Style Tviseba. Style = tbsCheck gansazRvravs,
102
rom Rilaki dawkapunebis Semdeg rCeba daWeril
mdgomareobaSi, Semdegi dawkapunebisas ki amoiwevs. Tu
ramodenime RilakisaTvis davayenebT Tvisebas Grouped =
true, maSin es Rilakebi Seqmnian jgufs, romelTagan mxolod
erTi maTgani iqneba daWeril mdgomareobaSi.
Style = tbsDropDown Seesabameba CamoSladi menius
stils. MenuItem-Si SeiZleba mieTiTos is meniu, saidanac
unda aiRos menius punqtebi.
Style = tbsSeparator Casvams gamyof xazs, romelic
daajgufebs Rilakebs funqcionalur jgufebad. Style =
tbsDivider Casvams gamyofs vertikaluri xazis saxiT.
gamyofi xazi SeiZleba Caisvas ToolBar-is konteqsturi
meniudan New Separator-is arCeviT.
Indeterminate Tviseba true mdgomareobaSi, niSnavs, rom
Rilaki miuwvdomelia. Marked Tviseba gamoyofs Rilaks.
ToolBar komponentis Tvisebebidan aRsaniSnavia:
ButtonHeight da ButtonWidth - Rilakebis simaRle da sigane
piqselebSi; Wrapable- Rilakebis avtomaturi gadatana
meore striqonze, Tu isini ar Tavsdebian mimdinare
striqonze; BorderWidth - CarCos sigane; EdgeInner da
EdgeOuter - panelis Siga da gare nawilis asaxvis stili;
EdgeBorders- gansazRvravs panelis calkeuli mxareebis
asaxvas.
PageScroller komponenti gamoiyeneba maSin, rodesac
103
saWiroa panelis gadaxveva.
PageScroller komponentis ZiriTadi Tvisebaa Control,
igi uCvenebs komponents, romelic unda ganTavsdes da
gadaixves PageScroller fanjaraSi. panelis proeqtirebis
Semdeg SegiZliaT formaze ganaTavsoT PageScroller
komponenti da daayenoT misi Control Tviseba. am momentSi
Tqveni instrumentuli paneli gadaadgildeba PageScroller
komponentis fanjaraSi da saWiroebisamebr gaCndeba
gadaxvevis Rilaki.
PageScroller komponentis Margin Tviseba gansazRvravs
velis zomas piqselebSi, romelic unda darCes bolo
Rilaksa da gadaxvevis komponents Soris. dumiliT,
misi mniSvneloba nulis tolia. AutoScroll Tviseba
gansazRvravs saWiroa Tu ara gadaxveva avtomaturad,
amitom umjobesia igi iyos false mdgomareobaSi.
104
mTel siganeze. yovel komponentTan gaCndeba marcxniv
zoli, romliTac zoli Tavisi komponentebiT SeiZleba
gadaadgildes.
106
ControlBar -ze ganTavsebul TiToeul elements
gauCndeba gadaadgilebis zoli, romelic xasiaTdeba
Drag&Doc teqnologiiT. komponentebs dauyeneT Tviseba
DragMode = dmAutomatic da DragKind = dkDock. es
miuTiTebs Drag&Doc operaciis Sesrulebaze.
RowSize Tviseba iZleva zolis zomas, romelzec unda
CaerTos komponentebi, RowSnap gansazRvravs Casmuli
komponentebis zolebze Cavlebas. AutoDrag Tviseba
gansazRvravs SeiZleba Tu ara ubralo gadaweviT
gavitanoT zoli ControlBar-sazRvrebs gareT.
Tu AutoDrag = true, maSin panelidan calkeuli
komponentebis amoRebisas, isini damoukidebel fanjrebad
gadaiqcevian.
107
2.33 mdgomareobis zoli - StatusBar
mdgomareobis zoli ganTavsebulia fanjris boloSi.
ganvixiloT StatusBar komponentis Seqmnis magaliTi:
ganaTavseT ekranze RichEdit komponenti da qvemoT
moaTavseT StatusBar, masze orjer daawkapuneT, gamosul
fanjaraSi daaWireT Add New Rilaks imdenjer, ramdeni
ganyofilebac gsurT rom gamoiyos statusis striqonze,
daxureT fanjara.
orjer daawkapuneT RichEdit-ze da akrifeT:
StatusBar1.Panels[0].Text := IntToStr
(RichEdit1.CaretPos.Y+1)+’: ‘+IntToStr
(RichEdit1.CaretPos.X+1);
If RichEdit1.Modified then StatusBar1.Panels[1].Text:=
‘Modif’ else StatusBar1.Panels[1].Text := ‘’;
2.34 freimebi
Frame komponenti emsaxureba danarTis stilistur
erTianobas. igi Sualeduria panelsa da formas Soris.
axali freimis SeqmnisaTvis meniu File-Si airCieT
New Frame brZaneba. gaixsneba formis msgavsi fanjara.
gadaitaneT masze GroupBox, Edit, Button, OpenDialog da
ApplicationEvents komponentebi.
108
OpenDialog dialogSi, Filter TvisebaSi failebs dauniSneT
ramodenime filtri, magaliTad `*.*~-yvela faili.
ShowHint (karnaxis iarliyi Cveneba) Tviseba Edit da But-
ton-saTvis aris true. Button-saTvis SeiZleba karnaxis
teqstis dawera, magaliTad, `failis arCeva\katalogidan
failis arCeva~.
ApplicationEvents komponentis OnShowHint xdomilobis
damuSavebis programaSi SeitaneT operatorebi:
if HintInfo.HintControl = Edit1
the begin
HintStr := Edit1.Text;
ApplicationEvents1.CancelDispatch;
end;
es operatorebi iarliyis asaxvis momentSi amowmebs
am xdomilobis (HintInfo.HintControl) wyaro xom ar aris
109
Edit1, Tu aris, maSin iarliyis(HintStr) teqsti Seicvleba
redaqtirebis fanjaraSi Semavali teqstiT da miiReba
zomebi (CancelDispatch), raTa es xdomiloba ar damuSavdes
ApplicationEvents-is sxva komponentebiT.
freimis modulSi SeitaneT TString ti pis FileName
globaluri cvladi, romelSic aisaxeba arCeuli faili.
Rilakze dawkapunebisas, dammuSavebel fanjaraSi SeitaneT
operatori:
if OpenDialog1.Execute
then begin
Edit1.Text := OpenDialog1.FileName;
FFileName := OpenDialog1.FileName;
end;
romelic iZaxebs failis gaxsnis dialogs da Edit1-
Si moaTavsebs failis saxels.
Edit1 komponentis OnExit xdomilobis damuSavebis
programaSi moaTavseT operatori:
FileName := Edit1.Text;
romelic FileName cvladSi Seitans failis saxels,
im SemTxvevaSi, Tu momxmarebelma ar isargebla dialogiT
da pirdapir dawera fanjaraSi failis saxeli.
freimi Seqmnilia. SeqmeniT testuri programa freimis
gamoyenebis demonstrirebisaTvis, risTvisac formaze
ganaTavseT ori Frames komponenti, (gverdi Standard),
110
gamosul fanjaraSi airCieT Tqvens mier Seqmnili freimi.
suraTze mocemulia failis arCevis ori freimi: misi
forma da danarTi Sesrulebis procesSi:
a)
111
b)
112
III Tavi
sistemuri dialogebi
3.1 dialogebis saerTo daxasiaTeba
danarTSi xSirad aris saWiro standartuli moqme-
debebis Sesruleba: failis gaxsna, Senaxva, Sriftis arCeva,
feris arCeva, Zebna da a.S. dialogebi ganTavsebulia Dialogs
gverdze. Tu standartuli dialogebis gamoyeneba ar
iqneba moxerxebuli, Delphi gvTavazobs komponentebs,
romlebic SeiZleba ganvixiloT, rogorc dialoguri
fanjris fragmentebi, saidanac Seiqmneba sakuTari
dialogebi.
OpenDialog (gverdi Dialogs )-failis gaxsnis dialogi;
SaveDialog (gverdi Dialogs )-failis Senaxvis dialogi;
OpenPictureDialog (gverdi Dialogs )-naxatis gaxsnis
dialogi;
SavePictureDialog (gverdi Dialogs )-naxatis Senaxvis
dialogi;
FontDialog (gverdi Dialogs )-Sriftis arCevis dialogi;
ColorDialog (gverdi Dialogs )-feris arCevis dialogi;
ColorBox (gverdi Additional)-feris arCevis CamoSladi
sia;
PrintDialog (gverdi Dialogs )-beWdvis dialogi;
PrinterSetupDialog (gverdi Dialogs )-printeris
dayenebis dialogi;
113
PageSetupDialog (gverdi Dialogs )-gverdis parametrebis
dialogi;P
FindDialog (gverdi Dialogs )-teqstis fragmentis Zebnis
dialogi;
ReplaceDialog (gverdi Dialogs )-teqstis fragmentis
Secvlis dialogi;
CustomizeDlg (gverdi Additional)-`awyobis~ dialogi;
ShellTreeView (gverdi Samples)-asaxavs failebisa da
saqaRaldeebis xes, SeiZleba ShellComboBox da ShellList-
View komponentebiT marTva;
ShellComboBox (gverdi Samples)-failebisa da saqa-
Raldeebis CamoSladi sia;
ShellListView (gverdi Samples)-failebisa da saqaRal-
deebis sia, Windows-is analogiurad;
FileListBox (gverdi Win 3.1)-asaxavs katalogis yvela
failis sias;
DirectoryListBox (gverdi Win 3.1)-asaxavs diskis
katalogebis struqturas;
DriveComboBox (gverdi Win 3.1)-misawvdomi diskebis
CamoSladi sia;
FilterComboBox (gverdi Win 3.1)-failebis ZebnaSi
gamoyenebuli filtrebis CamoSladi sia;
DirectoryOutline (gverdi Samples)-arCeuli diskis
katalogebis xe;
114
Dialogs gverdis yvela komponenti aravizualuria, ase,
rom maTi formaze ganTavsebis adgils mniSvneloba ara
aqvs.
nebismier dialogTan mimarTva xorcieldeba Execute
meTodiT. mas Semdegi saxe aqvs:
If <dialogis saxeli> Execute then <operatorebi>
116
GridLines Tviseba CarTavs an gamorTavs vsReport reJimSi
cxrilis svetebisa da striqonebis xazebs.
AutoArrange Tviseba avtomowesrigebas uzrunvelyofs.
WrapText gansazRvravs piktogramis qveS warwera avto-
maturad gadaitanos Tu ara.
Arrangement gansazRvravs rogor ganTavsdebian mowes-
rigebuli elementebi:
iaTop-ganTavsdebian ekranis zeda mxares marcxnidan
marjvniv mwkrivebad;
iaLeft-ganTavsdebian fanjris marcxena mxares zemodan
qvemoT svetebad;
ObjectTypes Tviseba aris simravle, romelic gansazRv-
ravs Tu ra gamoisaxeba komponentze: ofFolders-saqa-
Raldeebi, ofNonFolders-ara saqaRaldeebi (failebi da
iarliyebi), ofHidden-uxilavi elementebi.
Root Tviseba gansazRvravs asaxvis fesvur saqaRaldes.
am Tvisebis gverdiT mravalwertiliani RilakiT an
ShellListView komponentze ori dawkapunebiT gaixsneba
dialoguri fanjara. masSi SegiZliaT Use Standard Folder
indikatoris CarTviT airCioT fesvis saxiT erT-erTi
saqaRalde: rfDesktop-samuSao magida, rfMyComputer-Cemi
kompiuteri da a.S. Use Path indikatoris CarTva
saSualebas iZleva mravalwertiliani RilakiT airCioT
gza nebismieri saqaRaldesaken, romelic aRiqmeba fesvuris
117
saxiT.
ShellTreeView asaxavs failebisa da saqaRaldeebis xes.
rac aisaxeba xeze, ganisazRvreba ObjectTypes TvisebiT.
UseShellImages Tviseba gansazRvravs xeze standartuli
piktogramebis arsebobas.
ShellComboBox komponenti warmoadgens kompiuteris
samuSao magidaze ganTavsebuli diskebisa da saqaRal-
deebis CamoSlad sias. igi SeiZleba daukavSirdes
ShellListView da ShellTreeView komponentebs Tavisi
Sesabamisi TvisebebiT.
118
TextCase Tviseba iZleva asaxvis registrs: tcUpperCase-
zeda registrSi, tcLowerCase-qvedaSi.
DriveComboBox komponentis DirectoryListBox-Tan
(katalogebis sia) dakavSireba SeiZleba proeqtirebis
procesSi DriveComboBox komponentis DirList TvisebiT.
es Tviseba miuTiTebs DirectoryListBox komponentze.
SeiZleba es kavSiri ganxorcieldes programuladac.
DriveComboBox komponentis OnChange xdomilobis
damuSavebis programaSi CawereT operatori:
DirectoryListBox1.Drive := DriveComboBox1.Drive;
es operatori iZleva DriveComboBox1-Si momxma-
reblis mier arCeuli diskis saxels.
analogiurad SeiZleba damyardes kavSiri DriveCombo-
Box da DirectoryOutline-sTan (katalogebisa da failebis
xe):
DirectoryOutline1.Drive := driveComboBox1.Drive;
FilterComboBox-filtrebis CamoSladi siaa. misi
ZiriTadi Tvisebaa Filter. filtris calkeul nawilebze
mimarTva xorcieldeba Text da Mask TvisebebiT.
komponentis failebis siasTan kavSiri SeiZleba damyardes
FileList TvisebiT.
DirectoryListBox komponenti asaxavs diskis katalo-
gebis sias, romelic mocemulia Drive TvisebiT. katalo-
gebis siis FileListBox-Tan kavSiri xorcieldeba FileList
119
TvisebiT. DirectoryListBox SeiZleba daukavSirdes Label
Wdes, sadac aisaxeba gza mimdinare katalogisaken. Tu es
misamarTi ar eteva, SeiZleba misi Semokleba MinimizeName
funqciiT. katalogis amsaxveli Wde naCvenebia DirLabel
TvisebaSi. FileListBox komponentSi naCvenebia failebis sia.
misi Tvisebebia Drive, Directory da Mask, romelic
gansazRvravs disks, katalogs da failebis `niRabs~.
FileType Tviseba saSualebas iZleva siaSi CairTos ara
yvela faili, aramed mxolod isini romelTac aqvT
Sesabamisi atributi. FileType Tviseba aris simravle,
romelic uCvenebs CarTuli failebis ti ps. am simravlis
elementebs aqvT mniSvnelobebi: ftReadOnly-mxolod
wasakiTxi; ftHidden-damaluli; ftSystem-sistemuri;
ftVolumeId-diskebis aRniSvnebi; ftDirectory-katalogebi;
ftArchive-arqivuli; ftNormal-gansakuTrebuli atri-
butebis gareSe.
ShowGlyps mTviseba uzrunvelyofs failebis pikto-
gramebis Cvenebas.
MultiSelect Tviseba ramodenime failis arCevis saSua-
lebas iZleva.
FileName TvisebaSi SeiZleba arCeuli failis saxelis
wakiTxva.
failebis sia SeiZleba daukavSirdes Edit1 komponents,
romelSic aisaxeba arCeuli faili.
120
DirectoryOutline Seicavs katalogebis xes. TextCase
Tviseba gansazRvravs katalogebis saxelebis asaxvis
stils: tcLowerCase-qveda registrSi gadayvana;
tcUpperCase-zeda registrSi gadayvana, tcAsis-gardasaxvis
gareSe.
122
aRniSnuli komponentis ZiriTadi Tvisebaa Color.
CustomColors Tviseba damatebiTi palitris SekveTili
feris arCevis saSualebas iZleva. TiToeuli feri
ganisazRvreba Semdegnairad:
<feris saxeli> = <feris TeqvsmetobiTi warmodgena>;
ferTa saxelebi mocemulia ColorA(pirveli feri)-
dan ColorP(meTeqvsmete, bolomde). magaliTad, striqoni
ColorA = 808022 iZleva pirvel SekveTil fers.
Tu momxmarebelma unda Secvalos Memo1-is fontis
feri, amis realizeba xdeba operatoriT:
if ColorDialog1.Execute then Memo1.Color :=
ColorDialog1.Color;
DefaultColorColor Tviseba gansazRvravs ra feris
kvadratiT iqneba moniSnuli siaSi `clDefault~ striqoni.
NoneColorColor gansazRvravs ra feris kvadratiT iqneba
aRniSnuli siaSi `clNone~ striqoni.
Select Tviseba uCvenebs arCeul fers. amisaTvis SeiZleba
OnSelect xdomilobiT sargebloba, romelic amuSavdeba
momxmareblis mier feris arCevis momentSi. magaliTad,
operatori
Memo1.Color := ColorBox1.Selected;
Memo1 fanjaras miscems momxmareblis mier arCeul
fers.
Colors Tviseba aris ferebis indeqsirebuli masivi,
123
xolo ColorNames Tviseba analogiuri masivia ferTa
saxelebiT.
124
SerCevis dialogur fanjaras.
MarginBottom, MarginLeft, MarginRight da MarginTop
parametrebi Sesabamisad iZlevian velis qveda, marcxena,
marjvena, zeda sawyis mniSvnelobebs. PageHeight da
PageWidth gansazRvraven gverdis simaRlesa da siganes.
MinMarginBottom, MinMarginLeft, MinMarginRight,
MinMarginTop Tvisebebis mniSvnelobebi iZlevian velis
minimalur zomebs.
126
if Memo1.SelStart >= SPos
then begin
{napovni teqstis gamoyofa}
Memo1.SelLength := Length(FindText);
{Zebnis sawyisi poziciis Secvla}
SPos := Memo1.SelStart + Memo1.SelLength +1;
end
else
if MessageDlg(‘teqsti “’+FindText+’” ar aris napovni.
gavagrZelo dialogi?’,
mtConfirmation, mbYesNoCancel,0) <>mrYes
then CloseDialog;
end;
Memo1.SetFocus;
end;
programaSi Segvaqvs SPos cvladi, romelic inaxavs
pozicias, saidanac gvsurs Zebnis dawyeba.
sasargebloa, rom Memo1-is OnClick da OnKeyUp
xdomilobis damuSavebis programaSi SeitanoT operatori:
SPos := Memo1.SelStart;
es momxmarebels Memo1-is fanjaraSi dialogis
procesSi kursoris mdgomareobis Secvlis saSualebas
aZlevs. es axali mdgomareoba Seinaxeba SPos cvladSi
da gamoiyeneba Zebnis gagrZelebisas.
127
Secvlis realizebisaTvis, zemoT moyvanili procedu-
rebi SeiZleba igive darCes, mxolod FindDialog1 Seicvalos
ReplaceDialog1-iT. damatebiT SeiZleba daiweros
ReplaceDialog1-is xdomilobis damuSavebis programa:
procedure Tform1.ReplaceDialog1Replace(Sender: TObject);
begin
if Memo1.SelText<>’’
then Memo1.SelText :=ReplaceDialog1.ReplaceText;
if frReplaceAll in ReplaceDialog1.Options
then ReplaceDialog1Find(Self);
end;
es kodi moaxdens gamoyofili teqstis Secvlas,
Semdegi SecvlisaTvis daaWireT `Next~, xolo yvelgan
Sesacvlelad `Replace All~.
128
IV Tavi
danarTis Seqmnis meTodika
4.1 danarTis damuSavebis teqnologia
wina TavSi ganvixileT komponentebis ganTavseba
formaze da maTi dammuSavebeli programebis Seqmna, magram
es ar aris sakmarisi danarTis SeqmnisaTvis, radgan
aseTi danarTis Sesworeba sakmaod mouxerxebeli iqneba.
danarTis Seqmnisas udidesi mniSvneloba aqvs ara
lamazi interfeisis Seqmnas, aramed moqmedebis siis
Sedgenas, romelsac momxmarebeli Seasrulebs mocemuli
danarTis daxmarebiT. ra Tqma unda daproeqtebis
procesSi pirveladi sia daixveweba.
moqmedebis siis Sedgenis Semdeg, SeiZleba SeirCes
interfeisis Semsrulebeli elementebi. zogierT
elementebs aqvs dublirebuli Tvisebebi, amitom sworad
unda SeirCes komponentebi. garda amisa Tu Sesacvleli
gaxdeba raime moqmedeba, aucilebelia programis
ramodenime adgilas cvlilebebis Setana. msgavsi
sirTuleebis dasaZlevad Delphi-Si gaTvaliswinebulia
komponentebi, romlebic axorcieleben moqmedebebis
centralizebul marTvas, maT dispetCerizacias.
moqmedebebis sia Segvaqvs specialur komponentSi - es
aris dispetCeri.
umravlesoba elementebs aqvT Action Tviseba. sakmarisia
129
am TvisebaSi gadagzavna erTerT moqmedebaze, rom am
moqmedebis yvela Tviseba, maT mier realizebadi
dammuSavebeli programebi gadaitaneba mocemul mmarTvel
elementze da Tqven ar dagWirdebaT TiToeuli
elementisaTvis yovelive amis Tavidan ganmeoreba. amave
dros Sesworebis SemTxvevaSi sxvadasxva formaze
ganTavsebuli yvela elementi miiRebs Setanil Sesworebas.
moqmedebebis dispetCerizebas axdens ActionList
komponenti, danarTis marTvis centralizebas aqvs kidev
ramodenime done. pirvel rigSi unda aRiniSnos ImageList,
romelic centralizebulad moamaragebs danarTs
gamosaxulebebiT. meore, Delphi-Si aris obieqti-
Application (danarTi), romelic marTavs proeqtis saerTo
Tvisebebs. ApplicationEvents axorcielebs xdomilobebze
Setyobinebis dispetCerizebas. da bolos yvela danarTSi
aris Screen(ekrani) obieqti, romelic uzrunvelyofs
monitorze sxvadasxva formis gamosaxulebis marTvas.
Action (moqmedeba)-zogierTi qcevis realizeba, es aris
momxmareblis qcevaze reaqcia, rogoricaa dawkapuneba
Rilakze an menius punqtis arCeva. moqmedebebis dispetCe-
rizebas awarmoebs aseve ActionManager komponenti,
romelic ActionList-ze ufro mZlavria.
moqmedebebis siis Sedgenis Semdeg unda Seiqmnas
moqmedebebis zolebi. es komponentebia, romlebzec
130
ganTavsdeba moqmedebebis interfeisuli komponentebi.
maT miekuTvneba mTavari menius zoli, instrumentebis
striqoni. ActionList gamoyenebisas es zolebi formaze
daemateba calkeuli komponentebis saxiT. ActionManager-
is gamoyenebisas isini formirdebian da iqmnebian TagviT
gadataniT.
interfeisis komponentebs aqvT amxsneli gamosaxuleba,
rac ganTavsebulia ImageList komponentSi.
ase, rom moqmedebebis siis, meniusa da instrumentebis
panelis formirebas mivyavarT Semdeg moqmedebebamde:
- Sedges moqmedebebis sia, romelic momxmareblis
mier misawvdomi unda iyos menius, instrumentebis panelis
da sxva marTvis elementebiT;
- arastandartuli moqmedebebisaTvis, romlebic
misawvdomi iqnebian instrumentebis RilakebiT, mzaddeba
piktogramebi ImageList komponentSi;
- formaze gadaitaneba ActionList da ActionManager.
komponenti ukavSirdeba ImageList -s. formirdeba
standartuli da arastandartuli moqmedebebis sia;
- TiToeuli moqmedebisaTvis unda SeirCes Tvisebebi:
Name(saxeli), Caption(warwera, romelSic gamoiyofa
swrafi mimarTvis Rilaki), ShortCut(`cxeli~ Rilakebi),
ImageIndex(ImageList gamosaxulebis nomeri), Hint
(karnaxis teqsti), HelpContext an HelpKeyword (cnobarze
131
mimarTva) da sxva. arastandartuli moqmedebebisaTvis
TviTon werT am moqmedebebs.
- yvela arastandartuli moqmedebebisaTvis iwereba
xdomilobis damuSavebis programa. standartuli
moqmedebebi avtomaturad damuSavdebian, Tumca zogjer
saWiroa maTSi cvlilebebis Setana, an sulac xelaxla
Seqmna.
amis Semdeg Tu gamoyenebulia ActionList:
- formaze gadaitaneT MainMenu komponenti, daukav-
SireT ImageList-s. komponentze formirdeba meniu da
mis nawilebSi mocemulia ActionList-Si aRweril
moqmedebebze gadacema;
- formaze SeqmeniT Toolbar. daukavSireT ImageList-s,
mis Rilakebze mocemulia ActionList-Si aRweril
moqmedebebze gadacema.
Tu gamoyenebulia ActionManager, maSin bolo ori
moqmedeba miiRebs saxes:
- formaze gadaitaneT ActionMainMenuBar(mTavari
menius zoli) komponenti. is ukavSirdeba ActionManager
komponents. Semdeg ActionManager komponentidan gadai-
taneT zolze menius nawilebi, romlebic meniuSi Sevlen,
rogorc saTaurebi an calkeuli moqmedebebi;
- ActionManager redaqtorSi iqmneba axali instrumen-
tuli paneli an ramodenime paneli. maTze gadaitaneT
132
TagviT saWiro moqmedebebi.
aRniSnuli moqmedebebi unda Sesruldes meniusa da
instrumentebis panelis moqmedebebis siis proeqti-
rebisas.
134
`niRabis~ avtomaturi generaciisaTvis.
meTodi
procedure Insert(Index: Integer;Image,Mask: TBitmap);
procedure InsertIcon(Index: Integer;Image: TIcon);
procedure InsertMasked(Index: Integer; Image: TBitmap;
MaskColor: TColor);
winas msgavsia, mxolod siaSi Casvams gamosaxulebas,
masze Index indeqsis micemiT. SemdgomSi gamosaxulebebis
indeqsebi Sesabamisad daiZvrebian.
meTodebi:
procedure Replace(Index: Integer; Image,Mask: TBitmap);
procedure ReplaceIcon(Index: Integer; Image: TIcon);
procedure ReplaceMasked(Index: Integer; NewImage:
TBitmap; MaskColor: TColor);
gansxvavdeba imiT, rom gamosaxulebas Index indeqsiT
moaTavsebs NewImage axali gamosaxulebiT.
meTodi:
procedure Delete(Index: Integer);
siidan waSlis Index indeqsis gamosaxulebas.
meTodi:
procedure Move(CurIndex, NewIndex: Integer);
gadaaadgilebs CurIndex indeqsian gamosaxulebas axal
adgilas, romelic naCvenebia NewIndex parametriT.
135
4.3 moqmedebebis dispetCerizeba
ActionList komponentebis gamoyenebiT
Tumca ActionList komponenti naklebad mZlavria vidre
ActionManager komponenti, magram mas Tavisi mniSvneloba
ar daukargavs.
ActionList komponentSi,romelic ganTavsebulia Standard
gverdze, Seitaneba moqmedebebis sia, romelsac adgenT
proeqtirebis dawyebisas.
136
gadaitaneT formaze aRniSnuli komponenti. aseve
gadaitaneT ImageList, xolo ActionList-is Images TvisebaSi
airCieT ImageList. am moqmedebisas ImageList komponentSi
Seitaneba Sesabamisi gamosaxulebebi.
ActionList komponentze orjer daawkapuneT.
suraTze mocemulia moqmedebebis redaqtoris fanjara
airCieT New Action(axali moqmedeba) brZaneba da New
Standard Action(axali standartuli moqmedeba). TiTo-
euli moqmedeba, romelic SeitaneT siaSi aris TAction
obieqtis ti pi. airCieT Categories velSi romelime
moqmedeba an All Actions(yvela kategoria), xolo marjvniv
airCieT konkretuli moqmedeba. yvela moqmedebisaTvis
SeirCieT Name da Caption Tvisebebi. SeiZleba ShortCut
(`cxeli~ Rilakebis) arCeva, aseve Hint(karnaxi) arCeva.
obieqtebis inspeqtoris xdomilobis gverdze TiTo-
euli moqmedebebisaTvis gansazRvrulia sami xdomiloba:
OnExecute, OnUpdate da OnHint.
OnExecute amoqmeddeba, roca momxmarebeli asrulebs
moqmedebas, magaliTad, daawkapuna komponentze, romelic
ukavSirdeba aRniSnul moqmedebas. magaliTad, AExit
moqmedebis OnExecute xdomilobis damuSavebis programas
umartives SemTxvevaSi aqvs saxe:
procedure TForm1.AExitExecute(Sender: TObject);
begin
137
Close;
end;
ufro rTul situaciebSi SeiZleba Seicavdes danarTis
daxurvis SesaZleblobis Semowmebas, momxmareblis
moTxovnebs da a.S.
UpDate xdomiloba periodulad muSaobs moqmedebebs
Soris. xdomilebis amoqmedeba Sewydeba mxolod
moqmedebebis realizaciis periodSi an maSin roca
momxmarebeli arafers ar akeTebs da kompiuteri imyofeba
molodinis mdgomareobaSi. OnUpDate xdomilobis
damuSavebis programa SeiZleba Seicavdes brZanebebs,
romelic uzrunvelyofs momdevno moqmedebisaTvis
momzadebas an fonuri operaciebis Sesrulebas.
OnHint xdomiloba amoqmeddeba maSin, roca ekranze
aisaxeba karnaxis iarliyi, Tagvis obieqtTan miaxloebisas.
138
Rilakebi moTavsdeba Action velSi;
- orjer daawkapuneT ImageList-ze, es Rilakebi
piktogramebis saxiT asaxulia am fanjaraSi;
- ganaTavseT formaze ToolBar (Win32 CanarTidan),
konteqstur meniuSi airCieT New Button, daismeba
Rilakebi, moniSneT ToolBar da Images TvisebaSi airCieT
ImageList1, Rilakebi aisaxeba ToolBar -ze;
suraTze mocemulia teqsturi danarTis fanjara:
139
- moniSneT TiToeuli Rilaki da Action Tvisebaze
airCieT Sesabamisi Tviseba, ra moqmedebac unda Seasrulos
Rilakma. TiToeuli RilakisaTvis ShowHint TvisebaSi
airCieT true;
- formaze ganaTavseT Memo an RichEdit komponentebi.
akrefili teqstisaTvis isargebleT ToolBar -is Rila-
kebiT.
140
formaze gadatanili CustomizeDlg komponentze mimarTviT.
orive SemTxvevaSi gaixsneba moqmedebebis redaqtoris
dialoguri fanjara. igi uzrunvelyofs zedmeti
Rilakebis gauqmebas, xolo axlebis damatebas.
ActionManager-is State Tviseba gansazRvravs momxmareb-
lis moqmedebaze reaqcias. ssNormal Seesabameba normalur
muSa reaqcias: momxmareblis interfeisis komponentze
dawkapunebisas Sesruldes Sesabamisi moqmedeba. ori
SesaZlo mniSvnelobebia: asSuspended da asSuspen-
dedEnabled gamorTaven moqmedebis Sesrulebis SesaZleb-
lobas. aqedan pirveli ar cvlis moqmedebis Enabled
Tvisebas, xolo meores yvela moqmedebaSi Enabled
gadahyavs true mdgomareobaSi.
Tu Tqven raRac momentSi gsurT moqmedebebis zolebi,
romlebic imarTebian ActionManager1 komponentiT,
gadavidnen awyobis mdgomareobaSi, unda Sesruldes
operatorebi: ActionManager1.State := asSuspended; maSin
instrumentul Rilakze daWerisas an menius arCevisas
ar Sesruldeba Sesabamisi moqmedeba da integrirdeba
programiT sxvagvarad.
FileName Tviseba iZleva failis saxels, romelSic
ActionManager inaxavs informacias masTan dakavSirebul
moqmedebebis zolis Sesaxeb. Image Tviseba inaxavs
gamosaxulebebs.
141
formaze gadaitaneT ActionManager da masze orjer
daawkapuneT. gamosul fanjaraSi Categories da Actions
veli iqneba carieli.
suraTze mocemulia ActionManager komponentis Ac-
tions gverdi.
142
xolo Categories-Si ki maTi kategoriebi. Tu gamoyofT
moqmedebebs obieqtebis inspeqtorze, SegiZliaT Caption,
Hint, ShortCut da sxva Tvisebebis Secvla.
ActionManager komponentis ToolBar gverdze mocemulia
dispetCeris mier marTvadi instrumentebis panelebi
(ActionToolBar) da meniu (ActionMainMenuBar). Action-
MenuBar komponenti danarTs daemateba komponentebis
palitridan maTi gadataniT, xolo ActionToolBar kompo-
nenti formaze daemateba New Rilakze daWeriT. Delete
Rilaki waSlis moniSnul moqmedebebis panels siidanac
da danarTidanac.
143
suraTze mocemulia ActionManager komponentis
moqmedebebis redaqtoris Toolbars gverdi.
mas Semdeg, rac New RilakiT daamateT axali
instrumentuli paneli an gadaitaneT formaze Action-
MainMenuBar meniu, daubrundiT Actions da gadaitaneT
misgan TagviT panelze an menius zolze moTxovnili
moqmedeba an mTlianad kategoria. Tu meniuSi gadaitaneba
kategoria, misi warwera gaxdeba menius ganyofilebis
saTauri.
AllowHding Tviseba uzrunvelyofs zoli Sesrulebis
procesSi iyos Tu araxilvadi. Tu is aris false mdgo-
mareobaSi, maSin es zoli nacrisferiT iqneba asaxuli.
Option gverdi ramodenime opciis dayenebis saSualebas
iZleva.
Menus Show recently used first-qmnis gadawyobad menius.
Reset Usage Data - aRadgens moqmedebebis zolis sawyis
mdgomareobas. Large icons moqmedebebis zolSi gamoitans
did piktogramebs; Show tips on toolbars instrumentul
striqonze mcuravi iarliyebis gamotanas uzrunvelyofs;
Show shortcut keys in tips uzrunvelyofs iarliyebis
teqstSi `cxeli~ Rilakebis Setanas. Menu animation
CamoSladi sia gansazRvravs menius asaxvis formas.
144
4.6 teqsturi danarTi
avagoT danarTi, romelic Sesdgeba Memo, Files, Edit,
Tools punqtebiT dakompleqtebuli meniusagan, ori
instrumentuli panelisagan: erTi maTgani dublirebas
ukeTebs Edit menius, xolo meore Files. meniu Files Sesdgeba
Open, Save, Save as brZanebebisagan. Edit Sesdgeba: Cut,
Copy, Paste, Select All, Undo, Delete-sagan, xolo Tools
Sesdgeba Settings nawilisagan, romelic uzrunvelyofs
mTavari menius da instrumentuli panelebis dayenebas.
avagoT teqsturi danarTi, romelic naCvenebia suraTze.
146
panelebisa da menius konfiguraciis Sesaxeb. amis Semdeg
SeasruleT danarTi.
instrumentuli panelebis marjvena boloebSi Cans
Rilaki isriT. am Rilakze daWeriT gaixsneba or
nawiliani meniu: Add or Remove Buttons (Rilakis damateba
an amogdeba), da Reset Toolbar (panelis sawyisi mdgoma-
reobis aRdgena). pirveli nawili uCvenebs moqmedebebis
sias gverdiT indikatorebiT. indikatoris CarTva
moqmedebas amoagdebs panelidan. panelis sawyisi
mdgomareobis aRdgena xdeba indikatoris kvlav CarTviT
an Reset Toolbar brZanebis SesrulebiT.
- ActionManager1-ze ori dawkapunebiT gaxseniT
moqmedebebis redaqtori da Actions gverdze gamoyaviT
Open moqmedeba. obieqtebis inspeqtorze naxavT am
moqmedebis Tvisebas da maT Soris Dialog Tvisebas.
gaxseniT es dialogi da SeitaneT Sesabamisi brZanebebi.
- danarTSi SeitaneT FileName globaluri cvladi,
xolo masSi SeitaneT failis saxeli, romelSic Seinaxeba
Memo redaqtirebis fanjris teqsti:
Var FileName: string;
- Open brZanebisaTvis unda daiweros mxolod OnAccept
(Tu gakeTda arCeva da aWerT Ok) xdomilobis damuSavebis
programa:
FileName := FileOpen1.Dialog.FileName;
147
Memo1.Lines.LoadFromFile(FileName);
pirveli operatori FileName cvladSi naxavs arCeuli
failis saxels; meore operatori Memo1-Si CatvirTavs
fails.
es operatorebi gadaiwereba Semdegnairad: airCieT
Open, daawkapuneT obieqtebis inspeqtorze Sesabamisi
xdomilobis gverdiT;
- Save as brZanebisaTvis unda daiweros BeforeExecute
da OnAccept xdomilobebis damuSavebis programebi. amaTgan
pirvelSi SeitaneT dialogSi failis saxeli (FileName),
rogorc, dumiliT, SemoTavazebuli:
FileSaveAs1.Dialog.FileName := FileName;
OnAccept xdomilobis dammuSavebelSi damaxsovrebul
iqneba arCeuli failis saxeli da Memo1-is fanjridan
teqsti Seinaxeba am failSi:
FileName := FileSaveAs1.Dialog.FileName;
Memo1.Lines.SaveToFile(FileName);
- Save brZaneba xorcieldeba operatoriT:
if FileName < > ‘’
then Memo1.Lines.SaveToFile(FileName);
else FileSaveAs1.Execute;
148
V Tavi
momxmareblis grafikuli interfeisis
damuSaveba
5.1 grafikuli interfeisis
damuSavebis zogadi rekomendaciebi
Delphi grafikuli interfeisis Seqmnis farTo saSua-
lebebs gvTavazobs. ase, rom dammuSavebels SeuZlia
Tavisi fantaziebis maqsimaluri gamovlena.
Microsoft-is firmam SemogvTavaza programuli uzrun-
velyofis damuSavebis specifika, radgan momxmarebelma
interfeisis aTvisebisaTvis bevri dro ar dakargos.
grafikuli interfeisi unda Seicavdes:
- mTavar menius, romelic realizdeba MainMenu an
ActionManager, ActionMainMenuBar komponentebiT;
- swrafi Rilakebis instrumentul panelebs. xSirad
es aris ToolBar komponenti;
konteqstur menius (realizdeba PopupMenu-s
daxmarebiT);
- swrafi mimarTvis Rilakebs, `cxel~ Rilakebs
ZiriTad brZanebebTan mimarTvisaTvis;
- karnaxis iarliyebs;
- mdgomareobis zols (StatusBar);
- sacnobaro sistemas, romelic gamodis F1 RilakiT;
- danarTis awyobis saSualebebs, awyobis damaxsovrebas,
149
rom muSaobis wina seansis awyobebi aRdges momdevno
seansSi;
- danarTis dayenebis saSualebas. mis registracias
Windows-Si da waSlas Windows-dan.
150
5.3 danarTis fanjris stili
danarTis ZiriTadi elementia forma - konteineri,
romelzec ganTavsdebian vizualuri da aravizua-
lurikomponentebi. TiToeul fanjaras Tavisi Unit moduli
Seesabameba.
BorderStyle Tviseba gansazrvravs fanjrebis da maTTan
operaciebis saerTo xeds. man SeiZleba miiRos mniSvne-
lobebi: bsSizeable - Cveulebrivi fanjara saTauris zoliT,
aqvs zomebis Secvlis saSualebebi; bsDialog- fanjara
Seucvleli zomebiT; bsSingle - fanjris zomebi ar
Seicvleba Tagvis isriT fanjris kideebidan, aramed
Seicvleba mxolod saTauridan; bsToolWindow - bsSingle
msgavsia, mxolod saTauris ufro mcire zomis zoliT;
bsSizeToolWin - bsSizeable-s msgavsia, mxolod saTauris
mcire zoliT, romelsac ara aqvs zomis Secvlis Rilaki;
bsNone - saTauris zolis gareSe.
BorderIcons Tviseba gansazRvravs saTauris zolze
ganTavsebul Rilakebs:
bsSistemMenu-fanjris daxurva; byMinimize-fanjris
minimizeba; byMaximize-fanjris maqsimizeba; byHelp-
cnobaris Rilaki.
formis WindowState Tviseba gansazRvravs saxes, ro-
melSic danarTis Sesrulebisas momxmarebels waredgineba
pirveladi fanjara, igi Rebulobs mniSvnelobebs:
151
wsNormal-fanjris normaluri saxe; wsMinimized-
minimizebuli fanjara; wsMaximized-mTel ekranze gaSlili
fanjara.
FormStyle Tvisebam SeiZleba miiRos mniSvnelobebi:
fsNormal-Cveulebrivi danarTis fanjara. es mniSvne-
loba dumiliT aris miRebuli;
fsMDIForm - MDI danarTis mSobeli forma anu danarTi
Svili formebiT;
fsMDIShild - MDI danarTis Svili forma;
fsStayOnTop - fanjara yovelTvis iqneba winaplanze.
meniuSi Tu SeitanT brZanebas `yvelaze zedapirze~,
am ganyofilebis AutoCheck Tviseba gautoleT true-s
da am ganyofilebis damuSavebis programaSi SeitaneT:
if MStayOnTop.Checkedss
thrn Form1.FormStyle := fsStayOnTop
else Form1.FormStyle := fsNormal;
152
aq igulisxmeba, rom menius punqts romelzec aris
saubari hqvia MStayOnTop. am punqtis xelaxali arCeviT
indikatori gaqreba da fanjara SeiZens Cveulebriv
statuss, rac naCvenebia suraTze.
5.5konteqsturi cnobari
konteqsturad damokidebuli cnobari amoqmeddeba F1
RilakiT da igi mogvcems informacias im komponentis
Sesaxeb, romelic mocemul momentSi aris fokusSi.
Tu HelpContext = 0, maSin mocemuli komponenti
154
cnobars miiRebs mSobeli komponentisagan. magaliTad,
erT panelze ganlagebuli komponentebisaTvis SeiZleba
mieniWos HelpContext = 0, xolo TviT panels mieciT
nulisagan gansxvavebuli HelpContext mniSvneloba, romelic
Seicavs panelis yvela komponentis aRweras.
amis asamuSaveblad SeasruleT brZaneba: Project|Options
da Project Options fanjaraSi(gverdi Application) daayeneT
HelpFile opcia, romelic udris momzadebuli .hlp failis
saxels. proeqtis ZiriTad failSi gaCndeba operatori:
Application.HelpFile := ‘<failis saxeli.hlp>’;
am operatorSi gamoiyeneba HelpFile meTodi, romelic
gansazRvravs cnobaris fails.
cnobari Seiqmneba romelime teqstur redaqtorSi.
Delphi mxolod gamoiZaxebs mas.
156
ClientWidth da ClientHeight Tvisebebi gansazRvraven
komponent-konteineris klientis ares zomebs, xolo Width
da Height komponentebis siganesa da simaRles. radgan
formis zomebis Secvlisas icvleba komponentis zomebi
da adgilmdebareoba, amitom Sesabamisi operatorebi unda
ganTavsdnen formis OnResize xdomilebis damuSavebis
programaSi. fanjris zomebis Secvlisas komponentebis
ganlagebis Seusabamobas rom avaridoT Tavi, sasurvelia
OnShow xdomilobasTan dakavSireba, romlis damuSavebis
programas aqvs saxe:
StaticText1.Left := Panel2.Left + (Panel2.ClientWidth-
StaticText1.Width) div 2;
aRniSnuli operatori StaticText1 komponentis marcxena
bolos daZravs ise, rom Wde yovelTvis ganTavsdes
Panel panelis SuaSi, ris normaluri muSaobisaTvis unda
gauqmdes Wdis dakavSireba panelis marjvena napirTan
(Tu es adre iyo dayenebuli).
158
Var Key: Word; Shift: TShiftState);
begin
if (key = ord(‘U’)) and (ssAlt in Shift) then
Edit1.ScaleBy(11,10) else
if (Key = ord(‘D’)) and (ssAlt in Shift)
then Edit1.ScaleBy(10,11)
end;
roca Edit1 imyofeba fokusSi, momxmareblis mier [Alt-
U] Rilakze daWerisas redaqtoris fanjris zoma 10%-
iT gaizrdeba, xolo [Alt-D]-ze daWerisas Sesabamisad
mcirdeba.
redaqtirebis fanjrisaTvis Tu ParentFont = false, maSin
fanjris SecvlasTan erTad icvleba Sriftis zomac.
magaliTad, operatori:
Panel1.ScaleBy(11,10);
zrdis panelis zomas, aseve yvela misi komponentis
zomebsac. Tu ParentFont = false, maSin yvela komponentze
Srifti gaizrdeba ParentFont Tvisebis mniSvnelobisagan
damoukideblad. Tanac Srifti gaizrdeba arafanjrul
komponentebze, magaliTad rogoricaa Wde. Tu panelze
ParentFont = true, maSin Srifti gaizrdeba mxolod im
komponentebze, romlebzec ParentFont = false.
zemoT ganxiluli operatori cvlis komponentebis
jgufis masStabs, magram amave dros daZravs maT pozicias,
159
radgan moqmedebs Top da Left Tvisebebze. amisagan Tavis
dasaRwevad SeiZleba mimarToT panelis TiToeul Svil
komponents Semdegi operatorebiT:
Var ind: integer;
.......
for ind := 0 to Panel1.ControlCount-1
do if(Panel1.Controls[ind] is TWinControl) then
(Panel1.Controls[ind]as TWinControl).ScaleBy(11,10);
gaiTvaliswineT rom ScaleBy-s uSualo gamoyeneba
SeiZleba mxolod TWinControl klasis fanjrisebur
komponentebTan. amitomac mowmdeba aris Tu ara
komponenti TWinControl ti pis. arafanjriseburi kompo-
nentebi, magaliTad Wde, am dros ar masStabirdeba.
160
OnMouseUp- Tagvis daWerili Rilakis komponentidan
aSveba. SesaZlebelia kursoris koordinatas gansazRvra.
OnStartDrag-obieqtis gadatanis procesis dasawyisi.
SesaZlebelia gadasatani obieqtis amocnoba;
OnDragOver- gadasatani obieqtis komponentze
gadaadgileba. SesaZlebelia gadasatani obieqtis da Tagvis
kursoris koordinatas gansazRvra;
OnDragDrop-obieqtis gadatanis Semdeg Tagvis
daWerili Rilakidan TiTis aSveba, SesaZlebelia
gadasatani obieqtisa da Tagvis kursoris koordinatas
amocnoba;
OnEndDrag-winas msgavsi kidev erTi xdomiloba;
OnEnter-Tagvis mani pulaciis, tabulaciaze daWeris
an programulad gadacemis Sedegad fokusSi myofi
elementis xdomiloba;
OnExit-elementis fokusis dakargvis Sedegad aRZruli
xdomileba;
OnMouseWheel-Tagvis Tavisufali brunvisas aRZruli
xdomiloba;M
OnMouseWheelUp-Tagvis wriuli brunva zemoT.
aRiZvreba, Tu moZraoba ar aris damuSavebuli wina
xdomilobiT;
OnMouseWheelDown-Tagvis wriuli brunva qvemoT,
aRiZvreba Tu ar aris gamoyenebuli OnMouseWheel -
161
xdomiloba.
Tu gsurT Tagvis saSualebiT daxmarebis gamotana,
Sesabamisi Rilaki an menius punqti ganaTavseT formaze
da Cursor parametrSi airCieT crHelp mniSvneloba.
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
Cursor := crHelp;
end;
informaciis asaxvisaTvis formaze unda ganTavsdes
redaqtirebis fanjara, magaliTad Memo1. formisa da
Image1 komponentis OnMouseDown xdomilobis damuSa-
vebis programaSi SeitaneT:
procedure TForm1.Image1MouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState; x,y: Integer);
begin
if ((Sender as TControl).Name < >’Image1’)
then Cursor := crDefault;
if (Cursor < > crHelp) then exit;
Memo1.Lines.Clear;
if (y < 120) then
if (x < 160) then
Memo1.Lines.Add(‘. . . ‘)
else if (x < 270) then
162
...
Cursor := crDefault;
end;
pirveli operatorebi uzrunvelyofen proceduridan
gasvlas im SemTxvevaSi, Tu kursoris saxe ar aris
crHelp an dawkapuneba ar moxdeba gamosaxulebaze. Semdegi
operatori redaqtirebis fanjaras wmends wina
informaciisagan, Semdeg if struqtura aanalizebs kursoris
koordinatebs da Sesabamisad gamosaxavs ama Tu im
informacias.
164
TWMKey; var Handled: Boolean);
begin
if Msg.CharCode = Ord(‘Q’) then
if Application.MessageBox(‘gsurT muSaobis
dasruleba?’, ‘daadastureT’, MB_YESNOCANCEL+
MB_ICONQUESTION) = IDYES
then Application.Terminate;
end;
5.11 daWerili Rilakis amocnoba
Key parametri amoicnobs xdomilobis momentSi
daWeril Rilaks. es parametri aris mTeli ricxvi,
romelic gamoxatavs Rilaks.
1 ! 49 $31 ord(‘1’)
165
magaliTad Enter Rilakze daWeris reaqcia SeiZleba
Semowmdes operatoriT:
if (Key = 13) then . . . ;
zemoT warmodgenil cxrilSi mocemulia Rilakebis
zogierTi kodi. igive operatori SeiZleba daiweros
simboluri saxeliT, rac agvacilebs ricxviTi kodis
damaxsovrebas:
if (Key = VK_RETURN) then . . . ;
Semowmebis erT-erTi xerxia Ord funqciiT sargebloba,
romelic gansazRvravs simbolos kods. laTinuri
simboloebis zeda registris kodi emTxveva Key
parametrSi gamoyenebul virtualur kodebs. amitom Tu
saWiroa `Y~ simbolos Sesabamisi Rilakis amocnoba,
SeiZleba daiweros:
if (Key = Ord(‘Y’)) then . . . ;
aq gamoiyeneba mxolod laTinuri anbani zeda
registrSi.
moviyvanoT magaliTi, sadac Enter-daWerisas fokusi
avtomaturad gadaecema momdevno fanjrian komponents:
if (Key = VK_RETURN) then
FindNextControl(Sender as TWinControl, true, true,
false).SetFocus;
es operatori FindNextControl meTodiT eZebs
tabulaciis mimdevrobaSi momdevno komponents da mas
166
gadascems fokuss.
ganvixiloT Rilakebis kombinaciis amocnobis
magaliTi. Tu gsurT Alt-X kombinaciis amocnoba,
SeiZleba daiweros operatori:
if ((Key = Ord(‘X’)) and (ssAlt in Shift)) then . . . ;
Cven ganvixileT Rilakebis amocnoba OnKeyDown
xdomilobisas.
ganvixiloT OnKeyPress xdomilobebi. am
xdomilobis damuSavebis programis saTauria:
procedure (Sender: TObject; Var Key: Char);
am dammuSavebelSi Key parametri gadaicema, igi
simbolos ti pisaa. Tu SekiTxvaze saWiroa dadebiTi
pasuxis gacema OnKeyPress xdomilobis damuSavebis
programaSi daiwereba operatori:
if ((Key = ‘Y’) or (Key = ‘n’)) then . . . ;
in operaciis gamoyenebiT aRniSnuli Semdegnairad
daiwereba:
if (Key in [‘Y’, ‘y’]) then . . . ;
yvela dasaSveb pasuxze reaqcias axorcielebs
Case operatori:
Case Key of
‘Y’, ‘y’:. . . ;
‘N’, ‘n’:’ . . .
else beep;
167
end;
beep aris xmovani signali SecdomiT pasuxze.
Tu gsurT Edit1 komponentSi SeitanoT mxolod
mTeli ricxvebi, mZimeebi da probelebi (gamomyof
niSnebis saxiT) es daiwereba Semdegnairad:
if not (Key in [‘0’..’9’,’ ‘,’,’]) then Key := #0;
Tu ganxilul magaliTSi SeitanT cifris, mZimisa
da `probelis~ garda sxva simbolos, igi Seicvleba
0-iT da ar gamoCndeba.
SecdomiTi Rilakis daWerisas xmovani signalis
gamosacemad ganxiluli operatori miiRebs saxes:
if not (Key in [‘0’..’9’,’ ‘,’,’])
then begin
Key := #0;
Beep;
end;
168
gadatanis procesis avtomatur dawyebas komponentze
Tagvis daWerisas. dmManual (xeliT) niSnavs, rom gadatanis
procesis dawyebas gansazRvravs programisti, risTvisac
igi saWiroebisamebr gamoiZaxebs BeginDrag meTods.
magaliTad, mas SeuZlia am funqciis gamoZaxeba moaTavsos
OnMouseDown xdomilobaSi, romelic aRiZvreba Tagvis
Rilakis daWerisas. am dammuSavebelSi igi amowmebs raRac
pirobebs da Semdeg iZaxebs BeginDrag meTods.
magaliTad, unda daiwyos gadatanis procesi, roca
ListBox1-ze momxmarebeli daaWers Tagvis marcxena
Rilaks da klaviaturaze Alt Rilaks. maSin DragMode
Tviseba aRniSnuli komponentisaTvis unda daayenoT
dmManual-Si, xolo mis OnMouseDown xdomilobis
damuSavebis programaSi CawerT:
procedure TForm1.ListBox1MouseDown(Sender:
TObject; Button: TMouseButton;Shift: TShiftState;
x,y:integer);
begin
if (Button = mbLeft) and (ssAlt in Shift)
then ListBox1.BeginDrag(false);
end;
Shift parametri aris simravle, romelic Seicavs
TagviT daWerili Rilakebis aRniSvnas da klaviaturis
damxmare Rilakebs
169
BeginDrag funqcias aqvs false mniSvneloba. rac niSnavs,
rom gadatanis procesi ar daiwyeba maSinve, aramed mas
Semdeg rac daWerili RilakiT momxmarebeli daZravs
Tagvs. Tu BeginDrag aqvs true mniSvneloba, maSinve daiwyeba
gadatana. gadatanis procesSi kursoris saxe icvleba,
sanam igi gadaadgildeba im obieqtze, romlebic ar iReben
misgan informacias, misi ti pia crNoDrop. Tu igi
gadaadgildeba obieqtze, romelic misi informaciis
misaRebad aris mzad, maSin miiRebs saxes, romelic
ganisazRvreba gadasatani obieqtis DragCursor TvisebiT.
dammuSavebelSi unda Semowmdes obieqti aris Tu
ara mzad informaciis misaRebad da Tu ar aris, maSin
mimRebi obieqtis Accept parametrs unda mieces false
mniSvneloba. ListBox1-saTvis xdomilobis damuSavebis
programa (mimRebisaTvis) miiRebs saxes:
procedure TForm1.ListBox1DragOver(Sender, Source:
TObject);
x,y: Integer;
State: TDragState;
var Accept: Boolean);
begin
if (Source as TControl < > Sender)
then Accept := Source is TListBox else
Accept := false;
170
end;
dasawyisSi mowmdeba mocemuli komponenti (Sender)
da gadasatani obieqti (Source) xom ar aris erTidaigive,
Tu es asea, maSin amuSavdeba else da Accept parametri
gautoldeba false-s. Tu isini sxvadasxva obieqtebia, Accept
gautoldeba true-s.
OnDragDrop xdomilobis damuSavebis programa
(gadasatani obieqtisaTvis) miiRebs saxes:
procedure TForm1.ListBox1DragDrop(Sender, Source:
TObject; x,y: integer);
begin
(Sender as Tlistbox).Items.Add((Source as
TListBox).Items[(Source as TListBox).ItemIndex]);
end;
Tu mocemulia danarTSi ramodenime ListBox da
gsurT, rom erTidan nebismier sxva ListBox-ze gadaitanoT
sia, saWiroa Sesruldes operaciebi:
- dawereT erTi siisaTvis OnDragOver xdomilobis
damuSavebis programa. danarCeni siebisaTvis obieqtebis
inspeqtoris daxmarebiT daukavSireT OnDragOver
xdomiloba imave dammuSavebels. amisaTvis: gamoyaviT
formaze yvela siebi da obieqtebis inspeqtorze dawereT
OnDragOver xdomilobis damuSavebis programa yvela
moniSnulisaTvis.
171
- aseve yvela siebisaTvis dawereT OnDragDrop
xdomilobis damuSavebis programa.
Tu gsurT gadatanis Sesruleba damatebiTi pirobis
SemTxvevaSi, magaliTad Alt Rilakis daWerisas, kidev erTi
moqmedeba unda Sesruldes;
- yvela siisaTvis DragMode Tviseba gautoleT
dmManual-s. dawereT zemoT aRwerili xerxiT yvela
siisaTvis OnMouseDown xdomilobis programebi;
172
reba formis OnShow xdomiloba. OnShow xdomiloba
dadgeba maSin roca forma xdeba xilvadi. Hide meTodiT
forma SeiZleba gaxdes uxilavi. am momentSi amuSavdeba
OnHide xdomiloba.
forma daixateba Close meTodiT. magaliTad, davuS-
vaT danarTze aris RichEdit komponenti, romelSic
Modified Tviseba uCvenebs rom bolo Senaxvis Semdeg
iyo Tu ara teqsti Secvlili. maSin onCloseQuery
xdomiloba miiRebs saxes:
procedure Tform1.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if RichEdit1.Modified then
if (Application.MessageBox(‘dokumenti ar aris
Senaxuli ‘ + ’ gsurT muSaobis dasruleba ?’,
daadastureT muSaobis dasruleba’,
MB_ICONQUESTION+MB_YESNOCANCEL)<>IDYES)
THEN CanClose := false;
end;
moyvanil magaliTSi Application.MessageBox meTodiT
gamoiZaxeba fanjara. meTodis pirveli parametri Seicavs
Setyobinebis teqsts. meore parametri fanjris saTauris
teqsts. mesame parametri - droSebis nakrebs, romelic
gansazRvravs fanjris saxes. droSa MB_ICONQUESTION
173
asaxavsfanjaraSi kiTxvis niSans, MB_YESNOCANCEL
Seitans fanjaraSi Rilakebs Yes(diax), No(ara),
Cancel(gauqmeba).
174
- gaxsnil formas daarqviT FDOC;
- ganaTavseT formaze RichEdit komponenti. mis Align
Tvisebas mieciT allClient mniSvneloba. waSaleT RichEdit1-
Si gamosuli teqsti;
- formis FormStyle Tviseba SecvaleT fsMDIChild
TvisebiT;
- SeinaxeT proeqti modulis UDOC saxeliT;
forma Seqmnilia, exla gadavideT mSobeli formis
proeqtirebaze.
- gaxseniT axali forma (File|New Form). daarqviT
FMDI. misi moduli SeinaxeT UMDI saxeliT (File|Save
as);
- axali formis FormStyle SecvaleT MDIForm-iT.
Tu saWiroa rom am formis fanjara mTlianad gaiSalos
ekranze WindowState TvisebaSi airCieT wsMaximized.
UMDI modulis Uses operatorSi SeitaneT mimarTva
Svili formis UDOC modulze (sxvagvarad Svil formebs
ver gaxsniT), risTvisac UMDI modulis Implementation
nawilSi SeitaneT Uses UDoc operatori;
- SeasruleT brZaneba Project|Options da gaxsnili
fanjris Forms gverdze gadaitaneT Svili forma FDOC.
gamosuli siis mixedviT darwmundebiT rom mTavari
iqneba FMDI mSobeli forma. is erTaderTia siaSi,
avtomaturad Seqmnadi formebidan;
175
- ganaTavseT formaze ImageList da ActionList.
ActionList1-is Images TvisebaSi airCieT ImageList1;
- ActionList-Si SeitaneT New Window moqmedeba,
romelic Seesabameba dokumentis axali fanjris Seqmnas.
misi OnExecute xdomilobis damuSavebis programas eqneba
saxe:
procedure TForm1.NewWindowExecute (Sender:
TObject);
var NewF: TFDoc;
begin
NewF := TDoc.Create(Application);
NewF.Caption := ‘dokumenti ‘ + IntToStr(MDIChild-
Count);
NewF.Show;
end;
- formis OnShow xdomilobidan daukavSirdiT amave
dammuSavebels, rom pirvelsave momentSi gaixsnas
dokumentis erTi fanjara;
- ActionList moqmedebebis dispetCerSi SeitaneT
Window punqtis standartuli moqmedebebi: Window-
Cascade, WindowTileHorizontal, WindowTileVertical, Win-
dowArrange;
- SeitaneT formaze MainMenu komponenti. masze
ganaTavseT Window brZaneba da mis punqtebs daukavSireT
176
ganxiluli moqmedebebi.
SeasruleT danarTi. proeqtis dasrulebisaTvis
saWiroa, rom meniu Seicavdes File, Edit, Format, Window,
Help punqtebs. aqedan File, Window, Help mizanSewonilia
miekuTvnos mTavar formas, xolo Edit da Format -
dokumentis formas. UDOC modulidan Uses operatorSi
marTva gadaeciT UMDI modulze, radganac misi
gamosaxulebebis siasTan kavSiris saSualeba gvqondes.
formaze gadaitaneT ActionList komponenti, romlis Image
Tvisebaze daayeneT ImageList1. ActionList-Si SeitaneT
teqstis redaqtirebasTan daformatirebasTan dakavSi-
rebuli moqmedebebi. formaze gadaitaneT da SeqmeniT
Edit da Format meniuebi. daayeneT GroupIndex indeqsi
File, Window da Help-saTvis, Sesabamisad 0,3,4, xolo
Edit da Format-saTvis 1 da 2.
formis klasis Public nawilSi SeitaneT FName
cvladis gamocxadeba, romelSic Seinaxeba fanjaraSi
CatvirTuli failis saxeli:
FName: String;
gadainacvleT mTavari formis modulSi. formaze
gadaitaneT failis gaxsnisa da Senaxvis dialogebi.
ActionList-Si SeitaneT Open, CloseDoc, Save, Save As.
dawereT OnExecute xdomilobis damuSavebis programebi.
Open brZanebisaTvis dammuSavebels eqneba saxe:
177
procedure TForm1.OpenExecute(Sender: TObject);
begin
if OpenDialog1.Execute
then begin
(ActiveMDIChild.ActiveControl as TRichEdit).
Lines.LoadFromFile(OpenDialog1.FileName);
(ActiveMDIChild as TFDoc).FName :=
OpenDialog1.FileName;
ActiveMDIChild.Caption :=
ExtractFileName(OpenDialog1.FileName);
end;
end;
moyvanil programaSi jer gamoiZaxeba failis gaxsnis
dialogi. arCeuli faili CaitvirTeba aqtiuri doku-
mentis formis RichEdit fanjaraSi. am formasTan mimarTva
xorcieldeba ActiveMDIChild TvisebiT, ramdenadac am
formaze aqtiuri aris RichEdit fanjara, masTan mimarTva
xorcieldeba ActiveControl TvisebiT. radgan Tvisebis
ti pia TWinControl, Cven ki gvinda ganvixiloT igi rogorc
TRichEdit ti pis obieqti, amitom redaqtirebis fanja-
rasTan mimarTva xorcieldeba:
ActiveMDIChild.ActiveControl as TRichEdit. Semdgom-
Si fanjaraSi CaitvirTeba arCeuli kodi. ganxiluli
178
operatori SeiZleba Seicvalos Semdegnairad:
(ActiveMDIChild as TFDoc).RichEdit1.Lines.
LoadFromFile(OpenDialog1.FileName)
failis CatvirTvis Semdeg FName cvladSi Seitaneba
failis saxeli, radgan redaqtirebis Semdgom faili
Seinaxeba igive saxeliT. aqtiuri forma aris TFDoc
ti pis, qvemoT ganxiluli dammuSaveblis bolo
operatori dokumentis aqtiuri fanjris saTaurSi
Seitans failis saxels, romelic warmoiSveba misi sruli
saxelidan ExtractFileName funqciiT.
Save As brZanebis OnExecute xdomilobis damuSavebis
programas aqvs saxe:
procedure TForm1.SaveAsExecute(Sender: TObject);
begin
SaveDialog1.FileName := ActiveMDIChild.Caption;
if (SaveDialog1.Execute)
then begin
(ActiveMDIChild.ActiveControl as TRichEdit).
Lines.SaveToFile(SaveDialog1.FileName);
(ActiveMDIChild as TFDoc).FName :=
SaveDialog1.FileName;
ActiveMDIChild.Caption :=
ExtractFileName(SaveDialog1.FileName);
end;
179
end;
pirveli operatori momxmarebels sTavazobs failis
saxels, romelic inaxeba aqtiuri dokumentis saTaurze.
Semdeg gamoiZaxeba failis Senaxvis dialogi. bolo ori
operatori imaxsovrebs failis saxels.
Save brZanebis OnExecute xdomilobis damuSavebis
programas aqvs saxe:
procedure TForm1.SaveExecute(Sender: TObject);
begin
if((ActiveMDICild as TFDoc).FName = ‘’)
then SaveAsExecute(Sender)
else (ActiveMDIChild.ActiveControl as TRichEdit).
Lines.SaveToFile((ActiveMDIChild as TFDoc).
FName);
end;
if operatori amowmebs aris Tu ara dokumentis
aqtiuri fanjris FName cvladi carieli striqoni.
e.i. jer saxeli cnobili ar aris. gamoiZaxeba SaveAs-
Execute procedura, imisaTvis, rom momxmarebelma
aorCios failis saxeli, xolo Tu failis saxeli
cnobilia, maSin dokumenti kvlav Seinaxeba imave failSi
dialogis gamoZaxebis gareSe.
moyvanili procedura rom muSaobdes saimedod,
dokumentis fanjris Seqmnisas FName saxiT unda mivceT
180
carieli striqoni. adre aRweril NewWindowExecute
proceduras daemateba operatori:
NewF.FName := ’’;
CloseDoc moqmedebisaTvis OnExecute xdomilobis
damuSavebis programa Sesdgeba erTi operatorisagan:
ActiveMDIChild.Free;
es operatori mexsierebidan waSlis dokumentis
aqtiuri formis obieqts. aq ar SeiZleba Close-s
gamoyeneba, radgan danarTis Svili fanjrisaTvis formis
daxurva niSnavs `Sexvevas~
VI Tavi
grafika da animacia
6.1 martivi danarTi grafikuli failebis
dasaTvaliereblad.
SevqmnaT danarTi, romelSic momxmarebeli
CatvirTavs da daaTvalierebs nebismier grafikul fails.
amisaTvis formaze gadaitaneT OpenPictureDialog
komponenti (gverdi Dialogs) da meniu File punqtiT. menius
punqtze orjer dawkapunebiT gamosul dammuSavebelSi
dawereT:
if OpenPictureDialog1.Execute then
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
es operatori Image1 komponentis Picture TvisebaSi
181
CatvirTavs momxmareblis mier dialogSi arCeul fails.
am danarTs aqvs erTi nakli, gamosaxuleba sxvadasxva
zomisaa, amitom igi formaze iqneba an arasimetriuli an
ar daeteva formaze. es iolad mogvardeba, Tu forma
gadaewyoba gamosaxulebis zomebis Sesabamisad. Image1-
is Autosize Tvisebaze davayenoT true mniSvneloba, xolo
zemoT moyvanil operators mivceT Semdegi saxe:
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Form1.ClientHeight := Image1.Height +10;
Image1.Top := Form1.ClientRect.Top +
(Form1.ClientHeight-Image1.Height) div 2;
Form1.ClientWidth := Image1.Width + 10;
Image1.Left := Form1.ClientRect.Left +
(Form1.ClientWidth-Image1.Width)
div 2;
end;
gauSviT danarTi da Tqven dainaxavT, rom gamosa-
xulebis sxvadasxva zomis SemTxvevaSi danarTi Sesa-
niSnavad gamoiyureba.
182
6.2 RilakisaTvis piktogramis Seqmna
SpeedButton da BitBtn Rilakebs SeiZleba hqondeT
piktogramebi, romelic maT Glyph TvisebaSi CaitvirTeba.
piktogramis erTi gamosaxulebis zomebia 16X16. magram
erT failSi SeiZleba iyos aseTi zomis oTxamde
gamosaxuleba. yvelaze marcxena Seesabameba aSvebul Rilaks,
momdevno miuwvdomel Rilaks (roca Enabled = false),
marcxnidan mesame Seesabameba daWeril Rilaks, xolo
marjvena gamoiyeneba fiqsaciis RilakebSi (SpeedButton)
daWerili mdgomareobis asaxvisaTvis.
SeqmeniT bituri matricis axali faili (File|New
|Bitmap File(.bmp), gaxsnil fanjaraSi mieciT zomebi
64X16. gamosaxuleba dayaviT oTx kvadratad (TeTri
CarCoTi erTi piqseliT), SeRebeT isini marcxnidan
marjvnisaken wiTeli, nacrisferi, yviTeli da mwvane
ferebiT.
SeinaxeT Seqmnili faili da aageT martivi danarTi.
gadaitaneT formaze sami Rilaki: SpeedButton, BitBtn
da Button. SpeedButton da BitBtn-is Glyph TvisebaSi
CatvirTeT piktogramis faili. BitBtn-is Caption TvisebaSi
mieciT warwera, magaliTad BitBtn. amave dros Rilakebis
NumGlyphs Tviseba 4-s gautoldeba. Margin da Spacing
uzrunvelyaviT piktogramebisa da warwerebis
simetriuli ganTavseba. SpeedButton RilakisaTvis
183
GroupIndex Tviseba gautoleT 1-s, xolo AllowAllUp
gautoleT true-s. button Rilakze dawkapunebisas akrifeT
kodi:
SpeedButton1.Enabled := not SpeedButton1.Enabled;
BitBtn1.Enabled := not BitBtn1.Enabled;
gauSviT danarTi, Tqven naxavT rogor Seicvleba
Rilakis ferebi maTze sxvadasxva mani pulaciebis dros.
184
GroupIndex Tvisebaze daayeneT 1,xolo AllowallUp Tvisebaze
airCieT true. (SeiZleba Glyph Tvisebaze airCioT naxati
`funji~);
- kidev erTi SpeedButton gadaitaneT formaze da
moaTavseT SBBrush-is qvemoT. daarqviT SBColor. GroupIndex
Tvisebaze daayeneT 1, xolo AllowAllUp Tvisebaze airCieT
true;
- formaze gadaitaneT OpenPictureDialog;
- formaze gadaitaneT MainMenu. File meniuSi SeitaneT
Open, xolo Edit-Si Undo.
exla SeiZleba brZanebebis dawera:
- Implementation nawilSi CarTeT cvladebis ganax-
leba:
Var
BitMap: TBitMap;
- formis OnCreate xdomilobaSi SeitaneT Semdegi:
procedure TForm1.FormCreate(Sender: TObject);
var HW,i:integer;
begin
Bitmap := TBitMap.Create;
Image1.Canvas.Brush.Color := clBlack;
Image2.Canvas.Brush.Color := clWhite;
with Image1.Canvas do FillRect(Rect(0,0,Width,
Height));
185
with Image2.Canvas do FillRect(Rect(0,0,With,Height));
HW := Image4.Width div 10;
with Image4.Canvas do
for i := 1 to 10 do begin
case i of
1: Brush.Color := clBlack;
2: Brush.Color := clAqua;
3: Brush.Color := clBlue;
4: Brush.Color := clFuchsia;
5: Brush.Color := clGreen;
6: Brush.Color := clLime;
7: Brush.Color := clMaroon;
8: Brush.Color := clRed;
9: Brush.Color := clYellow;
10: Brush.Color := clWhite;
end;
Rectangle((i-1)*HW, 0, i*HW, Height);
end;
with Image3 do begin
Canvas.MoveTo(0,0);
Canvas.LineTo(Width,Height);
Canvas.MoveTo(0,Height);
Canvas.LineTo(Width,0);
end;
186
BitMap.Assign(Image3.Picture);
end;
- formis OnDestroy xdomilobaze orjer daawkapuneT
da SeitaneT: BitMap.Free;
- Open meniuSi SeitaneT:
if OpenPictureDialog1.Execute then begin
Image3.Picture.LoadFromFile(OpenPictureDialog1.FileName);
BitMap.Assign(Image3.Picture);
end;
- Undo meniuSi SeitaneT:
Image3.Picture.Assign(BitMap);
- SBBrush-ze da SBColor-ze orjer dawkapunebisas
SeitaneT:
if (Sender as TSpeedButton).Down
then BitMap.Assign(Image3.Picture);
es operatori imaxsovrebs mimdinare gamosaxulebas,
Semdeg instrumentze gadasvlisas;
- Image3 da Image4 komponentebis OnMouseDown
xdomilobaSi SeitaneT:
if(Sender = Image4) or SBColor.Down then
begin
if(Button = mbLeft)
then With Image1.Canvas do begin
Brush.Color := (Sender as TImage).Canvas.Pixels[x,y];
187
FillRect(Rect(0, 0, Width, Height));
end
else with Image2.Canvas do begin
Brush.Color := (Sender as TImage).Canvas.Pixels[x,y];
FillRect(Rect(0,0,Width,Height));
end;
end
else if SBBrush.Down then with Image3.Canvas do
begin
188
if Button = mbLeft
then Brush.Color := Image1.Canvas.Brush.Color
else Brush.Color := Image2.Canvas.Brush.Color;
FloodFill(x,y,Pixels[x,y], fsSurface);
end;
danarTSi gamoyenebulia nebismieri grafikuli
redaqtoris ori ZiriTadi komponenti: funji da ferTa
palitra.
6.4 martivi animacia
martivi multi plikaciis Sesaqmnelad gaxseniT axali
danarTi. formaze gadaitaneT: Image, Button, Timer. Rilaki
formis boloSi ganaTavseT. formis ZiriTad nawils
ikavebs Image komponenti, romelzec gamoCndeba
gamosaxuleba. taimeri uzrunvelyofs kadrebis cvlis
temps. Implementation nawilSi SeitaneT teqsti:
const H = 20; //nabiji
Ypos = 120; //`miwa~
Hmen = 30; //sxeulis simaRle
Rhead = 10 //Tavis radiusi
Rhead2 = Rhead div 2 //muStebis radiusi
L = trunc(H*1.41); //fexebis sigrZe
var num : word = 0
Xpos : word = 2*H; //garSemow. koord.
revers : integer = 1 //moZr. mimarTuleba
189
procedure Draw1;
var Yhead: word; //Tavis qveda naw. koord.
begin
With Form1.Image1.Canvas do
begin
Case num of
0: begin;
Yhead := Ypos - H - Hmen;
MoveTo(Xpos-H, Ypos);
LineTo(Xpos, Ypos-H); //fexi
LineTo(Xpos+H,Ypos); //meore fexi
MoveTo(Xpos,Ypos-H);
LineTo(Xpos, Yhead); //garSemoweriloba
MoveTo(Xpos+revers*H, Yhead-H);
LineTo(Xpos, Yhead+4); //xeli
Ellipse(Xpos=revers*H-Rhead2, Yhead-H-Rhead2,
Xpos+revers*H+Rhead2,Yhead+H+Rhead2);
Ellipse(Xpos-Rhead,Yhead,Xpos+Rhead,
Yhead-2*Rhead);
Rectangle(Xpos-Rhead,Yhead-2*Rhead-1,
Xpos+Rhead,Yhead-2*Rhead-4); //qudi
end;
1: begin
Yhead := Ypos - L - Hmen;
190
MoveTo(Xpos, Ypos);
LineTo(xpos, Yhead);
MoveTo(Xpos, Yhead+4);
LineTo(Xpos+revers*L,Yhead+4);
Ellipse(Xpos+revers*L-Rhead2,Yhead+4-Rhead2,
Xpos+revers*L+Rhead2, Yhead+4+Rhead2);
Ellipse(Xpos-Rhead, Yhead,Xpos+Rhead, Yhead-
2*Rhead);
Rectangle(Xpos-H div 2, Yhead-2*Rhead-1,
Xpos+H div 2, Yhead-2*Rhead-4);
end;
end;
end;
end;
procedure TFom1.BRunClick(Sender: TObject);
begin
Timer1.Enabled := not Timer1.Enabled;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Draw1;
if (Xpos >= Image1.Width-H) or (Xpos <= H)
then revers := -revers;
Xpos := Xpos + revers * H;
191
num := 1 - num;
Draw1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with Image1.Canvas do begin
MoveTo(0, Ypos + 3);
Pen.Width := 4;
LineTo(ClientWidth, Ypos + 3);
Pen.Width := 1;
Pen.Mode := pmNotXor;
end;
Draw1;
end;
TForm1.FormCreate procedura amuSavebs formis
OnCreate xdomilobas. am proceduraSi ixazeba swori
xazi, romelzec gaivlis gamosaxuleba. amis Semdeg
amuSavdeba kalmis reJimi - pmNotXor. bolos xdeba
Draw1 proceduris gamoZaxeba, romelic xatavs gamosa-
xulebis sawyis mdgomareobas.
TForm1.BRunClick procedura amuSavebs Rilakis
OnClick xdomilobas. Rilakze TiToeuli dawkapuneba
CarTavs an gamorTavs taimers, ris Sedegad gamosaxuleba
dadis an Cerdeba.
192
TForm1.Timer1.Timer procedura amuSavebs OnTimer
taimeris xdomilobas. es xdomiloba warmoiSveba
periodulad, romelic ganisazRvreba Interval TvisebiT.
am xdomilobis dadgomisas Zveli kadri waiSleba da
daixateba axali. amis Semdeg gaanalizdeba Xpos, Tu es
pozicia Image1-is kides CamorCeba nabijze naklebi
sididiT, maSin igi Seicvleba revers sididis sawinaaRmdego
niSniT. Tu revers = 1, gamosaxuleba moZraobs marjvniv,
Tu Tu revers = -1, gamosaxuleba moZraobs marcxniv.
Semdeg Xpos pozicia Seicvleba revers*H sididiT, anu
erTi nabijiT marjvniv an marcxniv. Seicvleba Num
cvladi, romelic uCvenebs gamotanili kadris nomers:
0 an 1. bolos gamoiZaxeba Draw1 procedura, romelic
xatavs miTiTebul kadrs miTiTebul poziciaSi.
da bolos, Draw1 procedura xatavs kadrs. num
mniSvnelobis mixedviT ixateba xan erTi, xan meore
kadri, amave dros naxatSi gaTvaliswinebulia Xpos
pozicia da revers moZraobis mimarTuleba.
193
Sinaarsi
Sesavali.......................................................................................................3
I Tavi
Delphi, Tanamedrove stilis danarTis Seqmnis
instrumentuli saSualeba
1.1 obieqtur-orientirebuli rogramireba..................................4
1.2 Delphi -s danarTis saTao programis failis
struqtura.....................................................................................................6
1.3 modulis truqtura..........................................................................9
1.4 interfeisis vizualuri da aravizualuri
komponentebi......................................................................................................16
1.5 obieqtis TvisebebTan da meTodebTan
mimarTva........................................................................................................................17
II Tavi
Delphi -s komponentebis mimoxilva
2.1 teqsturi informaciis Setanisa da asaxvis
komponentebi.........................................................................................................18
2.2 teqstis asaxva Label, StaticText, Panel komponentebze.20
2.3 Edit, LabelEdit, MaskEdit redaqtirebis fanjrebi.............24
2.4 mravalstriqoniani redaqtirebis fanjara.
Memo, RichEdit komponentebi..................................................................26
2.5 siebidan arCevis komponentebi Listbox, CheckList-Box,
ValueListEditor, ComboBox, ComboBoxEx...............................33
2.6 cxrilebi StringGrid komponenti..................................................44
2.7 ricxvis, TariRisa da drois asaxvis komponentebi.....46
2.8 UpDown, SpinEdit komponentebi....................................................47
2.9 DateTimerPicker, MonthCalendar,Calendar komponentebi.49
2.10 F1Book komponenti..........................................................................51
2.11 ierarqiuli monacemebis asaxvis komponentebis sia...52
2.12 TreeView, OutLine monacemebis xis struqturis saxiT
asaxvis omponentebi................................................................................52
2.13 ListView komponenti.......................................................................55
2.14 grafikuli informaciis amsaxveli komponent. sia....61
194
2.15 DrawGrid, StringGrid komponentebi...........................................62
2.16 Shape komponenti..............................................................................63
2.17 Chart komponenti..............................................................................63
2.18 multimediisa da sxva informaciis asaxvis
komponent.
Animate, MediaPlayer, ProgressBar, Gauge.............................68
2.19 Button, BitBtn Rilakebi...................................................................71
2.20 Rilaki fiqsaciiT SpeedButton..................................73
2.21 radioRilakebis jgufebi: RadioGroup, RadioButton,
GroupBox komponentebi..............................................................................74
2.22 indikatorebi CheckBox, CheckListBox .............................75
2.23 mcocavebi da gadaxvevis zolebi TrackBar, ScrollBar
komponentebi........................................................................................................77
2.24 saTaurebis komponentebi HeaderControl, Header........80
2.25 taimeri Timer komponenti............................................................86
2.26 mTavari meniu MainMenu komponenti....................................88
2.27 konteqsturi meniu PopupMenu komponenti...................92
2.28 `cxeli~ Rilakebi-HotKey komponenti...............................93
2.29 GroupBox, Bevel, ScrollBox, Splitter komponentebi............98
2.30 mravalgverdiani panelebi TabControl, PageControl,
TabSet, TabbedNoteBook, NoteBook komponentebi.......................99
2.31 instrumentuli panelebi, ToolBar, PageScroll
komponentebi.......................................................................................................102
2.32 gadawyobadi panelebi, CoorBar, ControlBar
komponentebi.............................................................................104
2.33 mdgomareobis zoli - StatusBar .................................108
2.34 freimebi.........................................................................................108
III Tavi
sistemuri dialogebi
3.1 dialogebis saerTo daxasiaTeba......................................113
3.2 OpenDialog, SaveDialog, OpenPicturesDialog,
SavePikturesDialog..............................................................115
3.3 failebTan da saqaRaldeebTan muSaobis
komponentebi.............................................................................................116
195
3.4 dialogebis fragmentebi DriveComboBox,
DirectoryListBox, FilterComboBox, FileListBox,
DirectoyOutLine komponentebi.........................................................118
3.5 Sriftis arCevis dialogi, FontDialog................121
3.6 feris arCevis dialogebi,ColorDialog, ColorBox....122
3.7 PrintDialog, PrinterSetupDialog, PageSetupDialog
dialogebi............................................................................................124
3.8 teqstis Zebnisa da Secvlis komponentebi
FindDialog, ReplaceDialog..................................................125
IV Tavi
danarTis Seqmnis meTodika
4.1 danarTis damuSavebis teqnologia..............................129
4.2 gamosaxulebis sia ImageList komponenti.................133
4.3 moqmedebebis dispetCerizeba ActionList
komponentis gamoyenebiT.............................................................136
4.4 standartul moqmedebebTan muSaoba,
instrumentebis zolis awyoba...............................................138
4.5 moqmedebebis dispetCeri ActionManager................140
4.6 teqsturi danarTi................................................................145
V Tavi
momxmareblis garafikuli interfeisis damuSaveba
5.1 grafikuli interfeisis damuSavebis zogadi
rekomendaciebi...................................................................................149
5.2 mravalfanjriani interfeisi..........................................150
5.3 danarTis fanjris stili.....................................................151
5.4 elementebis fokuirebis mimdevroba............................153
5.5 konteqsturi cnobari............................................................154
5.6 komponentebis gasworeba, Align Tviseba........................155
5.7 komponentebis adgilmdebareobisa da zomebis
Secvla.....................................................................................................156
5.8 komponentebis masStabireba................................................157
196
5.9 Tagvis xdomilobebi................................................................160
5.10 klaviaturis xdomilobebi...............................................163
5.11 daWerili Rialkis amocnoba............................................165
5.12 obieqtebis Sesaxeb informaciis gadatana,
Drag&Drop teqnologia....................................................................168
5.13 formebis marTva........................................................................172
5.14 mravaldokumentiani interfeisis danarTis
magaliTi................................................................................................174
VI Tavi
grafika da animacia
6.1 martivi danarTi grafikuli failebis
dasaTvaliereblad...........................................................................181
6.2 RilakisaTvis piktogramis Seqmna................................183
6.3 martivi grafikuli redaqtoris Seqmna...................184
6.4 martivi animacia.....................................................................189
197
literatura
198
199
200