Изменение цвета ячейки в таблице
|
|
WQ | Дата: Четверг, 04.09.2014, 22:17 | Сообщение # 1 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| Вот такой код:
Цитата #Include Once "inc/iup.bi" #Include Once "inc/iupcontrols.bi" '#Include Once "inc/iupcd.bi"
Sub _init_ Constructor IupOpen(0,0) IupControlsOpen() End Sub
Sub _exit_ Destructor IupClose() End Sub
Function button_press (c As Ihandle Ptr, a As Integer, b As Integer) As Integer ? a, b 'IupSetAttribute(c, "FGCOLOR" & a & ":" & b, "255 0 0") IupStoreAttribute(c,"FGCOLOR" & a & ":" & b,"255 0 0") Return IUP_DEFAULT End Function
Function create_mat() As Ihandle Ptr Dim As Ihandle Ptr mat = IupMatrix(NULL)
IupSetAttribute(mat, "NUMCOL", "1") IupSetAttribute(mat, "NUMLIN", "3") IupSetAttribute(mat, "NUMCOL_VISIBLE", "1") IupSetAttribute(mat, "NUMLIN_VISIBLE", "3") IupSetAttribute(mat, "EXPAND", "NO") IupSetAttribute(mat, "SCROLLBAR", "NO")
IupSetAttribute(mat, "0:0", "Inflation") IupSetAttribute(mat, "1:0", "Medicine ") IupSetAttribute(mat, "2:0", "Food") IupSetAttribute(mat, "3:0", "Energy") IupSetAttribute(mat, "0:1", "January 2000") IupSetAttribute(mat, "1:1", "5.6") IupSetAttribute(mat, "2:1", "2.2") IupSetAttribute(mat, "3:1", "7.2")
IupSetAttribute(mat,"BGCOLOR1:0", "255 128 0") IupSetAttribute(mat,"BGCOLOR2:1", "255 128 0") IupSetAttribute(mat,"FGCOLOR2:0", "100 0 128") IupSetAttribute(mat,"FGCOLOR1:1", "255 0 128")
IupSetCallback(mat, "CLICK_CB", Cast(Icallback,@button_press)) Return mat End Function
Sub func_1 () Dim As Ihandle Ptr _cbox, dlg, hbox
_cbox = IupCbox(create_mat(), NULL) 'IupSetAttribute(_cbox,"SIZE","480x200")
hbox = IupSetAttributes(IupHbox(_cbox, NULL), MARGIN=10x10")
dlg = IupDialog(hbox) IupSetHandle("dlg",dlg) IupSetAttribute(dlg,"TITLE","Cbox Test")
End Sub
func_1() IupShowXY(IupGetHandle("dlg"),IUP_CENTER,IUP_CENTER) IupMainLoop()
По логике, при клике по ячейке должен меняться цвет текста этой ячейки - а в реале это происходит только после 2-клика по любой редактируемой ячейке.
|
|
| |
haav | Дата: Пятница, 05.09.2014, 07:58 | Сообщение # 2 |
Генералиссимус
Группа: Администраторы
Сообщений: 1372
Статус: Offline
| Попробуй так:
Код .... Function button_press (c As Ihandle Ptr, a As Integer, b As Integer) As Integer ? a, b IupSetAttribute(c, "FGCOLOR" & a & ":" & b, "255 0 0") IupUpdate (c) Return IUP_DEFAULT End Function .....
Че-то оф. сайт не доступен, а вся дока там.
Добавлено позже:
Я и забыл, ведь документацию я выкладывал на своем сайте: http://free-basic.ru/user-files/IUPDocs.zip
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
WQ | Дата: Суббота, 06.09.2014, 12:16 | Сообщение # 3 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| Спасибо! Теперь бы еще разобраться, можно ли встроить окно, созданное IUP, как дочернее, в окно, созданное через WinApi. Очень нужна такая табличка. Обратный пример нашел
|
|
| |
haav | Дата: Суббота, 06.09.2014, 14:05 | Сообщение # 4 |
Генералиссимус
Группа: Администраторы
Сообщений: 1372
Статус: Offline
| Цитата WQ ( ) Спасибо!Теперь бы еще разобраться, можно ли встроить окно, созданное IUP, как дочернее, в окно, созданное через WinApi. Очень нужна такая табличка. Обратный пример нашел Конечно можно:
Код #Include Once "IUP/iup.bi" #Include Once "IUP/iupcontrols.bi" #Include Once "windows.bi" '#Include Once "inc/iupcd.bi"
Sub _init_ Constructor IupOpen(0,0) IupControlsOpen() End Sub
Sub _exit_ Destructor IupClose() End Sub
Function button_press (c As Ihandle Ptr, a As Integer, b As Integer) As Integer IupStoreAttribute(c,"FGCOLOR" & a & ":" & b,"255 0 0") IupUpdate (c) Return IUP_DEFAULT End Function
Function windowproc(hwnd As HWND,msg As UINT,wParam As WPARAM,lParam As LPARAM) As Integer Select Case msg Case WM_DESTROY PostQuitMessage(0) End Select Return DefWindowProc(hwnd,msg,wparam,lparam) End Function
Function create_mat() As Ihandle Ptr Dim As Ihandle Ptr mat = IupMatrix(NULL)
IupSetAttribute(mat, "NUMCOL", "1") IupSetAttribute(mat, "NUMLIN", "3") IupSetAttribute(mat, "NUMCOL_VISIBLE", "1") IupSetAttribute(mat, "NUMLIN_VISIBLE", "3") IupSetAttribute(mat, "EXPAND", "NO") IupSetAttribute(mat, "SCROLLBAR", "NO")
IupSetAttribute(mat, "0:0", "Inflation") IupSetAttribute(mat, "1:0", "Medicine ") IupSetAttribute(mat, "2:0", "Food") IupSetAttribute(mat, "3:0", "Energy") IupSetAttribute(mat, "0:1", "January 2000") IupSetAttribute(mat, "1:1", "5.6") IupSetAttribute(mat, "2:1", "2.2") IupSetAttribute(mat, "3:1", "7.2")
IupSetAttribute(mat,"BGCOLOR1:0", "255 128 0") IupSetAttribute(mat,"BGCOLOR2:1", "255 128 0") IupSetAttribute(mat,"FGCOLOR2:0", "100 0 128") IupSetAttribute(mat,"FGCOLOR1:1", "255 0 128")
IupSetCallback(mat, "CLICK_CB", Cast(Icallback,@button_press)) Return mat End Function
Function main Cdecl (frame As IHandle Ptr) As Integer Dim As HWND hParent = CPtr(HWND,IupGetAttribute(frame,"WID")) Dim As hwnd hwnd = CreateWindowEx(0,"#32770","Главное окно",WS_VISIBLE Or WS_OVERLAPPEDWINDOW,100,100,300,300,0,0,0,0) SetWindowLong(hwnd,GWL_WNDPROC,@windowproc) SetParent(hParent,hwnd) SetWindowLong(hParent,GWL_STYLE,WS_CHILD Or WS_VISIBLE) Return IUP_DEFAULT End Function
Sub func_1 () Dim As Ihandle Ptr _cbox, dlg, hbox
_cbox = IupCbox(create_mat(), NULL) 'IupSetAttribute(_cbox,"SIZE","480x200")
hbox = IupSetAttributes(IupHbox(_cbox, NULL), "MARGIN=10x10")
dlg = IupDialog(hbox) IupSetHandle("dlg",dlg) IupSetCallback(dlg,"MAP_CB" ,@main)
End Sub
func_1() IupShowXY(IupGetHandle("dlg"),0,0)
IupMainLoop()
Обычное окно с созданием класса уж сам создашь, я взял имеющиеся в винде диалоговое окно для примера.
Вы сохраняете власть над людьми покуда оставляете им что-то…Отберите у человека все, и этот человек уже будет неподвластен вам…
|
|
| |
WQ | Дата: Суббота, 06.09.2014, 17:16 | Сообщение # 5 |
Полковник
Группа: Проверенные
Сообщений: 215
Статус: Offline
| Шикарно! Никаких проблем с интеграцией в имеющийся код не возникло. Даже не подумал, что IupMainLoop() может и цикл While GetMessage заменить. IUP очень интересная библиотека, если разобраться, то дальше часто проще, чем в WinApi. Хотелось бы заменить данным видом таблицы ListView. В моей программе их несколько, и со всеми, кроме одного, проблем не возникнет - все нужные функции есть. Но в одном ListView необходимо перетаскивание строк - вроде плей-листа в плеере. Пока программа написана на Autoit, и код на Winapi огромный, при том, что там удобная библиотека работы с ListView. На FreeBasic, на сколько я могу понять, кода будет гораздо больше, т.к. некоторые функции нужно писать самостоятельно. И тут я не уверен, так что пока читаю справку IupMatrix.
|
|
| |
|