Òåìà 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,
{
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.