დაპროგრამება Delphi-ში - გ. ჯანელიძე
დაპროგრამება Delphi-ში - გ. ჯანელიძე
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