Òåìà 6. Ââîä è îòîáðàæåíèå ÷èñåë, äàò è âðåìåíè

1.      Êîìïîíåíòû ââîäà è îòîáðàæåíèÿ öåëûõ ÷èñåë - Up Down è CSpinEdit

2.      Êîìïîíåíòû ââîäà è îòîáðàæåíèÿ äàò è âðåìåíè - DateTimePicker, MonthCalendar, CCalendar

3.      Êîìïîíåíò ãåíåðàöèè ñòðàíèöû Excel - FIBook

4.      Êîìïîíåíò îòîáðàæåíèÿ èåðàðõè÷åñêèõ äàííûõ -  ListView

 

 VCL C++Builder ñóùåñòâóåò ðÿä êîìïîíåíòîâ, ïîçâîëÿþùèõ ââîäèòü, îòîáðàæàòü è ðåäàêòèðîâàòü ÷èñëà, äàòû è âðåìÿ.  òàáë. 4 ïðèâåäåí ïåðå÷åíü ñïåöèàëèçèðîâàííûõ êîìïîíåíòîâ ââîäà è îòîáðàæåíèÿ ÷èñåë, äàò è âðåìåíè ñ êðàòêèìè õàðàêòåðèñòèêàìè è óêàçàíèåì îñíîâíûõ ïàðàìåòðîâ, ñîäåðæàùèõ îòîáðàæàåìûé èëè ââîäèìûé òåêñò.

Òàáëèöà 1. Êîìïîíåíòû ââîäà è îòîáðàæåíèÿ ÷èñåë, äàò è âðåìåíè

Êîìïîíåíò

Ñòðàíèöà

Îïèñàíèå

 

UpDown (êíîïêà-ñ÷åò÷èê)

Win32

Êíîïêà-ñ÷åò÷èê, â ñî÷åòàíèè ñ êîìïîíåíòàìè Edit è äðóãèìè ïîçâîëÿþùàÿ ââîäèòü öèôðîâóþ èíôîðìàöèþ. Îñíîâíîå ñâîéñòâî - Position.

CSpinEdit  (êíîïêà-ñ÷åò÷èê  ñ îêíîì ðåäàêòèðîâàíèÿ)

Samples

Îêíî ðåäàêòèðîâàíèÿ â êîìáèíàöèè ñ êíîïêîé-ñ÷åò÷èêîì. Ïî÷òè òî æå, ÷òî êîìáèíàöèÿ Edit è UpDown. Îñíîâíîå ñâîéñòâî - Value

DateTimePicker(îêíî ââîäà äàò è âðåìåíè)

Win32

Ââîä äàòû (ñ âûïàäàþùèì êàëåíäàðåì).è âðåìåíè Îñíîâíûå ñâîéñòâà - Date è Time.

MonthCalendar (îêíî ââîäà äàò)

Win32

Ââîä äàò ñ âûáîðîì èç êàëåíäàðÿ.

Calendar (êàëåíäàðü íà óêàçàííûé ìåñÿö

Samples

Îòîáðàæåíèå êàëåíäàðÿ íà óêàçàííûé ìåñÿö. Îñíîâíûå ñâîéñòâà - Month è Day.

FIBook (ñòðàíèöû Excel)

ActiveX

Êîìïîíåíò ââîäà è îáðàáîòêè ÷èñëîâîé èíôîðìàöèè, àíàëîãè÷íûé ñòðàíèöàì Excel.

 

 

1. Ââîä è îòîáðàæåíèå öåëûõ ÷èñåë - êîìïîíåíòû Up Down è CSpinEdit

 C++Builder èìåþòñÿ ñïåöèàëèçèðîâàííîå êîìïîíåíòû,  îáåñïå÷èâàþùèå ââîä öåëûõ ÷èñåë - UpDown è CSpinEdit

Êîìïîíåíò UpDown ïðåâðàùàåò îêíî ðåäàêòèðîâàíèÿ Edit â êîìïîíåíò, â êîòîðîì ïîëüçîâàòåëü ìîæåò âûáèðàòü öåëîå ÷èñëî, èçìåíÿÿ åãî êíîïêàìè ñî ñòðåëêàìè. Åñëè ê òîìó æå óñòàíîâèòü â true ñâîéñòâî îêíà ReadOnly, òî ïîëüçîâàòåëü ïðîñòî íå ñìîæåò ââåñòè â îêíî êàêîé-ëèáî ñâîé òåêñò è âûíóæäåí áóäåò îãðàíè÷èòüñÿ âûáîðîì ÷èñëà. Êîìïîíåíò CSpinEdit ïðåäñòàâëÿåò ñîáîé ñî÷åòàíèå Edit è UpDown, îôîðìëåííîå êàê îòäåëüíûé òèï êîìïîíåíòà.

Îñíîâíîå ñâîéñòâî êîìïîíåíòà UpDown - Associate, ñâÿçûâàþùåå êíîïêè ñî ñòðåëêàìè ñ îäíèì èç îêîííûõ êîìïîíåíòîâ, îáû÷íî ñ Edit. ×òîáû îïðîáîâàòü êîìïîíåíò UpDown, ïåðåíåñèòå íà ôîðìó åãî è îêíî ðåäàêòèðîâàíèÿ Edit, ðàñïîëîæèâ Edit òàì, ãäå ýòî òðåáóåòñÿ, a UpDown - â ëþáîì ìåñòå ôîðìû. Äàëåå â âûïàäàþùåì ñïèñêå ñâîéñòâà Associate êîìïîíåíòà UpDown âûáåðèòå Editl. Êîìïîíåíò UpDown íåìåäëåííî ïåðåìåñòèòñÿ ê Edit è êàê áû ñîëüåòñÿ ñ íèì.

Ñâîéñòâî AlignButton îïðåäåëÿåò ðàçìåùåíèå êíîïêè êîìïîíåíòà UpDown, (ñëåâà èëè ñïðàâà îò îêíà), ìîæåò ïðèíèìàòü çíà÷åíèÿ udLeft èëè udRight.

Ñâîéñòâî Orientation îïðåäåëÿåò, ðàñïîëîæåíèå êíîïêè (ïî âåðòèêàëè  èëè ïî ãîðèçîíòàëè), ìîæåò ïðèíèìàòü çíà÷åíèÿ udHorizontal èëè udVertical,.

Ñâîéñòâî ArrowKeys îïðåäåëÿåò, áóäóò ëè óïðàâëÿòü êîìïîíåíòîì êëàâèøè êëàâèàòóðû ñî ñòðåëêàìè.

Ñâîéñòâî Thousands îïðåäåëÿåò íàëè÷èå èëè îòñóòñòâèå ðàçäåëèòåëüíîãî ïðîáåëà ìåæäó êàæäûìè òðåìÿ öèôðàìè ðàçðÿäîâ ââîäèìîãî ÷èñëî.

Ñâîéñòâà Min è Ìàõ êîìïîíåíòà UpDown çàäàþò ñîîòâåòñòâåííî ìèíèìàëüíîå è ìàêñèìàëüíîå çíà÷åíèÿ ÷èñåë, ñâîéñòâî Increment çàäàåò ïðèðàùåíèå ÷èñëà ïðè êàæäîì íàæàòèè íà êíîïêó.

Ñâîéñòâî Position îïðåäåëÿåò òåêóùåå çíà÷åíèå ÷èñëà. Ýòî ñâîéñòâî ìîæíî ÷èòàòü, ÷òîáû óçíàòü, êàêîå ÷èñëî çàäàë ïîëüçîâàòåëü. Åãî ìîæíî çàäàòü âî âðåìÿ ïðîåêòèðîâàíèÿ â äèàïàçîíå Min-Max, Òîãäà ýòî áóäåò çíà÷åíèå ÷èñëà ïî óìîë÷àíèþ, îòîáðàæàåìîå â îêíå â íà÷àëå âûïîëíåíèÿ ïðèëîæåíèÿ.

Ñâîéñòâî Wrap îïðåäåëÿåò, êàê âåäåò ñåáÿ êîìïîíåíò ïðè äîñòèæåíèè ìàêñèìàëüíîãî èëè ìèíèìàëüíîãî çíà÷åíèé. Åñëè Wrap - false, òî ïðè óâåëè÷åíèè èëè óìåíüøåíèè ÷èñëà äî ìàêñèìàëüíîãî èëè ìèíèìàëüíîãî çíà÷åíèÿ ýòî ÷èñëî ôèêñèðóåòñÿ íà ïðåäåëüíîì çíà÷åíèè è íàæàòèå êíîïêè, ïûòàþùåéñÿ óâåëè÷èòü ìàêñèìàëüíîå ÷èñëî èëè óìåíüøèòü ìèíèìàëüíîå, íè ê ÷åìó íå ïðèâîäèò. Åñëè æå Wrap = true, òî ïîïûòêà ïðåâûñèòü ìàêñèìàëüíîå ÷èñëî ïðèâîäèò ê åãî ñáðîñó íà ìèíèìàëüíîå çíà÷åíèå. Àíàëîãè÷íî, ïîïûòêà óìåíüøèòü ìèíèìàëüíîå ÷èñëî ïðèâîäèò ê åãî ñáðîñó íà ìàêñèìàëüíîå çíà÷åíèå. Ò.å. èçìåíåíèå ÷èñåë «çàêîëüöîâûâàåòñÿ».

Åñëè â êîìïîíåíòå Edit, ñâÿçàííîì ñ UpDown, íå çàäàòü ReadOnly ðàâíûì true, òî ïîëüçîâàòåëü ñìîæåò ðåäàêòèðîâàòü ÷èñëî, íå ïîëüçóÿñü êíîïêàìè ñî ñòðåëêàìè. Ýòî óäîáíî, åñëè òðåáóåìîå ÷èñëî äàëåêî îò óêàçàííîãî ïî óìîë÷àíèþ, à øàã ïðèðàùåíèÿ Increment â UpDown ìàë. Íî òóò ïðîÿâëÿåòñÿ ñåðüåçíûé íåäîñòàòîê êîìïîíåíòà UpDown: íè÷òî íå ìåøàåò ïîëüçîâàòåëþ ââåñòè ïî îøèáêå íå öèôðû, à êàêèå-òî äðóãèå ñèìâîëû.

Ñâîéñòâà êîìïîíåíòà CSpinEdit ïîõîæè íà ðàññìîòðåííûå, òîëüêî èìåþò äðóãèå èìåíà: ñâîéñòâà Min, Max, Position íàçûâàþòñÿ ñîîòâåòñòâåííî MinValue, MaxValue, Value.  öåëîì êîìïîíåíò CSpinEdit âî ìíîãèõ îòíîøåíèÿõ óäîáíåå ïðîñòîãî ñî÷åòàíèÿ UpDown è Edit.

 

2.  Ââîä è îòîáðàæåíèå äàò è âðåìåíè - êîìïîíåíòû DateTimePicker, MonthCalendar, CCalendar

Íàèáîëåå óäîáíûì ÿâëÿåòñÿ DateTimePicker, î÷åíü ýôôåêòåí çà ñ÷åò ïîÿâëåíèÿ âûïàäàþùåãî êàëåíäàðÿ è îáåñïå÷èâàåò áåçîøèáî÷íûé ââîä äàò è âðåìåíè.

Ñîéñòâî Kind îïðåäåëÿåò ðåæèì ðàáîòû êîìïîíåíòà: dtkDate - ââîä äàòû, dtkTime - ââîä âðåìåíè.

Ñâîéñòâî DateMode ïðè ââîäå äàò, ïðè çíà÷åíèè dmComboBox - çàäàåò âûïàäàþùèé êàëåíäàðü, à ïðè dmUpDown - íàëè÷èå êíîïîê óâåëè÷åíèÿ è óìåíüøåíèÿ, íàïîìèíàþùèõ òå, êîòîðûå èñïîëüçóþòñÿ â êîìïîíåíòàõ UpDown è CSpinEdit. Íî â äàííîì ñëó÷àå ñ ïîìîùüþ êíîïîê ïîëüçîâàòåëü ìîæåò íåçàâèñèìî óñòàíàâëèâàòü ÷èñëî, ìåñÿö è ãîä.

Ôîðìàò ïðåäñòàâëåíèÿ äàò îïðåäåëÿåòñÿ ñâîéñòâîì DateFormat, êîòîðîå ìîæåò ïðèíèìàòü çíà÷åíèÿ dfShort - êðàòêèé ôîðìàò (íàïðèìåð, «08.03.02»), èëè dfLong - ïîëíûé ôîðìàò (íàïðèìåð, «8 Ìàðò 2002ã.»).

Çíà÷åíèå äàòû ïî óìîë÷àíèþ ìîæíî çàäàòü â Èíñïåêòîðå Îáúåêòîâ ÷åðåç ñâîéñòâî Date. Ýòî æå ñâîéñòâî ÷èòàåòñÿ äëÿ îïðåäåëåíèÿ çàäàííîé ïîëüçîâàòåëåì äàòû. Ïðè ÷òåíèè Date íàäî ó÷èòûâàòü òèï ýòîãî ñâîéñòâà - TDateTime, ïðåäñòàâëÿþùèé ñîáîé ÷èñëî ñ ïëàâàþùåé çàïÿòîé, öåëàÿ ÷àñòü êîòîðîãî ñîäåðæèò ÷èñëî äíåé, îòñ÷èòàííîå îò íåêîòîðîãî íà÷àëà êàëåíäàðÿ, à äðîáíàÿ ÷àñòü ðàâíà ÷àñòè 24-÷àñîâîãî äíÿ, Çà íà÷àëî êàëåíäàðÿ ïðèíÿòà äàòà 30/12/1899 00 ÷àñîâ.

Äëÿ ïðåîáðàçîâàíèÿ çíà÷åíèÿ ñâîéñòâà Date â ñòðîêó ìîæíî âîñïîëüçîâàòüñÿ ôóíêöèåé DateToStr. Íàïðèìåð, îïåðàòîð

Memo1->Lines->Add("Äàòà: " + DateToStr(DateTimePickerl->Date));

äîáàâèò â îêíî Memo1 ñòðîêó âèäà "Äàòà: 24.10.07".

Ïðè ââîäå äàò ìîæíî çàäàòü çíà÷åíèÿ ñâîéñòâ MaxDate è MinDate, îïðåäåëÿþùèõ ñîîòâåòñòâåííî ìàêñèìàëüíóþ è ìèíèìàëüíóþ äàòó, êîòîðóþ ìîæåò çàäàòü ïîëüçîâàòåëü.

 ðåæèìå ââîäà âðåìåíè dtkTime ââåäåííîå ïîëüçîâàòåëåì çíà÷åíèå ìîæíî íàéòè â ñâîéñòâå Time. Ïðåîáðàçîâàòü âðåìÿ â ñòðîêó ìîæíî ôóíêöèåé TimeToStr.

Êîìïîíåíò MonthCalendar ïîõîæ íà êîìïîíåíò DateTimePicker, ðàáîòàþùèé â ðåæèìå ââîäà äàò. Ïðàâäà, â êîìïîíåíòå MonthCalendar ïðåäóñìîòðåíû íåêîòîðûå äîïîëíèòåëüíûå âîçìîæíîñòè: äîïóñêàåòñÿ ìíîæåñòâåííûé âûáîð äàò â íåêîòîðîì äèàïàçîíå (ñâîéñòâî MultiSelect), ìîæíî óêàçûâàòü â êàëåíäàðå íîìåðà íåäåëü ñ íà÷àëà ãîäà (ñâîéñòâî WeekNumbers), ïåðåñòðàèâàòü êàëåíäàðü, çàäàâàÿ ïåðâûé äåíü êàæäîé íåäåëè (ñâîéñòâî FirstDayOfWeek) è ò.ï.

Êîìïîíåíò CCalendar ïðåäñòàâëÿåò ñîáîé êàëåíäàðü íà îäèí ãîä. Ñâîéñòâà Year - ãîä, Month - ìåñÿö, Day – äåíü - öåëûå ÷èñëà, ñ êîòîðûìè èíîãäà óäîáíåå èìåòü äåëî, ÷åì ñ òèïîì TDateTime. Ïåðåä îòîáðàæåíèåì íà ýêðàíå èëè â ïðîöåññå ïðîåêòèðîâàíèÿ íàäî çàäàòü çíà÷åíèÿ Month è Year, ÷òîáû êîìïîíåíò îòîáðàçèë êàëåíäàðü íà óêàçàííûé ìåñÿö óêàçàííîãî ãîäà. Åñëè íàäî èìåòü êàëåíäàðü íà òåêóùèé ìåñÿö, íàäî óñòàíîâèòü â true çíà÷åíèå ñâîéñòâà UseCurrentDate (óñòàíîâëåíî ïî óìîë÷àíèþ).  ýòîì ñëó÷àå ïî óìîë÷àíèþ áóäåò ïîêàçàí êàëåíäàðü íà òåêóùèé ìåñÿö ñ âûäåëåííûì â íåì òåêóùèì äíåì.

Ñâîéñòâî StartOfWeek çàäàåò äåíü, ñ êîòîðîãî íà÷èíàåòñÿ íåäåëÿ. Ïî óìîë÷àíèþ çàäàíî 0 - âîñêðåñåíüå, êàê ýòî ïðèíÿòî â çàïàäíûõ êàëåíäàðÿõ. Íî äëÿ íàñ âñå-òàêè êàê-òî ïðèâû÷íåå íà÷èíàòü íåäåëþ ñ ðàáî÷åãî äíÿ - ïîíåäåëüíèêà. Òàê ÷òî æåëàòåëüíî çàäàòü StartOfWeek = 1.

 

3. Ñòðàíèöû Excel - êîìïîíåíò FIBook

Êîìïîíåíò FIBook (ñòðàíèöà ActiveX) ïîçâîëÿåò âñòðîèòü â ïðèëîæåíèå òàáëèöû Excel, êîòîðûå ïîëüçîâàòåëü ìîæåò çàïîëíÿòü ñîîòâåòñòâóþùèìè ÷èñëàìè, à êîìïîíåíò áóäåò ïðîèçâîäèòü ïî çàäàííûì ôîðìóëàì âû÷èñëåíèÿ è òóò æå îòîáðàæàòü èõ ðåçóëüòàòû â óêàçàííûõ ÿ÷åéêàõ.  òàáëèöó ìîæíî âñòðîèòü äèàãðàììû è ãðàôèêè ðàçëè÷íûõ òèïîâ. È âñå èçìåíåíèÿ, âíîñèìûå ïîëüçîâàòåëåì â äàííûå òàáëèöû, íåìåäëåííî áóäóò îòîáðàæàòüñÿ â äèàãðàììàõ.

Ïåðåíåñèòå íà ôîðìó êîìïîíåíò FIBook è ùåëêíèòå íà íåì ïðàâîé êíîïêîé ìûøè. Âûáåðèòå èç âñïëûâøåãî ìåíþ êîìàíäó Workbook Designer. Ïîÿâèòñÿ äèàëîãîâîå îêíî ïðîåêòèðîâàíèÿ  - ÿâëÿåòñÿ óïðîùåííûì âàðèàíòîì Excel. Ìîæåòå ïèñàòü â ÿ÷åéêàõ íåîáõîäèìûå íàäïèñè, çàäàâàÿ øðèôò, åãî ñòèëü, îáðàìëåíèå, çàïèñûâàòü ôîðìóëû.

Êíîïêà Chart ïîçâîëÿåò ââåñòè íà ñòðàíèöó äèàãðàììû è ãðàôèêè. ×òîáû çàäàòü äèàãðàììó, íàäî ñíà÷àëà âûäåëèòü êóðñîðîì â òàáëèöå äàííûå, êîòîðûå äîëæíû îòîáðàæàòüñÿ â äèàãðàììå, çàòåì íàæàòü êíîïêó ââîäà äèàãðàììû, ïîñëå ýòîãî óêàçàòü êóðñîðîì ðàìêó, â êîòîðîé äîëæíà îòîáðàæàòüñÿ äèàãðàììà.  ðåçóëüòàòå ïîïàäåòå â äèàëîãîâîå îêíî, â êîòîðîì ñìîæåòå âûáðàòü òèï äèàãðàììû è íåîáõîäèìûå åå àòðèáóòû.

Ùåëêíóâ ïðàâîé êíîïêîé ìûøè íà êîìïîíåíòå FIBook, ìîæåòå âûáðàòü åùå îäíó êîìàíäó - Properties.  ïîÿâèâøåìñÿ äèàëîãîâîì îêíå ìîæíî çàäàòü îïöèè, îïðåäåëÿþùèå, ÷òî áóäåò îòîáðàæåíî â òàáëèöå ïðè ðàáîòå ïðèëîæåíèÿ: çàãîëîâêè ñòðîê è ñòîëáöîâ (Row Heading è Column Heading), ñåòêà (Gridlines), ôîðìóëû âû÷èñëåíèé (Formulas) è ò.ï.

Êîìïîíåíò FIBook î÷åíü óäîáåí, åñëè íàäî ïðåäîñòàâèòü ïîëüçîâàòåëþ âîçìîæíîñòü ðàáîòàòü ñ òàáëèöàìè Excel. Îäíàêî äëÿ ðåøåíèÿ ïîäîáíûõ çàäà÷ èìååòñÿ è äðóãîé ïóòü - èñïîëüçîâàíèå ñåðâåðîâ ÑÎÌ è OLE.

 

4. Êîìïîíåíòû îòîáðàæåíèÿ èåðàðõè÷åñêèõ äàííûõ ListView

Êîìïîíåíò ListView  (Win32)- ïîçâîëÿåò îòîáðàæàòü â ñòèëå Windows äàííûå â âèäå ñïèñêîâ, òàáëèö, êðóïíûõ è ìåëêèõ ïèêòîãðàìì. Ñ ïîäîáíûì îòîáðàæåíèåì âñå âû ñòàëêèâàåòåñü, ðàñêðûâàÿ ïàïêè Windows.

Ñòèëü îòîáðàæåíèÿ èíôîðìàöèè îïðåäåëÿåòñÿ ñâîéñòâîì ViewStyle, êîòîðîå ìîæåò óñòàíàâëèâàòüñÿ â ïðîöåññå ïðîåêòèðîâàíèÿ èëè ïðîãðàììíî âî âðåìÿ âûïîëíåíèÿ. Ñâîéñòâî ìîæåò ïðèíèìàòü çíà÷åíèÿ: vslcon - êðóïíûå çíà÷êè, vsSmalllcon - ìåëêèå çíà÷êè, vslist - ñïèñîê, vsReport - òàáëèöà.

Ðàññìîòðèì îñíîâíûå ñâîéñòâà è ìåòîäû êîìïîíåíòà ListView. Íà÷íèòå íîâîå ïðèëîæåíèå è ïåðåíåñèòå íà íåãî ListView. Îñíîâíîå ñâîéñòâî êîìïîíåíòà ListView, îïèñûâàþùåå ñîñòàâ îòîáðàæàåìîé èíôîðìàöèè - Items. Âî âðåìÿ ïðîåêòèðîâàíèÿ îíî ìîæåò áûòü óñòàíîâëåíî ñïåöèàëüíûì ðåäàêòîðîì, âûçûâàåìûì ùåë÷êîì íà êíîïêå ñ ìíîãîòî÷èåì ðÿäîì ñ ýòèì ñâîéñòâîì â îêíå Èíñïåêòîðà Îáúåêòîâ.  íåì çàäàþòñÿ íîâûå óçëû êíîïêîé New Item è äî÷åðíèå óçëû - êíîïêîé New Subltem. Òîëüêî ñìûñë äî÷åðíèõ óçëîâ äðóãîé: ýòî èíôîðìàöèÿ, êîòîðàÿ ïîÿâëÿåòñÿ òîëüêî â ðåæèìå vsReport - â âèäå òàáëèöû.

Çàäàéòå â ðåäàêòîðå íåêîòîðîå ìíîæåñòâî ýëåìåíòîâ è äî÷åðíèõ óçëîâ. Ñìûñë èõ çàâèñèò îò êîíêðåòíîé çàäà÷è.

Äëÿ êàæäîãî óçëà çàäàåòñÿ ñâîéñòâî Caption - íàäïèñü, ïîÿâëÿþùàÿñÿ îêîëî ïèêòîãðàììû. Äëÿ äî÷åðíèõ óçëîâ ýòî ñâîéñòâî ñîîòâåòñòâóåò íàäïèñè, ïîÿâëÿþùåéñÿ â ÿ÷åéêàõ òàáëèöû â ðåæèìå vsReport.

Ñâîéñòâî Image Index îïðåäåëÿåò èíäåêñ ïèêòîãðàììû. Èíäåêñ ñîîòâåòñòâóåò ñïèñêàì èçîáðàæåíèé, õðàíÿùèìñÿ â îòäåëüíûõ êîìïîíåíòàõ ImageList. Óêàçàíèÿ íà ýòè êîìïîíåíòû ìîæíî çàäàòü â ñâîéñòâàõ LargeImages äëÿ ðåæèìà vslcon è SmallImages äëÿ ðåæèìîâ vsSmallIcon, vsList è vsReport. Èíäåêñû íà÷èíàþòñÿ ñ 0.

Ñâîéñòâî State Index â ïàíåëè Item Properties ïîçâîëÿåò äîáàâèòü âòîðóþ ïèêòîãðàììó â äàííûé îáúåêò. Ïîäîáíàÿ ïèêòîãðàììà ìîæåò ïðîñòî ñëóæèòü äîïîëíèòåëüíîé õàðàêòåðèñòèêîé îáúåêòà. Èíäåêñ, óêàçûâàåìûé êàê State Index, ñîîòâåòñòâóåò ñïèñêó èçîáðàæåíèé, õðàíÿùèõñÿ â îòäåëüíîì êîìïîíåíòå ImageList, óêàçàííîì â ñâîéñòâå Statelmages êîìïîíåíòà ListView.

Îñòàíîâèìñÿ ïîêà íà ýòèõ ñâîéñòâàõ è ïîñòðîèì ïðèëîæåíèå, ïðåäîñòàâëÿþùåå ïîëüçîâàòåëþ âîçìîæíîñòü èçìåíÿòü âèä ñïèñêà â îêíå ListView è, êðîìå òîãî, ïîçâîëÿþùåå ïðè ñòèëÿõ vslcon è vsSmalllcon ïåðåòàñêèâàòü ïèêòîãðàììû ìûøüþ â ëþáîå ìåñòî îêíà. Äëÿ ðåàëèçàöèè òàêîãî ïðèëîæåíèÿ íàì ïîòðåáóåòñÿ êîìïîíåíò ìåíþ MainMenu. Êðîìå òîãî, äëÿ ïîíèìàíèÿ íåêîòîðûõ ïðèâåäåííûõ íèæå îïåðàòîðîâ íàäî ïðåäñòàâëÿòü ñåáå òåõíîëîãèþ ïåðåòàñêèâàíèÿ Drag&Drop.

Äëÿ ðåàëèçàöèè ïðèìåðà íàäî ñäåëàòü ñëåäóþùåå:

      ââåäèòå â ïðèëîæåíèå ðàçäåëû ìåíþ Êðóïíûå çíà÷êè (ïóñòü åãî èìÿ áóäåò MIñîn), Ìåëêèå çíà÷êè (èìÿ MSmallIcon), Ñïèñîê (èìÿ Mlist) è Òàáëèöà (èìÿ MReport)

      óñòàíîâèòå âî âñåõ ýòèõ ðàçäåëàõ îäèíàêîâûé îòëè÷íûé îò íóëÿ èíäåêñ GroupIndex è ñâîéñòâà Radioltem â true

      îäèí èç ðàçäåëîâ ïîìåòüòå êàê Checked è â ñâîéñòâå ñïèñêà ViewStyle óñòàíîâèòå çíà÷åíèå, ñîîòâåòñòâóþùåå ýòîìó ðàçäåëó

      íàïèøèòå ñëåäóþùèå îáðàáîò÷èêè ùåë÷êîâ äëÿ ýòèõ ðàçäåëîâ:         

void fastcall  TForm1::MIconClick(TObject *Sender)

{

ListView1->ViewStyle = vslcon;

MIcon->Checked = true;

ListView1->DragMode = dmAutomatic;

}

void _fastcall TForm1::MSmallIconClick(TObject *Sender)

{

ListView1->ViewStyle = vsSmalllcon;

MSmallIcon->Checked = true;

ListView1->DragMode = dmAutomatic;

}

void _fastcall TForm1::MListClick(TObject *Sender)

{

ListView1->ViewStyle = vsList;

MList->Checked = true;

ListView1->DragMode = dmManual;

}

void  _fastcall TForm1::MReportClick(TObject *Sender)

{

ListView1->ViewStyle = vsReport;

MReport->Checked = true;

ListView1->DragMode = dmManual;

}

Êðîìå òîãî, íàäî íàïèñàòü ñëåäóþùèå îáðàáîò÷èêè ñîáûòèé OnDragOver è OnDragDrop êîìïîíåíòà ListView:                 

void _fastcall TForm1::ListView1DragOver(TObject *Sender, TObject *Source, int  X, int  Y, TDragState  State, bool SAccept)

{

Accept = (Source =  ListView1);

}

void_ _fastcall TForm1::ListView1DragDrop(TObject *Sender,TObject *Source, int X, int Y)

{

((TListView*)Sender)->Selected->Position = Point(X,Y);

}

Ðåàëèçóéòå ýòîò ïðèìåð. Âû óâèäèòå, ÷òî ñîçäàëè îêíî, èìåþùåå ìíîãî îáùåãî ñ îáû÷íûìè ïàïêàìè Windows.

Ìåòîä Arrange:

void       _fastcall  Arrange(TListArrangement  Code);

ïîçâîëÿåò óïîðÿäî÷èòü ïèêòîãðàììû â ðåæèìàõ vslcon è vsSmalllcon. Ïàðàìåòð Code îïðåäåëÿåò ñïîñîá óïîðÿäî÷èâàíèÿ:

arAlignBottom

âûðàâíèâàíèå âäîëü íèæíåãî êðàÿ îáëàñòè

arAlignLeft

âûðàâíèâàíèå âäîëü ëåâîãî êðàÿ îáëàñòè

arAlignRight

âûðàâíèâàíèå âäîëü ïðàâîãî êðàÿ îáëàñòè

arAlignTop

âûðàâíèâàíèå âäîëü âåðõíåãî êðàÿ îáëàñòè

arDefault

âûðàâíèâàíèå ïî óìîë÷àíèþ (âäîëü âåðõíåãî êðàÿ îáëàñòè)

arSnapToGrid

ðàçìåùåíèå êàæäîé ïèêòîãðàììû â áëèæàéøåì óçëå ñåòêè

Âû ìîæåòå ââåñòè â ñâîå òåñòîâîå ïðèëîæåíèå ðàçäåë Âûðàâíèâàíèå è â îáðàáîò÷èê ùåë÷êà íà íåì çàïèñàòü îïåðàòîð

ListView1->Arrange(arAlignTop);

Òîãäà ïîñëå ïåðåòàñêèâàíèÿ ýëåìåíòîâ âû âñåãäà ñìîæåòå îïÿòü óïîðÿäî÷èòü èõ ðàñïîëîæåíèå, âûáðàâ ýòîò ðàçäåë ìåíþ.

Ñïîñîá óïîðÿäî÷èâàíèÿ îïðåäåëÿåòñÿ ñîîòâåòñòâóþùèì çàäàíèåì ñâîéñòâà SortType.

Ñâîéñòâî Checkboxes, óñòàíîâëåííîå â true, îïðåäåëÿåò îòîáðàæåíèå èíäèêàòîðà ñ ôëàæêîì îêîëî êàæäîãî ýëåìåíòà ñïèñêà. Òîëüêî ó÷òèòå, ÷òî ñâîéñòâî ñðàáàòûâàåò òîëüêî â ñëó÷àå, åñëè âû íå óñòàíîâèëè îïèñàííîå ðàíåå ñâîéñòâî Statelmages. Èíà÷å ãîâîðÿ, îêîëî ïèêòîãðàììû ìîæåò ïîÿâëÿòüñÿ èëè èíäèêàòîð, èëè äîïîëíèòåëüíàÿ ïèêòîãðàììà.

Èíäèêàòîðû ýëåìåíòîâ ìîæíî óñòàíàâëèâàòü ïðîãðàììíî èëè èõ ìîæåò èçìåíÿòü ïîëüçîâàòåëü âî âðåìÿ âûïîëíåíèÿ. Òîãäà óçíàòü ïðîãðàììíî, óñòàíîâëåí ëè èíäèêàòîð â íåêîòîðîì ýëåìåíòå Items[i], ìîæíî ïðîâåðêîé åãî ñâîéñòâà Checked. Íàïðèìåð:

for  (int i=0; i < ListView1->Items->Count; i++)

 if (ListView1->Items->Item[i]->Checked)

ShowMessage("Âûáðàí  ýëåìåíò " + ListView1->Items->Item[i]->Caption);

Ïðèâåäåííûé îïåðàòîð ïðîâåðÿåò âñå ýëåìåíòû è îòîáðàæàåò ñîîáùåíèÿ î òåõ, â êîòîðûõ óñòàíîâëåí èíäèêàòîð.  ðåàëüíîì ïðèëîæåíèè, êîíå÷íî, âìåñòî òàêîãî ñîîáùåíèÿ äîëæíû ïðåäïðèíèìàòüñÿ êàêèå-òî äåéñòâèÿ.

Ñâîéñòâà HotTrack è HotTrackStyles îïðåäåëÿþò ïîÿâëåíèå âûäåëåíèÿ ïðè ïåðåìåùåíèè êóðñîðà íàä ýëåìåíòîì ñïèñêà è ñòèëü ýòîãî âûäåëåíèÿ. Ñâîéñòâî HoverTime çàäàåò â ìèëëèñåêóíäàõ çàäåðæêó ïîÿâëåíèÿ òàêîãî âûäåëåíèÿ.

Ñâîéñòâî ñïèñêà Selected îïðåäåëÿåò âûäåëåííûé ïîëüçîâàòåëåì ýëåìåíò ñïèñêà. Ýòèì ìîæíî âîñïîëüçîâàòüñÿ äëÿ âûïîëíåíèÿ êàêèõ-òî äåéñòâèé. Íàïðèìåð, åñëè òðåáóþòñÿ íåêèå äåéñòâèÿ ïðè äâîéíîì ùåë÷êå íà êàêîì-òî ýëåìåíòå, òî â îáðàáîò÷èêå ñîáûòèÿ OnDblClick êîìïîíåíòà ListView ìîæíî íàïèñàòü îïåðàòîð:

if (ListView1->Selected != NULL)               

ShowMessage(ListView1->Selected->Caption);

Îïåðàòîð if ïðîâåðÿåò, âûäåëåí ëè êàêîé-òî ýëåìåíò, ò.å. ïðîèçâåäåí ëè äâîéíîé ùåë÷îê íà ýëåìåíòå, à íå ïðîñòî íà ïóñòîì ïîëå ñïèñêà. Åñëè ùåë÷îê íà ýëåìåíòå, òî ñ íèì ìîæíî ïðîâåñòè êàêèå-òî äåéñòâèÿ (â äàííîì ïðèìåðå âìåñòî ýòîãî ïðîñòî îòîáðàæàåòñÿ ñîîáùåíèå).

Ñâîéñòâî Columns îïðåäåëÿåò ñïèñîê çàãîëîâêîâ òàáëèöû â ðåæèìå vsReport  ïðè ñâîéñòâå ShowColumnHeaders (ïîêàçàòü çàãîëîâêè), óñòàíîâëåííîì â true. Ñâîéñòâî Columns ìîæíî çàäàòü â ïðîöåññå ïðîåêòèðîâàíèÿ ñïåöèàëüíûì ðåäàêòîðîì çàãîëîâêîâ, âûçûâàåìîì äâîéíûì ùåë÷êîì íà êîìïîíåíòå ListView èëè ùåë÷êîì íà êíîïêå ñ ìíîãîòî÷èåì ðÿäîì ñî ñâîéñòâîì Columns â îêíå Èíñïåêòîðà Îáúåêòîâ. Êíîïêà Add New (êðàéíÿÿ ëåâàÿ) ïîçâîëÿåò äîáàâèòü íîâóþ ñåêöèþ â çàãîëîâîê, êíîïêà Delete Selected (âòîðàÿ ñëåâà) - óäàëèòü ñåêöèþ, êíîïêè Move Selected Up è Move Selected Down (êíîïêè ñî ñòðåëêàìè) ïîçâîëÿþò èçìåíÿòü ïîñëåäîâàòåëüíîñòü ñåêöèé.

Ïîñëå òîãî, êàê äîáàâèëè ñåêöèþ è óñòàíîâèëè íà íåé êóðñîð, â îêíå Èíñïåêòîðà Îáúåêòîâ ïîÿâèòñÿ ìíîæåñòâî ñâîéñòâ ýòîãî îáúåêòà.  ñâîéñòâå Caption ìîæåòå çàäàòü òåêñò çàãîëîâêà.  ñâîéñòâå Imagelndex ìîæåòå óêàçàòü èíäåêñ ïèêòîãðàììû, êîòîðàÿ ïîÿâèòñÿ ïåðåä çàãîëîâêîì. Ñâîéñòâà MinWidth è MaxWidth îïðåäåëÿþò ñîîòâåòñòâåííî ìèíèìàëüíóþ è ìàêñèìàëüíóþ øèðèíó çàãîëîâêà â ïèêñåëàõ. Òîëüêî â ýòèõ ïðåäåëàõ ïîëüçîâàòåëü ìîæåò èçìåíÿòü øèðèíó çàãîëîâêà êóðñîðîì ìûøè. Çíà÷åíèå øèðèíû ïî óìîë÷àíèþ çàäàåòñÿ çíà÷åíèåì ñâîéñòâà Width. Ïðè èçìåíåíèè øèðèíû ñåêöèè âî âðåìÿ âûïîëíåíèÿ ãåíåðèðóåòñÿ ñîáûòèå OnSectionResize.