Форум » GUI » Раскрывающийся древовидный список » Ответить

Раскрывающийся древовидный список

Dr. Oldwarez: Подскажите пожалуйста, возможен ли в MiniGUI или OOHG раскрывающийся древовидный список. То есть COMBOBOX с поддержкой древовидной структуры вводимых данных. Я точно помню, что в Дельфине это есть.

Ответов - 29, стр: 1 2 All

Dima: Dr. Oldwarez что то типа этого ?

Dr. Oldwarez: Не совсем то - он должен в спокойном состоянии быть свёрнут как комбобокс, но и это тоже надо - древовидный список с множественным выбором!

Pasha: Я делал подобные компоненты Надо создать TGet с кнопкой, на нажати кнопку повесить функцию, которая создавала бы окно со стилем WS_VISIBLE, WS_POPUP, и рисовала бы в окне treeview Как это сделать в mgw, oohg: да надо просто сделать


Andrey: Dima пишет: что то типа этого ? Дима, а что за прога такая ?

Dima: Andrey пишет: Дима, а что за прога такая ? Без понятия , просто нагуглил ;) Если не ошибаюсь то же самое можно сделать и в MiniGUI (я про GUI морду)

Andrey: Dima пишет: Если не ошибаюсь то же самое можно сделать и в MiniGUI (я про GUI морду) А как ?

Dima: Andrey пишет: А как ? Думаю Григорий Филатов знает , но похоже такой TREE пока не сделать в MiniGUI

Dr. Oldwarez: IBXExTrees вообще-то предназначен для тех баз данных, которые действуют на моего шефа как красная тряпка на быка. Он желает исключительно древний DBF, причём без естественных в таком случае BDE и ODBC, поскольку их надо устанавливать в систему. В противном случае я бы работал на Дельфине, где упомянутые мной элементы существуют как нечто само собой разумеющееся. По этой же причине мне не подходит дельфиновский ReportSmith.

Andrey: Dr. Oldwarez пишет: По этой же причине мне не подходит дельфиновский ReportSmith. Воспользуйся FastReport'om для [x]Harbour ! И проблем не будет !

Dr. Oldwarez: Уже работаю с тестовой версией. Ещё обкатаю её и перейду на полную. Шеф обещал оплатить. А сам не могу - это 3/4 моей зарплаты.

Andrey: Dr. Oldwarez пишет: А сам не могу - это 3/4 моей зарплаты. Дык, кто ж его на свои деньги покупает !!! Всегда клиент оплачивал !!!

Andrey: Dima пишет: Думаю Григорий Филатов знает , но похоже такой TREE пока не сделать в MiniGUI А давайте ВСЕ его попросим ДРУЖНО !!! Елочка зажгись !

Dima: Andrey

i3t4j6: Dr. Oldwarez пишет: раскрывающийся древовидный список Попробуйте ...\minigui\samples\applications\PHONE_BASE

Dr. Oldwarez: Дык, там нет МНОЖЕСТВЕННОГО ВЫБОРА из древовидного списка. А мне именно его и надо.

i3t4j6: Что значит "МНОЖЕСТВЕННОГО" ? В этом примере всего 2 вложения . Мне надо было 3 - я сделал 3, можно хоть 10 !!!

Dima: MMK просил передать привет и скринчег ;) PS Коменты он сам напишет.

ММК: Спасибо , Дима :))) Да это , как вариантик: FW позволяет несколько , этот с бровсом : во второй графе число элементов в группе, в третьем данные с "подбивающимся" итогом, в четвертой среднее. FW стоит как фаст , но возможности мне кажется поширее будут :))

Dr. Oldwarez: Так это FiveWin? Мне именно древовидный BROWSE и нужен

ММК: Да это FiveWin. Вот исходничек этого примера , может интересно будет .... static function TreeBrowse( nMethod ) local oWnd, oBrw, oCol local oRs, oRsTot local oTree, oItem local oBold, bFont cFunc := ProcName( 0 ) oRs := AdoGetSummary() // function to get group summary as RecSet // Create Tree // There are two alternatives for referring to the data pertaining to // the TreeItem // Method. 1. Assign all the values as an array to oItem:Cargo // OR // Method. 2. Assign the bookmark of the orginal data source to oItem:Cargo oTree := MakeTree( oRs, nMethod ) oItem := oTree:oFirst DEFINE FONT oBold NAME "TAHOMA" SIZE 0,-12 BOLD DEFINE WINDOW oWnd MDICHILD OF WndMain() ; TITLE If( nMethod == 1, ; "Tree Browse with data", ; "Tree Browse with data from Linked Recordset" ) @ 0,0 XBROWSE oBrw OF oWnd LINES CELL if nMethod == 1 oBrw:SetTree( oTree, ; // Tree object { "OPEN","CLOSE","GREEN" } ) // [Optional] Bitmap Resources Open, Close and NoChildren ADD TO oBrw DATA oBrw:oTreeItem:Cargo[ 1 ] PICTURE "9999" HEADER "Employees" ADD TO oBrw DATA oBrw:oTreeItem:Cargo[ 2 ] PICTURE "999,999,999.99" HEADER "TotSalary" ADD TO oBrw DATA oBrw:oTreeItem:Cargo[ 2 ] / oBrw:oTreeItem:Cargo[ 1 ] ; PICTURE "999,999,999.99" HEADER "AvgSalary" else oBrw:SetTree( oTree, ; // Tree object { "OPEN","CLOSE","GREEN" }, ; // [Optional] Bitmap Resources Open, Close and NoChildren { | OItem | oRs:AbsolutePosition := oItem:Cargo } ) // To Sync DataSource with oItem ADD TO oBrw DATA oRs:Fields("Employees"):Value PICTURE "9999" HEADER "Employees" ADD TO oBrw DATA oRs:Fields("TotSalary"):Value PICTURE "999,999,999.99" HEADER "TotSalary" ADD TO oBrw DATA oRs:Fields("TotSalary"):Value / oRs:Fields("Employees"):Value ; PICTURE "999,999,999.99" HEADER "AvgSalary" endif oBrw:aCols[ 1 ]:cHeader := "State / City" // If different fonts are required on the basis of oItem:nLevel AEval( oBrw:aCols, { |oCol| oCol:oDataFont := { || If( oBrw:oTreeItem:nLevel == 1, oBold, oBrw:oFont ) } } ) // Get Totals for footers oRsTot := AdoGetTotals() // Set Totals in Footers oBrw:lFooter := .t. oBrw:aCols[ 1 ]:cFooter := "Total" oBrw:aCols[ 2 ]:cFooter := oRsTot:Fields( 0 ):Value oBrw:aCols[ 3 ]:cFooter := oRsTot:Fields( 1 ):Value oBrw:aCols[ 4 ]:cFooter := oRsTot:Fields( 1 ):Value / oRsTot:Fields( 0 ):Value oRsTot:Close() // note: cFooter can be of any data type. If cFooter is not Character, // the value will be formatted using column's picture // cFooter can be a codeblock also AEval( oBrw:aCols, { |oCol| oCol:oFooterFont := oBold } ) oBrw:MakeTotals() oBrw:createFromCode() oWnd:oClient := obrw // Create ButtonBar BtnBar( oBrw ) // Commn ButtonBar for all sample Browses DEFINE BUTTON OF oWnd:oBar ; RESOURCE "EXPAND" TOP PROMPT "Expand ALL" ; ACTION ( oBrw:oTree:Expand(), oBrw:Refresh(), oBrw:SetFocus() ) DEFINE BUTTON OF oWnd:oBar ; RESOURCE "COLLAPS" TOP PROMPT "Collapse ALL" ; ACTION ( oBrw:oTree:Collapse(), oBrw:Refresh(), oBrw:SetFocus() ) SET MESSAGE OF oWnd TO oWnd:cCaption 2007 ACTIVATE WINDOW oWnd ON INIT oBrw:SetFocus() return nil



полная версия страницы