Автор | Сообщение |
|
| |
Пост N: 78
Зарегистрирован: 05.07.14
|
|
Отправлено: 15.08.14 16:07. Заголовок: Вопросы по GRID
Взял пример /Basic/Grid/demo4.prg/ Нормально работает, но есть вопрос. Почему массив aRows[20][3] так объявлен, хотя фактически имеет размерность [20][5] ? Можно ли сформировать содержимое aRows в процессе выполнения программы ? И как правильно это сделать? Можно ли заполнять массив, например так: aRows [j]=xm[i,j]
| |
|
Ответов - 18
[только новые]
|
|
|
| постоянный участник
|
Пост N: 3556
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.08.14 16:30. Заголовок: evgeny2006 пишет: М..
| |
|
|
| |
Пост N: 4160
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.08.14 16:37. Заголовок: Вообще прикольный сп..
Вообще прикольный способ объявить массив Local aRows [20] [3] Это фича Минигуи ?
| |
|
|
| постоянный участник
|
Пост N: 387
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.08.14 18:06. Заголовок: Dima пишет:Это фича ..
Dima пишет: фичи нет, сначала создан такой подмассив в 3 елемента, а потом переприсвоен в 5 элементов.
| |
|
|
| |
Пост N: 4161
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.08.14 18:12. Заголовок: SergKis Да это я то..
SergKis Да это я тормознул.
| |
|
|
| |
Пост N: 79
Зарегистрирован: 05.07.14
|
|
Отправлено: 15.08.14 20:58. Заголовок: SergKis пишет: фичи..
SergKis пишет: цитата: | фичи нет, сначала создан такой подмассив в 3 елемента, а потом переприсвоен в 5 элементов. |
| Вообще-то интересный подход! Спасибо!!!
| |
|
|
| |
Пост N: 241
Зарегистрирован: 03.12.08
|
|
Отправлено: 14.05.15 11:38. Заголовок: Добрый день ! Можно..
Добрый день ! Можно-ли задать высоту строк в контроле GRID ?
| |
|
|
| постоянный участник
|
Пост N: 4164
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.05.15 13:08. Заголовок: Softlog86 пишет: Мо..
Softlog86 пишет: цитата: | Можно-ли задать высоту строк в контроле GRID ? |
| По моему нельзя. Но могу ошибаться. Нужно считать размер высоты букв и подгонять под размер окна. Как это делать ? Есть пример от SergKis, могу выслать.
| |
|
|
| |
Пост N: 242
Зарегистрирован: 03.12.08
|
|
Отправлено: 14.05.15 13:31. Заголовок: Вообще-то я хотел сд..
Вообще-то я хотел сделать таблицу в которой один столбец - это миниатюры (фото товаров) . Поэтому высота строки в таблице - ну точек 50 не меньше . Может быть посоветуете другой способ для реализации задуманного ??
| |
|
|
| постоянный участник
|
Пост N: 4165
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.05.15 13:49. Заголовок: Softlog86 пишет: Во..
Softlog86 пишет: цитата: | Вообще-то я хотел сделать таблицу в которой один столбец - это миниатюры (фото товаров) . |
| Если нужно менять/добавлять на ходу таблицу то GRID не позволяет добавлять фото (миниатюры). Это мне Григорий писал. Лучше делай через Tbrowse. Вот пример для начала, я его уже здесь выкладывал. Tsb_dir_Ver12.7z в папке https://cloud.mail.ru/public/56155cb9fec5/MiniGui-Sample
| |
|
|
| |
Пост N: 243
Зарегистрирован: 03.12.08
|
|
Отправлено: 15.05.15 16:46. Заголовок: Всё-таки нашел как м..
Всё-таки нашел как можно высоту строк задавать ! Standard Window: @ <nRow> ,<nCol> GRID <ControlName> [ ID <nId> ] [ OF | PARENT | DIALOG <ParentWindowName> ] ......... [ IMAGE <acImageNames> ] <----- Высота строки в GRID = Высоте рисунка ! ........
| |
|
|
| |
Пост N: 128
Зарегистрирован: 15.12.06
|
|
Отправлено: 04.06.15 00:48. Заголовок: Наверно, сюда. У мен..
Наверно, сюда. У меня тоже вопрос про GRID. Какой-то малопонятный глюк, похоже на мистику. В окне (не главном) есть TAB, а в нём GRID. Вообще-то GRID'ов несколько, но виден из них, в разных режимах, максимум один. По ON DBLCLICK на каждом из GRID'ов вызывается процедура, в которой создаётся ещё одно окно, если оно уже есть - то просто ему фокус передаётся. Что в этом окне - неважно, я пробовал его и пустым сделать, то же самое. Так вот, после открытия второго окна GRID ведёт себя странно - при щелчке на нём мышью ничего не происходит, только окно выходит на первый план, если было на заднем. Программно поставить фокус на этот самый GRID можно, но и после этого на мышь не реагирует, только на клавиши! Это относится только к GRID'у, из которого была вызвана процедура, открывающая второе окно. Другие контролы, в т.ч. другие GRID'ы, реагируют на мышь нормально. После закрытия второго окна - глюк прекращается. Кто подскажет, как с этим бороться?
| |
|
|
|
| постоянный участник
|
Пост N: 4216
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.06.15 01:17. Заголовок: AM пишет: Кто подск..
AM пишет: цитата: | Кто подскажет, как с этим бороться? |
| Без самодостаточного примера подсказать очень трудно.
| |
|
|
| |
Пост N: 129
Зарегистрирован: 15.12.06
|
|
Отправлено: 06.06.15 01:25. Заголовок: Andrey пишет: Без с..
Andrey пишет: цитата: | Без самодостаточного примера подсказать очень трудно. |
|
Да, пожалуй, Вы правы. Попробую на неделе отсечь всё лишнее, но чтобы глюк сохранился.
| |
|
|
| постоянный участник
|
Пост N: 4229
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.06.15 22:35. Заголовок: AM пишет: Попробую ..
AM пишет: цитата: | Попробую на неделе отсечь всё лишнее, но чтобы глюк сохранился. |
| Вот - вот и я тоже таким делом не раз занимался, отсекал всё лишнее, а потом пример работал как надо. Я МиниГуи только сейчас более-менее понимать начал, хотя уже 3 года его плотно осваиваю, переписываю свои системы. У других может и быстрей освоение происходит...
| |
|
|
| |
Пост N: 130
Зарегистрирован: 15.12.06
|
|
Отправлено: 11.06.15 00:52. Заголовок: Андрей, я тоже надея..
Андрей, я тоже надеялся, что так будет, глюки уйдут. Но нет. Вот самодостаточный пример: #include "minigui.ch" #define U_HEADERS 'Вид','Организация','Директор','Характеристика','Год основания' #define U_WIDTHS 80,150,100,150,130 proc test() DEFINE WINDOW Test_form AT Kadry2Row,Kadry2Col WIDTH 660 HEIGHT 600; TITLE 'Первое окно' child FONT "Arial" SIZE 9 @ 30,50 label lGridTest value 'Можно здесь нажать' width 400; size 12 fontcolor {0,0,100} backColor {180,180,180}; bold height 20 on click MsgInfo('Нажали') @ 75,10 grid GridTest1 width 605 height 115; HEADERS {U_HEADERS} WIDTHS {U_WIDTHS}; FONT "Times New Roman" SIZE 14 FONTCOLOR BLUE BACKCOLOR {222,222,222}; on DblClick Test2(This.Item(This.Value)[2]+'; '+; This.Item(This.Value)[3]+' - '+This.Item(This.Value)[4]) @ 225,10 grid GridTest2 width 605 height 115; HEADERS {U_HEADERS} WIDTHS {U_WIDTHS}; FONT "Times New Roman" SIZE 14 FONTCOLOR BLUE BACKCOLOR {222,222,222}; on DblClick Test2(This.Item(This.Value)[2]+'; '+; This.Item(This.Value)[3]+' - '+This.Item(This.Value)[4]) END WINDOW uData={{'ВИД 1','Парадиз','Вася','хороший','1999'},; {'ВИД 2','Анимир','Дуся','плохая','1990'},; {'ВИД 3','Харе Кришна','Миша','мутный','1989'},; {'ВИД 4','Комода','Изя','просто мутант','1893'},; {'ВИД 5','Мироед','Света','плохая','1981'},; {'ВИД 6','Гоп секс','Грета','хорошая','1950'},; } for i=1 to 3 DoMethod('Test_form','GridTest1','AddItem',uData[ i ]) next i for i=4 to 6 DoMethod('Test_form','GridTest2','AddItem',uData[ i ]) next i ACTIVATE WINDOW Test_form return proc Test2(par) if lw:=_IsWindowDefined('Test2') //уже было открыто SetProperty('Test2','dType1','Value',par) DoMethod('Test2','SetFocus') else //не было открыто DEFINE WINDOW Test2 AT 60,60 WIDTH 460 HEIGHT 600; TITLE 'Второе окно' child FONT "Arial" SIZE 9 @ 10,10 label dType1 transparent bold size 12 value par; fontcolor {0,0,100} width 300 END WINDOW endif //было/не было окно открыто if !lw ACTIVATE WINDOW Test2 endif return Даже после обрезки получается тот самый эффект, о котором я писал. Тот из двух GRID'ов, из которого открывается второе окно - перестаёт реагировать на мышь, только на клавиши, пока не закроем второе окно. Другой же работает как надо. Кто подскажет, что я делаю не так? Блин, почему убираются отступы? Программа становится нечитаемой!
| |
|
|
| |
Пост N: 574
Зарегистрирован: 20.02.11
|
|
Отправлено: 11.06.15 10:42. Заголовок: AM пишет: Вот самод..
AM пишет: цитата: | Вот самодостаточный пример: |
| Второе окошко нужно активировать раньше Скрытый текст #include "minigui.ch" #define U_HEADERS 'Вид','Организация','Директор','Характеристика','Год основания' #define U_WIDTHS 80,150,100,150,130 proc test() DEFINE WINDOW Test_form AT 100,100 WIDTH 660 HEIGHT 600; TITLE 'Первое окно' main FONT "Arial" SIZE 9 @ 30,50 label lGridTest value 'Можно здесь нажать' width 400; size 12 fontcolor {0,0,100} backColor {180,180,180}; bold height 20 on click MsgInfo('Нажали') @ 75,10 grid GridTest1 width 605 height 115; HEADERS {U_HEADERS} WIDTHS {U_WIDTHS}; FONT "Times New Roman" SIZE 14 FONTCOLOR BLUE BACKCOLOR {222,222,222}; on DblClick Test2(This.Item(This.Value)[2]+'; '+; This.Item(This.Value)[3]+' - '+This.Item(This.Value)[4]) @ 225,10 grid GridTest2 width 605 height 115; HEADERS {U_HEADERS} WIDTHS {U_WIDTHS}; FONT "Times New Roman" SIZE 14 FONTCOLOR BLUE BACKCOLOR {222,222,222}; on DblClick Test2(This.Item(This.Value)[2]+'; '+; This.Item(This.Value)[3]+' - '+This.Item(This.Value)[4]) END WINDOW DEFINE WINDOW Test2 AT 60,60 WIDTH 460 HEIGHT 600; TITLE 'Второе окно' child FONT "Arial" SIZE 9 NOSHOW ON INTERACTIVECLOSE {|| This.Hide , .F.} @ 10,10 label dType1 transparent bold size 12 value "AAA"; fontcolor {0,0,100} width 300 END WINDOW uData={{'ВИД 1','Парадиз','Вася','хороший','1999'},; {'ВИД 2','Анимир','Дуся','плохая','1990'},; {'ВИД 3','Харе Кришна','Миша','мутный','1989'},; {'ВИД 4','Комода','Изя','просто мутант','1893'},; {'ВИД 5','Мироед','Света','плохая','1981'},; {'ВИД 6','Гоп секс','Грета','хорошая','1950'},; } for i=1 to 3 DoMethod('Test_form','GridTest1','AddItem',uData[ i ]) next i for i=4 to 6 DoMethod('Test_form','GridTest2','AddItem',uData[ i ]) next i ACTIVATE WINDOW Test_form, Test2 test2.Release return proc Test2() Test2.dType1.Value := "Сюда значение из гриды пишем" Test2.Show return
|
| |
|
|
| moderator
|
Пост N: 754
Зарегистрирован: 11.02.10
|
|
Отправлено: 11.06.15 10:51. Заголовок: Haz пишет: Второе о..
Haz пишет: цитата: | Второе окошко нужно активировать раньше |
| Да, это решает проблему См. рабочий пример ниже #include "minigui.ch" #define U_HEADERS 'Вид','Организация','Директор','Характеристика','Год основания' #define U_WIDTHS 80,150,100,150,130 proc test() Kadry2Row:=Kadry2Col:=100 DEFINE WINDOW Test_form AT Kadry2Row,Kadry2Col WIDTH 660 HEIGHT 600; TITLE 'Первое окно' main FONT "Arial" SIZE 9 @ 30,50 label lGridTest value 'Можно здесь нажать' width 400; size 12 fontcolor {0,0,100} backColor {180,180,180}; bold height 20 on click MsgInfo('Нажали') @ 75,10 grid GridTest1 width 605 height 115; HEADERS {U_HEADERS} WIDTHS {U_WIDTHS}; FONT "Times New Roman" SIZE 14 FONTCOLOR BLUE BACKCOLOR {222,222,222}; on DblClick Test2(This.Item(This.Value)[2]+'; '+; This.Item(This.Value)[3]+' - '+This.Item(This.Value)[4]) @ 225,10 grid GridTest2 width 605 height 115; HEADERS {U_HEADERS} WIDTHS {U_WIDTHS}; FONT "Times New Roman" SIZE 14 FONTCOLOR BLUE BACKCOLOR {222,222,222}; on DblClick Test2(This.Item(This.Value)[2]+'; '+; This.Item(This.Value)[3]+' - '+This.Item(This.Value)[4]) END WINDOW DEFINE WINDOW Test2 AT 60,60 WIDTH 460 HEIGHT 600; TITLE 'Второе окно' child FONT "Arial" SIZE 9 ON INTERACTIVECLOSE {|| This.Hide , .F.} @ 10,10 label dType1 transparent bold size 12 value "AAA"; fontcolor {0,0,100} width 300 END WINDOW uData={{'ВИД 1','Парадиз','Вася','хороший','1999'},; {'ВИД 2','Анимир','Дуся','плохая','1990'},; {'ВИД 3','Харе Кришна','Миша','мутный','1989'},; {'ВИД 4','Комода','Изя','просто мутант','1893'},; {'ВИД 5','Мироед','Света','плохая','1981'},; {'ВИД 6','Гоп секс','Грета','хорошая','1950'},; } for i=1 to 3 DoMethod('Test_form','GridTest1','AddItem',uData[ i ]) next i for i=4 to 6 DoMethod('Test_form','GridTest2','AddItem',uData[ i ]) next i ACTIVATE WINDOW ALL Test2.Release return proc Test2(par) /* if (lw:=_IsWindowDefined('Test2')) //уже было открыто SetProperty('Test2','dType1','Value',par) DoMethod('Test2','SetFocus') else //не было открыто DEFINE WINDOW Test2 AT 60,60 WIDTH 460 HEIGHT 600; TITLE 'Второе окно' child FONT "Arial" SIZE 9 @ 10,10 label dType1 transparent bold size 12 value par; fontcolor {0,0,100} width 300 END WINDOW endif //было/не было окно открыто if !lw ACTIVATE WINDOW Test2 endif */ Test2.dType1.Value := par Test2.Show return
| |
|
|
| |
Пост N: 131
Зарегистрирован: 15.12.06
|
|
Отправлено: 14.06.15 15:52. Заголовок: Спасибо, товарищи, з..
Спасибо, товарищи, завтра на работе попробую. Получается, всегда надо так делать? Тогда все окошки, к которым обращаются неоднократно, должны быть определены заранее? Но тогда, если их много, то будут много памяти потреблять, нет разве? К тому же у меня второе окно может вызываться не только из первого, а и ещё из одного, по крайней мере. Когда первое может быть не открыто. Тогда, значит, все такие окошки надо определять в самом начале программы?
| |
|
|
|