Автор | Сообщение |
Andrey
|
| постоянный участник
|
Пост N: 1929
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.11.11 21:36. Заголовок: Примеры из Минигуи -ошибки, вопросы..... (продолжение)
Всем привет. Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ? А заодно может и исправить и добавить новые.... Очень красочный пример: \MiniGUI\SAMPLES\Advanced\AVI_Animation - не работает под Win7 (наверно AVI-шки нет в ресурсах) Предложение Григорию: Можно ли добавить еще один пример с отдельным AVI-файлом в ресурсах проекта и показом такого же бегунка ? Пример: \MiniGUI\SAMPLES\Advanced\Tsb_filter - вылетает на ХР -------------------------------------------------------------------------------- Harbour MiniGUI Errorlog File Harbour MiniGUI Extended Edition 2.0.1 - 2011.09.21 -------------------------------------------------------------------------------- Date: 11/15/2011 Time: 22:13:24 Error BASE/1124 Argument error: LEFT Called from LEFT(0) Called from SCANSOFT(195) Called from MAIN(84) Пример: \MiniGUI\SAMPLES\BASIC\MsgEdit - не собирается... Z:\MiniGUI\SAMPLES\BASIC\MsgEdit>call ..\..\..\batch\compile.bat demo /L shell32 Harbour 3.1.0dev (Rev. 17042) Copyright (c) 1999-2011, http://harbour-project.org/ Compiling 'demo.prg'... Lines 20133, Functions/Procedures 30 Generating C source output to 'demo.c'... Done. Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland demo.c: Error E2141 demo.prg 993: Declaration syntax error *** 1 errors in Compile *** C compile error.
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
Andrey
|
| постоянный участник
|
Пост N: 3724
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.11.14 18:48. Заголовок: Как мне до создания ..
Как мне до создания окна MAIN показать окно CHILD (или другое) с сообщением типа - "Подождите, создаю базы..." ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 429
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.11.14 20:41. Заголовок: Andrey пишет:с сообщ..
Andrey пишет: цитата: | с сообщением типа - "Подождите, создаю базы..." ? |
| может подойдет схема из BASIC\WAIT_WINDOW\*.* с MAIN NOSHOW и окном сообщения в ON INIT, а после всех дел MAIN перевести в show.
|
|
|
Dima
|
| |
Пост N: 4268
Зарегистрирован: 17.05.05
|
|
Отправлено: 15.11.14 20:53. Заголовок: Andrey У тебя склер..
Andrey У тебя склероз ? Ты этот вопрос уже задавал. Поиск на форуме по слову SPLASH или пример MiniGUI\SAMPLES\BASIC\SPLASHDEMO_3
|
|
|
Vlad04
|
| постоянный участник
|
Пост N: 467
Зарегистрирован: 13.10.05
|
|
Отправлено: 15.11.14 21:03. Заголовок: Примеры WAIT_WINDOW..
Примеры WAIT_WINDOW_FOX TimedMsgBox посмотри
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3725
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.11.14 22:36. Заголовок: Dima пишет: У тебя ..
Dima пишет: Vlad04 пишет: А прочитать внимательно можно ? Andrey пишет: цитата: | Как мне до создания окна MAIN показать окно |
| Если нельзя это делать - так напишите что НЕЛЬЗЯ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3726
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.11.14 22:40. Заголовок: SergKis пишет: с MA..
SergKis пишет: цитата: | с MAIN NOSHOW и окном сообщения в ON INIT, а после всех дел MAIN перевести в show. |
| Да я знаю про этот вариант, просто принципиально понять хочу. Если нет MAIN окна, то выводить другие окна нельзя получается ? Т.е. такой код никогда не будет работать: Show_MyInfo(.T.) // показ сообщения Open_MyDbf Show_MyInfo(.F.) // скрыть сообщение DEFINE WINDOW Form_Main AT 0,0 WIDTH 720 HEIGHT 560 ; MAIN ; ..... END WINDOW ACTIVATE WINDOW Form_Main ----------------------------------- Почему тогда окна из MsgDebug(), MsgInfo() - всегда показывать можно ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 430
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.11.14 23:43. Заголовок: Andrey пишет: Show_M..
Andrey пишет: цитата: | Show_MyInfo(.T.) // показ сообщения Open_MyDbf Show_MyInfo(.F.) // скрыть сообщение |
| ты пропустил, сначала CreateWindow_MyInfo()+Title+Menu+кнопки(min,max,exit)+контроы окна+... потом Show_MyInfo(.T.) Open_MyDbf() // здесь возможны сообщения для окна, причем разные ... ... и не забудь про Release, Destroy окна а теперь сравни с DEFINE ... END WINDOW, которые ты писал а CHILD сразу говорит дочернее, т.е. есть главное уже должно быть - это возвращаясь к твоему вопросу
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3729
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.11.14 01:16. Заголовок: Andrey пишет: Как м..
Andrey пишет: цитата: | Как мне до создания окна MAIN показать окно CHILD (или другое) с сообщением типа - "Подождите, создаю базы..." ? |
| В моёй вопросе есть ещё фраза - (или другое) ! Т.е. можно значит создать окно до MAIN ?
|
|
|
Softlog86
|
| |
Пост N: 192
Зарегистрирован: 03.12.08
|
|
Отправлено: 16.11.14 12:30. Заголовок: Всё как вы и хотели ..
Всё как вы и хотели : Запускается SPLASCH окошко ("Ждите подключение к БД и тд") - и по завершении включает главное окно : #include "minigui.ch" #define WM_PAINT 15 #command DEFINE WINDOW <w> ; [ AT <row>,<col> ] ; [ WIDTH <wi> ] ; [ HEIGHT <h> ] ; PICTURE <bitmap> ; SPLASH ; [ DELAY <delay> ] ; [ ON RELEASE <ReleaseProcedure> ] ; => ; _DefineSplashWindow( <"w">, <row>, <col>, <wi>, <h>, <bitmap>, <delay>, <{ReleaseProcedure}> ) /* */ Function Main DEFINE WINDOW Form_Main ; AT 0,0 ; WIDTH 640 HEIGHT 480 ; TITLE 'Main Window' ; MAIN ; NOSHOW END WINDOW DEFINE WINDOW Form_Splash ; PICTURE 'DEMO' ; SPLASH ; DELAY 4 ; ON RELEASE Form_Main.Show <------ По завершении - ВКЛ - главного окна END WINDOW CENTER WINDOW Form_Main ACTIVATE WINDOW ALL <------ РЕДКО ВСТРЕЧАЕТСЯ такая команда - АКТИВИЗИРОВАТЬ ВСЕ ОКНА :) Return Nil /* */ Procedure _DefineSplashWindow( name, row, col, width, height, cbitmap, nTime, Release ) Local aBmpSize := BmpSize( cbitmap ) DEFAULT row := 0, col := 0, width := aBmpSize[1], height := aBmpSize[2], nTime := 2 DEFINE WINDOW &name ; AT row, col ; WIDTH width HEIGHT height ; CHILD TOPMOST ; NOSIZE NOMAXIMIZE NOMINIMIZE NOSYSMENU NOCAPTION ; ON INIT _SplashDelay( name, nTime ) ; ON RELEASE Eval( Release ) @ 0,0 IMAGE Image_1 ; PICTURE cbitmap ; WIDTH width ; HEIGHT height END WINDOW IF EMPTY(row) .AND. EMPTY(col) CENTER WINDOW &name ENDIF SHOW WINDOW &name Return /* */ Procedure _SplashDelay( name, nTime ) Local iTime := Seconds() SendMessage( GetFormHandle(name), WM_PAINT, 0, 0 ) Do While Seconds() - iTime < nTime Do Events EndDo DoMethod( name, 'Release' ) Return
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3731
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.11.14 16:13. Заголовок: Andrey пишет: Всё к..
Andrey пишет: Я хотел поменьше кода и не такой геморой с передачей/возвратом.... //Показать окно // Создать базы //скрыть окно // А потом уж DEFINE WINDOW Form_Main ; MAIN ;
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3786
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.11.14 22:41. Заголовок: Вопрос к Григорию, н..
Вопрос к Григорию, насчет кнопок ! Есть в рабочем примере такая конструкция: DEFINE BUTTONEX &cObject PARENT &cForm .......... HANDCURSOR .T. ONMOUSEHOVER ( SetProperty(ThisWindow.Name, cObject, "ICON", cResIco2), SetProperty(ThisWindow.Name, cObject, "fontcolor", aFontColorInvert ) ) ONMOUSELEAVE ( SetProperty(ThisWindow.Name, cObject, "ICON", cResIco) , SetProperty(ThisWindow.Name, cObject, "fontcolor", aFontColor) ) END BUTTONEX Пытаюсь сделать то же самое, только без DEFINE: @ nButtY,nWinWidth-20-nLenButt BUTTONEX BUTTON_4 WIDTH nLenButt HEIGHT nHButt ; CAPTION "Выход" ; ICON "iExit48x1" ; FONTCOLOR aFontColor ; BACKCOLOR MAROON ; SIZE nFBSize BOLD ; NOHOTLIGHT NOXPSTYLE HANDCURSOR ; ONMOUSEHOVER ( SetProperty( ThisWindow.Name, "BUTTON_4", "ICON", "iExit48x2" ) ) ; ONMOUSELEAVE ( SetProperty( ThisWindow.Name, "BUTTON_4", "ICON", "iExit48x1" ) ) ; ACTION ( aRetColor := {} , aUslColor:= {}, ThisWindow.Release ) Не собирается, выдает ошибку: Form_color.prg(120) Error E0030 Syntax error "syntax error at '@'" Где неправильно делаю ? И как правильно заменить в SetProperty( ThisWindow.Name, "BUTTON_4", ...) - BUTTON_4 на аналогичное, короткое название ? ThisWindow.Name - _HMG_THISFORMNAME ?????? - _HMG_THISCONTROLNAME Где то встречал, но сейчас не нашёл.
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 692
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.11.14 23:47. Заголовок: Andrey пишет: ONMOU..
Andrey пишет: цитата: | ONMOUSEHOVER ( SetProperty( ThisWindow.Name, "BUTTON_4", "ICON", "iExit48x2" ) ) ; ONMOUSELEAVE ( SetProperty( ThisWindow.Name, "BUTTON_4", "ICON", "iExit48x1" ) ) ; |
| Для такой команды синтаксис д.б. с пробелом цитата: | ON MOUSEHOVER ( SetProperty( ThisWindow.Name, "BUTTON_4", "ICON", "iExit48x2" ) ) ; ON MOUSELEAVE ( SetProperty( ThisWindow.Name, "BUTTON_4", "ICON", "iExit48x1" ) ) ; |
| Andrey пишет: This.Name пробовал
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3787
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.12.14 01:28. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Ну точно помню что видел такую конструкцию, лазил даже в i_this.ch - там не нашёл. Спасибо БОЛЬШОЕ за помощь !!!
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3788
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.12.14 13:17. Заголовок: Что то не работает п..
Что то не работает переключение иконок. Вторая иконка появляется только при нажатии кнопки. Почему ? Как исправить ? @ nButtY,nWinWidth-20-nLenButt BUTTONEX BUTTON_4 WIDTH nLenButt HEIGHT nHButt ; CAPTION "Выход" ; ICON "iExit48x1" ; BACKCOLOR MAROON ; FONTCOLOR aFontColor ; SIZE nFBSize BOLD ; NOHOTLIGHT NOXPSTYLE HANDCURSOR ; ON MOUSEHOVER ( SetProperty( ThisWindow.Name, This.Name, "ICON", "iExit48x2" ) ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aFontColor2 ) ) ; ON MOUSELEAVE ( SetProperty( ThisWindow.Name, This.Name, "ICON", "iExit48x1" ) ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aFontColor ) ) ; ACTION ( aRetColor := {} , aUslColor:= {}, ThisWindow.Release )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3790
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.12.14 16:29. Заголовок: А можно как то сдела..
А можно как то сделать перевод с одного языка на другой на лету программы ? Т.е. я не хочу делать отдельный языковой файл для программы, хочу просто переводить на другой язык в момент показа формы. Можно ли как то все сообщения программы записать в файл (включая имена переменных) ? А потом можно сделать отдельный модуль с переводом на другой язык. Т.е. форма всегда выводиться на русском, а если установлен другой язык, то переменные на форме перечитываются на нужный язык.
|
|
|
Dima
|
| |
Пост N: 4291
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.12.14 16:54. Заголовок: посмотри для примера..
|
|
|
petr707
|
| |
Пост N: 118
Зарегистрирован: 21.04.13
|
|
Отправлено: 03.12.14 16:55. Заголовок: Перевод...на другой язык
Кто переводить-то будет ? Перевод сильно зависит от контекста. Отдельное слово часто невозможно перевести без контекста. "Мир" как переведешь ? "World" или "peace" ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 444
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.12.14 17:27. Заголовок: Andrey пишет:А можно..
Andrey пишет: цитата: | А можно как то сделать перевод с одного языка на другой на лету программы ? |
| petr707 пишет: цитата: | Кто переводить-то будет ? |
| можно пойти по такому пути: Переводчик Google
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3791
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.12.14 19:23. Заголовок: Можно ли как то все ..
Dima пишет: цитата: | посмотри для примера сырец dbedit.prg от Паши |
| Посмотрел. Я примерно так же раньше делал. Потом у Григория взял в качестве примера MiniGUI\SAMPLES\Applications\DBFview\source\DBFview.lng но это не совсем то. Я проще хочу поступить. Можно ли как то все сообщения программы записать в файл (включая имена переменных) ? Т.е. по кнопке обход всех форм, считывание Label, FRAME, BUTTONEX и сброс их в файл. А уж из этого файла можно будет отдельную функцию в программе сделать.
|
|
|
Haz
|
| |
Пост N: 382
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.12.14 13:24. Заголовок: Context MENU
Григорий, добрый день. Есть маленький, но неприятный глючок в CONTEXT MENU, причем проявляется не всегда ( Andrey тоже писал тут про него ) Суть его в том , что после выбора пункта меню, само меню не закрывается ( только со второго раза ). У меня это проявляется при использовании контекста в TSBrowse DEFINE CONTEXT MENU CONTROL oBrw OF Win MENUITEM 'Добавить новую статью ' ACTION {|| ... } NAME CM_1 MENUITEM 'Удалить текущую статью' ACTION {|| ... } NAME CM_2 END MENU иногда глюк решался забором фокуса от меню через вывод сообщения по окончании ACTION - MsgBox('что то там выполнено'), но не всегда это вписывается в логику. Перечитав исходники MiniGui нашел в h_Events.prg такие строки: =================[ От сюда ]================= 1400: // Process Menus ....................................... IF HiWord( wParam ) == 0 .AND. _HMG_aControlType == "MENU" _DoControlEventProcedure ( _HMG_aControlProcedures , i ) RETURN 0 ENDIF =================[ До сюда ]================= Судя по всему это и есть вызов того самого ACTION, и подумав что меню лучше закрывать ПЕРЕД этим вызовом - добавил строку =================[ От сюда ]================= 1400: // Process Menus ....................................... IF HiWord( wParam ) == 0 .AND. _HMG_aControlType == "MENU" _CloseMenu() _DoControlEventProcedure ( _HMG_aControlProcedures , i ) RETURN 0 ENDIF =================[ До сюда ]================= Глючок то исчез Грирогий, если эта корректировка правильна, может ее внести в след версию ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 693
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.12.14 15:36. Заголовок: Haz пишет: Грирогий..
Haz пишет: цитата: | Грирогий, если эта корректировка правильна, может ее внести в след версию ? |
| Огромное спасибо за эту корректировку! Уже внес эти изменения в код следующей сборки, которая планируется к выходу на следующей неделе
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 694
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.12.14 15:42. Заголовок: Andrey пишет: обход..
Andrey пишет: цитата: | обход всех форм, считывание Label, FRAME, BUTTONEX и сброс их в файл. |
| Уточнение: обход всех ОТКРЫТЫХ форм Посмотри пример из папки samples\Basic\Form_Controls с обходом для текущей формы
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3799
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.12.14 17:12. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Нет. Хочу обход ВСЕХ форм программы !
|
|
|
Haz
|
| |
Пост N: 383
Зарегистрирован: 20.02.11
|
|
Отправлено: 05.12.14 17:31. Заголовок: Andrey пишет: Нет. ..
Andrey пишет: цитата: | Нет. Хочу обход ВСЕХ форм программы |
| Это как ? т.е. считать контролы формы даже не загруженной в память ? Что то мне подсказывает, что в тут без парсера исходного текста не обойтись, ну или на крайняк декомпилятора P-Code. Иного способа узнать о формах и контролах модуля, который еще может даже и не выволняться - не вижу. PS. хотя может я и ошибаюсь ...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 445
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.12.14 18:26. Заголовок: Haz пишет:PS. хотя м..
Haz пишет: цитата: | PS. хотя может я и ошибаюсь ... |
| FOR i := 1 TO Len( _HMG_aFormNames ) IF _HMG_aFormType[ i ]=='Y' AAdd(aNames, _HMG_aFormNames[ i ] ) ENDIF hForm := _HMG-aFormHandle[ i ] а дальше как в примере по handle все контролы NEXT
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3801
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.12.14 18:41. Заголовок: SergKis пишет: FOR..
SergKis пишет: цитата: | FOR i := 1 TO Len( _HMG_aFormNames ) IF _HMG_aFormType[ i ]=='Y' AAdd(aNames, _HMG_aFormNames[ i ] ) ENDIF hForm := _HMG-aFormHandle[ i ] а дальше как в примере по handle все контролы NEXT |
| Ура ! Значит можно !
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 446
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.12.14 18:46. Заголовок: Andrey пишет:Ура ! З..
Andrey пишет: првильно hForm := _HMG-aFormHandle s[ i ]
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3837
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.12.14 23:26. Заголовок: Во многих примерах М..
Во многих примерах МиниГуи встречаю PlayExclamation() - а музыки нет ! Это для чего ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3839
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.12.14 08:45. Заголовок: И еще вопрос: Очень ..
И еще вопрос: Очень много разрешений экрана сейчас пользователи используют. Как бы определиться - какой размер шрифта нужно устанавливать на разные разрешения экранов ? Т.е. для: 800х600 12-размер шрифта, для 1024х720 14-размер шрифта и т.д. Но может я и не прав... Кто какую зависимость использует ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3848
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.12.14 16:04. Заголовок: Проехали, сделал мет..
Проехали, сделал методом подстановки от разрешения. На глаз вроде нормально. ////////////////////////////////////////////////////////////////////// Function ModeSizeFont() LOCAL nSize IF GetDesktopHeight() == 600 nSize := IIF(LargeFonts(),10,12) ELSEIF GetDesktopHeight() == 768 nSize := IIF(LargeFonts(),12,14) ELSEIF GetDesktopHeight() == 800 nSize := IIF(LargeFonts(),14,16) ELSEIF (GetDesktopHeight() >= 1050 .AND. GetDesktopHeight() <= 1080) nSize := IIF(LargeFonts(),15,18) ELSEIF GetDesktopHeight() == 1152 nSize := IIF(LargeFonts(),18,20) ELSEIF GetDesktopHeight() >= 1200 nSize := IIF(LargeFonts(),22,24) ELSE nSize := 14 ENDIF RETURN nSize
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3861
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.12.14 23:20. Заголовок: Столкнулся с непонят..
Столкнулся с непоняткой. Маленький пример из 2-3 файлов работает без ошибок. Использую функцию FileSize(cFileTransfer) Размер возвращает нормально. Как собираю этот пример со своей системой, то начинаются чудеса... FileSize() возвращает 0 Почему ? МиниГуи последний... Чем заменить можно ? Прогу собираю с ключом -mt (multi/single-thread Harbour VM)
|
|
|
|
Dima
|
| |
Пост N: 4369
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.12.14 23:49. Заголовок: Andrey пишет: Прогу..
Andrey пишет: цитата: | Прогу собираю с ключом -mt (multi/single-thread Harbour VM) |
| А на фик ? Потоки используешь ? Andrey пишет: цитата: | Как собираю этот пример со своей системой, то начинаются чудеса... |
| Может в ней чудеса ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3862
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.12.14 23:52. Заголовок: Dima пишет: А на фи..
Dima пишет: цитата: | А на фик ? Потоки используешь ? |
| Отправка, прием файлов с инета. Без этого ключа тормоза на экране и в проге. Dima пишет: Не знаю как все, но я делаю отдельный пример потом добавляю к основной системе. Вот тогда действительно начинаются чудеса. Я уже писал об этом. Почему то сразу не хватает библиотек, в основном модуле приходиться добавлять эти библиотеки вручную в проектный файл. А отдельный пример даже и не требует перечисления этих библиотек. Наверно это связанно с таблицей построения ехе-файла или что-то в этом роде, не знаю даже в чем дело, могу только предполагать.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3866
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.12.14 11:28. Заголовок: Вопрос который я зад..
Вопрос который я задавал ранее, но так и не получилось у меня. Делаю так: DEFINE TAB Tab_1 AT .... PAGE ' Тест 1 ' //MsgDEBUG( Form_9.Tab_1.Row, Form_9.Tab_1.Col, Form_9.Tab_1.Width, Form_9.Tab_1.Height) - не работает DEFINE TBROWSE oBrw9 AT ХХ+5 , ХХ+5 WIDTH ХХ-10 HEIGHT ХХ-10 ; ...... END TBROWSE END PAGE PAGE ' Тест 2 ' END PAGE END TAB MsgDEBUG( Form_9.Tab_1.Row, Form_9.Tab_1.Col, Form_9.Tab_1.Width, Form_9.Tab_1.Height) - работает !!! Мне нужно вместо ХХ задать координаты Tab_1 ! Т.е. нужно вписать TBROWSE во вкладку PAGE ' Тест 1 '. Как это можно сделать ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3884
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.01.15 23:07. Заголовок: Можно ли объект RADI..
Можно ли объект RADIOGROUP сделать в ДВА столбца ? Может у кого есть готовый пример ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3903
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.01.15 16:53. Заголовок: Всем привет ! Есть ..
Всем привет ! Есть пример \MiniGUI\SAMPLES\BASIC\Grid_4\demo2.prg Я его модифицировал и не знаю как назначить кодовый блок цвета, чтобы как в ACHOICE логический массив позволял/запрещал выбирать элемент меню (в данном случае элемент GRIDa). 1) Как мне изменить блок кода для показа элементов с aLogic == .F./.T. ? LOCAL bColorFore := { | Val, CellRowIndex | iif ( CellRowIndex / 2 == Int( CellRowIndex / 2 ) , ; RGB( aColor2[1],aColor2[2],aColor2[3] ) , RGB( aColor3[1],aColor3[2],aColor3[3] ) ) } LOCAL bColorBack := { | Val, CellRowIndex | iif ( CellRowIndex / 2 == Int( CellRowIndex / 2 ) , ; RGB( aColor[1],aColor[2],aColor[3] ) , RGB( aColor[1],aColor[2],aColor[3] ) ) } 2) И почему то нет возврата выбора из этого меню: ON RELEASE {|| MsgDebug( "Выбрано меню:", cRet) } // возврат из окна Может что не так делаю ? Вот сам пример Grid_5 - Скрытый текст
#include "minigui.ch" STATIC lNolines := .T. // Show / hide the dividing lines in the grid STATIC lCellNavigation := .T. // Set the cell navigation style in the grid STATIC lNoheaders := .T. // Show / hide table headers in the grid /////////////////////////////////////////////////////////////////////////// Procedure Main LOCAL aColor := { 105, 182, 34 } // bright green LOCAL aColor2 := YELLOW LOCAL aColor3 := BLUE LOCAL aBtnColor := WHITE, aBackColor := aColor, cRet := "" LOCAL aHead := {'Menu'}, aImg := MyLoadArray(1), aItems := MyLoadArray(2), aLogic := MyLoadArray(3) LOCAL bColorFore := { | Val, CellRowIndex | iif ( CellRowIndex / 2 == Int( CellRowIndex / 2 ) , ; RGB( aColor2[1],aColor2[2],aColor2[3] ) , RGB( aColor3[1],aColor3[2],aColor3[3] ) ) } LOCAL bColorBack := { | Val, CellRowIndex | iif ( CellRowIndex / 2 == Int( CellRowIndex / 2 ) , ; RGB( aColor[1],aColor[2],aColor[3] ) , RGB( aColor[1],aColor[2],aColor[3] ) ) } SET MULTIPLE OFF SET AUTOADJUST ON DEFINE WINDOW Form_2 ; AT 0,0 ; WIDTH 600 ; HEIGHT 460 ; TITLE 'Grid Colors Demo' ; MAIN ; BACKCOLOR { 0,155,173} /*aBackColor*/ ; FONT 'Tahoma' SIZE 14 ; ON INIT OnInitGrid() ; ON RELEASE {|| MsgDebug( "Выбрано меню:", cRet) } // возврат из окна // Title grid {HEADERS} consists of only one line. // The second line is not visible! Limitation of grid. DEFINE GRID Grid_2 ROW 10 COL 10 WIDTH 570 HEIGHT 300 WIDTHS { 540 } HEADERS aHead ITEMS aItems VALUE 1 ON DBLCLICK { || cRet := Test_Choice(1,aLogic), msgdebug(cRet) } NOLINES lNolines CELLNAVIGATION lCellNavigation SHOWHEADERS lNoheaders FONTBOLD .T. FONTCOLOR BLUE BACKCOLOR aBackColor DYNAMICFORECOLOR { bColorFore , bColorFore, bColorFore } DYNAMICBACKCOLOR { bColorBack, bColorBack, bColorBack } END GRID @ 320,30 LABEL label_1 VALUE "<F4>, <Enter> - choice" ; WIDTH 220 HEIGHT 28 SIZE 12 BOLD TRANSPARENT ON KEY F4 ACTION cRet := Test_Choice(2,aLogic) @ 360, 200 BUTTONEX Button_1 ; WIDTH 170 HEIGHT 35 ; SIZE 11 BOLD ; CAPTION '&Report selection' ; NOHOTLIGHT NOXPSTYLE ; FONTCOLOR WHITE ; BACKCOLOR BLUE ; ACTION cRet := Test_Choice(3,aLogic) @ 360, 400 BUTTONEX Button_2 ; WIDTH 150 HEIGHT 35 ; SIZE 11 BOLD ; CAPTION 'E&xit' ; NOHOTLIGHT NOXPSTYLE ; FONTCOLOR WHITE ; BACKCOLOR RED ; ACTION ThisWindow.Release() END WINDOW CENTER WINDOW Form_2 ACTIVATE WINDOW Form_2 Return cRet /////////////////////////////////////////////////////////////////////////// Procedure OnInitGrid() _HMG_GridSelectedRowForeColor := RED _HMG_GridSelectedRowBackColor := BLACK _HMG_GridSelectedCellForeColor := RED _HMG_GridSelectedCellBackColor := BLACK Form_2.Grid_2.SetFocus Return /////////////////////////////////////////////////////////////////////////// Function MyLoadArray(nVal) Local nI, nJ := 1, nG := 1, aIco := {}, aRows := {}, aLog := {}, aRet AAdd( aIco , "Folder.bmp" ) ; AAdd( aLog , .F. ) AAdd( aRows, { PADC(" Group numba: "+LTRIM(STR(nG))+" ",50,"-") } ) FOR nI := 1 TO 25 AAdd( aIco , "File.bmp" ) AAdd( aRows, { SPACE(5)+"Example filename - "+LTRIM(STR(nJ++))+".txt" } ) AAdd( aLog , .T. ) IF nI % 5 == 0 aIco[nI] := "Folder.bmp" ; aLog[nI] := .F. aRows[nI] := { PADC(" Group numba: "+LTRIM(STR(nG))+" ",50,"-") } nJ := 1 ENDIF NEXT IF nVal == 1 aRet := ACLONE(aIco) ELSEIF nVal == 2 aRet := ACLONE(aRows) ELSEIF nVal == 3 aRet := ACLONE(aLog) ENDIF Return aRet /////////////////////////////////////////////////////////////////////////// FUNCTION Test_Choice( nVal, aLogic ) Local xMenuNum := Form_2.Grid_2.Value Local cMenuName, cRet := "", cText cText := IIF(nVal==2,"You press key [F4]" + CRLF + CRLF,"") cText += IIF(nVal==3,"You press button [Report selection]" + CRLF + CRLF,"") cText += "Menu selection = {" + STR(xMenuNum[1],2)+","+STR(xMenuNum[2],2)+" }" + CRLF + CRLF cMenuName := Alltrim( GetProperty( "Form_2", "Grid_2", "Cell", xMenuNum[1], 1 ) ) cText += "Menu selection = [" + cMenuName + "]" + CRLF + CRLF IF aLogic[xMenuNum[1]] == .F. // игнорирование выбора ELSE MsgInfo( cText ) cRet := cMenuName ThisWindow.Release() ENDIF Return cRet
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 454
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.01.15 12:08. Заголовок: Andrey пишет:И почем..
Andrey пишет: цитата: | И почему то нет возврата выбора из этого меню: |
| Убери ThisWindow.Release в Test_Choice(...) и добавь во все ACTION в конце
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 455
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.01.15 12:13. Заголовок: Andrey пишет:Как мне..
Andrey пишет: цитата: | Как мне изменить блок кода для показа элементов с aLogic |
| также как функция Test_Choice( nVal, aLogic ), обрабатывай и возвращай массив цветов. Вызов в: DYNAMICFORECOLOR myFColor(...) DYNAMICBACKCOLOR myBColor(...)
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3904
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.01.15 13:04. Заголовок: SergKis пишет: Убер..
SergKis пишет: цитата: | Убери ThisWindow.Release в Test_Choice(...) и добавь во все ACTION в конце |
| Понял. Спасибо ! SergKis пишет: цитата: | обрабатывай и возвращай массив цветов. Вызов в: |
| Здесь не понял....
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 456
Зарегистрирован: 17.02.12
|
|
Отправлено: 16.01.15 21:07. Заголовок: Andrey пишет:Здесь н..
Andrey пишет: DYNAMICFORECOLOR myFColor(aLogic) DYNAMICBACKCOLOR myBColor(aLogic) FUNC MyFColor(aLogic) LOCAL aColor := { 105, 182, 34 } // bright green LOCAL aColor2 := YELLOW LOCAL aColor3 := BLUE LOCAL bColorFore LOCAL bColorFore1 := { | Val, CellRowIndex | iif ( CellRowIndex / 2 == Int( CellRowIndex / 2 ) , ; // RGB( aColor2[1],aColor2[2],aColor2[3] ) , RGB( aColor3[1],aColor3[2],aColor3[3] ) ) } // для .F. LOCAL bColorFore2 := { | Val, CellRowIndex | iif ( CellRowIndex / 2 == Int( CellRowIndex / 2 ) , ; // RGB( aColor2[1],aColor2[2],aColor2[3] ) , RGB( aColor3[1],aColor3[2],aColor3[3] ) ) } // для .T. Local xMenuNum := Form_2.Grid_2.Value IF aLogic[xMenuNum[1]] == .F. bColorFore := bColorFore1 ELSE bColorFore := bColorFore2 ENDIF RETURN { bColorFore , bColorFore, bColorFore } FUNC MyBColor(aLogic) LOCAL aColor := { 105, 182, 34 } // bright green LOCAL aColor2 := YELLOW LOCAL aColor3 := BLUE LOCAL bColorBack LOCAL bColorBack1 := { | Val, CellRowIndex | iif ( CellRowIndex / 2 == Int( CellRowIndex / 2 ) , ; // RGB( aColor[1],aColor[2],aColor[3] ) , RGB( aColor[1],aColor[2],aColor[3] ) ) } // для .F. LOCAL bColorBack2 := { | Val, CellRowIndex | iif ( CellRowIndex / 2 == Int( CellRowIndex / 2 ) , ; // RGB( aColor[1],aColor[2],aColor[3] ) , RGB( aColor[1],aColor[2],aColor[3] ) ) } // для .T. Local xMenuNum := Form_2.Grid_2.Value IF aLogic[xMenuNum[1]] == .F. bColorBack := bColorBack1 ELSE bColorBack := bColorBack2 ENDIF RETURN { bColorBack, bColorBack, bColorBack } цвета в блоках кода ...1, ...2 подбирай сам.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3905
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.01.15 11:49. Заголовок: Спасибо БОЛЬШОЕ ! :..
Спасибо БОЛЬШОЕ !
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3908
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.01.15 21:09. Заголовок: А что за ошибка така..
А что за ошибка такая ? Подробней информация как можно получить ? Error MGERROR/0 Grid: ITEMS length mismatch. Program terminated. Called from MSGMINIGUIERROR(91) Called from _DEFINEGRID(140) Called from ACHOICE_HMG(230) Called from ACHOICEMENU(142) Called from LISTSPRAVKI(286) Called from (b)MYINITFORMSPR(173) Called from (b)METRO3BUTTON(40) Called from _DOCONTROLEVENTPROCEDURE(1658) Called from EVENTS(1472) Called from _DOMESSAGELOOP(0) Called from _ACTIVATEWINDOW(1380) Called from HANDBOOKS(83) Called from (b)MAIN(105) Called from _PROCESSINITPROCEDURE(1498) Called from _ACTIVATEWINDOW(1364)
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 463
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.01.15 21:59. Заголовок: Andrey _DEFINEGRID(..
Andrey _DEFINEGRID(140) открываешь h_grid.prg FUNCTION _DefineGrid ( ControlName, ParentFormName, x, y, w, h, aHeaders, aWidths, aRows, value, ; fontname, fontsize, tooltip, change, dblclick, aHeadClick, gotfocus, lostfocus, nogrid, ; aImage, aJust, break, HelpId , bold, italic, underline, strikeout, ownerdata, ondispinfo, ; itemcount, editable, dynamicforecolor, dynamicbackcolor, multiselect, editcontrols, ; backcolor, fontcolor, nId, columnvalid, columnwhen, validmessages, showheaders, aImageHeader, ; NoTabStop, celled, lCheckboxes, lockcolumns ) ... goto line 140 : ... IF ValType ( aRows ) != 'U' IF Len ( aRows ) > 0 IF Len ( aRows[1] ) != Len ( aHeaders ) // а тут бяка MsgMiniGuiError ( "Grid: ITEMS length mismatch." ) // line 140 ENDIF ENDIF ENDIF ... если не понятно, открываешь i_grid.ch и смотришь DEFINE GRID ... как ложаться параметры ... и делаешь выводы
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3909
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.01.15 14:58. Заголовок: SergKis пишет: откр..
SergKis пишет: Взял это файл, поставил к себе в проект. Перед IF ValType ( aRows ) != 'U' поставил: MsgDebug(aRows,"====",aHeaders,"---",Len ( aRows[1] ), Len ( aHeaders )) После компиляции и запуска на этой строке получаю: MsgDebug(Значение_массива,"====",{'Select menu'},"---", 41, 1) и далее вылет по этой же ошибке.... GRID состоит из ОДНОГО столбца, заголовок есть - тоже один ! Почему должна срабатывать ошибка ? Не пойму я что-то ничего в этом.... А если я делаю SHOWHEADERS .F. тогда этот aHeaders вообще не надо учитывать ! Пример был рабочим - растащил на части - не работает...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3912
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.01.15 23:25. Заголовок: Andrey пишет: Приме..
Andrey пишет: цитата: | Пример был рабочим - растащил на части - не работает... |
| Блин, уже не первый раз залетаю, что GRID должен на входе иметь не одинарный массив, а вложенный.... Вставил в рабочий пример - h_grid.prg, в нем натыкал отладки, собираешь пример и видишь - где сам накосячил.... Вопрос решен ! Спасибо SergKis за подсказку решения проблеммы !!!
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3913
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.01.15 20:54. Заголовок: Открываю новую форму..
Открываю новую форму, задаю шрифт и размер на эту форму, далее вызываю функцию, которая строит объекты на форме. Как получить в этой функции, размер и наименование шрифта ? Можно конечно и передавать параметры в новую функцию, но это не есть хорошо. Я видал что можно и так делать: cFontName := _HMG_DefaultFontName // из MiniGUI.Init() nFontSize := _HMG_DefaultFontSize // из MiniGUI.Init() Или это относиться ТОЛЬКО при открытии задачи ? Поясните пожалуйста....
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 464
Зарегистрирован: 17.02.12
|
|
Отправлено: 22.01.15 21:32. Заголовок: Andrey открываешь h..
Andrey открываешь h_windows.prg и : FUNCTION _DefineWindow ( FormName, Caption, x, y, w, h, nominimize, nomaximize, nosize, nosysmenu, nocaption, aMin, aMax, ; InitProcedure, ReleaseProcedure, MouseDragProcedure, SizeProcedure, ClickProcedure, MouseMoveProcedure, aRGB, PaintProcedure, ; noshow, topmost, main, icon, child, fontname, fontsize, NotifyIconName, NotifyIconTooltip, NotifyIconLeftClick, ; GotFocus, LostFocus, VirtualHeight, VirtualWidth, scrollleft, scrollright, scrollup, scrolldown, hscrollbox, vscrollbox, helpbutton, ; MaximizeProcedure, MinimizeProcedure, cursor, NoAutoRelease, InteractiveCloseProcedure, ; RestoreProcedure, MoveProcedure, DropProcedure, mdi, palette, NotifyIconDblClick, cPanelParent, panel ) ... _HMG_ActiveFontName := IFCHARACTER( FontName, FontName, "" ) _HMG_ActiveFontSize := IFNUMBER( FontSize, FontSize, 0 ) ... если empty(_HMG_ActiveFontName), то берешь _HMG_DefaultFontName аналогично _HMG_ActiveFontSize и _HMG_DefaultFontSize
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3914
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.01.15 19:54. Заголовок: SergKis пишет: откр..
SergKis пишет: цитата: | открываешь h_windows.prg и : |
| Спасибо !!!
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3915
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.01.15 20:00. Заголовок: Как отловить ошибку ..
Как отловить ошибку в МиниГуи ? Как сделать, чтобы такого не было ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 465
Зарегистрирован: 17.02.12
|
|
Отправлено: 23.01.15 20:25. Заголовок: Andrey пишет:Как отл..
Andrey пишет: цитата: | Как отловить ошибку в МиниГуи ? |
| см. SAMPLES\BASIC\MyErrorFunc
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3916
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.01.15 21:15. Заголовок: SergKis пишет: см. ..
SergKis пишет: цитата: | см. SAMPLES\BASIC\MyErrorFunc |
| Спасибо за это ! Как это побороть ? Чтобы ошибка была ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3935
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.01.15 23:17. Заголовок: Andrey пишет: Тольк..
Andrey пишет: цитата: | Только при неправильном dbSetRelation( cTemp2, {|| &cTemp1}, cTemp1 ) программа вылетает БЕЗ ОШИБКИ с таким видом: |
| Народ, а у вас как вылетает при неправильно заданном dbSetRelation() ?
|
|
|
Dima
|
| |
Пост N: 4426
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.01.15 23:41. Заголовок: Andrey пишет: Народ..
Andrey пишет: цитата: | Народ, а у вас как вылетает при неправильно заданном dbSetRelation() ? |
| У меня ни как. Таких ошибок просто не делаю.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3944
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.02.15 17:32. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | С помощью WinAPI надо переопределить statusbar item как самописный (ownerdraw), послав ему собщение SendMessage( hwndSb, SB_SETTEXT, hb_BitOr( IDS_STATUSBAR, SBT_OWNERDRAW ), IDS_STATUSBAR ). В первом приближении это может выглядеть как в примере ниже Скрытый текст |
| А можете эту программ чуток подробне прокоментировать ? Не совсем понял что делает и когда: SET EVENTS FUNCTION TO MYEVENTS Как в основной программе задать цвет и фон StatusBar'a.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 715
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.02.15 17:56. Заголовок: Andrey пишет: Как в..
Andrey пишет: цитата: | Как в основной программе задать цвет и фон StatusBar'a |
| По шагам: 1) получаем хэндл статусбара hwndSb := GetControlHandle ( _HMG_ActiveMessageBarname, _HMG_ActiveFormName ) 2) переназначаем требуемый участок этого статусбара как ownerdraw SendMessage( hwndSb, SB_SETTEXT, hb_BitOr( IDS_STATUSBAR, SBT_OWNERDRAW ), IDS_STATUSBAR ) 3) обрабатываем в пользовательской функции MyEvents() событие WM_DRAWITEM, в котором сами рисуем надпись на заданном участке. См. доработанный пример ниже Скрытый текст
#include "i_winuser.ch" #include "minigui.ch" #define APP_TITLE "Hello World!" #define SB_SETTEXT (WM_USER+1) #define SBT_OWNERDRAW 0x1000 #define IDS_STATUSBAR 0 /* */ Function Main Local hwndSb SET EVENTS FUNCTION TO MYEVENTS DEFINE WINDOW Win_1 ; AT 0,0 ; WIDTH 400 ; HEIGHT 400 ; TITLE APP_TITLE ; MAIN DEFINE STATUSBAR FONT "Arial" SIZE 12 hwndSb := GetControlHandle ( _HMG_ActiveMessageBarname, _HMG_ActiveFormName ) STATUSITEM "Dummy" STATUSITEM "Dummy" WIDTH 92 END STATUSBAR END WINDOW SendMessage( hwndSb, SB_SETTEXT, hb_BitOr( IDS_STATUSBAR, SBT_OWNERDRAW ), IDS_STATUSBAR ) SendMessage( hwndSb, SB_SETTEXT, hb_BitOr( 1, SBT_OWNERDRAW ), 1 ) CENTER WINDOW Win_1 ACTIVATE WINDOW Win_1 Return Nil *----------------------------------------------------------* Function MyEvents ( hWnd, nMsg, wParam, lParam ) *----------------------------------------------------------* local i, a, hBrush do case **************************************************** case nMsg == WM_DRAWITEM **************************************************** i := AScan ( _HMG_aFormHandles , hWnd ) IF i > 0 .AND. _IsControlDefined ( "StatusBar" , _HMG_aFormNames [ i ] ) a := GETOWNBTNRECT(lParam) hBrush := CreateSolidBrush( 255, 255, 225 ) FillRect( GETOWNBTNDC(lParam), a[ 1 ], a[ 2 ], a[ 3 ], a[ 4 ], hBrush ) DeleteObject( hBrush ) IF GETOWNBTNITEMID(lParam) == IDS_STATUSBAR TextOut( a[ 1 ] + 1, a[ 2 ] + 1, "New Value", GETOWNBTNDC(lParam), RGB( 0, 0, 255 ) ) ELSE TextOut( a[ 1 ] + 1, a[ 2 ] + 1, "New Value", GETOWNBTNDC(lParam), RGB( 255, 0, 0 ) ) ENDIF ENDIF otherwise Events( hWnd, nMsg, wParam, lParam ) endcase Return (0) #pragma BEGINDUMP #include "hbapi.h" #include "windows.h" HB_FUNC ( TEXTOUT ) { HDC hdc = (HDC) hb_parnl( 4 ); SetTextColor( hdc, hb_parnl( 5 ) ); SetBkMode( hdc, TRANSPARENT ); TextOut( hdc, hb_parni(1), hb_parni(2), hb_parc(3), strlen(hb_parc(3)) ) ; SetBkMode( hdc, OPAQUE ); DeleteDC( hdc ) ; } #pragma ENDDUMP
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3945
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.02.15 18:43. Заголовок: Вылетает по ошибке. ..
Вылетает по ошибке. IF i > 0 .AND. _IsControlDefined ( "StatusBar" , _HMG_aFormNames ) Error BASE/1081 Argument error: + Called from _ISCONTROLDEFINED(1039) Called from MYEVENTS(55) Called from UPDATEWINDOW(0) Called from EVENTS(634) Called from MYEVENTS(72) Called from SHOWWINDOW(0) Called from _ACTIVATEWINDOW(1360) Called from MAIN(37)
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 716
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.02.15 18:47. Заголовок: Andrey пишет: Вылет..
Andrey пишет: Это из-за форматирования форума - уже поправил код в сообщении выше
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3946
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.02.15 21:37. Заголовок: Работает ! Осталось ..
Работает ! Осталось как то параметры цвета передавать ....
|
|
|
Dima
|
| |
Пост N: 4483
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.02.15 22:14. Заголовок: Andrey пишет: Остал..
Andrey пишет: цитата: | Осталось как то параметры цвета передавать ... |
| Они задаются в этом примере в MyEvents() и похоже красятся все ITEMы а как покрасит конкретный ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 717
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.02.15 22:38. Заголовок: Dima пишет: как по..
Dima пишет: цитата: | как покрасит конкретный ? |
| Для этого надо сделать само-нарисованным ( Ownerdraw) только этот конкретный участок статусной строки. См. рабочий пример ниже Скрытый текст
#include "i_winuser.ch" #include "minigui.ch" #define APP_TITLE "Hello World!" #define SB_SETTEXT (WM_USER+1) #define SBT_OWNERDRAW 0x1000 #define IDS_STATUSBAR 0 /* */ Function Main Local hwndSb SET EVENTS FUNCTION TO MYEVENTS DEFINE WINDOW Win_1 ; AT 0,0 ; WIDTH 400 ; HEIGHT 400 ; TITLE APP_TITLE ; MAIN DEFINE STATUSBAR FONT "Arial" SIZE 12 hwndSb := GetControlHandle ( _HMG_ActiveMessageBarname, _HMG_ActiveFormName ) STATUSITEM "Item 0" STATUSITEM "Item 1" WIDTH 92 STATUSITEM "Item 2" WIDTH 92 END STATUSBAR END WINDOW // SendMessage( hwndSb, SB_SETTEXT, hb_BitOr( IDS_STATUSBAR, SBT_OWNERDRAW ), IDS_STATUSBAR ) SendMessage( hwndSb, SB_SETTEXT, hb_BitOr( 1, SBT_OWNERDRAW ), 1 ) // SendMessage( hwndSb, SB_SETTEXT, hb_BitOr( 2, SBT_OWNERDRAW ), 2 ) CENTER WINDOW Win_1 ACTIVATE WINDOW Win_1 Return Nil *----------------------------------------------------------* Function MyEvents ( hWnd, nMsg, wParam, lParam ) *----------------------------------------------------------* local i, a, hBrush, hDC do case **************************************************** case nMsg == WM_DRAWITEM **************************************************** i := AScan ( _HMG_aFormHandles, hWnd ) IF i > 0 .AND. _IsControlDefined ( "StatusBar", _HMG_aFormNames [ i ] ) a := GETOWNBTNRECT( lParam ) hDC := GETOWNBTNDC( lParam ) IF GETOWNBTNITEMID( lParam ) == IDS_STATUSBAR hBrush := CreateSolidBrush( 225, 225, 225 ) FillRect( hDC, a[ 1 ], a[ 2 ], a[ 3 ], a[ 4 ], hBrush ) DeleteObject( hBrush ) TextOut( a[ 1 ] + 1, a[ 2 ], "New Value", hDC, RGB( 0, 0, 255 ) ) ELSE hBrush := CreateSolidBrush( 225, 225, 0 ) FillRect( hDC, a[ 1 ], a[ 2 ], a[ 3 ], a[ 4 ], hBrush ) DeleteObject( hBrush ) TextOut( a[ 1 ] + 1, a[ 2 ], "New Value", hDC, RGB( 255, 0, 0 ) ) ENDIF ENDIF otherwise Events( hWnd, nMsg, wParam, lParam ) endcase Return (0) #pragma BEGINDUMP #include "hbapi.h" #include "windows.h" HB_FUNC ( TEXTOUT ) { HDC hdc = ( HDC ) hb_parnl( 4 ); SetTextColor( hdc, hb_parnl( 5 ) ); SetBkMode( hdc, TRANSPARENT ); TextOut( hdc, hb_parni( 1 ), hb_parni( 2 ), hb_parc( 3 ), strlen( hb_parc( 3 ) ) ); SetBkMode( hdc, OPAQUE ); } #pragma ENDDUMP
|
|
|
|
Dima
|
| |
Пост N: 4484
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.02.15 23:06. Заголовок: gfilatov2002 Понял...
gfilatov2002 Понял. Спасибо
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3947
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.02.15 23:18. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Для этого надо сделать само-нарисованным (Ownerdraw) только этот конкретный участок статусной строки. |
| Блин, а я StatusBar делал самописный из LABEL.... Столько кода написать пришлось для пересчета при изменение размеров окна....
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3948
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.02.15 23:31. Заголовок: А если сделать так: ..
А если сделать так: LOCAL aBackColor := {0,64,80} .... DEFINE WINDOW Win_1 ; BACKCOLOR aBackColor ; ..... Как тогда фон всего STATUSBAR сделать цветом aBackColor ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 718
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.02.15 14:25. Заголовок: Andrey пишет: Как т..
Andrey пишет: цитата: | Как тогда фон всего STATUSBAR сделать цветом aBackColor ? |
| Планирую добавить новые свойства BACKCOLOR и FONTCOLOR для STATUSITEM в следующей сборке. Тогда можно будет записать так: #include "minigui.ch" #define APP_TITLE "Hello World!" Function Main LOCAL aBackColor := {0,64,80} DEFINE WINDOW Win_1 ; AT 0,0 ; WIDTH 400 ; HEIGHT 400 ; TITLE APP_TITLE ; MAIN ; BACKCOLOR aBackColor DEFINE STATUSBAR FONT "Arial" SIZE 10 STATUSITEM "Item 0" BACKCOLOR aBackColor STATUSITEM "Item 1" WIDTH 92 BACKCOLOR aBackColor FONTCOLOR YELLOW STATUSITEM "Item 2" WIDTH 92 BACKCOLOR aBackColor END STATUSBAR END WINDOW CENTER WINDOW Win_1 ACTIVATE WINDOW Win_1 Return Nil
|
|
|
Dima
|
| |
Пост N: 4488
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.02.15 14:28. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Планирую добавить новые свойства BACKCOLOR и FONTCOLOR для STATUSITEM |
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 719
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.02.15 16:26. Заголовок: Dima Хочу уточнить,..
Dima Хочу уточнить, что я имел в виду следующую сборку 2.4.5, поскольку эти новые свойства требуют дополнительного тестирования. Уже сейчас вижу, что они НЕ совместимы с классом ICON для STATUSITEM
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3951
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.02.15 16:39. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Хочу уточнить, что я имел в виду следующую сборку 2.4.5 |
| Подождем ! Спасибо !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3960
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.02.15 12:14. Заголовок: В терминалке на хХар..
В терминалке на хХарборе использую базы в 866 кодировке. Символы CHR(250)-CHR(253) пишутся в текстовые поля базы нормально ! Пытаюсь то же самое сделать под МиниГуи не выходит, коды другие: Как записать в поле базы символы CHR(250)-CHR(253) ?
|
|
|
nick_mi
|
| |
Пост N: 159
Зарегистрирован: 19.05.05
|
|
Отправлено: 18.02.15 16:24. Заголовок: Repl pole with chr(2..
Repl pole with chr(250)+ chr(253) не пробовал? На всякий случай попробуй
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3981
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.02.15 15:08. Заголовок: Всем привет. Делал о..
Всем привет. Делал окошко для проверки базы с двумя бегунками. Причем второй бегунок использовал два раза ( с разными цветами) на копирование файла ( синий) и переброску записей с одной базы в другую ( зеленый). И столкнулся с непоняткой, при переброске записей ( зеленый цвет) вылазит синий цвет ? Наверно нужно как то объект чистить (хотя пользуюсь только DRAW RECTANGLE ) ... А может и не надо... Подскажите как убрать паразитирующий цвет ( синий) ? Исходник CheckDbf.7z здесь - https://cloud.mail.ru/public/5d315f972a72/MiniGui-Error
|
|
|
Dima
|
| |
Пост N: 4523
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.02.15 18:53. Заголовок: Andrey пишет: И сто..
Andrey пишет: цитата: | И столкнулся с непоняткой, при переброске записей (зеленый цвет) вылазит синий цвет ? |
| Собрал пример и такого эффекта не увидел. Нижний бегунок меняется нормально с синего на зеленый , потом снова синий потом зеленый. Единственно что когда рисуется зеленый бегунок то он дергается как не нормальный ))))) Синий идет красиво. PS Чем принципиально отличается InkeyGUI() от Inkey() ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3982
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.02.15 03:13. Заголовок: Dima пишет: Единств..
Dima пишет: цитата: | Единственно что когда рисуется зеленый бегунок то он дергается как не нормальный ))))) |
| Вот это и есть фигня ! Как убрать и в чём дело не знаю !!! Dima пишет: цитата: | Чем принципиально отличается InkeyGUI() от Inkey() ? |
| Inkey() только для задержки форма висит и всё ! А InkeyGUI() нужно использовать чтобы на форме объекты перерисовались.
|
|
|
Dima
|
| |
Пост N: 4524
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.02.15 09:53. Заголовок: Andrey Закоменти в ..
Andrey Закоменти в функции MyCopyBase строки cSay := "БД: " + cFile + " " + HB_NtoS(nJ) + "/" + HB_NtoS(nRecnoAll) + " - прошло ХХ:ХХ / осталось ХХ:ХХ" SetProperty(cStForm,"Label_File2","Value", cSay ) и дергаться перестанет.
|
|
|
Haz
|
| |
Пост N: 468
Зарегистрирован: 20.02.11
|
|
Отправлено: 24.02.15 13:38. Заголовок: Andrey пишет: Вот э..
Andrey пишет: цитата: | Вот это и есть фигня ! Как убрать и в чём дело не знаю |
| Эта фигня возникает из-за "непрофильного" использования DRAW да еще в цикле. По сути происходит следующее : Каждый вызов DRAW помимо того что рисует кусок псевдопрогрессбара на форме, так еще и запоминает в системной переменной MiniGui блок вызова этого самого DRAW с указанными параметрами ( что рисуем, по каким координатам, каким цветом, в каком окне ... ) Это нужно для того чтобы при изменении видимости окна - восстанавливать на нем все эти художества автоматически по сабытиям ( перемещение , прорисовка окна и пр ). Теперь что происходит в программе ( на пальцах): Каждый вызов DRAW - запоминает свой кодовый блок , при выводе Label идет перерисовка области окна и .....автоматом идет выполнение ВСЕХ предыдущих прорисовок DRAW отсюlа и моргание. Достаточно посмотреть исходники h_draw.prg и h_events.prg это в h_draw FUNCTION drawrect( window, row, col, row1, col1, penrgb, penwidth, fillrgb ) ... rectdraw( FormHandle, row, col, row1, col1, penrgb, penwidth, fillrgb, fill ) AAdd ( _HMG_aFormGraphTasks , { || rectdraw( FormHandle,row,col,row1,col1,penrgb,penwidth,fillrgb,fill ) } ) ... RETURN nil это в h_events CASE WM_PAINT FOR EACH r In _HMG_aFormHandles IF _HMG_aFormDeleted [z] == .F. a := _HMG_aFormGraphTasks [z] IF ISARRAY ( a ) .AND. Len ( a ) > 0 AEval ( a, { |x| Eval ( x ) } ) ENDIF ENDIF NEXT убрать просто - использовать штатный прогрессбар, или перед вызовом DRAW влепить костыль вида ASize ( _HMG_aFormGraphTasks [GetFormIndex ( cWindowName )], 0 ), который просто обнуляет массив кодовых блоков DRAW и при этом НЕ ГАРАНТИРУЕТСЯ корректная работа в последующих версиях MiniGui, и соответственно ГАРАНТИРУЕТСЯ гемморой с поддержкой такой программы у заказчика
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3983
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.02.15 16:48. Заголовок: Спасибо БОЛЬШОЕ за р..
Спасибо БОЛЬШОЕ за разъяснения Haz Можно ли тогда в стандартном штатном прогрессбар изменить цвет бегунка ?
|
|
|
Haz
|
| |
Пост N: 470
Зарегистрирован: 20.02.11
|
|
Отправлено: 24.02.15 16:53. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно ли тогда в стандартном штатном прогрессбар изменить цвет бегунка |
| Условно да, вот из справки по Minigui Note: SMOOTH, BACKCOLOR & FORECOLOR has no effect when XP-Style is used
|
|
|
Haz
|
| |
Пост N: 471
Зарегистрирован: 20.02.11
|
|
Отправлено: 24.02.15 17:45. Заголовок: Andrey Если уж хоч..
Andrey Если уж хочется нестандарта - то рекомендую прогрессбар рисовать фоном стандартного элемента LABEL это сработает и даже быстрее чем DRAW как демонстрация поправь в своей проге LABEL_1 ( TRANSPORENT УБРАТЬ ) @ 15,10 LABEL Label_1 ; WIDTH 0 HEIGHT 20 ; // VALUE cTitle BOLD ; FONTCOLOR BLACK ; BACKCOLOR RED ; CENTERALIGN VCENTERALIGN а Перед DRAW в custom progress вставь строку SetProperty( cWindowName, "Label_1", "Width", nFinishCol ) Дальше уверен сам все увидишь
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3984
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.02.15 21:26. Заголовок: Haz пишет: Если уж ..
Haz пишет: цитата: | Если уж хочется нестандарта - то рекомендую прогрессбар рисовать фоном стандартного элемента LABEL это сработает и даже быстрее чем DRAW |
| Спасибо за идею. Буду пробовать. А заодно - насчет нестандарта: а LABEL можно сделать какой нибудь - "заливкой" ? Типа как шапка заголовка в TBROWSE, там 2 цвета используется.
|
|
|
Dima
|
| |
Пост N: 4529
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.02.15 21:53. Заголовок: Andrey пишет: а LAB..
Andrey пишет: цитата: | а LABEL можно сделать какой нибудь - "заливкой" ? |
| Не оно ? @ <nRow> ,<nCol> LABEL <ControlName> [ ID <nId> ] [ OF | PARENT | DIALOG <ParentWindowName> ] VALUE <cValue> [ ACTION | ONCLICK | ON CLICK <ActionProcedureName> | <bBlock> ] [ ON MOUSEHOVER | ONMOUSEHOVER> <OverProcedureName> | <bBlock> [ ON MOUSELEAVE | ONMOUSELEAVE > <LeaveProcedureName> | <bBlock> ] ; [ WIDTH <nWidth> ] [ HEIGHT <nHeight> ] [ AUTOSIZE ] [ FONT <cFontname> SIZE <nFontsize> ] [ BOLD ] [ ITALIC ] [ UNDERLINE ] [ STRIKEOUT ] [ TOOLTIP <cToolTipText> ] [ BACKCOLOR <anBackColort> ] [ FONTCOLOR <anFontColor>] [ BORDER ] [ CLIENTEDGE ] [ HSCROLL ] [ VSCROLL ] [ TRANSPARENT ] [ BLINK ] [ RIGHTALIGN | CENTERALIGN ] [ HELPID <nHelpId> ] [ INVISIBLE ]
|
|
|
Haz
|
| |
Пост N: 472
Зарегистрирован: 20.02.11
|
|
Отправлено: 24.02.15 22:28. Заголовок: Andrey пишет: Типа ..
Andrey пишет: цитата: | Типа как шапка заголовка в TBROWSE |
| ну так и делай прогресс из TsBrowsa... 10 мин потратил на пример, дальше сам ++++++++++++++++++++++++++++++++ #include "minigui.ch" #include "tsbrowse.ch" Procedure Main() Public oBrw1 Public aDatos_origen DEFINE WINDOW Form1 ; AT 0,0 ; WIDTH 840 ; HEIGHT 480 ; TITLE "TsBrowse Progressbar Test" ; MAIN ; FONT 'Tahoma' SIZE 9 Sample1() END WINDOW DEFINE TIMER Timer_1 OF Form1 INTERVAL 100 ACTION TimerProc() ACTIVATE WINDOW Form1 Return *-------------------------------------------------------------- Function Sample1() aDatos_origen := {} AADD( aDatos_origen, {""} ) IF !_IsControlDefined ("oBrw1", "Form1") DEFINE TBROWSE oBrw1 ; AT 60,10 ; OF Form1 ; WIDTH 800 ; HEIGHT 30 ; FONT "Verdana" ; SIZE 9 ; GRID oBrw1:SetArray( aDatos_origen ) oBrw1:nHeightCell := 29 oBrw1:nHeighthEAD := 0 oBrw1:lNoVScroll := .T. oBrw1:lNoHScroll := .T. oBrw1:SetColor( { 2 }, { { Rgb( 255, 250, 205 ), Rgb( 200, 200, 200 ) } } ) oBrw1:SetColor( { 6 }, { { RGB( 43, 149, 168 ), RGB( 0, 74, 104 )} } ) ADD COLUMN TO TBROWSE oBrw1 DATA ARRAY ELEMENT 1 SIZE 1 END TBROWSE ENDIF Return Nil Func TimerProc() oBrw1:SetColSize( 1, oBrw1:aColSizes[1] +5 ) Return nil
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3985
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.02.15 22:53. Заголовок: Haz пишет: а Перед ..
Haz пишет: цитата: | а Перед DRAW в custom progress вставь строку SetProperty( cWindowName, "Label_1", "Width", nFinishCol ) |
| Сделал пример по твоему совету ! То что надо ! Классно работает !!! Dima пишет: Да нет... Как получить вот такую заливку как в Tbrowse: oBrw:SetColor( { 4 }, { { || { RGB(43,149,168), RGB(0,54,94) } } } ) // 4 , цвет фона шапка таблицы Как сделать такую же заливку на объектах: LABEL или BUTTONEX ?
|
|
|
Haz
|
| |
Пост N: 473
Зарегистрирован: 20.02.11
|
|
Отправлено: 25.02.15 11:03. Заголовок: Andrey пишет: BUTTO..
Andrey пишет: Что касается кнопок .... у тебя это есть ? C:\MiniGUI\SAMPLES\Advanced\ExpButton\
|
|
|
Haz
|
| |
Пост N: 474
Зарегистрирован: 20.02.11
|
|
Отправлено: 25.02.15 11:27. Заголовок: рабочий пример на ос..
рабочий пример на основе TSBROWS #include "minigui.ch" #include "tsbrowse.ch" Procedure Main() DEFINE WINDOW Form1 AT 0,0 WIDTH 840 HEIGHT 480 TITLE "TsBrowse Progressbar Test" MAIN FONT 'Tahoma' SIZE 9 END WINDOW DEFINE TBROWSE oBrw1 AT 60,10 OF Form1 WIDTH 800 HEIGHT 21 FONT "Verdana" SIZE 9 GRID END TBROWSE oBrw1:SetArray( {{''}} , .T.) oBrw1:nHeightCell := oBrw1:nHeight-1 oBrw1:nHeightHead := 0 oBrw1:lNoVScroll := .T. oBrw1:lNoHScroll := .T. oBrw1:aColumns[1]:nAlign := DT_CENTER oBrw1:SetColor( { 5 }, { RGB(255,255,255) } ) oBrw1:SetColor( { 2 }, { { Rgb( 255, 250, 205 ), Rgb( 200, 200, 200 ) } } ) oBrw1:SetColor( { 6 }, { { RGB( 43, 149, 168 ), RGB( 0, 74, 104 )} } ) DEFINE TIMER Timer_1 OF Form1 INTERVAL 100 ACTION TimerProc() ACTIVATE WINDOW Form1 Return Nil Func TimerProc() IF oBrw1:aColSizes[1] < oBrw1:nWidth oBrw1:aColumns[ 1 ]:nWidth := oBrw1:aColSizes[1] + 5 oBrw1:aColSizes[ 1 ] := oBrw1:aColSizes[1] + 5 oBrw1:aArray[ 1, 1 ] := Ntoc(oBrw1:aColSizes[1]) oBrw1:Refresh(.F.) END Return nil
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3986
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.02.15 13:00. Заголовок: Haz пишет: рабочий ..
Haz пишет: цитата: | рабочий пример на основе TSBROWS |
| Пример классный ! Нужно бы в библиотеку примеров поставить... Такой и не придумаешь сам... Haz пишет: цитата: | Что касается кнопок .... у тебя это есть ? C:\MiniGUI\SAMPLES\Advanced\ExpButton\ |
| Да есть. Смотрел его и ранее... Но как любит писать Дима - очень много букв... Слишком много вариантов, которые не нужны сейчас и не подходят (не то) для: oBrw:SetColor( { 4 }, { { || { RGB(43,149,168), RGB(0,54,94) } } } ) // 4 , цвет фона шапка таблицы Попроще нет примера ?
|
|
|
Haz
|
| |
Пост N: 475
Зарегистрирован: 20.02.11
|
|
Отправлено: 25.02.15 13:50. Заголовок: Andrey пишет: Попро..
Andrey пишет: Можешь кнопку из TSBrowse сделать из заголовка - он поддерживает визуальный клик и будет именно oBrw:SetColor( { 4 }, { { || { RGB(43,149,168), RGB(0,54,94) } } } )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3987
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.02.15 20:58. Заголовок: Не, мне кнопку не на..
Не, мне кнопку не надо. Надо получить заливку как TSBrowse. Посмотрел исходник, ничего не понял как оттуда вытащить заливку....
|
|
|
Haz
|
| |
Пост N: 476
Зарегистрирован: 20.02.11
|
|
Отправлено: 25.02.15 21:46. Заголовок: Andrey пишет: Надо ..
Andrey пишет: цитата: | Надо получить заливку как TSBrowse. |
| нарисуй ее в любой графике и поставь как паттерн на кнопку
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3990
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.02.15 21:48. Заголовок: Haz пишет: поставь..
Haz пишет: цитата: | поставь как паттерн на кнопку |
| Это как ?
|
|
|
Haz
|
| |
Пост N: 477
Зарегистрирован: 20.02.11
|
|
Отправлено: 25.02.15 22:50. Заголовок: Andrey пишет: Это к..
Andrey пишет: Андрей, ты издеваешься у buttonEx есть пропертя Picture... 1 рисуешь в граф редакторе свою кнопку с какой хош заливкой на весь размер, 2 сохраняешь ее как bmp 3 DEFINE BUTTONEX Button_1 ... PICTURE "Image_1.bmp" ... END BUTTONEX 4 по желанию используешь On MOUSEHOVER и MOUSELEAVE для смены картинки
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3993
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.02.15 00:17. Заголовок: Haz пишет: Андрей, ..
Haz пишет: Нисколько. У меня не получилось растянуть картинку на всю кнопку. Если задаю глупые вопросы, прошу не обижаться ! Не получилось что-то вот и задаю.... Буду пробовать тогда еще раз.
|
|
|
Haz
|
| |
Пост N: 479
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.02.15 14:32. Заголовок: продолжу про прогрес..
продолжу про прогрессбар из TsBrows с удивлением обнаружил если в градиентной заливке ВТОРОЙ цвет сделать отрицательным - то градиент из вертикального стоновится горизонтальным ..... сижу гадаю вот пример #include "minigui.ch" #include "tsbrowse.ch" Procedure Main() DEFINE WINDOW Form1 AT 0,0 WIDTH 840 HEIGHT 200 TITLE "TsBrowse Progressbar Test" MAIN FONT 'Tahoma' SIZE 9 END WINDOW DEFINE TBROWSE oBrw1 AT 60,10 OF Form1 WIDTH 800 HEIGHT 20 FONT "Verdana" SIZE 9 GRID END TBROWSE oBrw1:SetArray( {{''}} , .T.) oBrw1:nHeightCell := oBrw1:nHeight-1 oBrw1:nHeightHead := 0 oBrw1:lNoVScroll := .T. oBrw1:lNoHScroll := .T. oBrw1:SetColSize(1, 0) oBrw1:aColumns[1]:nAlign := DT_CENTER oBrw1:SetColor( { 5 }, { RGB(255,255,255) } ) // oBrw1:SetColor( { 2 }, { { Rgb( 255, 250, 205 ), -Rgb( 200, 200, 200 ) } } ) oBrw1:SetColor( { 2 }, { { Rgb( 130, 210, 200 ), -Rgb( 255, 250, 205 ) } } ) oBrw1:SetColor( { 6 }, { { RGB( 43, 189, 198 ), -RGB( 0, 74, 134 )} } ) oBrw1:SetColor( { 12 }, { { RGB( 43, 189, 198 ), -RGB( 0, 74, 134 )} } ) DEFINE TBROWSE oBrw2 AT 100,10 OF Form1 WIDTH 100 HEIGHT 32 FONT "Verdana" SIZE 9 GRID END TBROWSE oBrw2:SetArray( {{''}} , .T.) oBrw2:nHeightCell := 1 oBrw2:nHeightHead := oBrw2:nHeight-2 oBrw2:lNoVScroll := .T. oBrw2:lNoHScroll := .T. oBrw2:lNoChangeOrd := .T. oBrw2:nColOrder := 0 oBrw2:aColumns[1]:bHLClicked := { || Test()} oBrw2:aColumns[1]:cHeading := "Click me" oBrw2:SetColSize(1, oBrw2:nWidth) oBrw2:aColumns[1]:nAlign := DT_CENTER oBrw2:SetColor( { 3 }, { RGB(255,255,255) } ) oBrw2:SetColor( { 4 }, { { RGB( 43, 189, 198 ), RGB( 0, -74, -255 )} } ) ACTIVATE WINDOW Form1 Return Nil Func Test() oBrw1:aColumns[ 1 ]:nWidth := 0 oBrw1:aColSizes[ 1 ] := 0 oBrw1:aArray[ 1, 1 ] := Ntoc(oBrw1:aColSizes[1]) oBrw1:Refresh(.F.) oBrw1:SetFocus() While oBrw1:aColSizes[1] < oBrw1:nWidth oBrw1:aColumns[ 1 ]:nWidth := oBrw1:aColSizes[1] + 5 oBrw1:aColSizes[ 1 ] := oBrw1:aColSizes[1] + 5 oBrw1:aArray[ 1, 1 ] := Ntoc(oBrw1:aColSizes[1]) oBrw1:Refresh(.F.) do Events inkey(0.01) END Return nil
|
|
|
Dima
|
| |
Пост N: 4547
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.02.15 20:42. Заголовок: Haz пишет: то гради..
Haz пишет: цитата: | то градиент из вертикального стоновится горизонтальным ..... сижу гадаю |
| И к чему пришел в итоге ?
|
|
|
Haz
|
| |
Пост N: 481
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.02.15 21:53. Заголовок: Dima пишет: И к чем..
Dima пишет: цитата: | И к чему пришел в итоге ? |
| к недокументированной фиче или багу но как применить еще не придумал
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3996
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.02.15 11:17. Заголовок: Как сделать чтобы в ..
Как сделать чтобы в GET'е слева была картинка, а справа был ввод ? Картинку вывожу просто в GET слева, но мышкой наведешь на GET и картинка исчезает. @ 200, 20 GETBOX Text_Pswd ; HEIGHT 34 WIDTH nWidth-45 ; VALUE cPswd ; PICTURE 'xxx-xxx-xxx-xxx'; SIZE 18 BOLD ; RIGHTALIGN @ 202, 24 IMAGE Img_3 PICTURE 'BMPPASS' WIDTH 72 HEIGHT 30
|
|
|
Haz
|
| |
Пост N: 482
Зарегистрирован: 20.02.11
|
|
Отправлено: 27.02.15 11:45. Заголовок: Andrey пишет: мышк..
Andrey пишет: цитата: | мышкой наведешь на GET и картинка исчезает. |
| выводи перед GET , зачем ты их в пересечение выводишь то? @ 200, 96 GETBOX Text_Pswd ; HEIGHT 34 WIDTH nWidth-45 ; VALUE cPswd ; PICTURE 'xxx-xxx-xxx-xxx'; SIZE 18 BOLD ; RIGHTALIGN @ 202, 24 IMAGE Img_3 PICTURE 'BMPPASS' WIDTH 72 HEIGHT 30
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3997
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.02.15 12:06. Заголовок: Haz пишет: выводи п..
Haz пишет: цитата: | выводи перед GET , зачем ты их в пересечение выводишь то? |
| Хочется покрасивей сделать....
|
|
|
Haz
|
| |
Пост N: 483
Зарегистрирован: 20.02.11
|
|
Отправлено: 27.02.15 12:57. Заголовок: Andrey пишет: Хочет..
Andrey пишет: цитата: | Хочется покрасивей сделать.... |
| и в чем противоречие ? картинка переходит в белый фон и сливается с фоном GET GET начинается сразу после картинки не понял зачем ты их пересекаешь по координатам ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3998
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.02.15 16:10. Заголовок: Фон у картинки белый..
Фон у картинки белый. Если его делать голубеньким то он останется за границей GET'a. Я уже не раз с таким сталкивался... Нужно разместить картинку в GET. Если нельзя, то жалко... Можно ли как то сделать чтобы картинка перечитывалась (обновлялась) после наведения мышки ?
|
|
|
Haz
|
| |
Пост N: 485
Зарегистрирован: 20.02.11
|
|
Отправлено: 27.02.15 16:28. Заголовок: Andrey пишет: Нужн..
Andrey пишет: цитата: | Нужно разместить картинку в GET |
| Можно но справа ...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4032
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.03.15 18:13. Заголовок: Как сделать на одном..
Как сделать на одном окне работу(отображение) других функций ? Т.е. на окно с кнопочками (верхний ряд) нужно: 1) заблокировать кнопки первого ряда (это сделал в отдельной функции) 2) добавить кнопочки (средний ряд) и ожидать от юзера нажатий кнопок. У меня кнопки добавляются в отдельной функции на форму ложатся и сразу происходит возврат из этой функции, т.е. не дает ожидания для выбора из вновь появившихся кнопок среднего ряда.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4033
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.03.15 22:05. Заголовок: Вопрос снят. Сделал ..
Вопрос снят. Сделал тестовый пример - работает. Кому интересно - Скрытый текст /* * MINIGUI - Harbour Win32 GUI library Demo * (c) 2015 Verchenko Andrey <verchenkoag@gmail.com> * */ #include "minigui.ch" #define APP_TITLE 'Checking functions in one form' STATIC aStaticDelObj := {} // which objects you want to remove FUNCTION Main() DEFINE WINDOW Form_Main ; AT 0,0 ; WIDTH 640 HEIGHT 480 ; TITLE APP_TITLE ; MAIN ; BACKCOLOR {159, 191, 236} ; FONT "Tahona" SIZE 14 ; ON INIT MyInit() DEFINE LABEL Label_Title ROW 180 COL 30 WIDTH 600 HEIGHT 50 VALUE '' FONTBOLD .t. FONTCOLOR BLACK TRANSPARENT .t. CENTERALIGN .t. END LABEL DEFINE BUTTONEX BUTTON_EXIT ROW 385 COL 20 WIDTH 580 HEIGHT 35 CAPTION 'Exit' ACTION ThisWindow.Release BACKCOLOR MAROON FONTCOLOR WHITE NOHOTLIGHT .F. NOXPSTYLE .T. HANDCURSOR .T. END BUTTONEX END WINDOW CENTER WINDOW Form_Main ACTIVATE WINDOW Form_Main RETURN NIL ////////////////////////////////////////////////////////////////////////// FUNCTION MyInit(cMenu) Local nI, cButt, cCapt, cMess, bAction Local cForm := "Form_Main", aButton := {} AADD( aButton, { 20, 20,170,35, "Button_1", "Menu 1", {|| MenuTask(1)} } ) AADD( aButton, { 70, 20,170,35, "Button_2", "Menu 2", {|| MenuTask(2)} } ) AADD( aButton, { 20,230,170,35, "Button_3", "Menu 3", {|| MenuTask(3)} } ) AADD( aButton, { 70,230,170,35, "Button_4", "Menu 4", {|| MenuTask(4)} } ) AADD( aButton, { 20,430,170,35, "Button_5", "Menu 5", {|| MenuTask(5)} } ) AADD( aButton, { 70,430,170,35, "Button_6", "Menu 6", {|| MenuTask(6)} } ) // ----------- display button (basic) on the shape ----------- FOR nI := 1 TO LEN(aButton) MyButtonForm(cForm, aButton[nI] ) NEXT RETURN NIL ////////////////////////////////////////////////////////////////////////// FUNCTION MenuTask(nMenu) Local nI, cObj, bAction, cTask Local cForm := "Form_Main", aButton := {} Local aColor := { ORANGE, LGREEN, PURPLE, BLUE, TEAL, AQUA } FOR nI := 1 TO 6 cObj := "Button_" + HB_NtoS(nI) SetProperty( cForm, cObj, "Enabled" , .F.) NEXT Domethod( cForm, "BUTTON_EXIT" , "Hide" ) Form_Main.Label_Title.FontColor := aColor[nMenu] Form_Main.Label_Title.Value := "Carried out menu - " + HB_NtoS(nMenu) // ------- an array of new buttons (Second Level)------------------- AADD( aButton, {220, 60,230,50, "Button2_1", "Second-level menu 1" , {|| MsgInfo("Button 2x1") } } ) AADD( aButton, {220,330,230,50, "Button2_2", "Second-level menu 2" , {|| MsgInfo("Button 2x2") } } ) AADD( aButton, {300, 60,230,50, "Button2_3", "Second-level menu 3" , {|| MsgInfo("Button 2x3") } } ) AADD( aButton, {300,330,230,50, "Button2_4", "Exiting 2 level menu" , {|| ExitSLM() } } ) // ----------- display buttons on the form of the second level ----------- FOR nI := 1 TO LEN(aButton) cButt := aButton[nI,5] AADD( aStaticDelObj, cButt ) // mark the object to remove later MyButtonForm(cForm, aButton[nI], aColor[nMenu] ) NEXT RETURN NIL ////////////////////////////////////////////////////////////////////////// FUNCTION ExitSLM() Form_Main.Label_Title.Value := "" FOR nI := 1 TO 6 cObj := "Button_" + HB_NtoS(nI) SetProperty( "Form_Main", cObj, "Enabled" , .T.) NEXT Domethod( "Form_Main", "BUTTON_EXIT" , "Show" ) // If there are objects in the array, then remove them IF LEN(aStaticDelObj) > 0 FOR nI := 1 TO LEN(aStaticDelObj) cObj := aStaticDelObj[nI] Domethod ( "Form_Main", cObj , "Release" ) NEXT ENDIF aStaticDelObj := {} RETURN NIL ////////////////////////////////////////////////////////////////////////// FUNCTION MyButtonForm(cForm, aDim, aColor) LOCAL cButt := aDim[5], cCapt := aDim[6], bAction := aDim[7] DEFAULT aColor := GRAY DEFINE BUTTONEX &cButt PARENT &cForm ROW aDim[1] COL aDim[2] WIDTH aDim[3] HEIGHT aDim[4] CAPTION cCapt ACTION Eval( bAction ) FONTBOLD .t. LEFTTEXT .t. FONTCOLOR WHITE BACKCOLOR aColor FONTNAME "Tahona" FONTSIZE 14 NOHOTLIGHT .F. NOXPSTYLE .T. HANDCURSOR .T. END BUTTONEX RETURN NIL
| Единственно что не могу понять - как сделать обращение к кнопкам второго уровня, если их вывести скрытыми при инициализации формы ? Но пока этот пример заработал...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 499
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.03.15 00:23. Заголовок: Andrey пишет:как сде..
Andrey пишет: цитата: | как сделать обращение к кнопкам второго уровня |
| ты это имел ввиду ? Скрытый текст /* * MINIGUI - Harbour Win32 GUI library Demo * (c) 2015 Verchenko Andrey <verchenkoag@gmail.com> * */ #include "minigui.ch" #define APP_TITLE 'Checking functions in one form' STATIC aStaticDelObj := {} // which objects you want to remove FUNCTION Main() DEFINE WINDOW Form_Main ; AT 0,0 ; WIDTH 640 HEIGHT 480 ; TITLE APP_TITLE ; MAIN ; BACKCOLOR {159, 191, 236} ; FONT "Tahona" SIZE 14 ; ON INIT MyInit() DEFINE LABEL Label_Title ROW 180 COL 30 WIDTH 600 HEIGHT 50 VALUE '' FONTBOLD .t. FONTCOLOR BLACK TRANSPARENT .t. CENTERALIGN .t. END LABEL DEFINE BUTTONEX BUTTON_EXIT ROW 385 COL 20 WIDTH 580 HEIGHT 35 CAPTION 'Exit' ACTION ThisWindow.Release BACKCOLOR MAROON FONTCOLOR WHITE NOHOTLIGHT .F. NOXPSTYLE .T. HANDCURSOR .T. END BUTTONEX END WINDOW CENTER WINDOW Form_Main ACTIVATE WINDOW Form_Main RETURN NIL ////////////////////////////////////////////////////////////////////////// FUNCTION MyInit(cMenu) Local nI, cButt, cCapt, cMess, bAction Local cForm := "Form_Main", aButton := {} AADD( aButton, { 20, 20,170,35, "Button_1", "Menu 1", {|| MenuTask(1)} } ) AADD( aButton, { 70, 20,170,35, "Button_2", "Menu 2", {|| MenuTask(2)} } ) AADD( aButton, { 20,230,170,35, "Button_3", "Menu 3", {|| MenuTask(3)} } ) AADD( aButton, { 70,230,170,35, "Button_4", "Menu 4", {|| MenuTask(4)} } ) AADD( aButton, { 20,430,170,35, "Button_5", "Menu 5", {|| MenuTask(5)} } ) AADD( aButton, { 70,430,170,35, "Button_6", "Menu 6", {|| MenuTask(6)} } ) // ----------- display button (basic) on the shape ----------- FOR nI := 1 TO LEN(aButton) MyButtonForm(cForm, aButton[nI] ) NEXT RETURN NIL ////////////////////////////////////////////////////////////////////////// FUNCTION MenuTask(nMenu) Local nI, cObj, bAction, cTask Local cForm := "Form_Main", aButton := {} Local aColor := { ORANGE, LGREEN, PURPLE, BLUE, TEAL, AQUA } FOR nI := 1 TO 6 cObj := "Button_" + HB_NtoS(nI) SetProperty( cForm, cObj, "Enabled" , .F.) NEXT Domethod( cForm, "BUTTON_EXIT" , "Hide" ) Form_Main.Label_Title.FontColor := aColor[nMenu] Form_Main.Label_Title.Value := "Carried out menu - " + HB_NtoS(nMenu) Form_Main.Label_Title.Cargo := HB_NtoS(nMenu) // ------- an array of new buttons (Second Level)------------------- AADD( aButton, {220, 60,230,50, "Button2_1", "Second-level menu 1" , {|| MyMsgInfo(1) } } ) AADD( aButton, {220,330,230,50, "Button2_2", "Second-level menu 2" , {|| MyMsgInfo(2) } } ) AADD( aButton, {300, 60,230,50, "Button2_3", "Second-level menu 3" , {|| MyMsgInfo(3) } } ) AADD( aButton, {300,330,230,50, "Button2_4", "Exiting 2 level menu" , {|| ExitSLM() } } ) // ----------- display buttons on the form of the second level ----------- FOR nI := 1 TO LEN(aButton) cButt := aButton[nI,5] AADD( aStaticDelObj, cButt ) // mark the object to remove later MyButtonForm(cForm, aButton[nI], aColor[nMenu] ) NEXT RETURN NIL ////////////////////////////////////////////////////////////////////////// FUNC MyMsgInfo( nN ) LOCAL cLevel := Form_Main.Label_Title.Cargo MsgInfo("Button "+cLevel+'x'+hb_ntos(nN)) RETURN NIL ////////////////////////////////////////////////////////////////////////// FUNCTION ExitSLM() Form_Main.Label_Title.Value := "" FOR nI := 1 TO 6 cObj := "Button_" + HB_NtoS(nI) SetProperty( "Form_Main", cObj, "Enabled" , .T.) NEXT Domethod( "Form_Main", "BUTTON_EXIT" , "Show" ) // If there are objects in the array, then remove them IF LEN(aStaticDelObj) > 0 FOR nI := 1 TO LEN(aStaticDelObj) cObj := aStaticDelObj[nI] Domethod ( "Form_Main", cObj , "Release" ) NEXT ENDIF aStaticDelObj := {} RETURN NIL ////////////////////////////////////////////////////////////////////////// FUNCTION MyButtonForm(cForm, aDim, aColor) LOCAL cButt := aDim[5], cCapt := aDim[6], bAction := aDim[7] DEFAULT aColor := GRAY DEFINE BUTTONEX &cButt PARENT &cForm ROW aDim[1] COL aDim[2] WIDTH aDim[3] HEIGHT aDim[4] CAPTION cCapt ACTION Eval( bAction ) FONTBOLD .t. LEFTTEXT .t. FONTCOLOR WHITE BACKCOLOR aColor FONTNAME "Tahona" FONTSIZE 14 NOHOTLIGHT .F. NOXPSTYLE .T. HANDCURSOR .T. END BUTTONEX RETURN NIL
|
|
|
|
Eduard
|
| |
Пост N: 50
Зарегистрирован: 02.07.12
|
|
Отправлено: 06.03.15 01:19. Заголовок: Подскажите пожалуйст..
Подскажите пожалуйста, как можно сделать вывод элементов в форме COMBOBOX если вывод зависит от переключателя CHECKBOX, допустим если переключатель стоит в положении "Да", то вывести в список COMBOBOX енное кол-во записей для показа, а не все. Вывод в COMBOBOX идет из базы. Как то так...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4035
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.03.15 05:33. Заголовок: Eduard делай отдельн..
Eduard делай отдельный самодостаточный пример. Иначе трудно понять что нужно тебе. Я сам пишу одно а нужно другое... Как говорят - все телепаты в отпуске ...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4036
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.03.15 05:33. Заголовок: SergKis пишет: ты э..
SergKis пишет: Не совсем. Я хотел все кнопки затолкать в MyInit(), вывести кнопки второго уровня INVISIBLE, а потом уже кнопки второго уровня показывать в нужной функции по их названию. Пример переделаю и выложу. Хотя этот вариант будет сложнее в понимание и дальнейшем сопровождении (я так думаю). Однако, пример сам заработал после переделки... Всё оказывается просто... Скрытый текст /* * MINIGUI - Harbour Win32 GUI library Demo * (c) 2015 Verchenko Andrey <verchenkoag@gmail.com> * */ #include "minigui.ch" #define APP_TITLE 'Checking functions in one form' STATIC aStaticDelObj := {} // which objects you want to remove FUNCTION Main() DEFINE WINDOW Form_Main ; AT 0,0 ; WIDTH 640 HEIGHT 480 ; TITLE APP_TITLE ; MAIN ; BACKCOLOR {159, 191, 236} ; FONT "Tahona" SIZE 14 ; ON INIT MyInit() DEFINE LABEL Label_Title ROW 180 COL 30 WIDTH 600 HEIGHT 50 VALUE '' FONTBOLD .t. FONTCOLOR BLACK TRANSPARENT .t. CENTERALIGN .t. END LABEL DEFINE BUTTONEX BUTTON_EXIT ROW 385 COL 20 WIDTH 580 HEIGHT 35 CAPTION 'Exit' ACTION ThisWindow.Release BACKCOLOR MAROON FONTCOLOR WHITE NOHOTLIGHT .F. NOXPSTYLE .T. HANDCURSOR .T. END BUTTONEX END WINDOW CENTER WINDOW Form_Main ACTIVATE WINDOW Form_Main RETURN NIL ////////////////////////////////////////////////////////////////////////// FUNCTION MyInit() Local nI, lRet, cForm := "Form_Main", aButton := {} AADD( aButton, { 20, 20,170,35, "Button_1", "Menu 1", {|| MenuTask(1)} } ) AADD( aButton, { 70, 20,170,35, "Button_2", "Menu 2", {|| MenuTask(2)} } ) AADD( aButton, { 20,230,170,35, "Button_3", "Menu 3", {|| MenuTask(3)} } ) AADD( aButton, { 70,230,170,35, "Button_4", "Menu 4", {|| MenuTask(4)} } ) AADD( aButton, { 20,430,170,35, "Button_5", "Menu 5", {|| MenuTask(5)} } ) AADD( aButton, { 70,430,170,35, "Button_6", "Menu 6", {|| MenuTask(6)} } ) // ------- an array of new buttons (Second Level)----- Hide mode -------------- AADD( aButton, {220, 60,230,50, "Button2_1", "Second-level menu 1" , {|| NIL } , .T. } ) AADD( aButton, {220,330,230,50, "Button2_2", "Second-level menu 2" , {|| NIL } , .T. } ) AADD( aButton, {300, 60,230,50, "Button2_3", "Second-level menu 3" , {|| NIL } , .T. } ) AADD( aButton, {300,330,230,50, "Button2_4", "Exiting 2 level menu" , {|| NIL } , .T. } ) // ----------- Change processing unit menu (Example) ----------- aButton[1,7] := {|| lRet := MsgYesNo( "Do you want to start another menu: 10 ?" ), ; IIF( lRet, MsgInfo("Starting the menu 10"), MsgInfo("Starting the menu 1") ),; IIF( lRet, MenuTask(10), MenuTask(1) ) } // ----------- display button (basic) on the shape ----------- FOR nI := 1 TO LEN(aButton) MyButtonForm(cForm, aButton[nI] ) NEXT // ------- hide the second level -------------- Domethod ( "Form_Main", "Button2_1" , "Hide" ) Domethod ( "Form_Main", "Button2_2" , "Hide" ) Domethod ( "Form_Main", "Button2_3" , "Hide" ) Domethod ( "Form_Main", "Button2_4" , "Hide" ) RETURN NIL ////////////////////////////////////////////////////////////////////////// FUNCTION MenuTask(nMenu) Local nI, cObj, bAction, cTask Local cForm := "Form_Main", aButton := {} Local aColor := { ORANGE, LGREEN, PURPLE, BLUE, TEAL, AQUA, , , , RED } FOR nI := 1 TO 6 cObj := "Button_" + HB_NtoS(nI) SetProperty( cForm, cObj, "Enabled" , .F.) NEXT Domethod( cForm, "BUTTON_EXIT" , "Hide" ) Form_Main.Label_Title.FontColor := aColor[nMenu] Form_Main.Label_Title.Value := "Carried out menu - " + HB_NtoS(nMenu) // ------- appoint a new button color -------------- SetProperty( "Form_Main", "Button2_1" , "BackColor", aColor[nMenu] ) SetProperty( "Form_Main", "Button2_2" , "BackColor", aColor[nMenu] ) SetProperty( "Form_Main", "Button2_3" , "BackColor", aColor[nMenu] ) SetProperty( "Form_Main", "Button2_4" , "BackColor", aColor[nMenu] ) // ------- assign a new code to handle the buttons -------------- SetProperty( "Form_Main", "Button2_1" , "Action", {|| MsgInfo("Button 2x1") } ) SetProperty( "Form_Main", "Button2_2" , "Action", {|| MsgInfo("Button 2x2") } ) SetProperty( "Form_Main", "Button2_3" , "Action", {|| MsgInfo("Button 2x3") } ) SetProperty( "Form_Main", "Button2_4" , "Action", {|| NewExitSLM() } ) // ------- button to show the second level -------------- Domethod ( "Form_Main", "Button2_1" , "Show" ) Domethod ( "Form_Main", "Button2_2" , "Show" ) Domethod ( "Form_Main", "Button2_3" , "Show" ) Domethod ( "Form_Main", "Button2_4" , "Show" ) RETURN NIL ////////////////////////////////////////////////////////////////////////// FUNCTION NewExitSLM() Form_Main.Label_Title.Value := "" FOR nI := 1 TO 6 cObj := "Button_" + HB_NtoS(nI) SetProperty( "Form_Main", cObj, "Enabled" , .T.) NEXT Domethod( "Form_Main", "BUTTON_EXIT" , "Show" ) // ------- hide the second level -------------- Domethod ( "Form_Main", "Button2_1" , "Hide" ) Domethod ( "Form_Main", "Button2_2" , "Hide" ) Domethod ( "Form_Main", "Button2_3" , "Hide" ) Domethod ( "Form_Main", "Button2_4" , "Hide" ) RETURN NIL ////////////////////////////////////////////////////////////////////////// FUNCTION MyButtonForm(cForm, aDim, aColor, lHide) LOCAL cButt := aDim[5], cCapt := aDim[6], bAction := aDim[7] DEFAULT aColor := GRAY, lHide := .F. DEFINE BUTTONEX &cButt PARENT &cForm ROW aDim[1] COL aDim[2] WIDTH aDim[3] HEIGHT aDim[4] CAPTION cCapt ACTION Eval( bAction ) FONTBOLD .t. LEFTTEXT .t. FONTCOLOR WHITE BACKCOLOR aColor FONTNAME "Tahona" FONTSIZE 14 NOHOTLIGHT .F. NOXPSTYLE .T. HANDCURSOR .T. INVISIBLE lHide END BUTTONEX RETURN NIL
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 501
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.03.15 10:37. Заголовок: Eduard пишет:как мож..
Eduard пишет: Создайте два combobox, с нужнымы item и в зависимости от состояния checkbox один делайте hide, другой show (Visible .F.\.T.)
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 502
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.03.15 10:47. Заголовок: Andrey пишет: Я хоте..
Andrey пишет: цитата: | Я хотел все кнопки затолкать в MyInit(), вывести кнопки второго уровня INVISIBLE... |
| т.е. ты хотел создать все 24 кнопки (6x4) в hide и потом делать кнопки нужного level в show ? если да, то создавай их между define window и endwindow (массив кнопок 24 элемента, добавив элемент принадлежность к level), по aeval делай hide и show button нужного level
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 503
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.03.15 11:00. Заголовок: Eduard другой спосо..
Eduard другой способ делать в combobox (он один) DeleteAllItems и добавлять нужные по AddItem. что проще решайте сами
|
|
|
Haz
|
| |
Пост N: 489
Зарегистрирован: 20.02.11
|
|
Отправлено: 06.03.15 11:13. Заголовок: Andrey пишет: Подс..
Eduard пишет: цитата: | Подскажите пожалуйста, как можно сделать вывод элементов в форме COMBOBOX если вывод зависит от переключателя CHECKBO |
| если комбо по базе ( ItemSource - ValueSource ) то по checkBox просто ставится фильтр на базу и комбику делаем .Refresh() если комбо по массиву - то как SergKis написал - DeleteAll + AddItem
|
|
|
Eduard
|
| |
Пост N: 51
Зарегистрирован: 02.07.12
|
|
Отправлено: 06.03.15 16:45. Заголовок: Добрый день. Со вчер..
Добрый день. Со вчерашним вопросом разобрался. Интересует, можно ли если установлена связка ItemSource - ValueSource сделать сортировку в КомбоБоксе, либо возможность поиска там-же по названию. Видел есть параметр SORT в combobox, но он не работает если стоит ItemSource. Смотрел пример в c:\MiniGUI\SAMPLES\BASIC\ComboSearch\, но там поиск идет типа по отдельному полю, но мне надо что-б непосредственно искало в самом Комбобоксе. И еще как можно сделать что-б комбобокс раскрылся при переходе на него ентером?
|
|
|
Haz
|
| |
Пост N: 490
Зарегистрирован: 20.02.11
|
|
Отправлено: 06.03.15 17:22. Заголовок: Eduard пишет: можно..
Eduard пишет: цитата: | можно ли если установлена связка ItemSource - ValueSource сделать сортировку в КомбоБоксе |
| Если задан Itemsource то при инициализации комбо элементы добавляются в порядке записей. т.е нужно сначала базу проиндексировать с нужным ключем, а потом создать комбо. Комбо по базе при выборе значения вернет valueSource ( если не определено - то Recno() ) Устанавливается такой комбо ВСЕГДА по Recno() вне зависимости от того что в ValueSource - Form_1.Combo_1.Value := nRecno цитата: | но мне надо что-б непосредственно искало в самом Комбобоксе |
| примерно так For n := 1 TO Form_1.Combo_1.ItemCount() IF Form_1.Combo_1.Item ( n ) == 'ищем эту строку' нашли ну или непосредственно по базе ( по которой строили комб )
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 504
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.03.15 22:15. Заголовок: Eduard пишет:И еще к..
Eduard пишет: цитата: | И еще как можно сделать что-б комбобокс раскрылся при переходе на него ентером? |
| ComboBox раскрывается по F4, можно послать сообщение по кнопке или на GotFocus: hComboBox := GetControlHandle(cCombo, cForm) PostMessage( hComboBox, WM_KEYDOWN, VK_F4, 0)
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 505
Зарегистрирован: 17.02.12
|
|
Отправлено: 06.03.15 22:35. Заголовок: PS. Если combobox ис..
PS. Если combobox использовать без DISPLAYEDIT .T., то поиск по 1-ой букве, с DISPLAYEDIT .T. и набором букв в открывшемся поле поиск с подводом по набору
|
|
|
Eduard
|
| |
Пост N: 52
Зарегистрирован: 02.07.12
|
|
Отправлено: 07.03.15 16:32. Заголовок: Добрый день. Есть фо..
Добрый день. Есть форма с размещенными на ней элементами CheckBox, подскажите, как сделать последовательную обработку каждого элемента начиная с первого и заканчивая последним? Каждый элемент ЧекБокс возвращает свое значение если он выбран, и есть функция которая возвращает значение если выбран тот либо иной элемент. Могут быть выбраны все элементы а может только 2-3. Пустые события не должны обрабатываться (только выбранные элементы) Также необходимо что-бы после подтверждения формы с элементами данные события сохранились. Функция для возврата события... Скрытый текст Function T_Ch1(ch1) do case case ch1 == .T. bz := "1" bztext := "пар.1" otherwise bz := "" bztext := "" endcase ch1 := bz+" "+bztext MsgInfo(ch1) return
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4041
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.03.15 23:05. Заголовок: Eduard а свою тему о..
Eduard а свою тему отдельную сложно создать ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4042
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.03.15 23:05. Заголовок: SergKis пишет: т.е...
SergKis пишет: цитата: | т.е. ты хотел создать все 24 кнопки (6x4) в hide и потом делать кнопки нужного level в show ? если да, то создавай их между define window и endwindow (массив кнопок 24 элемента, добавив элемент принадлежность к level), по aeval делай hide и show button нужного level |
| Однако, пример сам заработал после переделки... Всё оказывается просто... Пример выше....
|
|
|
Dima
|
| |
Пост N: 4581
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.03.15 23:23. Заголовок: Andrey пишет: Eduar..
Andrey пишет: цитата: | Eduard а свою тему отдельную сложно создать ? |
| А что не так ? Тема называется Примеры из Минигуи -ошибки, вопросы..... Может её подписать типа Примеры из Минигуи -ошибки, вопросы..... VS Andrey Ты когда что то спрашиваешь не в своей теме , кто то был против ? PS Андрей не надо устраивать ЦИРК !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4043
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.03.15 23:38. Заголовок: Dima пишет: Андрей ..
Dima пишет: цитата: | Андрей не надо устраивать ЦИРК |
| Ну извините, не хотел... Просто в одной теме вести разные вопросы я считаю сложно. Мы же здесь не останавливаясь спрашивали про 2 разных вопроса, я и Eduard. Ответы и осмысления не укладываются ...
|
|
|
Dima
|
| |
Пост N: 4583
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.03.15 23:52. Заголовок: Andrey пишет: Прост..
Andrey пишет: цитата: | Просто в одной теме вести разные вопросы я считаю сложно. |
| У тебя тоже разные вопросы и кто знает тот отвечает и помогает. Можно еще замутить тему LetoDB сервер vs Андрей ну если надо очень Не парься по этому поводу , кто захочет и знает всегда поможет. С 8 марта наших девочек которых на форуме раз два и всё
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 510
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.03.15 11:43. Заголовок: Andrey пишет:Однако,..
Andrey пишет: цитата: | Однако, пример сам заработал после переделки... Всё оказывается просто... Пример выше.... |
| Разницу не увидел, что первый, что второй примеры (тексты разные) работают одинаково, кнопки, цвета уровней меняются, сообщения второго уровня одни и теже Button 2x1, ... 2x2, ...2x3, а уровни 1...6, т.е сообщения должны быть Button 2x1, ... 2x2, ...2x3, Button 3x1, ... 3x2, ...3x3, ..., Button 6x1, ... 6x2, ...6x3. Если же я правильно понял смысл примеров ?!
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4045
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.03.15 00:09. Заголовок: SergKis пишет: Разн..
SergKis пишет: цитата: | Разницу не увидел, что первый, что второй примеры (тексты разные) работают одинаково |
| Я пробовал сделать примеры показывающие как можно делать меню на ОДНОЙ форме: 1) пример с динамически построением кнопок на форме с последующим удалением объектов (метод "Release") 2) пример с построением кнопок на форме сразу, с использованием Show/Hide для второго уровня кнопок. Все примеры работают нормально. Только при переносе в свой проект 1-вариант не работает. SergKis пишет: цитата: | На мой взгляд основная ошибка - динамическое создание\удаление кнопок второго уровня в oninit. Создавай столько контролов (между define window и end window) сколько надо для работы окна сразу (координаты не важны их можно устанавливать перед Visible .T.). А динамическое создание\удаление контролов даже gfilatov говорил делать осторожно. Я этим не пользуюсь совсем. |
| Вот это я хотел услышать ! Уже года три работаю с МиниГуи, а с этим и не разобрался (не услышал)... Спасибо БОЛЬШОЕ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4048
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.03.15 06:18. Заголовок: Предыдущие примеры 1..
Предыдущие примеры 1FormDemo.prg и 2FormDemo.prg были простые. Сделал еще один пример 3FormDemo.prg На кнопки вешаю кодо-блок нескольких функций, типа: aButton[1,7] := {|| Domethod( cForm, "BUTTON_EXIT" , "Hide" ), ; lRet := MsgYesNo( "Do you want to start another menu: 10 ?" ), ; IIF( lRet, MsgInfo("Starting the menu 10"), MsgInfo("Starting the menu 1") ),; IIF( lRet, MenuTask(10, aColor, aButton2), MenuTask(1, aColor, aButton2) ),; MsgInfo("Skill menu!") , ; Domethod( cForm, "BUTTON_EXIT" , "Show" ) } Не отрабатывает функция MenuTask(). Не получает управления эта функция. Что не так делаю ? Примеры тут - https://cloud.mail.ru/public/6e47c4e671d1/Menu_buttons_Second_Level.7z
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4049
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.03.15 22:14. Заголовок: Всем привет. Использ..
Всем привет. Использую объект LISTBOX, прогу давно написал. Файлов у юзера много стало и программа начала подвисать. Для показа списка файлов у юзера на форме использую такую функцию: FUNCTION GetReportFiles(cPath, cMaska) LOCAL aList := {}, nI, cFile // Получаем список файлов в папке отчётов с маской aList := Directory( cPath + cMaska ) FOR nI := Len( aList ) TO 1 STEP - 1 cFile := aList[ nI, 1 ] // Добавляем элемент из массива Form_Report.List_1.AddItem( cFile ) // Присваиваем номер по порядку Form_Report.List_1.Value := nI NEXT // Возвращаемся к началу списка Form_Report.List_1.Value := 1 RETURN Nil Теперь когда много файлов при показе тормоза начинаются... и подвисание программы. Как убрать этот эффект ?
|
|
|
Dima
|
| |
Пост N: 4593
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.03.15 22:18. Заголовок: Andrey пишет: Тепер..
Andrey пишет: цитата: | Теперь когда много файлов при показе тормоза начинаются... |
| На сколько много файлов ? Если тормоз только из за FOR то попробуй FOR EACH
|
|
|
Dima
|
| |
Пост N: 4594
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.03.15 22:31. Заголовок: Andrey пишет: aList..
Andrey пишет: цитата: | aList := Directory( cPath + cMaska ) |
| Вместо этого можно в цикле пробнуть FileSeek() + Form_Report.List_1.AddItem + Form_Report.List_1.Value
|
|
|
Haz
|
| |
Пост N: 491
Зарегистрирован: 20.02.11
|
|
Отправлено: 11.03.15 22:55. Заголовок: Dima пишет: Файлов ..
цитата: | Файлов у юзера много стало |
| Дима правильно спросил - много это сколько ? от тормозов при сканировании папки с числом файлов более 1000 скорее всего не избавиться программно. Лучше спросить клиента зачем ему столько отчетов или предложить организовать вложенные папки по видам отчетов Возможно поможет ... ================================ Долго открывается директория, в которой большое количество файлов из-за того, что NTFS обновляет метку последнего доступа к файлам. Когда в директории много файлов то метку надо обновить на каждом, а это может занять много времени. Чтобы функцию отключить надо в реестре по адресу HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem создать ключ NtfsDisableLastAccessUpdate типа DWORD и установить значение в «1». После перезагрузки данная проблема исчезнет.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4050
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.03.15 23:07. Заголовок: Haz пишет: много эт..
Haz пишет: 1186 файлов... Я сам офигел. Haz пишет: цитата: | предложить организовать вложенные папки по видам отчетов |
| Да это лучшее решение. Буду делать его. Когда программу делал, то лет 7 назад об этом не думал. Спасибо за идею ! Как сделать перемещение/показ списка по файлам и папкам в одной функции GetReportFiles(cPath, cMaska) ? Если нужно показывать папки Отчет-2010, Отчет-2011,.... и файлы по маске *.txt
|
|
|
Dima
|
| |
Пост N: 4595
Зарегистрирован: 17.05.05
|
|
Отправлено: 11.03.15 23:29. Заголовок: Andrey пишет: Как с..
Andrey пишет: цитата: | Как сделать перемещение/показ списка по файлам и папкам в одной функции GetReportFiles(cPath, cMaska) ? |
| cPath есть , вот и отталкивайся от него.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 513
Зарегистрирован: 17.02.12
|
|
Отправлено: 11.03.15 23:40. Заголовок: Andrey пишет: Как сд..
Andrey пишет: цитата: | Как сделать перемещение/показ списка по файлам и папкам в одной функции GetReportFiles(cPath, cMaska) ? |
| в одной функции не знаю, но в двух grid\browse можно: - читай в 1-й список папок - во второй (по on change в 1-м) читай список файлов по маске из выбранной папки, можно не по on change, а по кнопке или Enter\dublclick.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4051
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.03.15 00:10. Заголовок: SergKis пишет: в од..
SergKis пишет: цитата: | в одной функции не знаю, но в двух grid\browse можно: |
| Понял, буду делать... Хотел быстренько одну функцию изменить, а нет - не получилось. Другой вопрос по CHECKBOX. Есть у него режим ReadOnly как TEXTBOX или EDITBOX ? Что то по хелперу фраза непонятная... Available at control definition only R: Read-Only
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 514
Зарегистрирован: 17.02.12
|
|
Отправлено: 12.03.15 00:20. Заголовок: Andrey пишет:Есть у ..
Andrey пишет: цитата: | Есть у него режим ReadOnly |
| в help см. Enabled - оно есть Andrey пишет: цитата: | Хотел быстренько одну функцию изменить |
| проще можно в grid читать папки (с обратной сортировкой), grid, на котором ты achoice делал, после выбора, показывай другой grid с отчетами. компоненты все у тебя под рукой ...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 515
Зарегистрирован: 17.02.12
|
|
Отправлено: 12.03.15 01:58. Заголовок: Andrey пишет:Хотел б..
Andrey пишет: цитата: | Хотел быстренько одну функцию изменить |
| можно совсем простенько: GetFolder(...) см. \Samples\Basic\GetFolder GetFile(...) см. \Samples\Basic\GetFile
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4052
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.03.15 02:09. Заголовок: SergKis пишет: можн..
SergKis пишет: цитата: | можно совсем простенько: GetFolder(...) см. \Samples\Basic\GetFolder GetFile(...) см. \Samples\Basic\GetFile |
| Забыл про них...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4063
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.03.15 20:43. Заголовок: Подскажите как занов..
Подскажите как удалить и заново перечитать массив в COMBOBOXEX ? @ 110,10 COMBOBOXEX ComboEx_3 ; WIDTH 150 ; ITEMS {"one ","two ","tree "} ; .......
|
|
|
Haz
|
| |
Пост N: 495
Зарегистрирован: 20.02.11
|
|
Отправлено: 25.03.15 21:24. Заголовок: Andrey пишет: масси..
Andrey пишет: C:\MiniGUI\SAMPLES\BASIC\COMBO_5
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4065
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.03.15 21:50. Заголовок: Haz пишет: C:\M..
Haz пишет: цитата: | C:\MiniGUI\SAMPLES\BASIC\COMBO_5 |
| Что то не совсем понятно. Нужно удалить каждый элемент массива, а потом добавить по каждому элементу. Правильно ли это ? А то в ГРИДе делалось немного по другому: // перечитаем Grid_1251 aList := LoadDbf1251() // новый массив Form_6.Grid_1251.DeleteAllItems IF Len(aList) > 0 Form_6.Grid_1251.DisableUpdate FOR nI := 1 to LEN(aList) Form_6.Grid_1251.AddItem( aList[nI] ) NEXT Form_6.Grid_1251.EnableUpdate ENDIF
|
|
|
Haz
|
| |
Пост N: 496
Зарегистрирован: 20.02.11
|
|
Отправлено: 25.03.15 22:39. Заголовок: Andrey пишет: А то ..
Andrey пишет: цитата: | А то в ГРИДе делалось немного по другому: |
| а если справку из поставки miniGui почитать по Combo ... METHODS: · Show Shows a ComboBox control · Hide Hides a ComboBox control · AddItem( cItemText ) Add a new item to a ComboBox control · DeleteItem( nItemIndex ) Deletes an item from a ComboBox control · DeleteAllItems Deletes all items from a ComboBox control · SetFocus Gives the focus to a ComboBox control · Release Releases a ComboBox control from memory · EnableUpdate Update enables for ComboBox control · DisableUpdate Update disables for ComboBox control · SaveAs Save a ComboBox control as BitMap file.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4066
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.03.15 22:42. Заголовок: Haz пишет: а если с..
Haz пишет: цитата: | а если справку из поставки miniGui почитать по Combo ... |
| Спасибо ! Просто не нашёл пример и потерялся...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4071
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.03.15 11:43. Заголовок: Всем привет ! Вывож..
Всем привет ! Вывожу картинку во всю форму по длине. На неё назначена обработка при нажатии: @ 5,5 IMAGE Image_1 ...... PICTURE ....... ACTION AboutInfo() OnMouseHover RC_CURSOR( "MINIGUI_FINGER" ) А как мне сделать обработку нажатия на картинки допустим на 3 части ? Разрезать картинку на 3 части нельзя.
|
|
|
Haz
|
| |
Пост N: 497
Зарегистрирован: 20.02.11
|
|
Отправлено: 29.03.15 15:20. Заголовок: координаты своей кар..
координаты своей картинки знаешь цитата: | @ 5,5 IMAGE Image_1 ...... |
| как поделил на 3 части знаешь Вот и обрабатывай в зависимости от положения курсора, координаты курсора из OnMouseMove возьмешь пример с координатами есть в минигуи
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4072
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.03.15 15:42. Заголовок: Haz пишет: пример с..
Haz пишет: цитата: | пример с координатами есть в минигуи |
| Где ? Если не сложно то дай путь к нему.
|
|
|
Haz
|
| |
Пост N: 498
Зарегистрирован: 20.02.11
|
|
Отправлено: 29.03.15 15:50. Заголовок: MiniGUI\SAMPLES&..
MiniGUI\SAMPLES\BASIC\Mouse_Coords
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4080
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.03.15 14:51. Заголовок: SergKis пишет: 4. н..
SergKis пишет: цитата: | 1. вынеси connect до окна (если его нет, то сообщение и конец) или в oninit (тогда сначала контрлы hide или disable, если connect есть переводи в рабочее соостояние, иначе сообщение ...). 2. в цикл загрузки ставь do events 4. не мучай grid перезагрузкой Item-ов, используй browse (skipbuffer устанавливай в кол-во строк в browse (default 10)) 5. получить длину записи области RecSize()+1, или посчитать длины из dbStruct() и +1. |
| 1) А зачем ? Проверил сервер, а потом сразу опять, без повторного запуска программы проверяем. Это в качестве же примера, а на рабочую систему, согласен - нужно делать по другому. 2) Забыл про это ! Работает ! Спасибо ! 4) Согласен ! А простой browse -какой можно поставить ? Просто чтобы показать, что база есть. 5) Не совсем понял, а на примере моём можно пояснить ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4082
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.03.15 15:25. Заголовок: Есть шаблон для ввод..
Есть шаблон для ввода вида 127.0.0.1:2812 ? Или достаточно обычного поставить типа: @R 999.999.999.999:999999
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 524
Зарегистрирован: 17.02.12
|
|
Отправлено: 30.03.15 16:38. Заголовок: Andrey пишет:1) А за..
Andrey пишет: работа с letodb у тебя не закончится на этом примере ? если да, то вопрос снят я connect делаю на MDI MAIN, тебе на MAIN и если его нет, то все child окна, связанные с letodb не имеют смысла
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4093
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.04.15 22:41. Заголовок: Как можно вывести сп..
Как можно вывести список файлов на форму и сделать возможный выбор любого файла ?
|
|
|
Haz
|
| |
Пост N: 504
Зарегистрирован: 20.02.11
|
|
Отправлено: 01.04.15 22:51. Заголовок: Andrey пишет: Есть ..
Andrey пишет: цитата: | Есть ли готовые примеры или что можно посмотреть ? |
| GetFile из минигуи или самому формировать массив и бровс по нему
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 536
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.04.15 23:08. Заголовок: Andrey пишет:или что..
Andrey пишет: BASIC\DirSelect\demo.prg
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4095
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.04.15 23:52. Заголовок: SergKis пишет: BASI..
SergKis пишет: Не совсем то... Это обычный GRID. Понятно что так сделать можно. А как сделать показ несколько столбцов ? и расстояние между ними как высчитывать ? По идее можно сканировать папку рассчитать кол-во элементов, добавить иконки и потом строить ГРИД. А как тогда высчитывать имя файла по ячейкам ? и выбор по колонкам между файлами как запретить ? Всё больше вопросов возникает... А готовых других примеров под такие задачи больше нет ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 540
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.04.15 00:42. Заголовок: Andrey пишет:По идее..
Andrey пишет: цитата: | По идее можно сканировать папку рассчитать кол-во элементов, добавить иконки и потом строить ГРИД |
| ты же сам все знаешь. Сам не сделаешь, кто сделает ? (c) Andrey пишет: цитата: | Всё больше вопросов возникает... |
| по мне, так ты все заданные вопросы уже решал в разных своих примерах. не нравится grid, browse, buttonex попробуй tsbrowse ...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4097
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.04.15 00:58. Заголовок: SergKis пишет: по м..
SergKis пишет: цитата: | по мне, так ты все заданные вопросы уже решал в разных своих примерах. не нравится grid, browse, buttonex попробуй tsbrowse ... |
| Согласен, решал. Но вот свойство человеческой психологии - сначала спросить... А вдруг кто-то лучше подскажет. Дима иногда пишет: пока курил, придумал... А я вот не курю и сразу спрашиваю.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 542
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.04.15 11:09. Заголовок: Andrey пишет:А я вот..
Andrey пишет: цитата: | А я вот не курю и сразу спрашиваю. |
| Что ж "батенька" будем лечить ..., в смысле посылать ... ну это ... покурить конфетку скушать ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 741
Зарегистрирован: 11.02.10
|
|
Отправлено: 02.04.15 12:04. Заголовок: Andrey пишет: как с..
Andrey пишет: цитата: | как сделать показ несколько столбцов ? |
| Для этого можно использовать ListBox с классом MULTICOLUMN (см. пример в папке samples\Basic\Listbox_4)
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4099
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.04.15 11:23. Заголовок: Можно ли вызвать Not..
Можно ли вызвать Notepad в режиме просмотра ? Т.е. запретить юзеру править текст ? Хотя этот вопрос сложно отнести к МиниГуи...
|
|
|
PSP
|
| постоянный участник
|
Пост N: 1045
Зарегистрирован: 27.01.07
|
|
Отправлено: 07.04.15 11:31. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно ли вызвать Notepad в режиме просмотра ? Т.е. запретить юзеру править текст ? |
| Notepad, думаю, нельзя. А вот открыть текстовый файл в браузере можно. И юзер ничего не сможет исправить
|
|
|
petr707
|
| |
Пост N: 130
Зарегистрирован: 21.04.13
|
|
Отправлено: 07.04.15 13:23. Заголовок: А что, если..
Открыть не оригинальный файл, а его временную копию, которую удалить после просмотра. Править можно, на исходнике не отразится.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4100
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.04.15 13:54. Заголовок: PSP пишет: А вот от..
PSP пишет: цитата: | А вот открыть текстовый файл в браузере можно. И юзер ничего не сможет исправить |
| А как ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 558
Зарегистрирован: 17.02.12
|
|
Отправлено: 07.04.15 14:01. Заголовок: Andrey <html..
Andrey <html> <body> <pre> Теги отобразят текст с точным количеством, проставленных в исходном коде, пробелов и переносов строк. К тому же, текст будет моноширинным. Моноширинный - все буквы одинаковой ширины (машинописный шрифт). </pre> </body> </html>
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4101
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.04.15 14:25. Заголовок: SergKis пишет: текс..
SergKis пишет: То что нужно !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4103
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.04.15 02:08. Заголовок: Только для 866 кодир..
Только для 866 кодировки нужно ставить так: <html> <head><meta charset="cp866"></head> <body> <pre>
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 559
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.04.15 08:58. Заголовок: Andrey пишет:Только ..
Andrey пишет: цитата: | Только для 866 кодировки нужно ставить так |
| где нибудь с этим могут быть проблемы. лучше: <html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Create dokuments</title> ... и кодировать вывод в utf8. Ты же не любишь модули на Run, почему не сделал для вывода текста окно MiniGui с EditBox или RichEditBox с disable := .T. ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4104
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.04.15 11:24. Заголовок: SergKis пишет: Ты ж..
SergKis пишет: цитата: | Ты же не любишь модули на Run, почему не сделал для вывода текста окно MiniGui с EditBox или RichEditBox с disable := .T. ? |
| Да хотел обойтись Notepad'ом, а потом посыпались предложения... Вот пока выбираю.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 571
Зарегистрирован: 17.02.12
|
|
Отправлено: 10.04.15 14:11. Заголовок: Andrey пишет: Вот по..
Andrey пишет: Если планируешь, получать таблички и т.д. в html, а не только тэг pre, то глянь пример SAMPLES\Advanced\ActiveX
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4108
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.04.15 16:29. Заголовок: Всем привет ! Возвра..
Всем привет ! Возвращаюсь опять к ранее заданному вопросу: В терминалке на хХарборе использую базы в 866 кодировке. Символы CHR(250)-CHR(253) пишутся в текстовые поля базы нормально ! Пытаюсь то же самое сделать под МиниГуи не выходит, коды другие: Как записать в поле базы символы CHR(250) или CHR(251) или CHR(253) ? Так и не смог сделать.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 594
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.04.15 17:20. Заголовок: Andrey пишет:Так и н..
Andrey пишет: а кодовая страница установлена 866 ? работаю с LV866 - chr(251), chr(254) точно нормальные, другие не пользую может у тебя 1251 - смотри в фонте, что на этих местах а в базу и utf8 прекрасно пишутся.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4109
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.04.15 17:38. Заголовок: SergKis пишет: а ко..
SergKis пишет: цитата: | а кодовая страница установлена 866 ? |
| Экран - 1251, а база открыта 866 !
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 595
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.04.15 18:01. Заголовок: т.е. у тебя раскладк..
т.е. у тебя раскладка 1251, dbf 866. ansitooem() может надо применить при записи
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4110
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.04.15 18:49. Заголовок: Делаю так: U..
Делаю так: USE ( cPath+cDatabase ) ALIAS ( cAlias ) CODEPAGE "RU866" SHARED NEW // сетевой захват записи IF RecLock( LOCK_RETRY ) cVal := CHR(250)+CHR(251)+CHR(252)+CHR(253) cVal := HB_ANSITOOEM(cVal) FIELDPUT(2,cVal) DBUnlock() DBCOMMIT() ENDIF В поле записывается: "клмн" Если убрать HB_ANSITOOEM(cVal), то записывается: "ъыьэ"
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 596
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.04.15 19:40. Заголовок: Andrey пишет:Если уб..
Andrey пишет: а если поставить страницу 866 FieldPut(..., chr(251)) поставить страницу 1251
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 597
Зарегистрирован: 17.02.12
|
|
Отправлено: 17.04.15 19:44. Заголовок: PS. в твоем варианте..
PS. в твоем варианте на месте 250, 251,... стоят буквы, получемые по ansitooem, найди в 1251 нужные (если они есть) и попробуй сделать от них
|
|
|
Softlog86
|
| |
Пост N: 231
Зарегистрирован: 03.12.08
|
|
Отправлено: 17.04.15 22:19. Заголовок: Вопросик : в контро..
Вопросик : в контроле PROGRESSBAR ограничение максимального значения в 65535 .... Нафига вообще было ограничивать ??? Я часто сканирую базы с большим числом записей и крайне неудобно использовать алгоритмы пересчета чтоб войти в эти самые 65 тыщ ...... Кто как решает таое неудобство ?
|
|
|
petr707
|
| |
Пост N: 131
Зарегистрирован: 21.04.13
|
|
Отправлено: 17.04.15 22:39. Заголовок: Andrey пишет:делаю так..
FIELDPUT(2,cVal) DBUnlock() DBCOMMIT() Вроде лучше так.. FIELDPUT(2,cVal) DBCOMMIT() DBUnlock()
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4111
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.15 03:52. Заголовок: SergKis пишет: в тв..
SergKis пишет: цитата: | в твоем варианте на месте 250, 251,... стоят буквы, получемые по ansitooem, найди в 1251 нужные (если они есть) и попробуй сделать от них |
| Вот есть шестнадцатеричные коды Unicode (1251): ° - 00B0, ∙ - 2219, · - 00B7, √ - 221A, № - 2116, ¤ - 00A4 Как их вывести ? Может вопрос и тупой, но что-то я никак не соображу...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 599
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.04.15 09:42. Заголовок: Andrey будет работа..
Andrey будет работать: на входе ставь страницу 866 gC866() // инициализация ставь страницу 1251 и работай, где надо вызывай gC866(251)+gc866(254) ... Func gC866( nChar866 ) Local cChar866 := '' STATIC aChar866 IF aChar866 == NIL aChar866 := array(255) aEval(aChar866, {|x,n| aChar866[ n ] := chr(n) }) ENDIF IF hb_IsNumeric(nChar866) .and. nChar866 > 0 .and. nChar866 < 256 cChar866 := aChar866[ nChar866 ] ENDIF Return cChar866
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4112
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.15 12:43. Заголовок: Andrey пишет: будет..
Andrey пишет: Не а, не работает - " ъыьэ" ....
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4113
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.15 13:00. Заголовок: Для чего это ОЧЕНЬ н..
Для чего это ОЧЕНЬ нужно: 1) чтобы при сортировке записи были в конце списка 2) визуальное отображение по SET RELATION Это терминалка хХарбор: Это на МиниГуи:
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 601
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.04.15 13:11. Заголовок: Andrey пишет:Не а, н..
Andrey пишет: сделай hb_memowrit('_0.txt', gc866(251)+gc866(254)) - будут в файле символы 866 вмешивается перекодировка при записи в dbf убери указание страницы у dbf - тоже должно быть ok с этими символами
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4114
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.15 13:15. Заголовок: SergKis пишет: вмеш..
SergKis пишет: цитата: | вмешивается перекодировка при записи в dbf убери указание страницы у dbf - тоже должно быть ok с этими символами |
| Блин, так просто....
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4115
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.15 13:33. Заголовок: Ура, заработало !!! ..
Ура, заработало !!! SergKis СПАСИБО БОЛЬШОЕ !!!
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4118
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.04.15 23:58. Заголовок: Сделал небольшую про..
Сделал небольшую программу, ввод пароля. Работает нормально. Беру переношу в свой большой проект, компиляция НЕ ИДЕТ вообще. Выдает такую ошибку: Harbour 3.2.0dev (r1503131756) Copyright (c) 1999-2015, http://harbour-project.org/ Source\form_LoginPassw.prg(82) Error E0030 Syntax error "syntax error at '@'" Source\form_LoginPassw.prg(90) Error E0030 Syntax error "syntax error at '@'" 2 errors No code generated. Что за фигня такая ? Стоки 82 и 90: @ 245,155 BUTTONEX BUTTON_Ok WIDTH 90 HEIGHT 32 ; CAPTION "Ввод" ; FONTCOLOR aButtColor ; BACKCOLOR LGREEN ; SIZE nFBSize BOLD ; NOHOTLIGHT NOXPSTYLE HANDCURSOR ; ACTION {|| nRet := 0, cUserName := cLogin, cPassword := cPswd, ; ThisWindow.Release } @ 245,255 BUTTONEX BUTTON_Cancel WIDTH 90 HEIGHT 32 ; CAPTION "Отмена" ; FONTCOLOR aButtColor ; BACKCOLOR MAROON ; SIZE nFBSize BOLD ; NOHOTLIGHT NOXPSTYLE HANDCURSOR ; ACTION {|| nRet := -1, ThisWindow.Release } И в обычные скобки ставил () и в одну строчку делал: ACTION { || nRet := 0, cUserName := cLogin, cPassword := cPswd, domethod("Form_LoginPass", "Release") } и модуль в проекте сдвигал, ни чего не помогает. А в маленьком проекте (6 файлов) всё нормально собирается и работает ! Помогите понять в чем дело ....
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4119
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.04.15 00:54. Заголовок: После кучи перестано..
После кучи перестановок и шаманства выяснил, блин как фокусник - легким движением на клавиатуре убираем HANDCURSOR и всё начинается компилироваться... Вспомнил, такая же беда второй раз происходит, и в другом модуле тоже пришлось убирать HANDCURSOR.... Вывод .ppo который компилируется: _DefineOwnerButton ( "BUTTON_Ok",, 155, 245, "Ввод", { || nRet := 0, cUserName := cLogin, cPassword := cPswd, domethod("Form_LoginPass", "Release") }, 90, 32,,,,, .F., .F.,, .F., .F., .F.,,, nFBSize, .T., .F., .F., .F., .F., .F., .F., { 0 , 128 , 0 }, aButtColor, .T., .T., .F. ) _DefineOwnerButton ( "BUTTON_Cancel",, 255, 245, "Отмена", { || nRet := -1, domethod("Form_LoginPass", "Release") }, 90, 32,,,,, .F., .F.,, .F., .F., .F.,,, nFBSize, .T., .F., .F., .F., .F., .F., .F., { 128 , 0 , 0 }, aButtColor, .T., .T., .F. ) Вывод .ppo который НЕ компилируется: @ 245,155 BUTTONEX BUTTON_Ok WIDTH 90 HEIGHT 32 CAPTION "Ввод" FONTCOLOR aButtColor BACKCOLOR { 0 , 128 , 0 } SIZE nFBSize BOLD NOHOTLIGHT NOXPSTYLE HANDCURSOR ACTION { || nRet := 0, cUserName := cLogin, cPassword := cPswd, DoMethod ( _HMG_SYSDATA[254] , "Release" ) } @ 245,255 BUTTONEX BUTTON_Cancel WIDTH 90 HEIGHT 32 CAPTION "Отмена" FONTCOLOR aButtColor BACKCOLOR { 128 , 0 , 0 } SIZE nFBSize BOLD NOHOTLIGHT NOXPSTYLE HANDCURSOR ACTION { || nRet := -1, DoMethod ( _HMG_SYSDATA[254] , "Release" ) } Ну что за приколы ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 602
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.04.15 09:00. Заголовок: Andrey пишет:убираем..
Andrey пишет: цитата: | убираем HANDCURSOR и всё начинается компилироваться... |
| _HMG_aControlInputMask [k] := handcursor // см. h_button.prg line 634 попробуй такой вариант: @ 245,155 BUTTONEX BUTTON_Ok ... без HANDCURSOR добавь nInd := GetControlIndex('BUTTON_Ok', ThisWindow.Name) _HMG_aControlInputMask [ nIndex ] := .T.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4120
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.04.15 14:02. Заголовок: Работает !!! Спасибо..
Работает !!! Спасибо !!! Только вот так: _HMG_aControlInputMask [ nInd ] := .T.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 603
Зарегистрирован: 17.02.12
|
|
Отправлено: 19.04.15 14:42. Заголовок: Andrey пишет:Вывод ...
Andrey пишет: цитата: | Вывод .ppo который НЕ компилируется: @ 245,155 BUTTONEX BUTTON_Ok WIDTH 90 HEIGHT 32 CAPTION "Ввод" FONTCOLOR aButtColor BACKCOLOR { 0 , 128 , 0 } SIZE nFBSize BOLD NOHOTLIGHT NOXPSTYLE HANDCURSOR ACTION { || nRet := 0, cUserName := cLogin, cPassword := cPswd, DoMethod ( _HMG_SYSDATA[254] , "Release" ) } |
| MiniGui.chm @ <nRow>,<nCol> BUTTONEX <ButtonName> [ OF | PARENT <ParentWindowName> ] [ CAPTION <cCaption>] [ WIDTH <nWidth> HEIGHT <nHeight> ] [ PICTURE <cBitmapName>] | [ ICON <cIconName>] [ ACTION | ONCLICK | ON CLICK <ActionProcedureName> | <bBlock> [ FONT <cFontName> ] [ SIZE <nFontSize> ] [ BOLD ] [ ITALIC ] [ UNDERLINE ] [ STRIKEOUT ] [ FONTCOLOR <aFontcolorRGBArray> ] [ BACKCOLOR <aBackcolorRGBArray> ] [ VERTICAL ] [ LEFTTEXT ] [ UPPERTEXT ] [ ADJUST ] [ TOOLTIP <cTooltip>] [ NOHOTLIGHT ] [ FLAT ] [ NOTRANSPARENT ] [ NOXPSTYLE ] [ ON GOTFOCUS | ON MOUSEHOVER <OnGotfocusProcedure | bBlock> ] [ ON LOSTFOCUS | ON MOUSELEAVE <OnLostProcedure | bBlock> ] [ HANDCURSOR ] [ NOTABSTOP ] [ HELPID <nHelpId>] [ INVISIBLE ] [ DEFAULT может тут собака порылась ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4121
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.04.15 15:46. Заголовок: SergKis пишет: може..
SergKis пишет: цитата: | может тут собака порылась ? |
| Попробую. Но больше всего убило, что маленький пример (6 файлов) нормально собирается, а большой проект (58 файлов) - НЕТ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4122
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.04.15 10:09. Заголовок: Сделал НОВОЕ меню вв..
Сделал НОВОЕ меню ввода пароля. И опять проблема... После закрытия окна ввода пароля главная форма прячется на задний план всех программ, переключаешься на неё, а задача не откликается (кнопочки не реагируют, крестик закрытия не работает) т.е. висит задача, приходиться снимать через Диспетчер задач. В чем проблема и как её решить ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4123
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.04.15 17:59. Заголовок: Если первый раз непр..
Если первый раз неправильно введу пароль, то опять возвращаюсь в это окно ввода и тогда программа не вешается... Что-то связано с инициализацией окна ? Как можно вернуть фокус ввода на главное окно задачи ? SetForegroundWindow( M->hIdWindows ) - так делал, но это не помогает....
|
|
|
Haz
|
| |
Пост N: 541
Зарегистрирован: 20.02.11
|
|
Отправлено: 20.04.15 19:00. Заголовок: Andrey пишет: Как м..
Andrey пишет: цитата: | Как можно вернуть фокус ввода на главное окно задачи |
| так ShowWindow(hWnd, 3) //SW_MAXIMIZE=3 SW_NORMAL=1 SW_MINIMIZE=6 BringWindowToTop(hWnd) Но думаю проблема не в фокусе. Скорее всего чего то намудрил при проверке пароля, и обработчик ошибки это не ловит
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4124
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.04.15 19:46. Заголовок: Haz пишет: Скорее в..
Haz пишет: цитата: | Скорее всего чего то намудрил при проверке пароля, |
| До этого использовал окно пароля из \MiniGUI\SAMPLES\Advanced\GetPassword прекрасно всё работало. Заменил GetPassword() на свою форму: DEFINE WINDOW Form_LoginPass AT 0,0 WIDTH 370 HEIGHT 320 + IIF( IsXPThemeActive(), 10, 0 ) ; TITLE cTitle ; ICON cIco ; MODAL ; BACKCOLOR aBackColor ; NOSIZE ; ON INIT { || Form_LoginPass.Text_Login.SetFocus } ну и там 2 GETBOX и 2 кнопки. И перестало работать с первого раза - висит главное окно задачи ! Если первый раз неправильно ввести пароль, но происходит повторное обращение к окну - функция заново отрабатывает. и ТОЛЬКО после этого главное окно задачи работает нормально ! Шайтан - однако... После проверки пароля я даже пробовал переключать на картинку на форме, там висит функция обработки на ней... CheckPassword() // проверка пароля BringWindowToTop( M->hIdWindows ) Form_Main.Image_1.Setfocus Безрезультатно... Висит главная форма и всё тут.... Полная
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4125
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.04.15 20:46. Заголовок: Блин, ну что за неве..
Блин, ну что за невезуха... Полдня убил на это... Поменял окно на CHILD и всё заработало.... Безо всяких переключений...
|
|
|
Haz
|
| |
Пост N: 542
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.04.15 10:46. Заголовок: Andrey пишет: Помен..
Andrey пишет: цитата: | Поменял окно на CHILD и всё заработало |
| У меня подобная вещь работает вне зависимости CHILD | MODAL ... похоже ты нашел "заплатку" на проблему, может аукнуться позже
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4126
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.04.15 12:29. Заголовок: Haz пишет: У меня п..
Haz пишет: цитата: | У меня подобная вещь работает вне зависимости CHILD | MODAL ... |
| Это как ?
|
|
|
Haz
|
| |
Пост N: 543
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.04.15 12:46. Заголовок: Andrey пишет: Это к..
Andrey пишет: Да все просто , при старте программы главная форма прячется и управление получает окно запроса пароля ( не важно CHILD или MODAL работает с любым вариантом ). При вводе правильного пароля окно запроса закрывается и показывается главная форма. При неправильном пароле предлагается угадать еще разик, при отказе от ввода пароля программа завершается. Ничего не виснет .
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4127
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.04.15 14:01. Заголовок: Haz пишет: при стар..
Haz пишет: цитата: | при старте программы главная форма прячется и управление получает окно запроса пароля |
| Понял. Спасибо.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4130
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.04.15 13:23. Заголовок: Вот опять непонятка:..
Вот опять непонятка: FOR nI := 1 TO 8 nRow := aRow[nI] + nHButt + 5 nCol := aCol[nI] + 10 //nWButt @ nRow, nCol CHECKBOX &cObjLog ; CAPTION 'Включить ХХХХ' ; VALUE aLogic[nI] ; WIDTH nWButt-20 HEIGHT 20 ; FONTCOLOR RED ; SIZE 11 TRANSPARENT ; ON CHANGE { || MsgDebug(nI), aLogic[nI] := GetProperty("Form_PC", cObjLog, "Value" ) } // строка 230 NEXT При редактировании выдаёт ошибку: Error BASE/1133 Переполнение массива: доступ к массиву Called from (b)MYPAGE_MAINMENU(230) Значение nI == 9 Как исправить ? Т.е. я понимаю что в цикле присваивать VALUE aLogic[nI] не получается ?
|
|
|
Haz
|
| |
Пост N: 545
Зарегистрирован: 20.02.11
|
|
Отправлено: 24.04.15 14:28. Заголовок: Andrey пишет: ON CH..
Andrey пишет: цитата: | ON CHANGE { || MsgDebug(nI), aLogic[nI] := GetProperty("Form_PC", cObjLog, "Value" ) } |
| было в твоих вопросах , с другим контролом правда ...но было. Andrey пишет: ON CHANGE &("{ || MsgDebug(" + ntoc(nI) +"), aLogic[" + ntoc(nI) + "] := GetProperty('Form_PC', cObjLog, 'Value' ) }" )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4131
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.04.15 14:56. Заголовок: Haz пишет: было в т..
Haz пишет: цитата: | было в твоих вопросах , с другим контролом правда ...но было. |
| Да, точно, было. Памяти точно уже нет. Спасибо за подсказку !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4132
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.04.15 19:15. Заголовок: Haz пишет: ON CHANG..
Haz пишет: цитата: | ON CHANGE &("{ || MsgDebug(" + ntoc(nI) +"), aLogic[" + ntoc(nI) + "] := GetProperty('Form_PC', cObjLog, 'Value' ) }" ) |
| Не отрабатывает вообще ON CHANGE ! Сделал так: cObjLog := "Check_" + HB_NtoS(nI) bBlock := "{ || MsgDebug(" + ntoc(nI) +"), aStatLogic[" + ntoc(nI) + "] := GetProperty('Form_PC', '" + cObjLog + "', 'Value' ) }" @ nRow, nCol CHECKBOX &cObjLog ; CAPTION 'Запуск внешней программы' ; VALUE aStatLogic[nI] ; WIDTH nWButt-20 HEIGHT 20 ; FONTCOLOR RED ; SIZE 11 TRANSPARENT ; ON CHANGE &( bBlock ) Как еще можно сделать чтобы заработало ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 610
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.04.15 20:06. Заголовок: Andrey попробуй : F..
Andrey попробуй : FOR nI := 1 TO 8 nRow := aRow[nI] + nHButt + 5 nCol := aCol[nI] + 10 //nWButt @ nRow, nCol CHECKBOX &cObjLog ; CAPTION 'Включить ХХХХ' ; VALUE aLogic[nI] ; WIDTH nWButt-20 HEIGHT 20 ; FONTCOLOR RED ; SIZE 11 TRANSPARENT ; ON CHANGE ( MsgDebug(_SetGetUserData(_HMG_THISCONTROLNAME, _HMG_THISFORMNAME), This.Value) ) // строка 230 _SetGetUserData(cObjLog, _HMG_THISFORMNAME, nI) // запомнило в Cargo NEXT
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 611
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.04.15 20:26. Заголовок: Andrey а для запоми..
Andrey а для запомининия в aLogic: ON CHANGE {|nNr| nNr := _SetGetUserData(_HMG_THISCONTROLNAME, _HMG_THISFORMNAME), ; aLogic[ nNr ] := This.Value, ; MsgDebug(nNr, aLogic[ nNr]) }
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4133
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.04.15 14:43. Заголовок: SergKis пишет: а дл..
SergKis пишет: цитата: | а для запомининия в aLogic: ON CHANGE {|nNr| nNr := _SetGetUserData(_HMG_THISCONTROLNAME, _HMG_THISFORMNAME), ; aLogic[ nNr ] := This.Value, ; MsgDebug(nNr, aLogic[ nNr]) } |
| Не работает, выдаёт: Error BASE/1069 Неверный аргумент: доступ к массиву Called from (b)MYPAGE_MAINMENU(230) Called from _DOCONTROLEVENTPROCEDURE(1654) Called from EVENTS(1523)
|
|
|
Dima
|
| |
Пост N: 4766
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.04.15 14:46. Заголовок: Andrey пишет: При р..
Andrey пишет: цитата: | При редактировании выдаёт ошибку: Error BASE/1133 Переполнение массива: доступ к массиву Called from (b)MYPAGE_MAINMENU(230) Значение nI == 9 |
| Кхм а откуда там 9 получилось если заполнялось до 8 ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4134
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.04.15 14:54. Заголовок: Dima пишет: Кхм а о..
Dima пишет: цитата: | Кхм а откуда там 9 получилось если заполнялось до 8 ? |
| А я откуда знаю... Что получил, то и спросил...
|
|
|
Dima
|
| |
Пост N: 4770
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.04.15 14:58. Заголовок: Andrey пишет: А я о..
Andrey пишет: цитата: | А я откуда знаю... Что получил, то и спросил... |
| FOR nI := 1 TO 8 NEXT ? nI // 9 однако
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4135
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.04.15 15:00. Заголовок: Andrey пишет: Не ра..
Andrey пишет: цитата: | Не работает, выдаёт: Error BASE/1069 Неверный аргумент: доступ к массиву |
| Понял, получилось. Вот так работает: FOR nI := 1 TO 8 nRow := aRow[nI] + nHButt + 5 nCol := aCol[nI] + 10 //nWButt @ nRow, nCol CHECKBOX &cObjLog ; CAPTION 'Включить ХХХХ' ; VALUE aLogic[nI] ; WIDTH nWButt-20 HEIGHT 20 ; FONTCOLOR RED ; SIZE 11 TRANSPARENT ; ON CHANGE {|nNr| nNr := _SetGetUserData(_HMG_THISCONTROLNAME, _HMG_THISFORMNAME), ; aLogic[ nNr ] := This.Value, ; MsgDebug(nNr, aLogic[ nNr]) } _SetGetUserData(cObjLog, _HMG_THISFORMNAME, nI) // запомнило в Cargo NEXT Спасибо БОЛЬШОЕ SergKis ! Пример бы такой нужен в библиотеке Григорию !!! А то в цикле не всегда получается вывести/построить объекты. Целая наука. _SetGetUserData(cObjLog, _HMG_THISFORMNAME, nI) // запомнило в Cargo - нигде не встречал, а если и видел, то и не понял для чего... Посмотрел специально, есть только в одном исходнике: h_controlmisc.prg SergKis - колдун он однако....
|
|
|
Dima
|
| |
Пост N: 4772
Зарегистрирован: 17.05.05
|
|
Отправлено: 25.04.15 15:09. Заголовок: Andrey пишет: FOR n..
Andrey пишет: цитата: | FOR nI := 1 TO 8 nRow := aRow[nI] + nHButt + 5 nCol := aCol[nI] + 10 //nWButt |
| Да оно бы и так вот работало бы FOR nI := 1 TO 8 XnI:=nI nRow := aRow[ XnI] + nHButt + 5 nCol := aCol[ XnI] + 10 и так далее
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4136
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.04.15 15:14. Заголовок: Dima пишет: Да оно ..
Dima пишет: цитата: | Да оно бы и так вот работало бы |
| Неа, не заработало бы... Я долго мучился... Проверь сам, если не веришь...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 613
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.04.15 15:44. Заголовок: Andrey Трать немног..
Andrey Трать немного времени на мат. часть. Примеры с cargo есть: BASIC\Cargo\*.prg Есть UTILS\FuncList\*.*
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 615
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.04.15 16:13. Заголовок: Andrey пишет: нигде ..
Andrey пишет: цитата: | нигде не встречал, а если и видел, то и не понял для чего... |
| для работы с cargo контрола достаточно: SetProperty(cFormName, cControlName, 'Cargo', xValue) GetProperty(cFormName, cControlName, 'Cargo') а _SetGetUserData(...) это обертка, в minigui их много. Примеры использования см. в i_pseudofunc.ch
|
|
|
Haz
|
| |
Пост N: 546
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.04.15 10:04. Заголовок: SergKis пишет: А то..
Andrey пишет: цитата: | А то в цикле не всегда получается вывести/построить объекты. Целая наука |
| Нет там никакой науки, это еще с 90х годов аксиомы из Clipper 1) цикл FOR работает так - сначала увеличивает переменную потом проверяет на достижение граничного значения. Отсюда и 9 . И так было всегда 2) кодовый блок в который передается переменная при исполнении использует значение переменной на момент этого исполнения ( в твоем примере 9 ) и так тоже было всегда. Объекты тут не при чем - в цикле формируется кодовый блок использующий переменную цикла , в любом подобном коде будет использоваться значение переменной на момент исполнения. Выход - передавать не переменную а ее значение в блок ( это как вариант с макроподстановкой ) или как пишет SergKis запоминать это значение , а потом его использовать. Cargo есть почти у всех объектов ( кстати у того-же Clipper тоже есть в его объектах тоже с 90х выучить времени полно было ) и значение переменной цикла можно сохранить там и использовать в блоке
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4137
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.04.15 13:53. Заголовок: Haz пишет: у того-ж..
Haz пишет: цитата: | у того-же Clipper тоже есть в его объектах тоже с 90х выучить времени полно было |
| Согласен, во время не выучил... Haz пишет: цитата: | и значение переменной цикла можно сохранить там и использовать в блоке |
| Покажи пожалуйста как ?
|
|
|
Dima
|
| |
Пост N: 4777
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.04.15 14:31. Заголовок: Andrey Ну так на ст..
Andrey Ну так на странице 10 все ж есть Andrey пишет: цитата: | Haz пишет: цитата: было в твоих вопросах , с другим контролом правда ...но было. Да, точно, было. Памяти точно уже нет. Спасибо за подсказку ! |
| ЗЫ Тут подход нужен как к выражениям фильтра для ADS. Например вот такое выражение ADS поймет 'KOD_KL==3' А если вот так , то нет NKOD:=3 'KOD_KL==NKOD' Посему нужно передавать значение 'KOD_KL=='+Ntoc(NKOD) или так 'KOD_KL=='+HB_NtoS(NKOD)
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 616
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.04.15 17:55. Заголовок: Haz SergKis пишет: ..
Haz цитата: | SergKis пишет: цитата: А то в цикле не всегда получается вывести/построить объекты. Целая наука |
| Это Andrey пишет Отправлено: Вчера 15:00. ...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4138
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.04.15 18:07. Заголовок: Haz пишет: цитата: ..
Haz пишет: цитата: было в твоих вопросах , с другим контролом правда ...но было. Контрол был другой. Я его нашёл. Вот он: bBlock := "{ || MEMOLINE("+ALIAS()+"->"+cField+","+HB_NTOS(LEN(cStr))+",1) }" oBrw:aColumns[nJ]:bData := &( bBlock ) oBrw:aColumns[nJ]:Cargo := cField oBrw:aColumns[nJ]:lEdit := .T. oBrw:aColumns[nJ]:bPrevEdit := { || FORMA_MEMO( oBrw:aColumns[oBrw:nCell]:cHeading, oBrw:aColumns[oBrw:nCell]:Cargo ), FALSE } Но он в данном случае к вопросу не подходит ! Из - за этого и пишу как сделать для: "и значение переменной цикла можно сохранить там и использовать в блоке" ?
|
|
|
Haz
|
| |
Пост N: 547
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.04.15 18:47. Заголовок: SergKis пишет: Это ..
SergKis пишет: цитата: | Это Andrey пишет Отправлено: Вчера 15:00. ... |
| Извиняюсь .... не обратил внимания кого автором цитаты показало. Не специально чес слово
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 617
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.04.15 20:09. Заголовок: Andrey пишет:Но он в..
Andrey пишет: цитата: | Но он в данном случае к вопросу не подходит ! |
| Все подходит и делается примерно также. У тебя bBlock := "{ || MEMOLINE("+ALIAS()+"->"+cField+","+HB_NTOS(LEN(cStr))+",1) }" теперь то, о чем вопрос ( как сделать для:...): FOR i := 1 TO k bBlock := &( "{|nNr| nNr := "+hb_ntos(i)+", aLogic[nNr] := This.Value, MsgDebug(nNr, aLogic[nNr] }" ) ... // или через Cargo из примера NEXT блока кода отличается, только тем, что завели переменную для него (могли исполтзовать и local из prg), но это давние дела ...
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 618
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.04.15 20:12. Заголовок: PS к MsgDebug скобку..
PS к MsgDebug скобку пропустил в конце
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 619
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.04.15 21:33. Заголовок: SergKis пишет:могли ..
SergKis пишет: цитата: | могли исполтзовать и local из prg |
| уточню в таком блоке (не по макро): Local nNr {|| nNr := This.Value } в макро можно private, public
|
|
|
Haz
|
| |
Пост N: 548
Зарегистрирован: 20.02.11
|
|
Отправлено: 26.04.15 21:56. Заголовок: Andrey пишет: Как е..
Andrey пишет: цитата: | Как еще можно сделать чтобы заработало ? |
| вроде можно и так ON CHANGE {|| aLogic[cton(Substr(This.Name,7))] := This.Value }
|
|
|
Dima
|
| |
Пост N: 4780
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.04.15 22:53. Заголовок: Haz пишет: Не специ..
Haz пишет: Это результат не правильной отметки текста и затем цитирования. Проверь Сам не раз на это попадал ))
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4140
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.04.15 00:16. Заголовок: Спасибо БОЛЬШОЕ всем..
Спасибо БОЛЬШОЕ всем за разъяснения ! Буду использовать ! Но не обижайтесь, если еще раз спрошу об этом в другом месте...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4173
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.05.15 21:02. Заголовок: Всем привет ! Можно ..
Всем привет ! Можно ли создать объект TAB с 3-мя вкладками, а потом одну вкладку скрыть ? Есть ли такой метод HIDE для Tab ?
|
|
|
Haz
|
| |
Пост N: 553
Зарегистрирован: 20.02.11
|
|
Отправлено: 18.05.15 10:57. Заголовок: Andrey пишет: вклад..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4174
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.05.15 12:27. Заголовок: Haz Спасибо ! :sm36..
Haz Спасибо ! Пропустил я этот пример...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4181
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.05.15 09:57. Заголовок: Всем привет ! Подска..
Всем привет ! Подскажите пожалуйста, как узнать размеры чужого окна зная его ХЕНДЛ ?
|
|
|
Haz
|
| |
Пост N: 560
Зарегистрирован: 20.02.11
|
|
Отправлено: 24.05.15 10:06. Заголовок: Andrey пишет: как у..
Andrey пишет: цитата: | как узнать размеры чужого окна зная его ХЕНДЛ |
| Посмотри в своем же примере ( только раз хендл звестен то GetFormHandle соответственно не надо ) IniSavePosWinCfg.prg GetWindowRect( GetFormHandle( FormName ), actpos )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4183
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.05.15 10:13. Заголовок: Haz пишет: Посмотри..
Haz пишет: цитата: | Посмотри в своем же примере |
| Блин, так просто... Спасибо БОЛЬШОЕ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4189
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.05.15 16:45. Заголовок: Читаем: XtoC() Conve..
Читаем: XtoC() Converts values of data type C, D, L, M, N to a string. А прога на МиниГуи вываливается... Error BASE/1081 Argument error: + Called from TAKECUSTOMERDATA(76) Called from (b)MAIN(37) Called from _DOCONTROLEVENTPROCEDURE(1654) Called from EVENTS(1325) Called from INKEYGUI(0) Called from MY_MESSAGE(187) Called from TAKECUSTOMERDATA(78) Строка 76: cStaticMsg += cStr + VALTYPE(r) + ":" + XtoC( r ) + CRLF Как лечить ?
|
|
|
Dima
|
| |
Пост N: 4830
Зарегистрирован: 17.05.05
|
|
Отправлено: 24.05.15 16:51. Заголовок: Почему решил что пад..
Почему решил что падает именно на Xtoc ? Что за переменная r и cStr ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4191
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.05.15 16:57. Заголовок: r := GETDATA() if r ..
r := GETDATA() if r != NIL cStr := "Received " + DTOC(DATE()) + " " + TIME() + " - " cStaticMsg += cStr + VALTYPE(r) + ":" + XtoC( r ) + CRLF Form_Main.Edit_Result.Value := cStaticMsg My_Message( VALTYPE(r) + ":" + XtoC( r ) ) endif Заменил XtoC() на hb_ValToExp() падать перестало ! Спасибо Дима, выручил !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4196
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.05.15 18:52. Заголовок: Смотрел пример Z: ..
Смотрел пример Z:\MiniGUI\SAMPLES\BASIC\COMM не понял для чего. Пока Григорий пример не дал другой, так и не понял. Сейчас опять глянул, 2 таблички и всё. Смотрю тексты программ - вижу Set CommPath To 'C:\' Так как у меня Win8 и она блокирует запись на 'C:\' даже под админской учеткой (переспросит несколько раз зараза), то понял что за пример и почему не работал. Под WinXP пример работает. Чем заменить 'C:\' чтобы везде работало ? Не забываем про русские буквы в пути... И про то что хХарбор по другому может читать (допустим 866 кодировка, а в пути русские буквы)...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4233
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.06.15 14:45. Заголовок: Всем привет. Можно л..
Всем привет. Можно ли у окна MODAL ограничить изменение размеров до заданных ? Делаю так: DEFINE WINDOW Form_Card ; ............................. MODAL ; ON SIZE { || ResizeForm() } ; ON INIT MyInitForm() ; Работает отлично, но окно можно сделать крохотным. Мне надо ограничить допустим до: MINWIDTH 770 MINHEIGHT 490 ; Если вставляю эту строчку, то при 1-ом же изменение размера окна - ОКНО становиться в размер 770х490 и не меняется вообще. Что не так делаю ?
|
|
|
Haz
|
| |
Пост N: 570
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.06.15 16:17. Заголовок: Andrey пишет: Что н..
Andrey пишет: вроде все так, скорее всего глюк минигуи. PS. раз уж есть ON SIZE то можно в нем отслеживать размер окна и если он меньше заданного минимально - принудительно выставлять минимум ( т.е. не пользоваь MINWIDTH и MINHEIGHT ) Примерно такие строки нужно добавить в ResizeForm() IF GetProperty("Form_Card", "WIDTH") < 770 SetProperty("Form_Card", "WIDTH", 770) END IF GetProperty("Form_Card", "HEIGHT") < 490 SetProperty("Form_Card", "HEIGHT", 490) END
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4234
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.06.15 16:43. Заголовок: Haz Спасибо БОЛЬШОЕ ..
Haz Спасибо БОЛЬШОЕ ! Не раз выручаешь !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4257
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.06.15 20:11. Заголовок: Использую объект: ..
Использую объект: LOCAL aBackcolor := {192, 185, 154} @ 20,30 CHECKLISTBOX ListBox_2 ; WIDTH 390 HEIGHT 290 ; ITEMS aItems ; VALUE {2} ; CHECKBOXITEM {} ; BACKCOLOR aBackcolor ; ON DBLCLICK cmlb_Check() ; MULTISELECT ; ITEMHEIGHT 19 А как изменить цвета для него ? А то получается этот объект весь белый ?
|
|
|
Dima
|
| |
Пост N: 4902
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.06.15 16:30. Заголовок: MDICHILD окно , как ..
MDICHILD окно , как ему прицепить свой фон , наследуемый фон из MDI окна не устраивает. Нашли решение ON INIT { || SetWindowBackground( GetFormHandle(This.Name) , PaintBkGnd( GetFormHandle(This.Name), aRGB} ) )}
|
|
|
Dima
|
| |
Пост N: 4903
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.06.15 17:43. Заголовок: Andrey я еще не мно..
Andrey я еще не много "на....у" в твоем заповеднике На основной MDI форме живет картинка , после того как на нем полежало MDICHILD окно картинка пропадает. Как решить проблему ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4260
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.06.15 17:56. Заголовок: Dima пишет: Как реш..
Dima пишет: Скорее всего эту картинку нужно перерисовать заново. Сделай после MDICHILD перерисовку картинки, типа: Окно_1.картинка_1.Enabled := .F. а потом сразу Окно_1.картинка_1.Enabled := .T. или если не поможет, то Окно_1.картинка_1.Hide INKEYGUI(50) Окно_1.картинка_1.Show
|
|
|
Dima
|
| |
Пост N: 4904
Зарегистрирован: 17.05.05
|
|
Отправлено: 16.06.15 18:06. Заголовок: Andrey Нет не помог..
Andrey Нет не помогает...
|
|
|
alexandr11
|
| |
Пост N: 20
Зарегистрирован: 17.12.14
|
|
Отправлено: 17.06.15 10:06. Заголовок: пример webcam из MiniGUI2.4
пример webcam из MiniGUI2.4 видео пишется в файл c:\capture.avi по умолчанию нужно сменить имя файла нашел в vfw.h такую строку #define capFileSetCaptureFile(hwnd, szName) ((BOOL)AVICapSM(hwnd, WM_CAP_FILE_SET_CAPTURE_FILE, 0, (LPARAM)(LPVOID)(LPTSTR)(szName))) по аналогии с другими функциями из webcam.prg написал функцию HB_FUNC( SetCapFile ) { hb_retl( capFileSetCaptureFile( (HWND) hb_parnl(1), hb_parc(2) ) ); } С-файл собирается, но получаю Unresolved external '_HB_FUN_SETCAPFILE' referenced from WEBCAM.OBJ помогите пожалуйста
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4262
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.06.15 11:40. Заголовок: Dima пишет: Нет не ..
Dima пишет: Давай отдельный пример. Может при создании этого примера можно будет понять что не так делаешь. У меня тоже так частенько получается, вроде должно работать, а не работает. Делаешь отдельный пример и понимаешь как нужно сделать.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4280
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.15 09:11. Заголовок: Andrey пишет: Выдае..
Andrey пишет: цитата: | Выдает такую ошибку: Harbour 3.2.0dev (r1503131756) Copyright (c) 1999-2015, http://harbour-project.org/ Source\form_LoginPassw.prg(82) Error E0030 Syntax error "syntax error at '@'" Source\form_LoginPassw.prg(90) Error E0030 Syntax error "syntax error at '@'" 2 errors No code generated. |
| Опять такие же грабли ..... Увеличил свой проект на 450Кб текстов программ и опять не хочет собираться. В отдельном модуле собирается нормально, как начинаешь добавлять в основную программу - отказ компиляции, на простом месте. Почему ? Вот так выглядит ошибка: Harbour 3.2.0dev (r1505191317) Copyright (c) 1999-2015, http://harbour-project.org/ Source\form_transf_cnf1.prg(101) Error E0030 Syntax error "syntax error at '@'" Source\form_transf_cnf1.prg(118) Error E0030 Syntax error "syntax error at '@'" 2 errors No code generated. Вот так выглядит код который в небольшом проекте собирается, а к большому присоединяешь - НЕ собирается: Скрытый текст @ nRowButt, 140 BUTTONEX Button_Save ; WIDTH nWButt HEIGHT nHButt ; CAPTION 'Сохранить' ; ICON "iFloppy48x1" ; FONTCOLOR aButtColor ; BACKCOLOR COLOR_GREEN_METRO ; SIZE nFBSize2 ; NOXPSTYLE ; ON MOUSEHOVER ( SetProperty(ThisWindow.Name, This.Name, "ICON", "iFloppy48x2") ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aButtColor2 ) ) ; ON MOUSELEAVE ( SetProperty(ThisWindow.Name, This.Name, "ICON", "iFloppy48x1") ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aButtColor ) ) ; ACTION { || SaveConfig(), Form_DbM2Cnf1.Release() } // строка 101 // при наведении мышкой на кнопку стрелка меняется на палец nIndex := GetControlIndex('Button_Save', ThisWindow.Name) _HMG_aControlInputMask [ nIndex ] := .T. @ nRowButt, 420 BUTTONEX Button_Exit ; WIDTH nWButt HEIGHT nHButt ; ICON "iExit48x1" ; CAPTION 'Выход' ; FONTCOLOR aButtColor ; BACKCOLOR COLOR_BRIGHT_RED ; SIZE nFBSize2 ; NOXPSTYLE ; ON MOUSEHOVER ( SetProperty(ThisWindow.Name, This.Name, "ICON", "iExit48x2") ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aButtColor2 ) ) ; ON MOUSELEAVE ( SetProperty(ThisWindow.Name, This.Name, "ICON", "iExit48x1") ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aButtColor ) ) ; ACTION { || Form_DbM2Cnf1.Release() } // строка 118 // при наведении мышкой на кнопку стрелка меняется на палец nIndex := GetControlIndex('Button_Exit', ThisWindow.Name) _HMG_aControlInputMask [ nIndex ] := .T.
| Помогите пожалуйста.
|
|
|
Dima
|
| |
Пост N: 4926
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.06.15 09:34. Заголовок: Andrey пишет: Form_..
Andrey пишет: DoMethod("Form_DbM2Cnf1","Release")
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4281
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.15 10:43. Заголовок: Dima пишет: DoMetho..
Dima пишет: цитата: | DoMethod("Form_DbM2Cnf1","Release") |
| Даже ставил ThisWindow.Release - бестолку, не компилирует. Даже убрал вообще ACTION { || .... } всё равно не компилирует. У меня новых 4 модуля с такой конструкцией. В проекте есть старые такие же конструкции - он их компилирует. Как убираешь эти кнопки - компилируется нормально. Объём текстов то небольшой - чуть меньше 2 Мб ... Всё чудесней и чудесней со временем становиться...
|
|
|
Dima
|
| |
Пост N: 4927
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.06.15 10:52. Заголовок: Andrey пишет: Всё ч..
Andrey пишет: цитата: | Всё чудесней и чудесней со временем становиться... |
| И у меня та же фигня
|
|
|
Dima
|
| |
Пост N: 4928
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.06.15 11:00. Заголовок: По ходу в описании B..
По ходу в описании BUTTONEX не указан PARENT и если описание делается вне описания окна тогда и не собрать
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4282
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.15 11:02. Заголовок: Закоментировал что н..
Dima пишет: цитата: | По ходу в описании BUTTONEX не указан PARENT и если описание делается вне описания окна тогда и не собрать |
| Он не обязателен. В малом проекте ВСЁ собирается, а в большом нет. Закоментировал что не собирается и ОПЯТЬ облом.... Пишет: Harbour 3.2.0dev (r1505191317) Copyright (c) 1999-2015, http://harbour-project.org/ OBJ\form_transf_cnf1.c: Turbo Incremental Link 5.66 Copyright (c) 1997-2002 Borland Error: Unresolved external '_HB_FUN_GETWINDOWWIDTH' referenced from W:\HB_PROJECT\ Error: Unresolved external '_HB_FUN_GETWINDOWHEIGHT' referenced from W:\HB_PROJECT\ Смотрю текст: nTabWidth := GetWindowWidth(GetControlHandle('Tab_1', _HMG_ThisFormName)) - 2*2 nTabHeight := GetWindowHeight(GetControlHandle('Tab_1', _HMG_ThisFormName)) - 1 В отдельном проекте компилируется и собирается нормально. Как в большой проект засовываешь - всё СТОП работа. Функции FUN_GETWINDOWWIDTH такой действительно нет. Там должно срабатывать из i_controlmisc.ch #xtranslate GetWindowWidth ( <hWnd> ) ; => ; GetWindowRect( <hWnd>, 3 ) Чем больше текста, тем хуже компилятор Харбора справляется с работой ?
|
|
|
Haz
|
| |
Пост N: 577
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.06.15 11:08. Заголовок: Andrey пишет: Даже ..
Andrey пишет: цитата: | Даже ставил ThisWindow.Release - бестолку, |
| может проблема в том что требуется блок кода, а не список процедур в скобках ON MOUSEHOVER ( SetProperty(ThisWindow.Name, This.Name, "ICON", "iExit48x2") ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aButtColor2 ) ) ; не проверял , но так как выше я писать точно не стал бы а с этим тоже не ботает ? ON MOUSEHOVER { || SetProperty(ThisWindow.Name, This.Name, "ICON", "iExit48x2") ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aButtColor2 ) } ;
|
|
|
Dima
|
| |
Пост N: 4929
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.06.15 11:11. Заголовок: Haz Глаз алмаз :sm..
Haz Глаз алмаз
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4283
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.15 11:26. Заголовок: Haz пишет: может пр..
Haz пишет: цитата: | может проблема в том что требуется блок кода, а не список процедур в скобках ON MOUSEHOVER ( SetProperty(ThisWindow.Name, This.Name, "ICON", "iExit48x2") ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aButtColor2 ) ) ; |
| Как Григорий дал, так и использую.... Отсебятины не делал.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4284
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.15 11:29. Заголовок: Чем больше текста, т..
Чем больше текста, тем хуже компилятор Харбора справляется с работой ? Вручную в начале программы где использую GetWindowWidth и GetWindowHeight поставил: #xtranslate GetWindowWidth ( <hWnd> ) => GetWindowRect( <hWnd>, 3 ) #xtranslate GetWindowHeight ( <hWnd> ) => GetWindowRect( <hWnd>, 4 ) Тогда собралась программа. Но это же неправильно ! Может какие то ограничения у Харбора при компиляции ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4285
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.15 11:35. Заголовок: Haz пишет: а с этим..
Haz пишет: цитата: | а с этим тоже не ботает ? ON MOUSEHOVER { || SetProperty(ThisWindow.Name, This.Name, "ICON", "iExit48x2") ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aButtColor2 ) } ; |
| Нет не заработало... Придется наверно отдельную функцию писать... Чем больше текст, тем меньше вероятности его компиляции...
|
|
|
Haz
|
| |
Пост N: 578
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.06.15 11:39. Заголовок: Andrey пишет: Отсеб..
Andrey пишет: в этом и все дело, это как списать пример в школе не понимая решения. Андрей, компилятор всегда ведет себя одинаково, что маленький проект , что большой. Разница может быть только в том , что компилятору скармливают. на входе ( инклюды , объявления и пр ) У меня ни разу не было ситуации что тестовый код при включении в проект вел себя по другому ( при идентичности условий компиляции ). Компилятор проверяет лексику и синтаксис ( скобки , ключевые конструкции, объявления ) , но не логику. Раз ругань идет от компилятора - проверяй синтаксис , парные операнды, парные конструкции , скобки, и пр. чудес не бывает.
|
|
|
Haz
|
| |
Пост N: 579
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.06.15 11:42. Заголовок: Andrey пишет: Нет н..
Andrey пишет: так там не один HOVER со скобками круглыми в куске кода, еще и MOUSELEAVE есть такой же Andrey пишет: цитата: | Чем больше текст, тем меньше вероятности его компиляции.. |
| тем больше вероятности в нем накосячить , а свалить на компилятор
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4286
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.15 12:04. Заголовок: Haz пишет: так там ..
Haz пишет: цитата: | так там не один HOVER со скобками круглыми в куске кода, еще и MOUSELEAVE есть такой же |
| Оба сделал, несколько раз перепроверил. Не работает. Haz пишет: цитата: | тем больше вероятности в нем накосячить , а свалить на компилятор |
| Ну не понимаю я. Сделал отдельный проект - 450 Кб текстов программ. Оттестировал, собирается - короче работает. Добавляю в большой проект - перестаёт компилироваться. Ошибки выше. Поборол компиляцию (закомментировал пока), вылазит ошибка - нету функций. Препроцессор сдох... Ручками добавил - заработало. Ну это разве работа ? Вот и спрашиваю, может слишком много текстов программ, увеличить надо какие то параметры для препроцессора и самого компилятора ? Проект то ещё пока не шибко большой: 2 Мб текстов, ехе-ник сам всего 8 Мб.
|
|
|
Haz
|
| |
Пост N: 580
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.06.15 12:22. Заголовок: Andrey пишет: Проек..
Andrey пишет: цитата: | Проект то ещё пока не шибко большой: 2 Мб |
| не аргумент ... Исходники MiniGui 6МБ и компилятор их жует отлично. Проверяй так 1 ) в MOUSEHOVER и MOUSELEAVE поставь {|| NIL } Если собирается косяк в этих кусках кода, не собирается - не в этиж 2) Упрости максимально @ BUTTONEX ,,,, в одну строку в ACTION {|| NIL } собирается - расскрывай все что дописал. Ну и надеюсь 2МБ это модули а не одним куском ( и модули независимые а не один живет в другом в виде include module2.prg )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4287
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.15 12:33. Заголовок: Haz пишет: Ну и над..
Haz пишет: цитата: | Ну и надеюсь 2МБ это модули а не одним куском ( и модули независимые а не один живет в другом в виде include module2.prg ) |
| Конечно модули, отдельные-независимые программы.
|
|
|
Haz
|
| |
Пост N: 581
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.06.15 12:39. Заголовок: Andrey пишет: Конеч..
Andrey пишет: цитата: | Конечно модули, отдельные-независимые программы. |
| т.е. тогда какойто отдельный модуль не компилится ? Ищи в нем косяк , на чем спотыкается компилятор - закоменти код ставь заглушки. Тебе важно понять причину а не обойти ее ( т.к. не первый раз спотыкаешься )
|
|
|
Dima
|
| |
Пост N: 4930
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.06.15 13:17. Заголовок: Из хелпа Поэтому ..
Из хелпа [ ON GOTFOCUS | ON MOUSEHOVER <OnGotfocusProcedure | bBlock> ] Поэтому или процедура или блок. Перечисление функций в скобках видимо не прокатит.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 652
Зарегистрирован: 17.02.12
|
|
Отправлено: 21.06.15 14:23. Заголовок: Andrey глянь препро..
Andrey глянь препроцессор и попробуй obj из тестового (работающего) проекта включить в большой. может проще не куски кода таскать, а формировать lib и ее включать в проекты
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4288
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.15 16:51. Заголовок: Dima пишет: Перечис..
Dima пишет: цитата: | Перечисление функций в скобках видимо не прокатит. |
| Прокатывает ! Если объём файлов в проекте 450Кб то собирается... Если большой проект: 2Мб - не собирается. Простое копирование файлов из одной паки в другую. 4 файла не компилируются после вставки в большой проект. Вот хоть тресни. Это 1-я беда, вторая беда - не может препроцессор найти в 3-х модулях функции GetWindowWidth и GetWindowHeight. Вручную поставил сам в начале модулей: #xtranslate GetWindowWidth ( <hWnd> ) => GetWindowRect( <hWnd>, 3 ) #xtranslate GetWindowHeight ( <hWnd> ) => GetWindowRect( <hWnd>, 4 ) Тогда заработало. Вот и спрашиваю, что за фигня, может у Харбора надо что-то подкрутить ? В Клипере раньше приходилось шаманить, не помню уже что. SergKis пишет: цитата: | Andrey глянь препроцессор и попробуй obj из тестового (работающего) проекта включить в большой. может проще не куски кода таскать, а формировать lib и ее включать в проекты |
| Попробую. Нет не особо удобно формировать и таскать lib. Не привык я к такому.
|
|
|
Dima
|
| |
Пост N: 4933
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.06.15 17:17. Заголовок: Andrey пишет: втора..
Andrey пишет: цитата: | вторая беда - не может препроцессор найти в 3-х модулях функции GetWindowWidth и GetWindowHeight. Вручную поставил сам в начале модулей: |
| #include "minigui.ch" прописан в PRG ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4290
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.15 17:35. Заголовок: Dima пишет: #includ..
Dima пишет: цитата: | #include "minigui.ch" прописан в PRG ? |
| Конечно ! Иначе бы вообще не собирал !
|
|
|
Dima
|
| |
Пост N: 4934
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.06.15 17:42. Заголовок: Тогда фик знает. Мож..
Тогда фик знает. Может и есть какое ограничение. Максимум что у меня было для сборки (GTWVT) файл размером 320 кило и строк в нем 13000 , собирается нормально.
|
|
|
Haz
|
| |
Пост N: 582
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.06.15 17:47. Заголовок: Dima пишет: Это 1-я..
Andrey пишет: цитата: | Это 1-я беда, вторая беда - |
| Андрей, думаю в твоей ситуации без "самодостаточного" примера - это пальцем в небо ... ЗЫ. у меня в проекте 133 файла и 1,5 МБ кода - все норм
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4291
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.06.15 19:42. Заголовок: Haz пишет: Андрей, ..
Haz пишет: цитата: | Андрей, думаю в твоей ситуации без "самодостаточного" примера - это пальцем в небо ... ЗЫ. у меня в проекте 133 файла и 1,5 МБ кода - все норм |
| Давай я тебе пришлю модуль который не компилируется ? У меня в проекте 89 файлов и 1,9 Мб кода.
|
|
|
Haz
|
| |
Пост N: 583
Зарегистрирован: 20.02.11
|
|
Отправлено: 22.06.15 10:39. Заголовок: Andrey пишет: Давай..
Andrey пишет: цитата: | Давай я тебе пришлю модуль который не компилируется |
| шли
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4296
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.06.15 14:17. Заголовок: Haz пишет: шли Выс..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4301
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.06.15 21:59. Заголовок: Трехдневная эпопея с..
Трехдневная эпопея со сборкой там работает, а здесь нет подола наконец то к завершению. Спасибо большое всем кто откликнулся. Убрал в своём большом проекте МойПроект.hbp строчку -incpath=z:\minigui\include и всё стало нормально компилироваться ... Блин, ну почему такие явные вещи мешают компиляции - загадка ! Как в той загадке - без окон и дверей полна горница:
|
|
|
Dima
|
| |
Пост N: 4947
Зарегистрирован: 17.05.05
|
|
Отправлено: 22.06.15 22:02. Заголовок: Andrey пишет: -incp..
Andrey пишет: цитата: | -incpath=z:\minigui\include |
| путь то есть такой ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4302
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.06.15 22:20. Заголовок: Dima пишет: путь то..
Dima пишет: Да есть, у меня там МиниГуй установлен. Даже это теперь компилируется: ON MOUSEHOVER ( SetProperty(ThisWindow.Name, This.Name, "ICON", "iFloppy48x2") ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aButtColor2 ) ) ; ON MOUSELEAVE ( SetProperty(ThisWindow.Name, This.Name, "ICON", "iFloppy48x1") ,; SetProperty(ThisWindow.Name, This.Name, "fontcolor", aButtColor ) ) ;
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4303
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.06.15 09:52. Заголовок: Можно ли сделать/соз..
Можно ли сделать/создать окно - чтобы оно было отдельно на панели задач от MAIN окна ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4323
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.06.15 13:44. Заголовок: Как сделать ввод чис..
Как сделать ввод числа по маске "999 999 999" ? Делаю так: @ 45,130 TEXTBOX TextBox_1 VALUE M->nPubMaxRecno WIDTH 120 HEIGHT 32 ; BACKCOLOR {255,255,255} SIZE 14 NUMERIC INPUTMASK '999 999 999' ; ON CHANGE {|| M->nPubMaxRecno := Form_6.TextBox_1.Value } а на экране всё равно слитно цифры отображаются...
|
|
|
Haz
|
| |
Пост N: 584
Зарегистрирован: 20.02.11
|
|
Отправлено: 30.06.15 14:41. Заголовок: Andrey пишет: Как с..
Andrey пишет: цитата: | Как сделать ввод числа по маске "999 999 999" |
| переделать через @ 45 ,130 GETBOX ... PICTURE "@R 999 999 999"
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4325
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.06.15 15:28. Заголовок: Спасибо БОЛЬШОЕ ! :..
Спасибо БОЛЬШОЕ ! Отправил письмо на почту, посмотри пожалуйста. И еще в догонку к этому письму, не получается переместить фокус в ГРИД после расчёта. Делаю: @ 450,15 BUTTONEX Button_Start CAPTION 'Starting calculation'; WIDTH 380 HEIGHT 40 BACKCOLOR LGREEN FONTCOLOR WHITE BOLD ; NOXPSTYLE HANDCURSOR ACTION {|| Test_Calc_Dbf(), Form_1.Grid_1.Setfocus } а курсор в ГРИД не переходит...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4328
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.06.15 16:00. Заголовок: Смотрел пример \..
Смотрел пример \MiniGUI\SAMPLES\Advanced\GridColor Там строка 132: Form_1.Grid_1.SetFocus или я не то смотрю.... А, понял... Нужно сначала ставить: Form_1.Grid_1.Value := 1, а потом уже Form_1.Grid_1.SetFocus ! Тогда работает !
|
|
|
Dima
|
| |
Пост N: 4997
Зарегистрирован: 17.05.05
|
|
Отправлено: 30.06.15 16:02. Заголовок: Andrey пишет: Form_..
Andrey пишет: А если через Domethod
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4329
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.06.15 16:04. Заголовок: Dima пишет: А если ..
Dima пишет: А не важно как, всеравно препроцессор поставит сам Domethod !
|
|
|
Haz
|
| |
Пост N: 585
Зарегистрирован: 20.02.11
|
|
Отправлено: 30.06.15 16:27. Заголовок: Andrey пишет: Делаю..
Andrey пишет: цитата: | Делаю: @ 450,15 BUTTONEX Button_Start CAPTION 'Starting calculation'; WIDTH 380 HEIGHT 40 BACKCOLOR LGREEN FONTCOLOR WHITE BOLD ; NOXPSTYLE HANDCURSOR ACTION {|| Test_Calc_Dbf(), Form_1.Grid_1.Setfocus } |
| Form_1.Grid_1.Setfocus , Form_1.Grid_1.Value := 1 }
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4330
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.06.15 17:04. Заголовок: Haz пишет: Form_1.G..
Haz пишет: цитата: | Form_1.Grid_1.Setfocus , Form_1.Grid_1.Value := 1 } |
| Спасибо, понял !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4336
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.07.15 09:37. Заголовок: Григорий ! Просвети ..
Григорий ! Просвети в вопросе по окнам. Юзера достали... Вот нужно им чтобы при сбросе окна кнопкой [_] - вниз, появлялось рядом иконка этого окна. Можно ли сделать/создать окно - чтобы оно было отдельно на панели задач от MAIN окна ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 675
Зарегистрирован: 17.02.12
|
|
Отправлено: 01.07.15 10:23. Заголовок: Andrey пишет:Можно л..
Andrey пишет: цитата: | Можно ли сделать/создать окно - чтобы оно было отдельно на панели задач от MAIN окна ? |
| CHILD у окна не пиши
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 769
Зарегистрирован: 11.02.10
|
|
Отправлено: 01.07.15 12:40. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно ли сделать/создать окно - чтобы оно было отдельно на панели задач |
| Для этой цели надо использовать дочерние окна типа STANDARD (см. пример ниже) Скрытый текст
#include "minigui.ch" Function Main Local i, cForm DEFINE WINDOW Win_1 ; TITLE 'Hello World!' ; WINDOWTYPE MAIN END WINDOW DEFINE WINDOW Win_2 ; TITLE 'Child Window' ; WINDOWTYPE STANDARD END WINDOW DEFINE WINDOW Win_3 ; TITLE 'Modal Window' ; WINDOWTYPE MODAL END WINDOW FOR i:=1 TO 3 cForm := "Win_" + str(i, 1) _DefineHotKey(cForm, 0, 27, hb_MacroBlock("_ReleaseWindow('"+cForm+"')")) NEXT Win_3.Center ACTIVATE WINDOW Win_3, Win_2, Win_1 Return Nil
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4337
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.07.15 13:21. Заголовок: SergKis пишет: CHIL..
SergKis пишет: Попробовал - работает ! Спасибо Большое ! Скрытый текст #include "minigui.ch" FUNCTION Main DEFINE WINDOW Form1 ; AT 0 , 0 ; WIDTH 600 HEIGHT 400 ; TITLE "Window 1" ; MAIN ; BACKCOLOR YELLOW DEFINE BUTTON Button_1 ROW 60 COL 60 WIDTH 180 HEIGHT 48 CAPTION "Win2" ACTION Win2() FONTNAME "Arial" FONTSIZE 18 END BUTTON END WINDOW CENTER WINDOW Form1 Activate Window Form1 RETURN nil /////////////////////////////////////////////////////////////////// FUNCTION Win2() if IsWindowDefined(Form2) Show Window Form2 else DEFINE WINDOW Form2 ; AT 100 , 100 ; WIDTH 400 HEIGHT 370 ; TITLE "Window 2" ; BACKCOLOR BLUE END WINDOW Activate Window Form2 endif RETURN NIL
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4348
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.07.15 14:29. Заголовок: http://f5.s.qip.ru/w..
Есть меню - DEFINE CONTEXT MENU CONTROL ... Какие примеры можно посмотреть ?
|
|
|
Сергей Р
|
| |
Пост N: 156
Зарегистрирован: 02.02.06
|
|
Отправлено: 03.07.15 09:59. Заголовок: gfilatov2002 привет...
gfilatov2002 привет. после 5-ти летнего прозябания, начал снова использовать твою GUI, но теперь даже простое меню стало выдавать кучу нелицеприятных ругательств. Было (Harbour MiniGUI 1.7 Extended Edition (Build 77) - 2009.11.26), что теперь все заново изучать?, или можешь помочь с объяснением ошибок: Error Unresolved external ' hb extIsNil' referenced from C:\MINIGUI\LIB\MINIGUI.LIB|c winapimisc Error Unresolved external 'TransparentBlt' referenced from C:\MINIGUI\LIB\MINIGUI.LIB|c image Error Unresolved external ' HB FUN HB EOL' referenced from C:\MINIGUI\LIB\MINIGUI.LIB|h error Error Unresolved external ' HB FUN HB DEFAULT' referenced from C:\MINIGUI\LIB\MINIGUI.LIB|h windows Error Unresolved external ' HB FUN DEFAULTNIL' referenced from C:\MINIGUI\LIB\MINIGUI.LIB|h windows Error Unresolved external ' HB FUN HB DEFAULTVALUE' referenced from C:\MINIGUI\LIB\MINIGUI.LIB|h winprop Error Unresolved external ' HB FUN HB VAL' referenced from C:\MINIGUI\LIB\MINIGUI.LIB|h getbox Error Unresolved external ' HB FUN PVALUE' referenced from C:\MINIGUI\LIB\MINIGUI.LIB|h windows Error Unresolved external ' HB FUN HB DATE' referenced from C:\MINIGUI\LIB\MINIGUI.LIB|h controlmisc Error Unresolved external ' HB FUN HB ISFUNCTION' referenced from C:\MINIGUI\LIB\MINIGUI.LIB|h hyperlink
|
|
|
Dima
|
| |
Пост N: 5024
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.07.15 10:11. Заголовок: Сергей Р пишет: Был..
Сергей Р пишет: цитата: | Было (Harbour MiniGUI 1.7 Extended Edition (Build 77) - 2009.11.26) |
| А сейчас ? Старый пересобранный код не работает что ли ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 696
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.07.15 10:29. Заголовок: Сергей Р использует..
Сергей Р используете hb 2.0 или hb 3.2 ?
|
|
|
Сергей Р
|
| |
Пост N: 157
Зарегистрирован: 02.02.06
|
|
Отправлено: 03.07.15 11:39. Заголовок: Dima Да, пересобранн..
Dima Да, пересобранный код не фурычит. Сейчас взял текущий Harbour MiniGUI Extended Edition 2.4.7, ты не поверишь, я за всю жизнь столько ошибок не сделал.
|
|
|
Сергей Р
|
| |
Пост N: 158
Зарегистрирован: 02.02.06
|
|
Отправлено: 03.07.15 11:41. Заголовок: SergKis Брал комлект..
SergKis Брал комлект, который идет в поставке с 3.2
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 697
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.07.15 12:00. Заголовок: Сергей Р env includ..
Сергей Р env include правильно назначен ? i_pseudofun.ch ... #if ( __HARBOUR__ - 0 < 0x030200 ) #xtranslate hb_IsFunction( <c> ) => ( Type( <c> + "()" ) == "UI" ) # xtranslate hb_default( @<v>, <x> ) => iif( StrTran( ValType( <v> ), "M", "C" ) == StrTran( ValType( <x> ), "M", "C" ), Nil, <v> := <x> ) # xtranslate hb_defaultValue( <v>, <x> ) => iif( StrTran( ValType( <v> ), "M", "C" ) == StrTran( ValType( <x> ), "M", "C" ), <v>, <x> ) # xtranslate __defaultNIL( @<v>, <x> ) => ( <v> := iif( <v> == NIL, <x>, <v> ) ) #endif в 3.2 - hb_IsFunction - ok! А у Вас вылезла как не найденная. а пример любой из samples\basic Compile.bat собирает ? сам работаю с hb 2.0 + MiniGui 2.0.7
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4365
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.07.15 12:32. Заголовок: Всем привет. Можно ..
Всем привет. Можно ли из основной программы создать отдельное окно которое бы висело в трее ? Если можно, то подскажите пожалуйста как.
|
|
|
Dima
|
| |
Пост N: 5073
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.07.15 12:39. Заголовок: NOTIFYICON и NOTIFYB..
NOTIFYICON и NOTIFYBALLOONCLICK не устраивает ? Andrey пишет: цитата: | Можно ли из основной программы создать отдельное окно которое бы висело в трее ? |
| Создал окно NOSHOW , прицепил к нему NOTIFYICON и NOTIFYBALLOONCLICK , по клику в трее на иконке окну делаем SHOW.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4367
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.07.15 16:50. Заголовок: Dima пишет: Создал ..
Dima пишет: Наверно MAIN создал. А мне нужно CHILD или STANDART !
|
|
|
Dima
|
| |
Пост N: 5074
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.07.15 16:54. Заголовок: Andrey пишет: Навер..
Andrey пишет: я про MAIN и не писал ни чего да и про тип окна , это уже на твой вкус. просто дал идею ;)
|
|
|
Haz
|
| |
Пост N: 591
Зарегистрирован: 20.02.11
|
|
Отправлено: 07.07.15 17:44. Заголовок: Andrey пишет: А мне..
Andrey пишет: цитата: | А мне нужно CHILD или STANDART ! |
| NotifyIcon - это проперти ТОЛЬКО главного окна . А раз это проперти, то менять его можно откуда угодно через SetProperty() и разумеется эта икона сначала должна быть определена в описании главного окна хоть как пустое значение.
|
|
|
Dima
|
| |
Пост N: 5076
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.07.15 17:46. Заголовок: Haz пишет: NotifyIc..
Haz пишет: цитата: | NotifyIcon - это проперти ТОЛЬКО главного окна . |
| Записал себе. Не знал.
|
|
|
Haz
|
| |
Пост N: 592
Зарегистрирован: 20.02.11
|
|
Отправлено: 07.07.15 18:35. Заголовок: NotifyIcon - это про..
цитата: | NotifyIcon - это проперти ТОЛЬКО главного окна |
| Хочу добавить - только главного окна в реализации MiniGui ( в коде стоит запрет на все окна кроме MAIN ). NotifyIcon можно создать и привязать к любому виду окна, В исходниках c_windows.c есть все для этого ShowNotifyIcon и ChangeNotifyIcon.
|
|
|
Dima
|
| |
Пост N: 5078
Зарегистрирован: 17.05.05
|
|
Отправлено: 07.07.15 19:16. Заголовок: Записал и это , сенк..
Записал и это , сенкс , пробну
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4368
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.07.15 19:39. Заголовок: Взял свою старую про..
Взял свою старую программу которая в трее сидит, заменил MAIN на STANDART. DEFINE WINDOW Form_Site ; AT 0,0 ; WIDTH 400 HEIGHT 100 ; TITLE cTitle ; WINDOWTYPE STANDARD ; NOMAXIMIZE NOSIZE NOSYSMENU ; BACKCOLOR LGREEN ; NOTIFYICON '1MAIN_ICON' ; NOTIFYTOOLTIP cTitle ; ON NOTIFYCLICK MsgDebug("NOTIFYCLICK !") // строка 36 ! Ошибка при выполнении: Error MGERROR/0 Notification icon allowed only in Main Window. Program terminated. Called from MSGMINIGUIERROR(94) Called from _DEFINEWINDOW(125) Called from FORM_SITEDWNLD(36) Called from (b)MAIN(101) Что не так делаю ?
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|