Автор | Сообщение |
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.
|
|
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|
Andrey
|
| постоянный участник
|
Пост N: 2969
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.08.13 20:44. Заголовок: БОЛЬШОЕ СПАСИБО за р..
БОЛЬШОЕ СПАСИБО за разъяснения ! Буду думать....
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 2974
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.09.13 19:21. Заголовок: Читаю хелпер по Мини..
Читаю хелпер по МиниГуи - CheckBox Хочу задать другой цвет, добавляю в пример: \MiniGUI\SAMPLES\BASIC\checkbox\demo.prg Define CheckBox Check1 Row 40 Col 10 Value .F. Caption 'Simple CheckBox' Width 120 FontColor RED BackColor YELLOW OnChange MsgInfo( "CheckBox 1 Value is Changed!" ) End CheckBox Цвет не меняется ! Фон меняется ! Так должно быть ? Или у меня Win8 глючит ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3004
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.09.13 18:08. Заголовок: Всем привет. Пример ..
Всем привет. Пример \MiniGUI\SAMPLES\BASIC\Grid_5 Как поменять цвет выбора (маркера) на другой ? Хочу черный маркер и на нем желтые буквы.... Как поменять цвет заголовка таблицы на другой ? Никак у меня не получается ...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 501
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.09.13 10:26. Заголовок: Andrey пишет: Как п..
Andrey пишет: цитата: | Как поменять цвет выбора (маркера) на другой ? |
| Такая возможность для стандартного Grid есть (см. пример в папке samples\Advanced\GridColor). Andrey пишет: цитата: | Как поменять цвет заголовка таблицы на другой ? |
| Для стандартного Grid - никак, в таком случае надо использовать библиотеку TSBrowse с расширенными возможностями (см. элемент управления TBROWSE).
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3005
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.09.13 22:37. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Такая возможность для стандартного Grid есть (см. пример в папке samples\Advanced\GridColor). |
| Что-то не получается у меня (для меню из 3-х элементов) ... Если включить CELLNAVIGATION .T. то цвет на одной ячейке появляется... Вот текст примера: Скрытый текст /* * MiniGUI Grid Color Demo * * The idea of 2013 Verchenko Andrey <verchenkoag@gmail.com> * Implementation (c) 2013 Grigory Filatov <gfilatov@inbox.ru> */ #include "minigui.ch" Procedure Main LOCAL aColor := {105,182,34} // bright green LOCAL aColor2 := YELLOW LOCAL aColor3 := AQUA LOCAL aBtnColor := WHITE, aBackColor := aColor LOCAL fColor := { | Val, CellRowIndex | IF ( CellRowIndex / 2 == Int( CellRowIndex / 2 ) , RGB( aColor2[1],aColor2[2],aColor2[3] ) , RGB( aColor3[1],aColor3[2],aColor3[3] ) ) } LOCAL fColor2 := { | Val, CellRowIndex | IF ( 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 400 ; TITLE 'Grid Colors Themes (color style)' ; MAIN ; BACKCOLOR aBackColor ; FONT 'Tahoma' SIZE 14 ; ON INIT OnInitGrid() DEFINE MAIN MENU DEFINE POPUP 'File' MENUITEM 'Exit' ACTION ThisWindow.Release END POPUP END MENU // Title grid {HEADERS} consists of only one line. // The second line is not visible! Limitation grid. DEFINE GRID Grid_2 ROW 10 COL 10 WIDTH 570 HEIGHT 300 WIDTHS { 550 - IF(IsXPThemeActive(), 2, 0) } HEADERS {'No (1)','Menu (2)', 'File (3)' } WIDTHS { 100, 280, 150 } ITEMS MyLoadDim() VALUE 1 ON DBLCLICK Test_Choice(1) ONHEADCLICK { {|| MsgInfo('Header 1 Clicked !')} , { || MsgInfo('Header 2 Clicked !')}, { || MsgInfo('Header 3 Clicked !')} } NOLINES .T. CELLNAVIGATION .F. DYNAMICFORECOLOR { fColor , fColor, fColor } DYNAMICBACKCOLOR { fColor2, fColor2, fColor2 } FONTBOLD .T. FONTCOLOR BLUE BACKCOLOR aBackColor END GRID ON KEY F4 ACTION Test_Choice(2) END WINDOW CENTER WINDOW Form_2 ACTIVATE WINDOW Form_2 Return /////////////////////////////////////////////////////////////////////////// Procedure OnInitGrid() _HMG_GridSelectedCellForeColor := RED _HMG_GridSelectedCellBackColor := BLACK Form_2.Grid_2.Value := 1 Form_2.Grid_2.SetFocus Return /////////////////////////////////////////////////////////////////////////// Function MyLoadDim() Local nI, aRows := {} FOR nI := 1 TO 25 AAdd( aRows, { STR(nI)+".", "Example menu -> "+STR(nI,3), "file"+LTRIM(STR(nI))+".txt" } ) NEXT Return aRows /////////////////////////////////////////////////////////////////////////// Procedure Test_Choice(nVal) Local nMenuNum := Form_2.Grid_2.Value Local cMenuName := GetColValue( "Grid_2", "Form_2", 2 ) Local cFileName := GetColValue( "Grid_2", "Form_2", 3 ) Local cText //MsgDebug(nMenuNum,VALTYPE(nMenuNum)) cText := IIF(nVal==2,"You press F4","") + CRLF + CRLF cText += "Menu selection = " + STR(nMenuNum,2) + CRLF + CRLF cText += "Menu (2): ["+ cMenuName + "]" + CRLF + CRLF cText += "File (3): ["+ cFileName + "]" + CRLF + CRLF MsgInfo(cText) //refresh_it() // не работает что-то Return /////////////////////////////////////////////////////////////////////////// Function GetColValue( xObj, xForm, nCol ) Local nPos:= GetProperty(xForm, xObj, 'Value') Local aRet:= GetProperty(xForm, xObj, 'Item', nPos) Return aRet[nCol] /////////////////////////////////////////////////////////////////////////// Function refresh_it() Local a := Form_2.Grid_2.Value Form_2.Grid_2.Value := iif(a[1] # 1, 1, 2) Form_2.Grid_2.Value := a Return NIL
| gfilatov2002 пишет: цитата: | Для стандартного Grid - никак, в таком случае надо использовать библиотеку TSBrowse |
| Понял. Спасибо.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3018
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.10.13 21:43. Заголовок: Есть ли в МиниГуи ок..
Есть ли в МиниГуи окно (не MsgInfo) без остановки программы ? Т.е. на экран вешается ПРОСТОЕ сообщение, а программа выполняется дальше...
|
|
|
Haz
|
| |
Пост N: 107
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.10.13 22:26. Заголовок: есть
в минигуи пример называется WaitWindow
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3019
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.10.13 00:54. Заголовок: \MiniGUI\SAM..
\MiniGUI\SAMPLES\BASIC\WAIT_WINDOW\demo2.prg - подходит, но при нажатии в любом месте мышкой, окно закрывается... Нужно бы кнопку на это окно "Закрыть", тогда юзер успеет посмотреть что за ошибка была ! Да и пример пару раз повисал...
|
|
|
Haz
|
| |
Пост N: 108
Зарегистрирован: 20.02.11
|
|
Отправлено: 17.10.13 10:44. Заголовок: так это базовый пример
так это базовый пример, и лучше подходит demo1 - там параметр NOWAIT используется чтоб не ждать any key ... а кнопку в окно добавить легко - в InitWaitWindow до/после LABEL дописать и подвесить на нее событие { || _HMG_CHILDWAITWINDOW.HIDE } PS. Я бы использовал трей для вывода сообщения об ошибке - посмотри пример TrayBalloon_2
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3020
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.10.13 18:00. Заголовок: Haz пишет: Я бы исп..
Haz пишет: цитата: | Я бы использовал трей для вывода сообщения об ошибке - посмотри пример TrayBalloon_2 |
| Я другое хочу: Т.е. много ошибок или просто сообщений на рабочий стол...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3046
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.10.13 21:45. Заголовок: Так, с предыдущим пр..
Так, с предыдущим примером закончили. Пример сделал с помощью Григория. Теперь другой, вопрос. Как узнать размер desktop toolbars в своей программе ? Для вычисления истинного размера экрана своей проги. Подобный вопрос уже обсуждали в теме: http://clipper.borda.ru/?1-20-0-00000265-000-0-0-1171206710 Но этих функций на С нет в библиотеке МиниГуи. А таскать каждый раз их в другие проекты неудобно. Хотя это отличные функции. Есть ли еще другие варианты решения этой проблемы ?
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 509
Зарегистрирован: 11.02.10
|
|
Отправлено: 27.10.13 19:24. Заголовок: Andrey пишет: Как у..
Andrey пишет: цитата: | Как узнать размер desktop toolbars в своей программе ? |
| Посмотри функцию GetTaskBarHeight()
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 261
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.10.13 11:25. Заголовок: Anderey пишет:Но эти..
Anderey пишет: цитата: | Но этих функций на С нет в библиотеке МиниГуи. А таскать каждый раз их в другие проекты неудобно |
| Может стоит создать проект для своей lib и подключать к проектам программ: for %%i in ( OBJ\*.obj ) Do %HB_INS_BCC%\bin\tlib.exe LIB\my_lib1.lib -+%%i > nul
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3050
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.10.13 18:03. Заголовок: SergKis пишет: Може..
SergKis пишет: цитата: | Может стоит создать проект для своей lib и подключать к проектам программ |
| Да я не любитель своих библиотек. Намаялся в свое время с восстановлением потерянных библиотек и решил не писать их, только библиотека исходников. Просто на маленькие примеры стараюсь пользоваться стандартными функциями.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3051
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.10.13 18:41. Заголовок: Есть замечательный п..
Есть замечательный пример \MiniGUI\SAMPLES\Advanced\TrayBalloon Только иконка на этом "балоне" одна - [ i ] Как бы его можно модифицировать, чтобы можно было задавать типы иконок, как в следующем примере: Кто знает как менять иконки в балоне ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 512
Зарегистрирован: 11.02.10
|
|
Отправлено: 29.10.13 18:55. Заголовок: Andrey пишет: как м..
Andrey пишет: цитата: | как менять иконки в балоне ? |
| Просто посмотри следующий пример Advanced\TrayBalloon_2 в котором можно менять тип иконки
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3052
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.10.13 19:42. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Просто посмотри следующий пример Advanced\TrayBalloon_2 в котором можно менять тип иконки |
| Да этот пример - монстр. И библиотеку hbwin цеплять нужно... И угловатый какой то. Первый пример округленький, красивей. В первом так все понятно: MsgBalloon( cMessage, cTitle ) - простота лучший друг понимания. Вот бы сюда добавить тип иконки: MsgBalloon( cMessage, cTitle, nIcon ) Можно добавить этот параметр ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 514
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.10.13 16:06. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно добавить этот параметр ? |
| Andrey Сделаю для следующей сборки
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3055
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.10.13 18:24. Заголовок: Спасибо БОЛЬШОЕ Григ..
Спасибо БОЛЬШОЕ Григорий !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3056
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.10.13 18:27. Заголовок: Если задача вылетает..
Если задача вылетает по ошибке, то в файле ошибок ErrorLog.htm есть такая строка: Time from start: 0 days 0 hours 0 mins 3 secs<BR> А как можно получить в программе это значение ? Хочу использовать для отображения на NOTIFYTOOLTIP программы. ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 515
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.10.13 22:24. Заголовок: Andrey пишет: как ..
Andrey пишет: цитата: | как можно получить в программе это значение ? |
| Используй значение, которое возвращает функция TimeFromStart()
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3058
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.11.13 09:35. Заголовок: Использую Form_1.Max..
Использую Form_1.Maximize ! Окно открывается на весь экран без учета desktop toolbars ! Как сделать чтобы вычиталось GetTaskBarHeight() ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 516
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.11.13 12:35. Заголовок: Andrey пишет: Испол..
Andrey пишет: цитата: | Использую Form_1.Maximize |
| Попробуй вместо этой команды не указывать ширину и высоту окна (как в примере ниже) #include "minigui.ch" Function Main DEFINE WINDOW Win_1 ; TITLE 'Hello World!' ; MAIN END WINDOW ACTIVATE WINDOW Win_1 Return Nil
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3060
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.11.13 17:08. Заголовок: Непонятно... ну чуть..
Непонятно... ну чуть позже вернусь к этому вопросу. А как растянуть картинку на всю форму окна ? nWidth := Form_1.Width nHeight := Form_1.Height @ 0, 0 IMAGE Img_Bckgrnd PICTURE cPict WIDTH nWidth HEIGHT nHeight Если картинка маленькая, то она не растягивается на все окно ! И что лучше использовать в качестве этих заливок (bmp, jpg, png) ? И как по ходу программы можно сменить картинку фона окна ? DEFINE BKGBRUSH newBrush PATTERN IN Form_11 BITMAP PAPER
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 518
Зарегистрирован: 11.02.10
|
|
Отправлено: 05.11.13 17:38. Заголовок: Andrey пишет: как п..
Andrey пишет: цитата: | как по ходу программы можно сменить картинку фона окна ? |
| Посмотри пример в папке samples\Basic\WindowBackground После команды Andrey пишет: цитата: | DEFINE BKGBRUSH newBrush PATTERN IN Form_11 BITMAP PAPER |
| надо вызвать ERASE WINDOW Form_11
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3065
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.11.13 20:54. Заголовок: Пытаюсь сделать для ..
Пытаюсь сделать для пользователя на русском языке пример SendMail ! Отличный пример ! Что такое - Message Priority: "Normal", "Highest", "Low" ? И что за графы Cc: и Bcc: ? И лог-файл не создается ! Хотя письма доходят нормально, через mail.ru !
|
|
|
LYSK
|
| |
Пост N: 67
Зарегистрирован: 17.10.05
|
|
Отправлено: 08.11.13 15:25. Заголовок: тут почитай Cc: (Car..
тут почитай цитата: | Cc: (Carbon Copy) — адресация копий, этот заголовок является расширением поля «To», он указывает дополнительных получателей письма (получатель «To» видит список всех «Cc») Bcc: (Blind Carbon Copy) — слепая/скрытая копия (получатели не подозревают о других получателях из поля «Bcc»). Message Priority исключительно свободный заголовок, устанавливающий приоритет сообщения. Большинство программ его игнорируют. |
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3066
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.11.13 18:54. Заголовок: LYSK пишет: тут поч..
LYSK пишет: Спасибо БОЛЬШОЕ ! А это: И лог-файл не создается ! Хотя письма доходят нормально, через mail.ru ! Почему ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3070
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.11.13 11:41. Заголовок: Пытаюсь использовать..
Пытаюсь использовать: DEFINE BKGBRUSH newBrush PATTERN IN Form_1 BITMAP WALLPIC WALLPIC засовываю естественно в ресурсы. Не засовывается... пишет: Error demo3.rc 30 40: Invalid bitmap format Картинка обычная : WALLPIC BITMAP picture\Strips.bmp Что делать ? Нашел в чем дело, картинка не 24-битная... А чем вообще можно заменить глючный компилятор ресурсов bcc ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3071
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.11.13 13:01. Заголовок: Делаю CENTER WINDOW..
Делаю CENTER WINDOW Form_1, но эта команда не всегда точно центрирует окно. А как окно после этой команды поднять вверх ? Т.е. от самого верха окна экрана допустим на 50 пикселей. Или как окно прижать к самому верху экрана, но чтобы было по центру экрана ?
|
|
|
Haz
|
| |
Пост N: 113
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.11.13 13:32. Заголовок: куда ж проще то For..
куда ж проще то Form_1.Row := 50 не работает ?
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3073
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.11.13 14:44. Заголовок: Haz пишет: Form_1.R..
Haz пишет: цитата: | Form_1.Row := 50 не работает ? |
| Блин, не сообразил.. Спасибо ! Иногда на простой вопрос ищешь чер знает что...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3078
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.11.13 16:33. Заголовок: А как получить списо..
А как получить список всех ярлыков на рабочем столе компа. В примерах есть только как создавать ярлыки, а как получить список не нашел.... Может и плохо искал. Хочу прогу написать по чисте от мусора. Достали юзера...
|
|
|
AlexMyr
|
| |
Пост N: 987
Зарегистрирован: 11.06.10
|
|
Отправлено: 12.11.13 16:40. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как получить список всех ярлыков на рабочем столе компа. В примерах есть только как создавать ярлыки, а как получить список не нашел.... |
|
Наверное надо прочитать список файлов в папке "рабочий стол" конкретного юзера, а дальше с массивом файлов делай что хочешь.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3079
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.11.13 17:18. Заголовок: AlexMyr пишет: Наве..
AlexMyr пишет: цитата: | Наверное надо прочитать список файлов в папке "рабочий стол" конкретного юзера |
| А как ? aFiles := DIRECTORY( ) И еще ведь есть ОБЩИЕ ярлыки ?
|
|
|
AlexMyr
|
| |
Пост N: 988
Зарегистрирован: 11.06.10
|
|
Отправлено: 12.11.13 17:26. Заголовок: Andrey пишет: А как..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3080
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.11.13 17:36. Заголовок: Да у в примерах по М..
Да у в примерах по МиниГуи есть создание ярлыков по разному и через WSH_Service и так. А как правильно читать папку ярлыков не знаю ? Достаточно ли использовать: #define CSIDL_DESKTOPDIRECTORY 0x0010 // <user name>\Desktop aFiles := DIRECTORY( C_getspecialfolder(CSIDL_DESKTOPDIRECTORY)+"\*.lnk" )
|
|
|
Dima
|
| |
Пост N: 3709
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.11.13 17:43. Заголовок: Andrey Ерундой зани..
Andrey Ерундой занимаешься Да сдались тебе ярлыки юзеров , ярлыки ихние и пущай сами что хотят с ними то и творят. А то косяк в твоей проге и бац , юзера без ярлыков могут оказаться ;)
|
|
|
AlexMyr
|
| |
Пост N: 989
Зарегистрирован: 11.06.10
|
|
Отправлено: 12.11.13 17:44. Заголовок: Andrey пишет: А как..
Andrey пишет: цитата: | А как правильно читать папку ярлыков не знаю ? |
|
Чем ярлык отличается от других фалов?
|
|
|
AlexMyr
|
| |
Пост N: 990
Зарегистрирован: 11.06.10
|
|
Отправлено: 12.11.13 17:47. Заголовок: Dima пишет: Andrey ..
Dima пишет: цитата: | Andrey Ерундой занимаешься Да сдались тебе ярлыки юзеров , ярлыки ихние и пущай сами что хотят с ними то и творят. |
|
Еще опцию в винде можно включить, чтоб сама винда убирала не используемые ярлыки.
|
|
|
Dima
|
| |
Пост N: 3710
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.11.13 17:48. Заголовок: AlexMyr пишет: Еще ..
AlexMyr пишет: цитата: | Еще опцию в винде можно включить, чтоб сама винда убирала не используемые ярлыки. |
| +1
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3081
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.11.13 18:44. Заголовок: Dima пишет: юзера б..
Dima пишет: цитата: | юзера без ярлыков могут оказаться ;) |
| Да я хочу удалить ярлыки от своих старых программ. А то достали юзера, видите ли программа не работает. А рядом ярлык рабочей программы не видят. Вот и чтобы по компам не ходить хочу прогу сделать и удалить лишний мусор ! Попробуй по этажам побегай по компам, удалять ярлыки...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3082
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.11.13 18:58. Заголовок: AlexMyr пишет: Чем ..
AlexMyr пишет: цитата: | Чем ярлык отличается от других фалов? |
| Вот я и уточняю здесь на форуме. Прав я ил не прав...
|
|
|
Dima
|
| |
Пост N: 3711
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.11.13 19:00. Заголовок: Andrey При чем тут ..
Andrey При чем тут Минигуи я только не пойму ;)
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3083
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.11.13 20:55. Заголовок: Dima пишет: При чем..
Dima пишет: Просто у Григория очень большая коллекция примеров, вот я оттуда и беру. Там есть классный пример \SAMPLES\Advanced\WSH_Service по созданию ярлыков, без всяких #define CSIDL_DESKTOPDIRECTORY 0x0010 // <user name>\Desktop Вот я и пытаюсь понять, как правильней делать !
|
|
|
petr707
|
| |
Пост N: 78
Зарегистрирован: 21.04.13
|
|
Отправлено: 12.11.13 21:27. Заголовок: Нет ничего проще..
Ярлык на рабочем столе - это просто файл Чтобы удалить ярлыки, нужно всего три вещи: 1) знать место размещения - рабочий стол юзера или общий 2) знать имя ярлыка или уметь определять по имени ,что он свой 3) иметь права на удаление файла ярлыка При старте Ваша же текущая софтина может в раз день шарить по предполагаемым местам размещения этих файлов, и будет пытаться удалить все то, что посчитает своим и старым. Доступен будет рабочий стол юзера, выполнившего вход на том компе и общий - если юзер -имеет права админа того компа
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3085
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.11.13 21:38. Заголовок: petr707 Да понятно ..
petr707 Да понятно это. Я спрашивал про доступ к ярлыкам. Посмотрите пример \SAMPLES\Advanced\WSH_Service и все станет ясно. Я пытался так же сделать чтение ярлыков.
|
|
|
petr707
|
| |
Пост N: 80
Зарегистрирован: 21.04.13
|
|
Отправлено: 12.11.13 22:05. Заголовок: Лучше знать принципы...
Если Ваши ярлыки - не общие, а юзеровские - проблем с удалением - не будет. Создавались они - инсталлятором или Вашей прогой? Или юзерами произвольно - в тех, местах где получится? Повышение привилегий до админа - при установке ярлыков было?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3092
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.11.13 10:41. Заголовок: Сделал удаление ярлы..
Сделал удаление ярлыков, вроде работает. Тестил на нескольких машинах. Другой вопрос, явно про Минигуи: Можно ли сделать компонент TEXTBOX прозрачным на форме ? LABEL делается. Может пример какой нибудь есть ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 521
Зарегистрирован: 11.02.10
|
|
Отправлено: 19.11.13 11:45. Заголовок: Andrey пишет: Может..
Andrey пишет: цитата: | Может пример какой нибудь есть ? |
| Посмотри как это сделано для LISTBOX в примере demo1 из папки samples\Advanced\Transparency Возможно, такой подход поможет и для TEXTBOX
|
|
|
yury2003
|
| |
Пост N: 1
Зарегистрирован: 23.11.13
|
|
Отправлено: 24.11.13 10:21. Заголовок: MiniGUI 2.2.9 у меня..
MiniGUI 2.2.9 у меня не собираются три примера: ...\Samples\Basic\Folder Error: unresolved external '_HB_FUN_GETFOLDERHANDLE' referenced from \MINIGUI\SAMPLES\BASIC\FOLDER\DEMO.OBJ ...\Samples\Applications\Reservation Error: unresolved external '_HB_FUN_GETTITLEHEIGHT' referenced from \MINIGUI\SAMPLES\Applications\Reservation\PRESA.OBJ ...\Samples\Applications\Super Error: unresolved external '_HB_FUN_GETDESKTOPWIDTH' referenced from \MINIGUI\SAMPLES\Applications\Super\FUNCOES.OBJ Error: unresolved external '_HB_FUN_GETDESKTOPHEIGHT' referenced from \MINIGUI\SAMPLES\Applications\Super\FUNCOES.OBJ ОС WIN7 компилятор BCC
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 527
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.11.13 21:15. Заголовок: yury2003 Благодарю ..
yury2003 Благодарю за сообщение! Эти ошибки будут исправлены в следующей сборке. А сейчас это можно поправить следующим образом: - в пример Folder добавить функцию GETFOLDERHANDLE() из исходника source\h_folder.prg - в примере Reservation убрать ненужный параметр при вызове функции GETTITLEHEIGHT() - в пример Super добавить в начале файла FUNCOES.PRG строку #include "minigui.ch"
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3122
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.11.13 17:39. Заголовок: Собираю програмку, д..
Собираю програмку, добавляю свои иконки. А после сборки наблюдаю иконки, которые не вставлял !!! Кто добавил их ? Откуда они добавляются ? Они не мешали бы, только при установке ярлыка ВМЕСТО своей иконки СТАВИТЬСЯ принтер !!! Достал этот принтер ! Как можно отключить эту фигню ???
|
|
|
Dima
|
| |
Пост N: 3738
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.11.13 17:43. Заголовок: Возможно твой RC цеп..
Возможно твой RC цепляет еще какой то RC где они объявлены.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 266
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.11.13 17:50. Заголовок: Andrey Верхняя и ниж..
Andrey Верхняя и нижняя - это miniGui в statusbar индикация состояния клавиш CapsLock, Insert, ... другие, думаю тоже.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3123
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.11.13 18:20. Заголовок: А как их убрать ? :..
А как их убрать ? Т.е. как указать у себя в проекте сборку lib без этих иконок ? Я же не прописываю сборку этих иконок у себя в проекте ! Иконка принтера: \MiniGUI\RESOURCES\print.ico - как убрать из своего проекта ? Это иконка скорее всего из библиотеки hbprinter.lib Я её не использую. Как мне указать в моем МойПроект.hbp - не линковать эту библиотеку ? Удаление иконки принтера Resource Hacker из готового ехе-ника результата не дало. Ярлык получается со стандартной иконкой ВИНДОВ, хотя на программе иконка правильная - моя !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3125
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.11.13 22:33. Заголовок: Взял код из примера ..
Взял код из примера MiniGUI\SAMPLES\Applications\Daily\set3.prg //-------------------------------------------------------------\\ FUNCTION CreateLink( LinkName, TargPath, HKey, IconLoc, Descr ) LOCAL NShortcut LOCAL WshShell := TOleAuto():New( "WScript.Shell" ) IF Ole2TxtError() != 'S_OK' RETURN .F. ENDIF NShortcut := WshShell:CreateShortcut( LinkName ) //Set shortcut placement NShortcut:TargetPath := TargPath //Set standard style of window NShortcut:WindowStyle := 1 //Set hotkey NShortcut:Hotkey := HKey //Path to icon NShortcut:IconLocation := IconLoc + ", 0" //Set tooltip NShortcut:Description := Descr //Set path to application as working directory NShortcut:WorkingDirectory := GetStartupFolder() // это я здесь сам заменил. //Save settings and shortcut NShortcut:Save() RETURN .T. Создаю ярлыки: cNameApp := "Моя_программа" cPathStUp := GetSpecialFolder( CSIDL_STARTUP ) cFileExe := EXENAME() cFileLink := cPathStUp + '\' + cNameApp + '.lnk' IF M->lPubAutoStart // автозапуск программы CreateLink( cFileLink, cFileExe, '', cFileExe, 'Events control' ) ELSE FErase( cFileLink ) ENDIF cPathDeskTop := GetDesktopFolder() cFileLink := cPathDeskTop + '\' + cNameApp + '.lnk' IF !FILE(cFileLink) // рабочий стол CreateLink( cFileLink, cFileExe, '', cFileExe, 'Events control' ) ENDIF Так вот вопрос, в одной программе ярлыки создает/удаляет нормально, а в другой нет ! Я уже полдня бьюсь с этим... Вторая программа сидит в трее, при записи настроек пытаюсь создать ярлыки - ни один не создается ! Хотя откуда брал, там тоже программа в трее сидит... В чем дело ? Может кто посмотрит, свежим взглядом ? Подключил создание ярлыка из \MiniGUI\SAMPLES\Applications\LINK_EXECUTOR\LinkExecutor.prg - работает всегда ! Правда удалить эти ярлыки из программы не могу уже... Что не сделаешь - везде "засада"...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3128
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.11.13 23:07. Заголовок: Всем привет. Подскаж..
Всем привет. Подскажите как правильно перерисовать объекты на ФОРМЕ ? потом удаляю ОДИН файл (крестиком) и удаляю в цикле ВСЕ нарисованные объекты. Потом пытаюсь заново нарисовать эти объекты и получаю облом ... нет новых объектов... Что не правильно делаю ? Скрытый текст //////////////////////////////////////////////////////////////////////////// // рисуем иконки прикрепленных файлов FUNCTION ViewPngFile() ............. FOR nI := 1 TO LEN(aDim) .......................... cObj := "Img_File"+LTRIM(STR(nI)) cImage := MaskaTypeFile(cFile ) @ nRow, nColTek IMAGE &cObj OF Form_1 PICTURE cImage WIDTH 131 HEIGHT 59 cObj2 := "Label_File"+LTRIM(STR(nI)) @ nRow+40, nColTek+5 LABEL &cObj2 VALUE cFile WIDTH 131-10 HEIGHT 16 ; FONT 'Tahoma' SIZE 9 ; TRANSPARENT FONTCOLOR aFontColor CENTERALIGN OF Form_1 cObj2 := "Label_Size"+LTRIM(STR(nI)) @ nRow+20, nColTek+25 LABEL &cObj2 VALUE cFSize WIDTH 131-15 HEIGHT 16 ; FONT 'Tahoma' SIZE 9 BOLD ; TRANSPARENT FONTCOLOR GRAY CENTERALIGN OF Form_1 cObj3 := "Button_Del"+LTRIM(STR(nI)) cRun := "File_Delete("+LTRIM(STR(nI))+")" // Удаляем прикрепленный файл @ nRow, nColTek+131-16 BUTTONEX &cObj3 OF Form_1 ; WIDTH 16 HEIGHT 16 ; ACTION &cRun ICON "iDel16" NEXT RETURN NIL ///////////////////////////////////////////////////////////////////////////// // Удаляем прикрепленный файл FUNCTION File_Delete(nDel) LOCAL cObj, cObj2, cObj2a, cObj3 LOCAL aDim := ACLONE(M->aGet[7]), cFilePath, cRun M->aGet[7] := {} FOR nI := 1 TO LEN(aDim) IF nI # nDel AADD(M->aGet[7],aDim[nI]) ENDIF cObj := "Img_File"+LTRIM(STR(nI)) cObj2 := "Label_File"+LTRIM(STR(nI)) cObj2a := "Label_Size"+LTRIM(STR(nI)) cObj3 := "Button_Del"+LTRIM(STR(nI)) RELEASE CONTROL &cObj3 OF Form_1 RELEASE CONTROL &cObj2a OF Form_1 RELEASE CONTROL &cObj2 OF Form_1 RELEASE CONTROL &cObj OF Form_1 NEXT DO EVENTS ViewPngFile() // перерисуем иконки файлов RETURN NIL
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3129
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.11.13 21:24. Заголовок: После подсказки Григ..
После подсказки Григория - добился нормальной работы. Нужно не удалять объект, а просто его скрывать. Если не хватает объекта, то добавляем объект и показываем. Мусора нет, все прекрасно работает. Кому интересно могу выложить код. Все короче просто, если знаешь куда копать...
|
|
|
Dima
|
| |
Пост N: 3743
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.11.13 22:01. Заголовок: Andrey пишет: Все к..
Andrey пишет: цитата: | Все короче просто, если знаешь куда копать... |
| Да это так.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3130
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.11.13 22:46. Заголовок: Можно ли средствами ..
Можно ли средствами МиниГуи получить иконку, bmp зарегистрированного файла в системе ? Допустим *.doc файла Я просто хочу эти иконки использовать у себя в программе. Куда копать ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3132
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.12.13 18:14. Заголовок: Нашел исходник на С,..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3134
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.12.13 21:15. Заголовок: Хочу сделать листинг..
Хочу сделать листинг директории с показом иконок ассоциированными с данными типами файлов. И затык... Может пример уже готовый есть, а я велосипед изобретаю.... Или на FiveWin примеры есть ? Подскажите пожалуйста.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3167
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.12.13 11:50. Заголовок: Да Григорий, один тв..
Да Григорий, один твой пример и чувствуешь себя Незнайкой на Луне. Как сделать виртуальную форму со скролинком ? Есть ли такие примеры ? Т.е. если на форме не помещаются все иконки, то чтобы по скролингу вниз - можно было просмотреть форму дальше ?
|
|
|
Haz
|
| |
Пост N: 115
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.12.13 12:37. Заголовок: Andrey пишет: Как с..
Andrey пишет: цитата: | Как сделать виртуальную форму со скролинком |
| Андрей глянь сюда \MiniGUI\SAMPLES\BASIC\CONTAINERS\Panel_2
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3173
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.12.13 15:30. Заголовок: Спасибо - сделал. Т..
Спасибо - сделал. Только вот получилось не совсем то, иконки появляются, а как скролтнгом подергаешь, иконки все пропадают... DEFINE WINDOW Form_1 ; AT 0 , 0 WIDTH nDesktopWidth HEIGHT nDesktopHeight ; VIRTUAL WIDTH nDesktopWidth*2 VIRTUAL HEIGHT nDesktopHeight*2 ; TITLE "Icon from shell32.dll" ; MAIN ; ON INIT MyDrawIcons() ; ON RELEASE DestroyIcon( hIcon ) ; ON INTERACTIVECLOSE Nil ; ON MOUSECLICK Nil ON MOUSEDRAG Nil ON MOUSEMOVE Nil ; ON SIZE Nil ON MAXIMIZE Nil ON MINIMIZE Nil ON PAINT Nil ; BACKCOLOR Nil NOTIFYICON NIL NOTIFYTOOLTIP NIL ON NOTIFYCLICK Nil ; ON GOTFOCUS Nil ON LOSTFOCUS Nil ON SCROLLUP Nil ; ON SCROLLDOWN Nil ON SCROLLLEFT Nil ON SCROLLRIGHT Nil ; ON HSCROLLBOX Nil ON VSCROLLBOX Nil Хотя объект LABEL сохраняется нормально. Видно как то нужно ставить обработку... А как не знаю ?
|
|
|
Haz
|
| |
Пост N: 116
Зарегистрирован: 20.02.11
|
|
Отправлено: 16.12.13 17:11. Заголовок: ради эксперимента . ..
ради эксперимента c PANEL . может на ON SCROLL..... MyDrawIcons() повесить ? или дай своему MAIN окну виртуальные размеры сразу и не мучайся )) VIRTUALWIDTH xxx VIRTUALHEIGHT yyy в синтаксис DEFINE WINDOW подсмотри
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3175
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.12.13 23:20. Заголовок: Оказывается все прос..
Оказывается все просто. Обращаешься к ГУРУ и ответ простой: Иконки пропадают, поскольку в функции DrawIcon() идет прямая запись на экран. Что я тоже потом обнаружил. Запуск формы: Форма после восстановления с панели: Эх опять недоработка в МиниГуи.... Рано я радовался... Остается только одно, иконку преобразовывать в bmp и показывать. Но опять другое вылазит: bmp-ка не прозрачная.... Цвета подбирать нужно под bmp. Некрасиво получается...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 534
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.12.13 23:45. Заголовок: Haz пишет: дай сво..
Haz пишет: цитата: | дай своему MAIN окну виртуальные размеры |
| Рабочий пример ниже Скрытый текст
#include "minigui.ch" Procedure MAIN LOCAL nDesktopWidth := GetDesktopWidth() LOCAL nDesktopHeight := GetDesktopHeight() - GetTaskBarHeight() SET MULTIPLE OFF WARNING SET FONT TO "Tahoma", 9 DEFINE WINDOW Form_1 ; VIRTUAL WIDTH nDesktopWidth+10 VIRTUAL HEIGHT nDesktopHeight*1.5 ; TITLE "Icons from shell32.dll" ; MAIN ; ON INIT MyDrawIcons() END WINDOW Form_1.Sizable := .F. // NOSIZE Form_1.MinButton := .F. // NOMINIMIZE Form_1.MaxButton := .F. // NOMAXIMIZE Form_1.Activate Return ///////////////////////////////////////////////////////////////////////////////// Function MyDrawIcons() LOCAL nJ := 0, nI, cStr, cObj, nRow := 10, nCol LOCAL nWidth := Form_1.Width LOCAL nHeight := Form_1.Height LOCAL cIcon := System.SystemFolder + "\shell32.dll" LOCAL count := ExtractIcon( cIcon, -1, 0, 0, 0 ) FOR nI := 0 TO count nJ++ nCol := 10 + 70*(nJ-1) IF nCol > nWidth - 80 nRow += 70 nJ := 1 nCol := 10 ENDIF cObj := "Btn_"+LTRIM(STR(nI)) @ nRow, nCol BUTTON &cObj ; OF Form_1 ; WIDTH 38 HEIGHT 38 ; ICON cIcon ; EXTRACT nI FLAT cObj := "Lbl_"+LTRIM(STR(nI)) cStr := "nI="+LTRIM(STR(nI)) @ nRow + 40, nCol LABEL &cObj ; OF Form_1 VALUE cStr ; WIDTH 60 HEIGHT 12 ; TRANSPARENT FONTCOLOR BLUE NEXT Return NIL
|
|
|
|
Haz
|
| |
Пост N: 117
Зарегистрирован: 20.02.11
|
|
Отправлено: 17.12.13 17:03. Заголовок: Вопрос по классу TCo..
Вопрос по классу TComboBox из TBrowse, мож кто знает ??? Возможно ли применение DISPLAYEDIT к данному классу. Нужно не сколько само редактирование, сколько возможность поиска в комбо по первым введенным буквам, без этого поиск отрабатывает только первую букву Пробовал тупо выставить переменную displaychange := .T. в исходнике TComboBox.Prg, появляется и поиск и редактированпие, но пропадает реакция на клавиши выбора ENTER или ESCAPE. Григорий, PS. и еще маленький фикс кода для этогокласса Когда в колонке с числовым ID используя :SetData отображаю символьные строки из справочного массива, то при редактировании ComboBox растягивается до самой длинной строки из массива. Это происходит из-за кода в h_tbrowse.prg строка 3782: If oCol:cDataType != Nil .and. oCol:cDataType == "N" колонка типа "N" - т.к. там ID, но отображаю в ней строку из массива, соответствующую этому ID предлагаю в коде заменить на If ValType( Eval( oCol:bData ) ) == "N" , тогда при числовых значенияч все остается как есть, а при строковых будет определяться через :SetColSize
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 535
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.12.13 11:20. Заголовок: Haz пишет: предлага..
Haz пишет: цитата: | предлагаю в коде заменить на If ValType( Eval( oCol:bData ) ) == "N" |
| Спасибо, поправил для следующей сборки.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3203
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.01.14 21:43. Заголовок: Хотел из объекта LAB..
Хотел из объекта LABEL сделать самостоятельно СВОЮ кнопку. типа такого: @ nRow, nColTek LABEL &cObj OF Form_1 VALUE "" ; WIDTH 131 HEIGHT 60 BACKCOLOR aBackColor ; // borders DRAW LINE IN WINDOW Form_1 At nRow,nColTek to nRow+60,nColTek PENCOLOR {64,64,64} PENWIDTH 1 DRAW LINE IN WINDOW Form_1 At nRow,nColTek to nRow,nColTek+131 PENCOLOR {64,64,64} PENWIDTH 1 DRAW LINE IN WINDOW Form_1 At nRow,nColTek+131 to nRow+60,nColTek+131 PENCOLOR {64,64,64} PENWIDTH 1 DRAW LINE IN WINDOW Form_1 At nRow+60,nColTek-1 to nRow+60,nColTek+131 PENCOLOR {64,64,64} PENWIDTH 1 А окантовка кнопки по LABEL командой DRAW LINE не происходит ! Почему ? Если сделать DRAW LINE ... At nRow-1, то есть вокруг LABEL, то окантовку видно. Но если объект LABEL скрыть, то тогда остается окантовка без кнопки. Как тогда убрать окантовку с сохранением фона под окантовкой ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 285
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.01.14 11:45. Заголовок: Andrey А свойств BOR..
Andrey А свойств BORDER и CLIENTEDGE в LABEL разве не достаточно для обводки (чтобы не усложнять жизнь) ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3206
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.01.14 12:41. Заголовок: SergKis пишет: А св..
SergKis пишет: цитата: | А свойств BORDER и CLIENTEDGE в LABEL разве не достаточно для обводки (чтобы не усложнять жизнь) ? |
| Вот-вот... Сам делал и забыл... Посмотрел на кнопку и решил сделать, а подумать то забыл, или праздники утомили... Спасибо большое за возврат к действительности ! С этим разобрался. А на будущее: как удалить нарисованную линию ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 286
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.01.14 13:14. Заголовок: Andrey пишет:А на бу..
Andrey пишет: цитата: | А на будущее: как удалить нарисованную линию ? |
| Перерисовать окно (все контролы, включая обои)
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3207
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.01.14 15:20. Заголовок: SergKis пишет: Пере..
SergKis пишет: цитата: | Перерисовать окно (все контролы, включая обои) |
| Да уж... Интересно, а в других библиотеках как это делается ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 287
Зарегистрирован: 17.02.12
|
|
Отправлено: 14.01.14 15:59. Заголовок: Andrey пишет:Да уж....
Andrey пишет: а сложность в чем ? FormName.ControlName.Refresh по списку сделать.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3209
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.01.14 15:22. Заголовок: Приветствую gfilatov..
Приветствую gfilatov2002 ! В примере demo2.prg ("Select file & Icon associated with the file type - 1.0") обнаружил одну фигню ! Если добавлять файлы по 2 и более, то не всегда красиво получается отображение кнопок... Что то связанное с прорисовкой. Как побороть не знаю. По одному файлу добавляет нормально !
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 547
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.01.14 16:18. Заголовок: Andrey пишет: Что т..
Andrey пишет: цитата: | Что то связанное с прорисовкой. Как побороть не знаю. |
| Попробуй переставить команду DO EVENTS в функции File_Delete() ниже ... IF nDel == 0 // delete all files - reset array M->aDimFile := {} ELSE ViewIconFile() // show icons attachments ENDIF DO EVENTS ...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3210
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.01.14 16:28. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Попробуй переставить команду DO EVENTS в функции File_Delete() ниже |
| Не помогло...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 548
Зарегистрирован: 11.02.10
|
|
Отправлено: 21.01.14 16:52. Заголовок: Andrey пишет: Не по..
Andrey пишет: Тогда попробуй добавить команду DO EVENTS в цикл в функции ViewIconFile() ... cImage := MaskaTypeFile(cFilePath, cObjIco ) // иконка типа файла SetProperty( 'Form_1', cObjIco, "Visible" , .T. ) DO EVENTS NEXT RETURN NIL
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3211
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.01.14 17:00. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Тогда попробуй добавить команду DO EVENTS в цикл в функции ViewIconFile() |
| Не работает...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3218
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.01.14 23:18. Заголовок: Григорий, вопрос по ..
Григорий, вопрос по уже сделанным примерам WAIT_WINDOW_2WIN http://files.mail.ru/6D25619CF1C94F1391599D54C1A65853 Когда начинаешь перемещать красное или желтое окно, то курсор руки пропадает, а курсор сжатой руки не появляется ! Почему ? Что нужно изменить в коде ? В WaitWindow3.prg - есть же процедура изменения курсора: RC_CURSOR( "Grabbed32" )
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 554
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.01.14 23:36. Заголовок: Andrey пишет: RC_CU..
Andrey пишет: Проверь имя ресурса в файле .RC - там опечатка в первой букве цитата: | CRABBED32 CURSOR res\Grabbed32x32.cur |
| А должно быть цитата: | GRABBED32 CURSOR res\Grabbed32x32.cur |
| Теперь ясно
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3219
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.01.14 12:47. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Спасибо большое !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3252
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.03.14 21:32. Заголовок: Всем привет ! Пример..
Всем привет ! Пример MiniGUI\SAMPLES\Advanced\TrayBalloon показывает всплывающее окно на некоторое время в трее. А можно ли такое же всплывающее окно сделать на объекте LABEL или BUTTON ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3277
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.03.14 13:21. Заголовок: Всем привет. Есть ли..
Всем привет. Есть ли механизм в МиниГуи, позволяющий входить в меню или нажимать кнопку только ОДИН раз ? Я могу конечно сам сделать проверку входа через PUBLIC переменную. Просто хочется узнать современные решения.
|
|
|
Haz
|
| |
Пост N: 154
Зарегистрирован: 20.02.11
|
|
Отправлено: 17.03.14 11:41. Заголовок: Andrey пишет: Есть ..
Andrey пишет: цитата: | Есть ли механизм в МиниГуи, позволяющий входить в меню или нажимать кнопку только ОДИН раз ? |
| встроенного штатного механизма нет, но ничто не мешает на ACTION повесить что то типа this.enabled := .F. ( варианты самого this. зависят от синтаксиса контрола )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3279
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.03.14 13:28. Заголовок: Haz пишет: но ничто..
Haz пишет: цитата: | но ничто не мешает на ACTION повесить что то типа this.enabled := .F. ( варианты самого this. зависят от синтаксиса контрола ) |
| А поподробнее пожалуйста можно расписать ?
|
|
|
Haz
|
| |
Пост N: 155
Зарегистрирован: 20.02.11
|
|
Отправлено: 17.03.14 19:41. Заголовок: Andrey пишет: А поп..
Andrey пишет: на примере меню: Define MAin menu of form_0 popup 'menu1' menuitem 'элемент 1' action {|| action_1() } name M1 end popup End menu Func Action_1() Form_0.M1.ENABLED := .F. // после первого вызова этот элемент меню будет запрещен ... тут код который нужен Return nil PS. по Button - примерно так же
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3280
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.03.14 14:06. Заголовок: Haz пишет: примерно..
Haz пишет: Спасибо БОЛЬШОЕ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3281
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.03.14 16:35. Заголовок: Можно ли как то испо..
Можно ли как то использовать смайлики в программе на МиниГуи ? Есть ли примеры ?
|
|
|
Dima
|
| |
Пост N: 3866
Зарегистрирован: 17.05.05
|
|
Отправлено: 18.03.14 16:40. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно ли как то использовать смайлики |
| Смайлик это BMP вероятно или ICO иль GIF , значит можно. Во всяком случае их можно преобразовать к нужному формату. Пример http://forum24.ru/gif/smk/sm31.gif
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3283
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.03.14 22:20. Заголовок: Dima пишет: Смайлик..
Dima пишет: цитата: | Смайлик это BMP вероятно или ICO иль GIF , значит можно. |
| Нет, мне нужны правильные смайлики - Может готовые библиотеки смайликов есть ?
|
|
|
Dima
|
| |
Пост N: 3867
Зарегистрирован: 17.05.05
|
|
Отправлено: 19.03.14 00:08. Заголовок: Andrey пишет: Может..
Andrey пишет: цитата: | Может готовые библиотеки смайликов есть ? |
| Новый вариант ICQ создаешь ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3294
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.03.14 19:28. Заголовок: Всем привет. Имеется..
Всем привет. Имеется картинка на форме. @ 50,20 IMAGE Image_1 PICTURE .... Можно ли сделать так, чтобы при попадании мышки на картинку, курсор бы менялся на "палец тык" ? Как в HYPERLINK - параметр HANDCURSOR .T. Есть ли в примерах такое уже ? Сделал на IMAGE Image_1 обработку: ON MOUSEHOVER SelectImage( ThisWindow.Name, This.Name ) А в функции описал: FUNCTION SelectImage( cForm, cCtrl ) CursorHand() RETURN Nil Еще что-нибудь нужно ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 572
Зарегистрирован: 11.02.10
|
|
Отправлено: 27.03.14 12:11. Заголовок: Andrey пишет: Сдела..
Andrey пишет: цитата: | Сделал на IMAGE Image_1 обработку: ON MOUSEHOVER SelectImage( ThisWindow.Name, This.Name ) |
| Все верно, но можно проще: цитата: | ON MOUSEHOVER CursorHand() |
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3295
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.03.14 21:18. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Все верно, но можно проще: |
| Спасибо !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3313
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.03.14 16:43. Заголовок: gfilatov2002 пишет: ..
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 575
Зарегистрирован: 11.02.10
|
|
Отправлено: 03.04.14 21:32. Заголовок: Andrey пишет: как с..
Andrey пишет: цитата: | как сделать динамическое растаскивание/сжатие BROWSE вместе с окном ? |
| Для этого надо использовать два события: ON SIZE и ON MAXIMIZE, в которых прописать изменение размеров элементов управления вместе с изменением размеров формы. Очень наглядный пример использования есть в исходниках утилиты MPM (см. в папке Utils\MPM). Для ленивых существует глобальная команда SET AUTOADJUST ON [ NOBUTTONS ], которая действует для всех окон, но она не всегда работает так, как может потребоваться, из-за своей универсальности
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3314
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.04.14 23:46. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Для этого надо использовать два события .... |
| Спасибо БОЛЬШОЕ !!! Теперь знаю где копать...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3337
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.04.14 00:25. Заголовок: Всем привет. Подскаж..
Всем привет. Подскажите пожалуйста как можно получить bmp-ки 16х16 из ExtractIcon( System.SystemFolder + "\shell32.dll"....) Пример :\MiniGUI\SAMPLES\BASIC\ExtractIcon\demo2.prg А то надоело иконки держать в ресурсах... Хочу из системы брать.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 577
Зарегистрирован: 11.02.10
|
|
Отправлено: 24.04.14 16:15. Заголовок: Andrey пишет: Подск..
Andrey пишет: цитата: | Подскажите пожалуйста как можно получить bmp-ки 16х16 |
| Для этого надо использовать расширенную функцию ExtractIconEx() вместо простой функции ExtractIcon() Рабочий пример использования demo.prg см. ниже Скрытый текст
#include <minigui.ch> Procedure MAIN local aIcons := ExtractIconEx( GetStartUpFolder() + "\demo.exe", 0, 0, 0, 1 ) priv hIcon := aIcons[2] SET FONT TO "Ms Sans Serif", 8 DEFINE WINDOW Main ; AT 0,0 WIDTH 120 HEIGHT 119 ; TITLE "Information" ; MAIN ; ON PAINT fgDraw() ; ON RELEASE DestroyIcon( hIcon ) DEFINE LABEL hello ROW 43 - GetTitleHeight() - GetBorderHeight() COL 62 VALUE 'Hello' AUTOSIZE .T. END LABEL DEFINE BUTTON ok ROW 83 - GetTitleHeight() - GetBorderHeight() COL 12 WIDTH 90 HEIGHT 21 CAPTION 'OK' ACTION ThisWindow.Release DEFAULT .T. END BUTTON END WINDOW Main.Sizable := .F. // NOSIZE Main.MinButton := .F. // NOMINIMIZE Main.MaxButton := .F. // NOMAXIMIZE Main.Center Main.Activate Return Function fgDraw() Drawicon( Application.Handle, 12, 12, hIcon ) Return NIL #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" #define SMALL_ICON 16 HB_FUNC( DRAWICON ) { HWND hwnd = (HWND) hb_parnl( 1 ); HDC hdc; hdc = GetDC( hwnd ); hb_retl( DrawIconEx( (HDC) hdc, hb_parni( 2 ), hb_parni( 3 ), (HICON) hb_parnl( 4 ), SMALL_ICON, SMALL_ICON, 0, 0, DI_NORMAL ) ); ReleaseDC( hwnd, hdc ); } HB_FUNC( DESTROYICON ) { DestroyIcon( (HICON) hb_parnl( 1 ) ); } HB_FUNC ( EXTRACTICONEX ) { HICON iLarge; HICON iSmall; UINT nIcons=hb_parni(5); ExtractIconEx( (LPCSTR) hb_parc( 1 ), hb_parni( 2 ) , &iLarge , &iSmall , nIcons ); hb_reta( 2 ); hb_storvnl( ( LONG ) iLarge, -1, 1 ); hb_storvnl( ( LONG ) iSmall, -1, 2 ); } #pragma ENDDUMP
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3338
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.04.14 20:51. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Рабочий пример использования demo.prg см. ниже |
| Спасибо БОЛЬШОЕ !!! Только лучше объявление сделать так: local aIcons := ExtractIconEx( GetExeFileName(), 0, 0, 0, 1 ) А то пока понял, почему не работает....
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3339
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.04.14 22:38. Заголовок: Можно ли в объекте G..
Можно ли в объекте GRID использовать иконки ? Пример \MiniGUI\SAMPLES\BASIC\Grid_6 работает с bmp. А как его переделать на иконки ? И допускает ли GRID использование картинок не с первой позиции, а в середине таблицы ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 579
Зарегистрирован: 11.02.10
|
|
Отправлено: 29.04.14 10:09. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно ли в объекте GRID использовать иконки ? |
| Нет Andrey пишет: цитата: | допускает ли GRID использование картинок не с первой позиции, а в середине таблицы ? |
| Нет, только в первой позиции и только в формате bitmap. Если нужно снять это ограничение, то необходимо использовать TsBrowse в режиме Grid
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3340
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.04.14 11:27. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Если нужно снять это ограничение, то необходимо использовать TsBrowse в режиме Grid |
| Спасибо !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3341
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.04.14 18:44. Заголовок: Очень хочется иметь ..
Очень хочется иметь в МиниГуи простую функцию вывода иконки на форму !!! Типа: DrawIconEx( _HMG_MainHandle, nCol, nRow, "РесурсныйФайлИконки", SMALL_ICON ) А то есть функции, а форму свернешь и нет иконок - пример тут: Скрытый текст
#include "minigui.ch" Procedure MAIN LOCAL cText, cIcon := System.SystemFolder + "\user32.dll" PRIVAT hIcon cText := 'hIcon := ExtractIcon( '+System.SystemFolder + "\user32.dll" + ', nI )' cText += CRLF + 'DrawIcon( Application.Handle, nCol, nRow, hIcon )' SET FONT TO "Tahoma", 9 DEFINE WINDOW Form_1 ; AT 0,0 WIDTH 700 - GetBorderWidth() HEIGHT 300 - GetBorderHeight() ; TITLE "Icons from user32.dll" ; MAIN ; ON INIT fgDraw() ; BACKCOLOR { 40,122,237} ; ON RELEASE DestroyIcon( hIcon ) @ 10, 10 LABEL Label_Info VALUE cText WIDTH Form_1.Width-20 HEIGHT 42 ; TRANSPARENT FONTCOLOR BLACK SIZE 12 CENTERALIGN @ Form_1.Height-90, Form_1.Width-100 BUTTON Button_Exit ; WIDTH 80 HEIGHT 50 ; ICON cIcon ; EXTRACT 3 ; TOOLTIP 'Exit the program' ; ACTION ThisWindow.Release() END WINDOW Form_1.Sizable := .F. // NOSIZE Form_1.MinButton := .F. // NOMINIMIZE Form_1.MaxButton := .F. // NOMAXIMIZE Form_1.Center Form_1.Activate Return ///////////////////////////////////////////////////////////////////////////////// Function fgDraw() LOCAL nI, cStr1, cStr2, cObj1, cObj2 LOCAL nRow := 70, nCol FOR nI := 1 TO 17 nCol := 20 + 90*(nI-1) hIcon := ExtractIcon( System.SystemFolder + "\user32.dll", nI ) Drawicon( Application.Handle, nCol, nRow, hIcon ) cObj1 := "Lbl1_a"+LTRIM(STR(nI)) cStr1 := "nI="+LTRIM(STR(nI)) @ nRow+40, nCol LABEL &cObj1 OF Form_1 VALUE cStr1 ; WIDTH 100 HEIGHT 12 TRANSPARENT FONTCOLOR BLUE cObj2 := "Lbl2_a"+LTRIM(STR(nI)) cStr2 := "hIcon="+ CRLF + LTRIM(STR(hIcon)) @ nRow+55, nCol LABEL &cObj2 OF Form_1 VALUE cStr2 ; WIDTH 120 HEIGHT 28 TRANSPARENT FONTCOLOR RED IF hIcon == 0 // if no icon EXIT ENDIF NEXT Return NIL ///////////////////////////////////////////////////////////////////////////////// #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" #define SMALL_ICON 16 /* убрал, т.к. не работает, чистится после проведения за границы экрана.... HB_FUNC( DRAWICON ) { HWND hwnd = (HWND) hb_parnl( 1 ); HDC hdc; hdc = GetDC( hwnd ); hb_retl( DrawIcon( (HDC) hdc, hb_parni( 2 ), hb_parni( 3 ), (HICON) hb_parnl( 4 ) ) ); ReleaseDC( hwnd, hdc ); } */ HB_FUNC( DRAWICON ) { HWND hwnd = (HWND) hb_parnl( 1 ); HDC hdc; hdc = GetDC( hwnd ); hb_retl( DrawIconEx( (HDC) hdc, hb_parni( 2 ), hb_parni( 3 ), (HICON) hb_parnl( 4 ), SMALL_ICON, SMALL_ICON, 0, 0, DI_NORMAL ) ); ReleaseDC( hwnd, hdc ); } HB_FUNC( DESTROYICON ) { DestroyIcon( (HICON) hb_parnl( 1 ) ); } #pragma ENDDUMP
| Может я что-то не понимаю с выводом иконок на форму ... Объясните пожалуйста как быть ? Иконки использую из-за того, что они НОРМАЛЬНО ложаться на форму с любым фоном. Т.е. если иконка круглая, то вокруг будет цвет фона, как и положенно. В случае использования PNG теряется качество картинки, т.к. приходиться делать для картинки BACKGROUNDCOLOR aBackgroundColor - и качество теряется, по краям получается черная окантовка....
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 580
Зарегистрирован: 11.02.10
|
|
Отправлено: 29.04.14 20:59. Заголовок: Andrey пишет: Объяс..
Andrey пишет: цитата: | Объясните пожалуйста как быть ? |
| Надо заменить событие ON INIT на ON PAINT при определении формы. Рабочий пример см. ниже Скрытый текст
#include "minigui.ch" Procedure MAIN LOCAL cText, cIcon := System.SystemFolder + "\user32.dll" PRIVAT aIcon := {} cText := 'hIcon := ExtractIcon( '+System.SystemFolder + "\user32.dll" + ', nI )' cText += CRLF + 'DrawIcon( Application.Handle, nCol, nRow, hIcon )' SET FONT TO "Tahoma", 9 DEFINE WINDOW Form_1 ; AT 0,0 WIDTH 700 - GetBorderWidth() HEIGHT 300 - GetBorderHeight() ; TITLE "Icons from user32.dll" ; MAIN ; ;//ON INIT fgDraw() ; ON PAINT fgDraw() ; BACKCOLOR { 40,122,237} ; ON RELEASE aEval(aIcon, {|hIcon| DestroyIcon( hIcon ) }) @ 10, 10 LABEL Label_Info VALUE cText WIDTH Form_1.Width-20 HEIGHT 42 ; TRANSPARENT FONTCOLOR BLACK SIZE 12 CENTERALIGN @ Form_1.Height-90, Form_1.Width-100 BUTTON Button_Exit ; WIDTH 80 HEIGHT 50 ; ICON cIcon ; EXTRACT 3 ; TOOLTIP 'Exit the program' ; ACTION ThisWindow.Release() END WINDOW Form_1.Sizable := .F. // NOSIZE Form_1.MinButton := .F. // NOMINIMIZE Form_1.MaxButton := .F. // NOMAXIMIZE Form_1.Center Form_1.Activate Return ///////////////////////////////////////////////////////////////////////////////// Function fgDraw() LOCAL nI, cStr1, cStr2, cObj1, cObj2 LOCAL nRow := 70, nCol FOR nI := 0 TO 6 nCol := 20 + 90*nI hIcon := ExtractIcon( System.SystemFolder + "\user32.dll", nI ) aAdd(aIcon, hIcon) Drawicon( Application.Handle, nCol, nRow, hIcon ) cObj1 := "Lbl1_a"+LTRIM(STR(nI)) cStr1 := "nI="+LTRIM(STR(nI)) if !_IsControlDefined(cObj1, 'Form_1') @ nRow+40, nCol LABEL &cObj1 OF Form_1 VALUE cStr1 ; WIDTH 100 HEIGHT 12 TRANSPARENT FONTCOLOR BLUE endif cObj2 := "Lbl2_a"+LTRIM(STR(nI)) cStr2 := "hIcon="+ CRLF + LTRIM(STR(hIcon)) if !_IsControlDefined(cObj2, 'Form_1') @ nRow+55, nCol LABEL &cObj2 OF Form_1 VALUE cStr2 ; WIDTH 120 HEIGHT 28 TRANSPARENT FONTCOLOR RED endif IF hIcon == 0 // if no icon EXIT ENDIF NEXT Return NIL ///////////////////////////////////////////////////////////////////////////////// #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" #define SMALL_ICON 16 HB_FUNC( DRAWICON ) { HWND hwnd = (HWND) hb_parnl( 1 ); HDC hdc; hdc = GetDC( hwnd ); hb_retl( DrawIconEx( (HDC) hdc, hb_parni( 2 ), hb_parni( 3 ), (HICON) hb_parnl( 4 ), SMALL_ICON, SMALL_ICON, 0, 0, DI_NORMAL ) ); ReleaseDC( hwnd, hdc ); } HB_FUNC( DESTROYICON ) { DestroyIcon( (HICON) hb_parnl( 1 ) ); } #pragma ENDDUMP
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3342
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.04.14 21:07. Заголовок: А как сделать перекл..
1) А как сделать переключатель для иконок 16х16, 32х32 и т.д. ? 3) Удалять иконки - aEval(aIcon, {|hIcon| DestroyIcon( hIcon ) }) после закрытия программы ОБЯЗАТЕЛЬНО ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 581
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.04.14 11:18. Заголовок: 1) например, использ..
1) например, использовать две функции EXTRACTICON16() и EXTRACTICON32(), а также соответственно две функции Drawicon16() и Drawicon32() 2) надо просто проверить размеры надписей - они перекрываются в Вашем примере. Можно поправить, например так: цитата: | cObj1 := "Lbl1_a"+LTRIM(STR(nI)) cStr1 := "nI="+LTRIM(STR(nI)) if !_IsControlDefined(cObj1, 'Form_1') @ nRow+40, nCol LABEL &cObj1 OF Form_1 VALUE cStr1 ; autosize FONTCOLOR BLUE transparent endif cObj2 := "Lbl2_a"+LTRIM(STR(nI)) cStr2 := "hIcon="+ CRLF + LTRIM(STR(hIcon)) if !_IsControlDefined(cObj2, 'Form_1') @ nRow+65, nCol LABEL &cObj2 OF Form_1 VALUE cStr2 ; WIDTH 70 HEIGHT 28 BACKCOLOR { 40,122,237} FONTCOLOR RED endif |
| 3) да, обязательно, для освобождения выделенных графических ресурсов
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3343
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.04.14 11:33. Заголовок: Спасибо БОЛЬШОЕ за о..
Спасибо БОЛЬШОЕ за ответы ! gfilatov2002 пишет: цитата: | 1) например, использовать две функции EXTRACTICON16() и EXTRACTICON32(), а также соответственно две функции Drawicon16() и Drawicon32() |
| Вижу в вашей функции #define SMALL_ICON 16 А какое будет описание для иконок 32х32, 48х48, 96х96 ? Можно ли в библиотеку включить функцию типа: DrawIconMy( Application.Handle, nCol, nRow, hIcon, SMALL_ICON ) ? Или включить стандартную: DrawIconEx (hDC, X, Y, hIcon, 0, 0, 0, NULL, DI_NORMAL | DI_COMPAT | DI_DEFAULTSIZE) ? http://netcode.ru/cpp/?lang=&katID=11&skatID=131&artID=4462 Вот пример (заготовка) для показа разных размеров иконок на форме. У меня выходит только ОДИН размер, а нужно разные... И если иконка состоит из нескольких размеров, то ОНА не показывается на форме. http://files.mail.ru/EC2371A863DB46B9975C53B24D645F01 И еще отдельный вопрос: Как иконку из ресурсов (допустим 16х16) записать в bmp-файл ? Видел функции в c_bitmap.c // convert icon to bitmap. hBmp = Icon2Bmp( ( HICON ) hBmp ); А примеры работы - не нашел....
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3413
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.06.14 16:35. Заголовок: В объектах IMAGE и L..
В объектах IMAGE и LABEL можно менять ВИД КУРСОРА при наведении мышки на объект: @ 30,20 IMAGE Image_1 PICTURE 'LOGO' WIDTH 70 HEIGHT 70 STRETCH ; ACTION MsgInfo('Label Clicked!') OnMouseHover RC_CURSOR( "MINIGUI_FINGER" ) @ 40, 120 LABEL Label_Inf1 VALUE MiniGUIVersion() ; ON CLICK MsgInfo('Label Clicked!') ; ON MOUSEHOVER Rc_Cursor( "MINIGUI_FINGER" ) А как можно сделать так же с объектом BUTTONEX ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3414
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.06.14 11:27. Заголовок: Разобрался с помощью..
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 330
Зарегистрирован: 17.02.12
|
|
Отправлено: 10.06.14 13:25. Заголовок: Andrey пишет:Народ, ..
Andrey пишет: цитата: | Народ, протестируйте этот пример пожалуйста ! |
| На Win7 работает нормально, немного нелогичны клавиши, например стрелка вниз с меню 1 идет на меню 2, а просится меню 3 и т.д.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3415
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.06.14 13:35. Заголовок: SergKis пишет: немн..
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 331
Зарегистрирован: 17.02.12
|
|
Отправлено: 10.06.14 13:47. Заголовок: Andrey Еще, на мой в..
Andrey Еще, на мой взгляд не надо фокус на кнопки минимизации и выхода (верхние) переключать - основное это кнопки на окне. и при нажатии верхнего выхода - нет запроса, как на основной кнопки "выход"
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 332
Зарегистрирован: 17.02.12
|
|
Отправлено: 10.06.14 13:56. Заголовок: Andrey пишет:Понял, ..
Andrey пишет: Глянь внимательнее: -стрелки вверх\вниз переключают кнопки одной колонки -стрелки вправо\влево переключают кнопки между колонками одного ряда
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3416
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.06.14 14:08. Заголовок: SergKis пишет: Глян..
SergKis пишет: цитата: | Глянь внимательнее: -стрелки вверх\вниз переключают кнопки одной колонки -стрелки вправо\влево переключают кнопки между колонками одного ряда |
| А это я не знаю как сделать.... Посмотрите сами....
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3417
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.06.14 17:46. Заголовок: SergKis пишет: Гля..
SergKis пишет: цитата: | Глянь внимательнее: -стрелки вверх\вниз переключают кнопки одной колонки -стрелки вправо\влево переключают кнопки между колонками одного ряда |
| Теперь понял что нужно было сделать. Ваши исправления - классные ! http://files.mail.ru/8A9B66C885F8424A8277F9A4450B52FB Использовать у себя это меню в программах будете ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 333
Зарегистрирован: 17.02.12
|
|
Отправлено: 10.06.14 18:47. Заголовок: Andrey пишет:Использ..
Andrey пишет: цитата: | Использовать у себя это меню в программах будете ? |
| у нас (~20 лет) в clipper такое 1 окно в задачах (только 2 ряда и 3 колонки и цвета от задачи) если руки дойдут, то да, надо сделать
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3424
Зарегистрирован: 12.09.06
|
|
Отправлено: 16.06.14 13:13. Заголовок: nick_mi пишет: А вы..
nick_mi пишет: цитата: | А вы это исправление делали DEFINE IMAGE Image_1 PARENT Win_1 ROW 200 COL 140 WIDTH nWidth HEIGHT nHeight PICTURE aPicture [ i ] STRETCH lStretch TRANSPARENT .T. BACKGROUNDCOLOR win_1.backcolor ADJUSTIMAGE lAdjustImage END IMAGE у меня с этой строкой берет фон основного окна |
| Перенес эту тему сюда, т.к. там писать не дело... Вот самодостаточный пример. http://files.mail.ru/C0CE5FDAA4764A2F802FDBF99A5B80CE Вокруг картинки ЧЕРНАЯ рамка. Это раз - недостаток, а во вторых, если PNG картинку выводить на фон заливки с градиентом, то вообще фигня получается... Как в таком случае быть ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3426
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.06.14 16:15. Заголовок: Andrey пишет: Вокру..
Andrey пишет: цитата: | Вокруг картинки ЧЕРНАЯ рамка. |
| Григорий, если не решаемый этот вопрос - то фиг с ним, напишите что пока так будет ! Я понимаю, что одному ОЧЕНЬ тяжело тянуть такую разработку. Просто ответ - пока так будет, до следующих решений и все....
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 597
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.06.14 17:18. Заголовок: Andrey пишет: Прост..
Andrey пишет: цитата: | Просто ответ - пока так будет, до следующих решений |
| Именно так Andrey пишет: цитата: | Вокруг картинки ЧЕРНАЯ рамка. |
| Эту проблему при прорисовке PNG создает режим HALFTONE, задаваемый Си-функцией SetStretchBltMode()
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3427
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.06.14 17:49. Заголовок: Спасибо Григорий ! ..
Спасибо Григорий ! Будем ждать исправлений...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3428
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.06.14 17:52. Заголовок: Вот еще вопрос возни..
Вот еще вопрос возник. Для окна есть соответствия: NOMAXIMIZE NOSIZE Form_Main.Sizable := .F. // NOSIZE Form_Main.MaxButton := .F. // NOMAXIMIZE Не могу найти соответствий: NOMINIMIZE NOCAPTION ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 344
Зарегистрирован: 17.02.12
|
|
Отправлено: 18.06.14 18:35. Заголовок: Andrey пишет:Не могу..
Andrey пишет: цитата: | Не могу найти соответствий: NOMINIMIZE NOCAPTION ? |
| глянь MiniGUI.chm раздел DEFINE WINDOW в самом конце: ... WINDOW METHODS: · Show · Hide · Center · Maximize · Minimize · Activate · Restore · Release · SetFocus · SaveAs
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 598
Зарегистрирован: 11.02.10
|
|
Отправлено: 18.06.14 20:13. Заголовок: Andrey пишет: Не мо..
Andrey пишет: цитата: | Не могу найти соответствий: NOMINIMIZE NOCAPTION ? |
| Form_Main.MinButton := .F. // NOMINIMIZE Form_Main.TitleBar := .F. // NOCAPTION
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3429
Зарегистрирован: 12.09.06
|
|
Отправлено: 18.06.14 20:19. Заголовок: Спасибо ! :sm36: ..
Спасибо ! Пытаюсь скрестить примеры \MiniGUI\SAMPLES\BASIC\SPLASHDEMO_3 и \MiniGUI\SAMPLES\Advanced\GetPassword Окно пароля выходит, но при случайном переключении мышкой уходит под окно задачи. Как сделать чтобы окно пароля ВСЕГДА было поверх всех окон ? Пример тут -> http://files.mail.ru/C541D54D08FD4704B8D0521ABE296705
|
|
|
nick_mi
|
| |
Пост N: 147
Зарегистрирован: 19.05.05
|
|
Отправлено: 19.06.14 09:11. Заголовок: Оказывается для PING..
Оказывается для PING черная окантовка - это не только беда MINIGUI. В последнем IrfanView (версия 4.37) есть возможность поменять любой цвет на любой другой выбранный. Так вот, после замены черного цвета на белый, окантовка остается. Похоже, это где-то на Win API уровне.
|
|
|
Vlad04
|
| постоянный участник
|
Пост N: 449
Зарегистрирован: 13.10.05
|
|
Отправлено: 19.06.14 13:12. Заголовок: Andrey Окно пароля ..
Andrey цитата: | Окно пароля выходит, но при случайном переключении мышкой уходит под окно задачи. |
| Я сделал так В Инициализации Главного окна скрываю его и открываю форму с вводом пароля. Если с паролем все Гуд, показываю главное окна, а иначе Конец работы. Окно главое ты можешь спрятать после прогрессБаров
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 346
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.06.14 19:02. Заголовок: gfilatov2002 пишет:F..
gfilatov2002 пишет: цитата: | Form_Main.MinButton := .F. // NOMINIMIZE Form_Main.TitleBar := .F. // NOCAPTION |
| а MODAL как можно задать таким же образом ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 347
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.06.14 22:08. Заголовок: gfilatov2002 This..
gfilatov2002 This.TopMost := lTopMost // TOPMOST This.SysMenu := lSysMenu // NOSYSMENU This.Sizable := lSizable // NOSIZE This.MaxButton := lMaxButton // NOMAXIMIZE This.MinButton := lMinButton // NOMINIMIZE This.TitleBar := lTitleBar // NOCAPTION это нормально, а This.Hide := .F. // NOSHOW ThisWindow.Hide := .F. // NOSHOW выдает: Error E0022 invalid lvalue '()' DoMethod(_HMG_ThisFormName, 'Hide', .F.) // все нормально где я глючу ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 348
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.06.14 22:51. Заголовок: SergKis пишет: This..
SergKis пишет: цитата: | This.Hide := .F. // NOSHOW ThisWindow.Hide := .F. // NOSHOW |
| допер IF lHide This.Hide ELSE This.Show ENDIF пора выключаться ...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3439
Зарегистрирован: 12.09.06
|
|
Отправлено: 22.06.14 23:19. Заголовок: Vlad04 пишет: Я сде..
Vlad04 пишет: цитата: | Я сделал так В Инициализации Главного окна скрываю его и открываю форму с вводом пароля. Если с паролем все Гуд, показываю главное окна, а иначе Конец работы. Окно главое ты можешь спрятать после прогрессБаров |
| Ларчик просто открывается оказывается ! Там указаны только ДВА варианта показа окна. Как всегда выбрал самый красивый, но с приключениями (красоту захотел навести при вводе пароля)... 1) GetPassword( , "My Message", "My Caption",.... 2) GetPassword( 0, "My Message", "My Caption", LoadBitmap("LOGO")...... Нолик убрать и будет ВСЕГДА висеть, пока пароль не вобьешь.... Хоть комментарий бы поставили, а то пока разберешься....
|
|
|
Softlog86
|
| |
Пост N: 149
Зарегистрирован: 03.12.08
|
|
Отправлено: 23.06.14 14:58. Заголовок: Подскажите , есть-ли..
Подскажите , есть-ли команда чтоб ВСЕ контролы определенного окна включала/выключала ENABLED = .T. или .F. ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3441
Зарегистрирован: 12.09.06
|
|
Отправлено: 23.06.14 15:07. Заголовок: Softlog86 пишет: ес..
Softlog86 пишет: цитата: | есть-ли команда чтоб ВСЕ контролы определенного окна включала/выключала |
| Скорей всего нет такой команды. Нужно в цикле обойти все контролы на окне. А как, я тоже не знаю.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 600
Зарегистрирован: 11.02.10
|
|
Отправлено: 23.06.14 15:30. Заголовок: Andrey пишет: Нужно..
Andrey пишет: цитата: | Нужно в цикле обойти все контролы на окне. |
| Именно так /******************************************************************************/ Function _GetArrayOfAllControlsForForm ( cFormName ) /******************************************************************************/ Local nFormHandle , i , nControlCount , aRetVal := {} , x nFormHandle := GetFormHandle ( cFormName ) nControlCount := Len ( _HMG_aControlHandles ) For i := 1 To nControlCount If _HMG_aControlParentHandles == nFormHandle If ValType( _HMG_aControlHandles ) == 'N' IF ! Empty( _HMG_aControlNames ) If Ascan( aRetVal, _HMG_aControlNames ) == 0 Aadd( aRetVal, _HMG_aControlNames ) EndIf ENDIF ElseIf ValType( _HMG_aControlHandles ) == 'A' For x := 1 To Len ( _HMG_aControlHandles ) IF !Empty( _HMG_aControlNames ) If Ascan( aRetVal, _HMG_aControlNames ) == 0 Aadd( aRetVal, _HMG_aControlNames ) EndIf ENDIF Next x EndIf EndIf Next i Return Asort( aRetVal ) Полный текст примера см. в папке samples\Basic\Form_Controls
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3443
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.06.14 21:03. Заголовок: Как сделать так, что..
1) Как сделать так, чтобы из главного меню задачи (окно MAIN) другие окна при сворачивании - скидывались на панель задач ОТДЕЛЬНЫМ ОКНОМ со своим заголовком ? 2) А как узнать, есть ли такая функция в ехе-файле в программе на МиниГуи ? Почему то код в МиниГуи не прокатывает: IF .NOT.( cRun == 'UI' .OR. cRun == 'UE' ) MsgStop("Нет такой функции "+cRun+"() в ЕХЕ-нике !") ENDIF
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 601
Зарегистрирован: 11.02.10
|
|
Отправлено: 25.06.14 12:44. Заголовок: Andrey пишет: скиды..
Andrey пишет: цитата: | скидывались на панель задач ОТДЕЛЬНЫМ ОКНОМ |
| Для этого надо определять дочерние окна без слова CHILD (как определяется стандарное окно при работе в IDE). Andrey пишет: цитата: | как узнать, есть ли такая функция в ехе-файле |
| Надо использовать Харбор-функцию hb_IsFunction(<имя функции>) Пример использования из кода Харбора: FUNCTION tip_SSL() RETURN hb_IsFunction( "__HBEXTERN__HBSSL__" )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3444
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.06.14 16:17. Заголовок: Спасибо БОЛЬШОЕ Григ..
Спасибо БОЛЬШОЕ Григорий !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3445
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.06.14 16:33. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Для этого надо определять дочерние окна без слова CHILD (как определяется стандарное окно при работе в IDE). |
| Для ХР работает, а в Win8 нет. Я понял что сама Win8 группирует по названию ехе-ника. Как это убрать, кто знает ? Хотя это вопрос и не по МиниГуи.... gfilatov2002 пишет: Спасибо БОЛЬШОЕ Григорий !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3449
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.06.14 10:28. Заголовок: Народ, подскажите кт..
Народ, подскажите кто знает, как лучше сделать меню настроек для своей задачи. Что бы не изобретать велосипед, решил делать в стиле Skype: Какие объекты из МиниГуи лучше использовать ? Про чекбоксы понятно. Как сделать меню слева, из каких объектов ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3460
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.06.14 18:44. Заголовок: Как в МиниГуи зная х..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3465
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.06.14 23:24. Заголовок: Есть ли функция для ..
Есть ли функция для МиниГуи аналогичной MsgDebug() - но чтобы выводила значения в заданный файл ? Конечно можно сделать и самому, но может готовое есть ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 603
Зарегистрирован: 11.02.10
|
|
Отправлено: 01.07.14 11:53. Заголовок: Andrey пишет: чтобы..
Andrey пишет: цитата: | чтобы выводила значения в заданный файл ? |
| Может подойдет такая *-----------------------------------------------------------------------------* PROCEDURE LogFile( cFileName, acInfo ) *-----------------------------------------------------------------------------* LOCAL hFile, cLine := DToC( Date() ) + " " + Time() + " : ", n For n = 1 to Len( acInfo ) cLine += acInfo[ n ] + Chr( 9 ) Next cLine += CRLF if ! File( cFileName ) FClose( FCreate( cFileName ) ) endif if( ( hFile := FOpen( cFileName, FO_WRITE + FO_SHARED ) ) != -1 ) FSeek( hFile, 0, FS_END ) FWrite( hFile, cLine, Len( cLine ) ) FClose( hFile ) endif Return Полный пример использования есть в папке samples\Applications\SendMail
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3466
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.07.14 14:24. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Спасибо БОЛЬШОЕ ! А как насчет предыдущего вопроса ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 604
Зарегистрирован: 11.02.10
|
|
Отправлено: 01.07.14 15:45. Заголовок: Andrey пишет: как н..
Andrey пишет: цитата: | как насчет предыдущего вопроса ? |
| По Вашей ссылке на MSDN лежит функция с хорошим названием, но предназначенная для другого случая. По секрету: ждите следующей сборки. В ней будет пример использования требуемой функции
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 358
Зарегистрирован: 17.02.12
|
|
Отправлено: 02.07.14 07:32. Заголовок: Andrey пишет:чтобы в..
Andrey пишет: цитата: | чтобы выводила значения в заданный файл ? |
| вот еще пару вариантов : Скрытый текст
FUNCTION MsgLog2( ... ) //! все переменные выводятся как : nVar -> "nVar", nVar //! Не нужно писать по два раза имя , значение - достаточно только один раз LOCAL i, k, aParams, nParams, xVal, cTp, cTx LOCAL hFile, cFile:="_MsgLog.txt" aParams := hb_aParams() nParams := PCount() IF nParams < 1 ; RETURN NIL ENDIF hFile := iif( File(cFile), FOpen(cFile,2) , FCreate(cFile) ) FSeek( hFile, 0, 2) k := nParams/2 FOR i := 1 TO k FWrite(hFile, aParams[ i+k ] + Chr(9) + _uVal2Txt( aParams[ i ] ) + Chr(9) ) NEXT FWrite(hFile, Chr(13)+Chr(10), 2 ) FClose( hFile ) RETURN FUNCTION MsgLog( ... ) LOCAL i, k, aParams, nParams, xVal, cTp, cTx LOCAL hFile, cFile:="_MsgLog.txt" aParams := hb_aParams() nParams := PCount() IF nParams < 1 ; RETURN NIL ENDIF hFile := iif( File(cFile), FOpen(cFile,2) , FCreate(cFile) ) FSeek( hFile, 0, 2) FOR i := 1 TO nParams FWrite(hFile, _uVal2Txt( aParams[ i ] ) + Chr(9) ) NEXT FWrite(hFile, Chr(13)+Chr(10), 2 ) FClose( hFile ) RETURN NIL STATIC FUNCTION _uVal2Txt( xVal ) LOCAL cTx, cTp:= ValType( xVal ) IF cTp=='C' ; cTx := AllTrim(xVal) ; RETURN iif(Empty(cTx), "'"+"'", cTx) ELSEIF cTp=='N' ; RETURN LTrim(Str(xVal)) ELSEIF cTp=='L' ; RETURN iif(xVal, ".T.", ".F.") ELSEIF cTp=='D' ; cTx := DToS( xVal ) ; RETURN Right(cTx,2)+'.'+subs(cTx,5,2)+'.'+Left(cTx,4) ELSEIF cTp=='A' ; RETURN "ARRAY[" + hb_NToS( Len(xVal) ) + "]" ELSEIF cTp=='H' ; RETURN "HASH[" + hb_NToS(Len(xVal)) + "]" ELSEIF cTp=='B' ; RETURN "{|| ... }" ELSEIF cTp=='O' ; RETURN "O:"+xVal:ClassName ELSEIF cTp=='T' ; RETURN hb_TSToStr( xVal, .T. ) ELSEIF cTp=='U' ; RETURN 'NIL' ENDIF RETURN "'" + cTp + "'"
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3468
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.07.14 11:32. Заголовок: SergKis пишет: вот ..
SergKis пишет: Спасибо БОЛЬШОЕ ! Только хотелось бы имя файла иметь изменяемое !!! Наверно нужно сделать первый параметр ТОЛЬКО для имени файла. Я так у себя сделал уже... Вот еще возник вопрос, а как сделать ниспадающее меню ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 606
Зарегистрирован: 11.02.10
|
|
Отправлено: 04.07.14 12:33. Заголовок: Andrey пишет: как с..
Andrey пишет: цитата: | как сделать ниспадающее меню ? |
| Посмотри пример menudemo5 в папке samples\Basic\Menu Там используется такая команда: SHOW CONTEXTMENU OF Win_1
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3472
Зарегистрирован: 12.09.06
|
|
Отправлено: 04.07.14 12:42. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Посмотри пример menudemo5 в папке samples\Basic\Menu |
| То что надо ! Спасибо БОЛЬШОЕ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3475
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.07.14 12:04. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Посмотри пример menudemo5 в папке samples\Basic\Menu |
| Меню сделал, но не совсем то что нужно. Нет возможности использовать крупный шрифт. Подскажите пожалуйста как можно сделать меню с иконкой и названием, типа объекта GRID ? Есть ли еще примеры для меню аналогичные объекту GRID ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 364
Зарегистрирован: 17.02.12
|
|
Отправлено: 05.07.14 14:16. Заголовок: Andrey может это ..
Andrey может это \MiniGUI\SAMPLES\BASIC\MsgMenu
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3476
Зарегистрирован: 12.09.06
|
|
Отправлено: 05.07.14 15:54. Заголовок: SergKis пишет: може..
SergKis пишет: цитата: | может это \MiniGUI\SAMPLES\BASIC\MsgMenu |
| Не совсем то, но попробую. В CONTEXT MENU я смог затолкать картинки 32x32 - выглядит получше ! Но опять беда, фон картинки нужно делать вручную под цвет МЕНЮ, иконка не подходит... На других компах, с другой цветовой темой то что делаю будет выглядеть КОРЯВО... Есть функции определения цвета по координатам окна ? И еще один вопрос, как сделать выход без выбора в CONTEXT MENU ? MENUITEM "Выход" ACTION {|| ?????? } IMAGE "EXIT32"
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3489
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.07.14 12:58. Заголовок: Всем привет. Как пер..
Всем привет. Как переключиться на окно если оно находиться под другими открытыми окнами ? Имею такую конструкцию: IF !IsWindowActive( Form_Config ) DEFINE WINDOW Form_Config ; At 0, 0 ; ....... NOMAXIMIZE NOSIZE ......... END WINDOW // показываем форму ELSE RESTORE WINDOW Form_Config ENDIF // !IsWindowActive( Form_Config ) RESTORE WINDOW - срабатывает если окно свернуто. А если скрыто под другими окнами, то как сделать это окно ПОВЕРХ других окон задач ?
|
|
|
Dima
|
| |
Пост N: 4094
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.07.14 13:05. Заголовок: Andrey пишет: А есл..
Andrey пишет: цитата: | А если скрыто под другими окнами, то как сделать это окно ПОВЕРХ других окон задач ? |
| Фокус ввода сделать на нужном окне
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 367
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.07.14 13:34. Заголовок: Andrey пишет:Как пер..
Andrey пишет: цитата: | Как переключиться на окно |
| IF _IsWindowDefined('Form_Config') Form_Config.SetFocus Form_Config.Browse_1.SetFocus или др. нужный контрол Form_Config.Button_1.SetFocus ENDIF
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3490
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.07.14 14:08. Заголовок: SergKis пишет: IF _..
SergKis пишет: цитата: | IF _IsWindowDefined('Form_Config') Form_Config.SetFocus Form_Config.Browse_1.SetFocus или др. нужный контрол Form_Config.Button_1.SetFocus ENDIF |
| Не совсем понял... Окно уже открыто, но может быть несколько вариантов: 1) окно находиться под другими окнами задачи. 2) свернуто на панели задачи. как сделать код для этих 2х вариантов сразу ? IF _IsWindowDefined('Form_Config') // создание окна // показываем форму ACTIVATE WINDOW Form_Config ELSE // RESTORE WINDOW Form_Config // работает если окно свернуто на панели задач, НЕ работает если под другими окнами // Form_Config.SetFocus // Не работает если окно свернуто на панели задач, работает если под другими окнами ENDIF
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 609
Зарегистрирован: 11.02.10
|
|
Отправлено: 08.07.14 14:23. Заголовок: Andrey пишет: Окно ..
Andrey пишет: цитата: | Окно уже открыто, но может быть несколько вариантов: |
| Попробуй так *----------------------------------- Function SwitchToWin( cForm ) *----------------------------------- If _IsWindowDefined( cForm ) If IsIconic( GetFormHandle(cForm) ) _Restore( GetFormHandle(cForm) ) Else DoMethod( cForm, "SetFocus" ) EndIf EndIf Return Nil
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3491
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.07.14 15:52. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: То что надо ! Спасибо ! А как насчет этого вопроса: Есть ли функции определения цвета по определённым координатам ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 610
Зарегистрирован: 11.02.10
|
|
Отправлено: 08.07.14 17:24. Заголовок: Andrey пишет: Есть ..
Andrey пишет: цитата: | Есть ли функции определения цвета по определённым координатам ? |
| Да, есть. Это WinAPI функция GetPixel(). Рабочий пример ее использования см. в папке samples\Advanced\FillTriangle Function ShowRGB() LOCAL hdc, x, y, aColor := {0,0,0} hdc := GetDC( _HMG_MainHandle ) x := _HMG_MouseCol y := _HMG_MouseRow IF GetPixelColor( hdc, x, y, @aColor ) Form_1.Title := "RGB (" ; + " r:" + str(aColor[1], 3 ) ; + " g:" + str(aColor[2], 3 ) ; + " b:" + str(aColor[3], 3 ) ; + " )" ELSE Form_1.Title := "RGB ( CLR_INVALID )" ENDIF ReleaseDC( _HMG_MainHandle, hdc ) Return Nil
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3492
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.07.14 18:17. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Рабочий пример ее использования см. в папке samples\Advanced\FillTriangle |
| Спасибо БОЛЬШОЕ ! То что надо !!! Единственно что, если определение цвета нужно в дочернем окне, то наверно нужно сделать параметр для изменения _HMG_MainHandle ? Как написать вместо _HMG_MainHandle - хендл текущего окна ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 368
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.07.14 19:11. Заголовок: Andrey пишет:Как нап..
Andrey пишет: цитата: | Как написать вместо _HMG_MainHandle - хендл текущего окна ? |
| по ситуации: Form_1.Handle ThisWindow.Handle GetFormHandle (cFom)
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3493
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.07.14 19:41. Заголовок: Спасибо !!! :sm36: ..
Спасибо !!! Подскажите еще пожалуйста, как передать кодовый блок в объект кнопку ? Вот имею такой кодовый блок: aObjButton[2,11] := { || MyZip(), Form_Config.Release() } Передаю в функцию прорисовки кнопок: ////////////////////////////////////////////////////////////////////// Function METRO_BUTTON( aDim ) LOCAL bAction := aDim[11] cForm := _HMG_ThisFormName DEFINE BUTTONEX &cObject PARENT &cForm ..... ACTION ??? bAction // как здесь написать ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 369
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.07.14 21:38. Заголовок: Andrey пишет:как пер..
Andrey пишет: цитата: | как передать кодовый блок в объект кнопку ? |
| если aDim[11] := 'MyZip(), Form_Config.Release()', то ACTION &( aDim[11] ) в твоем случае можно DEFINE BUTTONEX &cObject PARENT &cForm ... END BUTTON _HMG_aControlProcedures [ GetControlIndex(cObject, cForm) ] := bAction
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 370
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.07.14 21:42. Заголовок: вдогонку SetProperty..
вдогонку SetProperty(cForm, cObject, bAction) или Form_1.Button_1.Action := bAction
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 611
Зарегистрирован: 11.02.10
|
|
Отправлено: 08.07.14 21:55. Заголовок: Andrey пишет: Funct..
Andrey пишет: цитата: | Function METRO_BUTTON( aDim ) LOCAL bAction := aDim[11] cForm := _HMG_ThisFormName DEFINE BUTTONEX &cObject PARENT &cForm ..... ACTION ??? bAction // как здесь написать ? |
| Function METRO_BUTTON( aDim ) LOCAL bAction := aDim[11] cForm := _HMG_ThisFormName DEFINE BUTTONEX &cObject PARENT &cForm ..... ACTION Eval( bAction ) ... END BUTTONEX
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 371
Зарегистрирован: 17.02.12
|
|
Отправлено: 08.07.14 22:13. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: оно так конечно, но блок кода на блок кода ...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3495
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.07.14 22:19. Заголовок: SergKis пишет: оно ..
SergKis пишет: цитата: | оно так конечно, но блок кода на блок кода ... |
| Вот и я тоже об этом подумал... Работает, а вдруг не так нужно было делать...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3498
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.07.14 11:11. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | По Вашей ссылке на MSDN лежит функция с хорошим названием, но предназначенная для другого случая. По секрету: ждите следующей сборки. В ней будет пример использования требуемой функции |
| А где искать в новой сборке эту функцию ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 614
Зарегистрирован: 11.02.10
|
|
Отправлено: 10.07.14 11:32. Заголовок: Andrey пишет: где и..
Andrey пишет: цитата: | где искать в новой сборке эту функцию ? |
| В новом примере External Application Control из папки samples\Advanced\ExternalApp_2 есть функция GetFullFileNameByHandle() Вызывать так: GetFullFileNameByHandle( hWin , @cFullFileName )
|
|
|
Dima
|
| |
Пост N: 4100
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.07.14 15:04. Заголовок: gfilatov2002 а где ..
gfilatov2002 а где то можно увидеть какие новые примеры добавились по сравнению с предыдущей сборкой ?
|
|
|
santy
|
| |
Пост N: 304
Зарегистрирован: 16.12.08
|
|
Отправлено: 10.07.14 15:28. Заголовок: ChangelogHMG2_37.doc..
ChangelogHMG2_37.doc - скачай с сайта Григория.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 615
Зарегистрирован: 11.02.10
|
|
Отправлено: 10.07.14 15:30. Заголовок: Dima пишет: какие н..
Dima пишет: цитата: | какие новые примеры добавились |
| См. последние изменения в файле changelog.txt, который находится в папке minigui\Doc
|
|
|
Dima
|
| |
Пост N: 4101
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.07.14 16:38. Заголовок: упс а слона то я и н..
упс а слона то я и не заметил
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3499
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.07.14 01:55. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | GetFullFileNameByHandle( hWin , @cFullFileName ) |
| Спасибо, то что нужно !!! Но дальше облом... Есть ли пример в котором показано: как вместо названия bmp-ки подставить хендл bmp для меню ? Вот например: GetFullFileNameByHandle (hIDWin, @cFullFileName) hIcon := ExtractIcon( cFullFileName, 0 ) hBmp := BmpFromIcon( hIcon ) // a return handle bmp DEFINE CONTEXT MENU OF Form_1 MENUITEM cWinName ...... IMAGE "INFO" MENUITEM cFullFileName ......... IMAGE hBmp Да и для кнопок (BUTTONEX) тоже непонятно как делать ? hIcon := ExtractIcon( System.SystemFolder + "\shell32.dll", 232 ) @ 120, 460 BUTTONEX Button_Refresh ; CAPTION 'Refresh' ; ICON hIcon ??? ;
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 616
Зарегистрирован: 11.02.10
|
|
Отправлено: 11.07.14 14:10. Заголовок: Andrey пишет: для к..
Andrey пишет: цитата: | для кнопок (BUTTONEX) тоже непонятно как делать ? |
| Для кнопок можно использовать следующую функцию: *-----------------------------------------------------------------------------* Procedure SetBtnIcon (cFormName, cBtnName, hIcon) *-----------------------------------------------------------------------------* Local hWnd, k k := GetControlIndex (cBtnName, cFormName) IF k > 0 IF _HMG_aControlBrushHandle [k] <> 0 DeleteObject (_HMG_aControlBrushHandle [k]) ENDIF _HMG_aControlBrushHandle [k] := hIcon hWnd := GetControlHandle (cBtnName, cFormName) #define STM_SETIMAGE 0x0172 #define IMAGE_ICON 1 SendMessage (hWnd, STM_SETIMAGE, IMAGE_ICON, hIcon) #undef IMAGE_ICON #undef STM_SETIMAGE ENDIF Return
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3500
Зарегистрирован: 12.09.06
|
|
Отправлено: 11.07.14 14:58. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Для кнопок можно использовать следующую функцию: |
| Спасибо БОЛЬШОЕ !!! А как иконки/bmp -ки добавлять в меню ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 618
Зарегистрирован: 11.02.10
|
|
Отправлено: 11.07.14 15:32. Заголовок: Andrey пишет: как и..
Andrey пишет: цитата: | как иконки/bmp -ки добавлять в меню ? |
| Попробуй использовать для bmp в меню функцию ниже *--------------------------------------------------------* Function _SetMenuItemImage( ItemName , FormName , hBitmap ) *--------------------------------------------------------* Local i Local x := GetControlIndex ( ItemName , FormName ) Local h := _HMG_aControlPageMap [ x ] If _HMG_aControlType [ x ] == "MENU" i := _HMG_aControlIds [ x ] ElseIf _HMG_aControlType [ x ] == "POPUP" i := _HMG_aControlSpacing [ x ] EndIf Return SetChevronImage ( h, i , hBitmap ) // SetChevronImage(hMenu, id_Command, image)
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3505
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.07.14 22:52. Заголовок: C иконками в меню и ..
C иконками в меню и кнопками теперь понятно ! Спасибо БОЛЬШОЕ Григорий !!! Возник теперь другой вопрос. Можно ли как то передать на форму (которую еще не создали), то что нужно нарисовать ? Т.е. объекты произвольного значения, допустим: линию по координатам, надпись по координатам или допустим объект FRAME ? Ну вот так примерно: ACTION {|| nRet := MenuList(aCaptions, aIcons, aButton, aWindow, aImage, aNewObj ),; MsgInfo( 'Action menu = ' + hb_ntos(nRet), wMain.Button_1.Caption) } передаю в aNewObj массив чего надо нарисовать на форме. А как тогда на форме (которая будет новая) создавать это объекты ? Или это вообще неправильный подход ???? Нужно сначала нарисовать форму, объекты, а уж потом вызывать функцию обработки этого окна ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 619
Зарегистрирован: 11.02.10
|
|
Отправлено: 16.07.14 10:07. Заголовок: Andrey пишет: объек..
Andrey пишет: цитата: | объекты произвольного значения, допустим: линию по координатам, надпись по координатам или допустим объект FRAME |
| Любой объект в минигуи сводится к вызову функции, поэтому ничего не мешает передать в массиве кодовый блок с вызовом этой функции с необходимыми параметрами, а затем выполнить этот блок, использовав событие формы ON INIT. Пример использования этих функций вместо минигуи-команд можно посмотреть в папке samples\Advanced\TSB_MENU. Но, конечно, это требует хорошего знания внутреннего устройства библиотеки и не рекомендуется из-за сложности использования
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3507
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.07.14 00:21. Заголовок: Спасибо БОЛЬШОЕ ! :..
Спасибо БОЛЬШОЕ ! Григорий, а если я в функции MenuList( cParent, aCaptions, aIcons, aButton, aRunFunc) добавлю идентификатор окна cParent (ну и соответственно везде поменять, где есть вызовы "Win_1"), то я смогу вызывать эту функцию и в других окнах ? Конфликтов не будет ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3509
Зарегистрирован: 12.09.06
|
|
Отправлено: 17.07.14 18:13. Заголовок: В FW на плитке есть ..
В FW на плитке есть возможность использования левой клавиши мыши. А на объекте ButtonEx можно задействовать левую клавишу мышки ? Есть ли обработчик какой ?
|
|
|
evgeny2006
|
| |
Пост N: 3
Зарегистрирован: 05.07.14
|
|
Отправлено: 19.07.14 16:05. Заголовок: Andrey пишет: Взялс..
Andrey пишет: цитата: | Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ? А заодно может и исправить и добавить новые.... |
| Присоединяюсь к поставленному вопросу Одновременно хотел задать еще вопрос. Создается впечатление, что система либо очень сырая, или авторы молчаливо используют библиотеки, отличные от приведенных в примерах. Например, DIRECTORY. Должна выдавать пять компонент. Вроде бы она это делает, но второй и третий компонент - пустые. Скорее всего необходимо подключать дополнительные библиотеки, но как о них узнать?
|
|
|
evgeny2006
|
| |
Пост N: 4
Зарегистрирован: 05.07.14
|
|
Отправлено: 19.07.14 16:08. Заголовок: Andrey пишет: Взялс..
Andrey пишет: цитата: | Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ? А заодно может и исправить и добавить новые.... |
| Присоединяюсь к поставленному вопросу Одновременно хотел задать еще вопрос. Создается впечатление, что система либо очень сырая, или авторы молчаливо используют библиотеки, отличные от приведенных в примерах. Например, DIRECTORY. Должна выдавать пять компонент. Вроде бы она это делает, но второй и третий компонент - пустые. Скорее всего необходимо подключать дополнительные библиотеки, но как о них узнать?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3513
Зарегистрирован: 12.09.06
|
|
Отправлено: 19.07.14 16:21. Заголовок: evgeny2006 пишет: С..
evgeny2006 пишет: цитата: | Создается впечатление, что система либо очень сырая, или авторы молчаливо используют библиотеки, отличные от приведенных в примерах. |
| Нет, неправ ты. Просто Windows-программирование очень отличается от стандартного Клиперного. Это нужно понять, а на понятие уходит много времени. Я уже второй год (правда наскоками) разбираюсь. Просто у Григория в библиотеки нет руководства для новичков. Я сам разбирался с нуля, а потом уже с помощью всех присутствующих на форуме. Результатами сейчас доволен, много можно делать. Начни потихоньку осваивать примеры. Своё приложение сразу писать НЕТ СМЫСЛА, пока не поймешь как можно использовать МиниГуи. Вот выкладываю образцы первых шагов. https://cloud.mail.ru/public/e17020852d3f/1_OnInitWindows.7z
|
|
|
Haz
|
| |
Пост N: 252
Зарегистрирован: 20.02.11
|
|
Отправлено: 19.07.14 16:26. Заголовок: Andrey пишет: Напри..
evgeny2006 пишет: а GUI то тут с какого боку ? Давайте по существу что именно не так в GUI ? Думаю вместе поможем разобраться. И поверьте авторам есть чем заняться кроме молчаливого использования каких то библиотек.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3514
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.07.14 08:43. Заголовок: Andrey пишет: А на ..
Andrey пишет: цитата: | А на объекте ButtonEx можно задействовать левую клавишу мышки ? Есть ли обработчик какой ? |
| Для RightClick надо использовать DEFINE CONTEXT MENU CONTROL ... или DEFINE CONTEXT MENU CONTROLS <cControlName1> [, cControlNamen ] смотри \samples\Basic\ControlsContextMenu Спасибо большое SergKis ! А для TBROWSE есть обработка RightClick ?
|
|
|
Vlad04
|
| постоянный участник
|
Пост N: 454
Зарегистрирован: 13.10.05
|
|
Отправлено: 21.07.14 08:51. Заголовок: evgeny2006 Наприме..
evgeny2006 цитата: | Например, DIRECTORY. Должна выдавать пять компонент. Вроде бы она это делает, но второй и третий компонент - пустые. |
| все заполнено Проверил в хХарбор 1 и Харбор 3.2
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3515
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.07.14 09:19. Заголовок: Блин, ну почему все ..
Блин, ну почему все пишут в моей теме ? Что нельзя отдельную ветку завести ? Повторяю свой вопрос: А для TBROWSE есть обработка RightClick ?
|
|
|
Dima
|
| |
Пост N: 4105
Зарегистрирован: 17.05.05
|
|
Отправлено: 21.07.14 14:38. Заголовок: Andrey пишет: Блин,..
Andrey пишет: цитата: | Блин, ну почему все пишут в моей теме ? Что нельзя отдельную ветку завести ? |
| Те жалко ? Считаешь нужно завести еще одну такую же тему ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3516
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.07.14 14:49. Заголовок: Dima пишет: Те жалк..
Dima пишет: Да пишут про другое совершенно ! А мой вопрос просто теряется....
|
|
|
Haz
|
| |
Пост N: 253
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.07.14 21:00. Заголовок: Andrey пишет: Повто..
Andrey пишет: цитата: | Повторяю свой вопрос: А для TBROWSE есть обработка RightClick ? |
| есть
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3517
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.07.14 23:19. Заголовок: Haz пишет: есть А..
Haz пишет: А если не сложно, пожалуйста ткните в пример !
|
|
|
Haz
|
| |
Пост N: 254
Зарегистрирован: 20.02.11
|
|
Отправлено: 22.07.14 10:07. Заголовок: Andrey пишет: пожал..
Andrey пишет: цитата: | пожалуйста ткните в пример |
| не в пример, а опять же в исходник TSCOLUMN.PRG. В данных класса определены блоки реакции на разные клики. DATA bFLClicked // Block to be evaluated on footer left clicked DATA bFRClicked // Block to be evaluated on footer right clicked DATA bHLClicked // Block to be evaluated on header left clicked DATA bHRClicked // Block to be evaluated on header right clicked DATA bSLClicked // Block to be evaluated on Special header left clicked DATA bSRClicked // Block to be evaluated on Special header right clicked DATA bLClicked // Block to be evaluated on cell left clicked DATA bRClicked // Block to be evaluated on cell right clicked Все что нужно сделать так это назначить этот блок BRW:aColumns[n]:bFLClicked := { || Msgbox('Block to be evaluated on footer left clicked') } PS. Класс TSBROWS отлично прокомментирован в исходниках. Все данные и методы понятны и читаемы. на нем же легко сделать кнопку с реакцией на правый клик к примеру - как ответ на вопрос выше (бровс по массиву с одной ячейкой без скроллов и заголовка , плюс с возможность фантазий типа динамической смены цвета этой кнопки, ее активности и прочего вплоть до контекстного меню по ней ). Но для этого нужно смотреть исходник и разбираться в нем.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3518
Зарегистрирован: 12.09.06
|
|
Отправлено: 30.07.14 00:03. Заголовок: Всем доброй ночи. :..
Всем доброй ночи. Наконец то дошли руки до новых непоняток в МиниГуи. Моих непоняток конечно.... Как на "лету" (т.е. уже в запущенной программе поменять ЦВЕТ кнопок ? Замену цвета сделал через контексное меню, и возврат цвета тоже скорее всего не работает... Вот мой код (который не работает...): Скрытый текст ////////////////////////////////////////////////////////////////////// Function METRO_BUTTON( aDim ) LOCAL cObject := aDim[1], nRow := aDim[2], nCol := aDim[3] LOCAL nWidth := aDim[4], nHeight := aDim[5], cCaption := aDim[6] LOCAL cResIco1 := aDim[7], cResIco2 := aDim[8] LOCAL aFontColor := aDim[9], aBACKCOLOR := aDim[10] LOCAL bAction := aDim[11], cTooltip := aDim[12] LOCAL cInfo0, cInfo1, cInfo2, aVal DEFINE BUTTONEX &cObject ROW nRow COL nCol WIDTH nWidth HEIGHT nHeight //PICTURE cResPicture ICON cResIco1 CAPTION cCaption ACTION IIF(bAction=='EXIT',ThisWindow.Release,&(bAction)) VERTICAL .T. LEFTTEXT .F. FLAT .F. FONTSIZE 12 FONTBOLD .F. FONTCOLOR aFontColor BACKCOLOR aBACKCOLOR UPPERTEXT .F. TOOLTIP cTooltip NOHOTLIGHT .F. NOXPSTYLE .T. ONGOTFOCUS ( SetProperty(ThisWindow.Name, cObject, "ICON", cResIco2), SetProperty(ThisWindow.Name, cObject, "fontbold", .t.) ) ONLOSTFOCUS ( SetProperty(ThisWindow.Name, cObject, "ICON", cResIco1), SetProperty(ThisWindow.Name, cObject, "fontbold", .f.) ) END BUTTONEX DEFINE CONTEXT MENU CONTROLS &cObject cInfo0 := "Object: "+cObject cInfo1 := "Object ID: "+ltrim(str(_HMG_xControlsContextMenuID)) //cInfo2 := "Object Control name: "+_HMG_aControlNames[_HMG_xControlsContextMenuID] - не РАБОТАЕТ !!! cInfo2 := "" MENUITEM cInfo0 DISABLED MENUITEM cInfo1 DISABLED MENUITEM cInfo2 DISABLED SEPARATOR MENUITEM "Change color button" ACTION { || aVal := GetColor(aBACKCOLOR), SetProperty(ThisWindow.Name, cObject, "BACKCOLOR", aBACKCOLOR) } MENUITEM "Color to default" ACTION { || SetProperty(ThisWindow.Name, cObject, "BACKCOLOR", aBACKCOLOR ) } END MENU Return NIL
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 627
Зарегистрирован: 11.02.10
|
|
Отправлено: 30.07.14 12:01. Заголовок: Andrey пишет: Как н..
Andrey пишет: цитата: | Как на "лету" (т.е. уже в запущенной программе поменять ЦВЕТ кнопок ? |
| цитата: | ITEM 'Set OButton BackColor' ACTION Form_1.OButton.BackColor := GetColor() |
| Так определена эта кнопка на форме: цитата: | DEFINE BUTTONEX OButton ROW 200 COL 400 WIDTH 90 HEIGHT 23 CAPTION "Computer" VERTICAL .t. // ICON "res\comp.ico" FLAT .f. FONTNAME "MS Sans serif" FONTSIZE 9 FONTCOLOR {0,128,0} // FONTBOLD .t. BACKCOLOR {240,255,240} UPPERTEXT .t. TOOLTIP "OButton with icon - vertical - uppertext - nohotlight - noxpstyle" NOHOTLIGHT .t. NOXPSTYLE .t. END BUTTONEX |
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3519
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.07.14 15:55. Заголовок: Спасибо за подсказку..
Спасибо за подсказку, получилось. Цвет кнопки менять на лету получилось ! https://cloud.mail.ru/public/8bb7a4832b49/MiniGui-TEST Не получается сделать вызов: DEFINE CONTEXT MENU CONTROL Label_Color2 - строка 107 НЕ вызывается МЕНЮ ВООБЩЕ !!! Почему ? Что не так делаю ? И взял из примера \SAMPLES\BASIC\ControlsContextMenu\ccmenu.fmg // new syntax one menu for multi controls (ADV) DEFINE CONTEXT MENU CONTROLS Label_1, Button_1, CheckBtn_1, List_1, Combo_1 MENUITEM "Multi 1" ACTION MsgInfo( "Multi 1 ID: "+ltrim(str(_HMG_xControlsContextMenuID)) ) MENUITEM "Multi 2" ACTION MsgInfo( "Multi 2 Control name: "+ _HMG_aControlNames[_HMG_xControlsContextMenuID] ) а у меня не работает... //cInfo2 := "Object Control name: "+_HMG_aControlNames[_HMG_xControlsContextMenuID] Подскажите пожалуйста как сделать, чтобы заработало ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3520
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.07.14 17:21. Заголовок: Andrey пишет: Не по..
Andrey пишет: цитата: | Не получается сделать вызов: DEFINE CONTEXT MENU CONTROL Label_Color2 - строка 107 |
| Пошаговое разбирание примера (спасибо a_sidorov ) привело к неожиданному результату: В строке 72: @ 24, 0 LABEL Label_Color2 VALUE "" WIDTH nWidth HEIGHT 84 BACKCOLOR COLOR_BLUE_BLUE в конце нужно поставить TOOLTIP "" И меню начнет появляться. Это баг или так должно быть ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3523
Зарегистрирован: 12.09.06
|
|
Отправлено: 31.07.14 18:44. Заголовок: Вот это точно новый ..
Вот это точно новый баг ! Если для объекта ставлю TOOLTIP "" то перестают работать Label_Inf1 и Label_Inf2: @ 40, 120 LABEL Label_Inf1 VALUE MiniGUIVersion() ; AUTOSIZE ; ON CLICK MsgInfo('Label-1 Clicked !') ; ON MOUSEHOVER ( Rc_Cursor( "MINIGUI_FINGER" ), Form_Main.Label_Inf1.Value := MiniGUIVersion(), ; iif(lOver, , (Form_Main.Label_Inf1.FontBold := .t., lOver := .T.)) ) ; ON MOUSELEAVE ( Form_Main.Label_Inf1.FontBold := .f., Form_Main.Label_Inf1.Value := MiniGUIVersion(), lOver := .f. ) ; FONT 'Arial' SIZE 14 FONTCOLOR YELLOW BACKCOLOR COLOR_BLUE_BLUE Новый пример тут: https://cloud.mail.ru/public/d17fa3f4f9c1/Menu_ButtonEx_2.7z Наверно что-то с наложением объектов.... Можно исправить ошибку до выхода новой версии (или всё таки у меня что-то не то в коде) ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 630
Зарегистрирован: 11.02.10
|
|
Отправлено: 01.08.14 10:24. Заголовок: Andrey пишет: Можно..
Andrey пишет: цитата: | Можно исправить ошибку до выхода новой версии (или всё таки у меня что-то не то в коде) ? |
| Ошибки здесь нет Вы переназначили свой объект из статического типа в активный, добавив TOOLTIP "", и теперь он обрабатывается в первую очередь, закрывая собой Label_Inf1 и Label_Inf2, которые лежат сверху на этом объекте. Выход: назначить контексное меню на изначально актмвные объекты Label_Inf1 и Label_Inf2, и вернуть статический тип Вашей цветной метке (т.е. убрать класс TOOLTIP "")
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3528
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.08.14 21:46. Заголовок: Всем доброго вечера...
Всем доброго вечера. Помню что где то здесь приводился пример, про то как определить кол-во объектов на форме, чтобы их всех перерисовать. Не смог найти. Подскажите пожалуйста какой пример в МиниГуи это демонстрирует ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 376
Зарегистрирован: 17.02.12
|
|
Отправлено: 03.08.14 22:39. Заголовок: Andrey пишет:Подскаж..
Andrey пишет: цитата: | Подскажите пожалуйста какой пример в МиниГуи это демонстрирует ? |
| см. ...\BASIC\Form_Controls\demo.prg Function _GetArrayOfAllControlsForForm ( cFormName )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3546
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.08.14 15:07. Заголовок: Есть цвет 15790320 ..
Есть цвет 15790320 - как его превратить в массив {} ? Есть ли такая функция в МиниГуи ?
|
|
|
Haz
|
| |
Пост N: 286
Зарегистрирован: 20.02.11
|
|
Отправлено: 14.08.14 18:47. Заголовок: Andrey пишет: как е..
Andrey пишет: FUNC N2RGB(nColor) LOCAL nR := 0 LOCAL nG := 0 LOCAL nB := 0 LOCAL cColor := NTOC(nColor, 16) nR := CTON(SUBSTR( cColor, 5, 2 ), 16) nG := CTON(SUBSTR( cColor, 3, 2 ), 16) nB := CTON(SUBSTR( cColor, 1, 2 ), 16) RETURN {nR, nG, nB }
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3547
Зарегистрирован: 12.09.06
|
|
Отправлено: 14.08.14 21:24. Заголовок: Haz пишет: FUNC N2R..
Haz пишет: Спасибо БОЛЬШОЕ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3548
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.08.14 00:43. Заголовок: Собираю программу по..
Собираю программу под Win-8.1, запускаю на Win-XP и по бокам внизу остаётся фон формы: А под Win8 всё нормально: Методом подбора сделал окно TBROWSE вплотную к линии STATUSBAR и по ширине окна формы ! CreateBrowse( "oBrw_1", 'Form_0', 32, 2, Form_0.Width-19, Form_0.Height-93, 'LOG_DBF' ) Как исправить положение ? Как сделать, чтобы на всех компах было красиво ? Пробовал использовать функцию IsXPThemeActive(), но она под 8-кой выдает тоже .T. !
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 383
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.08.14 09:01. Заголовок: Andrey пишет:Как исп..
Andrey пишет: попробуй использовать: Скрытый текст
цитата: | // BAA HB_FUNC( GETCLIENTWIDTH ) { RECT rect; LONG hWnd=hb_parnl(1); if(hWnd==0) SystemParametersInfo( SPI_GETWORKAREA, 0, &rect, 0); else GetClientRect( ( HWND ) hWnd, &rect ); hb_retni( ( INT ) rect.right - rect.left ); } // BAA HB_FUNC( GETCLIENTHEIGHT ) { RECT rect; LONG hWnd=hb_parnl(1); // SPI_GETWORKAREA == 0x0030 if(hWnd==0) SystemParametersInfo( SPI_GETWORKAREA, 0, &rect, 0); else GetClientRect( ( HWND ) hWnd, &rect ); hb_retni( ( INT ) rect.bottom - rect.top ); } |
|
| GETCLIENTHEIGHT(0) - высота клиентской (внутренней) области Desktop с учетом наличия строки Start GETCLIENTWIDTH(0) - ширина клиентской (внутренней) области Desktop GETCLIENTHEIGHT(hWnd) - высота клиентской (внутренней) области окна (или контрола) GETCLIENTWIDTH(hWnd) - ширина клиентской (внутренней) области окна (или контрола) т.е.: hWnd := GetFormHandle('Form_0') CreateBrowse( "oBrw_1", 'Form_0', 32, 2, GetClientWidth(hWnd), GetClientHeight(hWnd), 'LOG_DBF' )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3549
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.08.14 11:00. Заголовок: SergKis пишет: попр..
SergKis пишет: Спасибо БОЛЬШОЕ за оперативность ! А как узнать размер STATUSBAR у себя в программе ? А то Browse по самый низ располагается.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 384
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.08.14 11:42. Заголовок: Andrey пишет:Как исп..
Andrey пишет: другой способ (расчет): GetWindowWidth(hWnd) - ширина внешней области окна (или контрола) GetWindowHeight(hWnd)- высота внешней области окна (или контрола) т.е.: hWnd := GetFormHandle('Form_0') nClientWidth := GetWindowWidth(hWnd) - 2*GetBorderWidth() // если есть рамка вокруг окна nClientHeight := GetWindowHeight(hWd) - 2*GetBorderHeight() // --"---"--- nClientHeight -= GetTitleHeight() // если есть title окна nClientHeight -= GetMenuBarHeight() // если есть меню nClientHeight -= GetWindowHeight(GetControlHandle('STATUSBAR', 'Form_0')) // высота StatusBar при наличии ToolBar, то в обоих (из пред. моего поста тоже) случаях надо отнимать его размер как то так, если что то не забыл учесть. для окна начальные значения можно взять Form_0.Width, Form_0.Height, для MAIN Application.Width, Application.Height
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3550
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.08.14 12:42. Заголовок: SergKis пишет: nCli..
SergKis пишет: цитата: | nClientHeight -= GetWindowHeight(GetControlHandle('STATUSBAR', 'Form_0')) // высота StatusBar |
| То что нужно ! Спасибо БОЛЬШОЕ !
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 385
Зарегистрирован: 17.02.12
|
|
Отправлено: 15.08.14 13:12. Заголовок: Andrey пишет:То что ..
Andrey пишет: StatusBar - контрол, значит можно и Form_0.StatusBar.Height - по правилам OOP MiniGui
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3579
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.08.14 12:01. Заголовок: Всем привет. Вопрос ..
Всем привет. Вопрос по шрифтам в программе. Если я у себя объявляю фонты в справочнике: DEFINE FONT Font_1 FONTNAME "Times New Roman" SIZE nSize1 DEFINE FONT Font_2 FONTNAME "Times New Roman" SIZE nSize2 BOLD ITALIC DEFINE FONT Font_3 FONTNAME "Times New Roman" SIZE nSize3 BOLD DEFINE FONT Font_4 FONTNAME 'Arial' SIZE nSize4 ITALIC DEFINE FONT Font_5 FONTNAME 'Tahoma' SIZE nSize5 BOLD и оставляю это окно открытым, то при открытие основной таблицы - НЕЛЬЗЯ заново определить другие шрифты с именами: Font_1, Font_2 и т.д. Как нужно определять шрифты у себя в программе ? Т.е. опредилить их всех в начале программы с разными именами, или каждый раз убивать шрифты при выходе из окна или еще как ? Поясните пожалуйста как нужно работать с ними.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 393
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.08.14 12:35. Заголовок: Andrey а если так в..
Andrey а если так в новом окне: #define Font_1 Font_7 #define Font_2 Font_8
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3580
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.08.14 12:40. Заголовок: SergKis пишет: а ес..
SergKis пишет: Понял. Спасибо. А вообще как правильно делать - работать со шрифтами ? Я же перевожу свою программу с терминалки, и не знаю как лучше.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 394
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.08.14 12:48. Заголовок: Andrey пишет:Я же пе..
Andrey пишет: цитата: | Я же перевожу свою программу с терминалки |
| у тебя в терминалке много фонтов ? мне хватает: #command SET FONT TO <fontname> , <fontsize> => _HMG_DefaultFontName := <fontname> ; _HMG_DefaultFontSize := <fontsize> и фонта на окно, который устанавливается (и наследуется на конролах): _HMG_ActiveFontName := IFCHARACTER( FontName, FontName, "" ) _HMG_ActiveFontSize := IFNUMBER( FontSize, FontSize, 0 ) и пару заголовков Times New Roman, указанных конкретно
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3581
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.08.14 13:04. Заголовок: SergKis пишет: у те..
SergKis пишет: цитата: | у тебя в терминалке много фонтов ? |
| Да пару всего.... Просто я в TSBROWSE использовал 5 (как в примерах) , попытался открыть другой TSBROWSE и облом, там тоже определено 5 шрифтов. Вот и выходит конфликт шрифтов. А можно как нибудь проверить - установлен ли шрифт Font_1 ? И как можно получить размер шрифта ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 395
Зарегистрирован: 17.02.12
|
|
Отправлено: 20.08.14 13:12. Заголовок: Andrey пишет:А можно..
Andrey пишет: цитата: | А можно как нибудь проверить - установлен ли шрифт Font_1 |
| hFont := GetFontHandle( FontName ) // даст handle или 0 и глянь i_font.ch
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3582
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.08.14 15:07. Заголовок: SergKis пишет: и гл..
SergKis пишет: Спасибо !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3592
Зарегистрирован: 12.09.06
|
|
Отправлено: 24.08.14 21:02. Заголовок: Привет всем. Вот опя..
Привет всем. Вот опять непонятка по доке. Использую у себя окно выбора: MsgYesNo( "Вы хотите добавить в СПРАВОЧHИК новую запись ?", "Добавление записей", .f. ) .f. - это же кнопка по умолчанию ? Как исправить ? Или я не прав ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 397
Зарегистрирован: 17.02.12
|
|
Отправлено: 25.08.14 11:48. Заголовок: Andrey пишет:Как исп..
Andrey пишет: Что исправлять ? .T. - кнопка Нет .F. - кнопка Да в фокусе
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3595
Зарегистрирован: 12.09.06
|
|
Отправлено: 25.08.14 23:18. Заголовок: SergKis пишет: .T. ..
SergKis пишет: цитата: | .T. - кнопка Нет .F. - кнопка Да в фокусе |
| Блин, всё наоборот. Я считал что .F. - кнопка нет. Да уж... Спасибо БОЛЬШОЕ !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3596
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.08.14 23:10. Заголовок: SergKis пишет: см. ..
SergKis пишет: цитата: | см. ...\BASIC\Form_Controls\demo.prg Function _GetArrayOfAllControlsForForm ( cFormName ) |
| При использовании этой функции, возник такой вопрос. Что за странные имена объектов - DummyMenuName?? , если вывести список объектов формы ? Мне нужно перерисовать свои объекты на форме. Т.е. я тогда просто пропускаю эти объекты, а свои перерисовываю. Правильно ли это ?
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 399
Зарегистрирован: 17.02.12
|
|
Отправлено: 26.08.14 23:36. Заголовок: Andrey пишет:странны..
Andrey пишет: цитата: | странные имена объектов - DummyMenuName |
| строка меню имеет идентификатор (для обращения\управления этой строкой см. h_menu.prg), если не задано имя, то по формируется по default. цитата: | Т.е. я тогда просто пропускаю эти объекты, а свои перерисовываю. Правильно ли это ? |
| Да. Но я создаю свой массив для нужных контролов и пляшу от него. пример: Скрытый текст
// oW:aKrt_Field - массив для нужных контролов y += nHn + nGapsH x := nWl cNm := 'VALSTS'; cTx := gTxt(cPref+'R_11A') // COUNTRY (СТРАНА) ТЕКСТ @ y, x LABEL &('Lbl_'+cNm) WIDTH nLn HEIGHT nHn VALUE cTx BACKCOLOR BC ; FONTCOLOR FC x += nLn + nGapsW // COUNTRY (СТРАНА КОД) cNm := 'VALSTSK'; nLen := oSt:W('05') + 5 @ y, x GETBOX &cNm WIDTH nLen HEIGHT nHn VALUE '' ACTION oW:BtnGet() ; VALID VldValsts() ; BACKCOLOR BG ; FONTCOLOR FC nNm := GetControlIndex (cNm, oW:cWnd) hNm := GetControlHandle(cNm, oW:cWnd) oNm := _HMG_aControlHeadClick[ nNm ] oNm:OnDblClick := {|oGet| oSelfObj:SelRecEdit('VALSTSK')} oNm:OnF5 := {|oGet| oSelfObj:BtnGet( oGet ) } // VK_F5 CONTROLREADONLY(hNm, .T.) CONTROLTABSTOP (hNm, .F.) aAdd(oW:aKrt_Field, { cNm, nNm, hNm, 'R_11A', .T., , , }) // .T. - снимаем ReadOnly, R_11A - FieldName x += nLen // + nGapsW cNm := 'VALSTSN'; nLen := oSt:W('30') - 5 // COUNTRY (СТРАНА НАИМЕН.) @ y, x GETBOX &cNm WIDTH nLen HEIGHT nHn VALUE '' READONLY BACKCOLOR BG ; FONTCOLOR FC nNm := GetControlIndex (cNm, oW:cWnd) hNm := GetControlHandle(cNm, oW:cWnd) oNm := _HMG_aControlHeadClick[ nNm ] // object GetBox oNm:OnDblClick := {|oGet| oSelfObj:SelRecEdit('VALSTSK')} CONTROLTABSTOP(hNm, .F.) aAdd(oW:aKrt_Field, { cNm, nNm, hNm, 'R_12A', .F., , , }) // .F. - не снимаем ReadOnly, R_12A - FieldName ... вот включаю корректировку по массиву: METHOD SelRecEdit( cFocus ) CLASS Child_Mdi_UMZ_KLI LOCAL a,i,j,k,n, nF, cC, oW := oSelfObj LOCAL aBColor := oW:aBColorGet LOCAL aFColor := oW:aFColorGet ::lSetKrtEdit := .T. // вошли в редактирование k := len(::aKrt_Field) FOR i := 1 TO k a := ::aKrt_Field[ i ] IF a[ 5 ] // { cNm, nNm, hNm, 'R_1' , .F., , , } cC := a[ 1 ] // Name controlа IF nF == NIL; nF := a[ 2 ] // Index controlа для SetFocus ENDIF a[ 6 ] := _GetBackColor( cC, ::cWnd ) // сохраняем цвета Getbox a[ 7 ] := _GetFontColor( cC, ::cWnd ) // --"--- CONTROLREADONLY( a[ 3 ], .F. ) // включаем корректировку и CONTROLTABSTOP ( a[ 3 ], .T. ) // переход по TabStop _SetBackColor( cC, ::cWnd, aBColor ) // ставим цвета GetBox _SetFontColor( cC, ::cWnd, aFColor ) // в коректировке ENDIF NEXT SetProperty(::cWnd, 'BTN_OK' , 'Visible', .T.) SetProperty(::cWnd, 'BTN_CANCEL', 'Visible', .T.) SetProperty(::cWnd, ::oBr1:cBrw , 'Enabled', .F.) CONTROLTABSTOP(::oBr1:hBrw, .F.) IF ! empty(cFocus) nF := GetControlIndex(cFocus, ::cWnd) ENDIF IF ! empty(nF); _SetFocus(nF) // ставим на первый или указанный ENDIF RETURN
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 400
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.08.14 00:16. Заголовок: Andrey вдогонку зав..
Andrey вдогонку завершение корректировки: Скрытый текст
METHOD PressBtn( nBtn ) CLASS Child_Mdi_UMZ_KLI LOCAL a,f,i,j,k,n,o, cN, cC, nC, oC, cF, uV, uF, aM := {} IF ::lPressBtn; RETURN ENDIF ::lPressBtn := .T. // начали PressBtn k := len(::aKrt_Field) IF nBtn == 1 // button OK. save values FOR i := 1 TO k a := ::aKrt_Field[ i ] IF ! a[ 5 ]; LOOP // { cNm, nNm, hNm, 'R_1' , .F., , , } ENDIF cC := a[ 1 ] // control name nC := a[ 2 ] // control index oC := _HMG_aControlHeadClick[ nC ] // control object GetBox cF := a[ 4 ] // control FieldName uF := mFieldGet(cF, ::cAlias) // FieldName value uV := oC:VarGet() // control value IF hb_IsChar(uV) IF ! trim(uF) == trim(uV) // изменено значение aAdd(aM, { cF, uV }) cN := '' IF cC == 'VALSTSK' // код страны cN := left(cC, len(cC)-1)+'N' ENDIF IF ! empty(cN) // данные наименований от кода n := ascan(::aKrt_Field, {|aX,nX| aX[1] == cN }) IF n > 0 j := ::aKrt_Field[ n ][2] // index o := _HMG_aControlHeadClick[ j ] // object f := ::aKrt_Field[ n ][4] // field aAdd(aM, { f, o:VarGet() }) // изменены ENDIF ENDIF ENDIF ELSE IF ! uF == uV // изменено значение aAdd(aM, { cF, uV }) ENDIF ENDIF NEXT IF ! empty(aM) dbSelectArea(::cAlias) IF mRLock() // save modify values mFieldPut(aM, , , .F.) ELSE // Lock error ::lPressBtn := .F. // завершили PressBtn MsgStop(upper(gTxt('#'+::cAlias+'_Kod'))+': '+R_1+' NOT SAVE !', ; 'Lock record error.') RETURN ENDIF ENDIF ENDIF FOR i := 1 TO k a := ::aKrt_Field[ i ] IF a[ 5 ] // { cNm, nNm, hNm, 'R_1' , .F., , , } cC := a[ 1 ] CONTROLREADONLY(a[ 3 ], .T.) // выключаем корректировку и CONTROLTABSTOP (a[ 3 ], .F.) // переход по TabStop IF ! a[ 6 ] == NIL; _SetBackColor( cC, ::cWnd, a[ 6 ] ) ENDIF IF ! a[ 7 ] == NIL; _SetFontColor( cC, ::cWnd, a[ 7 ] ) ENDIF ENDIF NEXT SetProperty(::cWnd, 'BTN_OK' , 'Visible', .F.) SetProperty(::cWnd, 'BTN_CANCEL', 'Visible', .F.) SetProperty(::cWnd, ::oBr1:cBrw , 'Enabled', .T.) CONTROLTABSTOP(::oBr1:hBrw, .T.) ::oBr1:Refresh() ::OnChange() _MdiWindowsActivate( ::hWnd ) ::oBr1:SetFocus() ::lSetKrtEdit := .F. // вышли из редактирования ::lPressBtn := .F. // завершили PressBtn RETURN
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3601
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.08.14 11:39. Заголовок: Спасибо БОЛЬШОЕ за р..
Спасибо БОЛЬШОЕ за разъяснения !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3603
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.08.14 18:16. Заголовок: Как сделать запрет/р..
Как сделать запрет/разрешение на контекстном меню ? Вот так не проходит: MENUITEM "Включить показ удаленных записей" ACTION { || RecnoViewDel(.T.) } IF( M->nOperat # 101, DISABLED ) MENUITEM "Отключить показ удаленных записей" ACTION { || RecnoViewDel(.F.) } IF( M->nOperat # 101, DISABLED ) Выдает ошибку: Harbour 3.2.0dev (r1406261642) Copyright (c) 1999-2014, http://harbour-project.org/ Sel_DimHmg.prg(581) Error E0030 Syntax error "syntax error at '┬ъы■ўшЄ№ яюърч єфрыхээ√ї чряшёхщ'" Sel_DimHmg.prg(582) Error E0030 Syntax error "syntax error at '┬╬╤╤╥└═╬┬╚╥▄ єфрыхээє■ чряшё№'"
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 401
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.08.14 19:17. Заголовок: Andrey ITEM 'It..
Andrey ITEM 'Item 1' NAME Item_menu1 ACTION ... ... MENUITEM 'Item 1' NAME Item_menu1 ACTION ... ... функции (см. h_menu.prg): _DisableMenuItem ( ItemName , FormName ) _EnableMenuItem ( ItemName , FormName ) _CheckMenuItem ( ItemName , FormName ) _UncheckMenuItem ( ItemName , FormName )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3604
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.08.14 20:35. Заголовок: Не совсем понял как ..
Не совсем понял как сделать в моем случае ? DEFINE CONTEXT MENU CONTROL oBrw_5 // для моего TBROWSE ..... SEPARATOR MENUITEM "Включить показ удаленных записей" ACTION ... NAME RecDelete_menu1 MENUITEM "Отключить показ удаленных записей" ACTION ... NAME RecDelete_menu2 END MENU IF M->nOperat # 101 _DisableMenuItem ( "RecDelete_menu1" , "oBrw_5" ) _DisableMenuItem ( "RecDelete_menu2" , "oBrw_5" ) ENDIF
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 403
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.08.14 20:50. Заголовок: Andrey пишет:Не совс..
Andrey пишет: из MiniGui.chm: SYNTAX DEFINE CONTEXT MENU CONTROL <cControlName>[ OF<cParentWindowName> ] MENUITEM <cItemCaption> ACTION <ActionProvedureName> | <bBlock> [ NAME <MenuItemName>] [ IMAGE <cImageName> ] [ CHECKED ] [ DISABLED ] [ MESSAGE <cMessage> ] ... ... [ SEPARATOR ] ... END MENU т.е. IF M->nOperat # 101 MENUITEM "Включить показ удаленных записей" ACTION ... NAME RecDelete_menu1 DISABLED MENUITEM "Отключить показ удаленных записей" ACTION ... NAME RecDelete_menu2 DISABLED ELSE MENUITEM "Включить показ удаленных записей" ACTION ... NAME RecDelete_menu1 MENUITEM "Отключить показ удаленных записей" ACTION ... NAME RecDelete_menu2 ENDIF а функции применяешь на каких то событиях (нажатие кнопки, click, ...) oBrw_5 - это FormName или объект tsbrowse. должен быть FormName
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 405
Зарегистрирован: 17.02.12
|
|
Отправлено: 28.08.14 21:56. Заголовок: Andrey можно сделат..
Andrey можно сделать все пункты disable, а в ON ININ после определения всех условий, для нужных сделать enable, (или наоборот) через функции и в местах изменения условия(установки) так же функциями сделать изменения
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3606
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.08.14 12:23. Заголовок: SergKis пишет: oBrw..
SergKis пишет: цитата: | oBrw_5 - это FormName или объект tsbrowse. должен быть FormName |
| Спасибо БОЛЬШОЕ ! Разобрался. Ставил условие неправильное, из-за этого и не получалось у меня. SergKis пишет: цитата: | ON ININ после определения всех условий, для нужных сделать enable, (или наоборот) |
| Вот это самый лучший вариант !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3617
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.09.14 13:34. Заголовок: Нашел выражение при ..
Нашел выражение при котором программа на МиниГуи вешается наглухо !!! cStroka := "Затрачено всего времени: " + SECTOTIME(SECONDS()-nTime + " !" ) И даже ошибки не выдает.
|
|
|
Haz
|
| |
Пост N: 318
Зарегистрирован: 20.02.11
|
|
Отправлено: 07.09.14 14:18. Заголовок: Andrey пишет: SECTO..
Andrey пишет: цитата: | SECTOTIME(SECONDS()-nTime + " !" ) |
| Andrey пишет: всеж ругается и правильно ругается тк к числу плюсуем строку Time from start: 0 days 0 hours 0 mins 0 secs<BR> Error BASE/1081 Argument error: +</p><BR>
|
|
|
petr707
|
| |
Пост N: 112
Зарегистрирован: 21.04.13
|
|
Отправлено: 07.09.14 17:28. Заголовок: Контроль системы сообщений об ошибках
Возможно, неудачно модифицирован ERRORSYS (или заменен при выполнении ERRORBLOCK ) и сообщения ошибок при выполнении не видны. Как вариант, иметь в софте вызов управляемого свала, типа этого или a:= "2"+2 для проверки системы сообщений. Вызов этой "ошибки" можно делать по "секретной" для юзеров клавише(кнопке) или в отладочном режиме выполнения софта.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3618
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.09.14 08:01. Заголовок: Haz пишет: всеж руг..
Haz пишет: цитата: | всеж ругается и правильно ругается тк к числу плюсуем строку |
| В моей системе не ругается вообще. Вешает прогу и все. Хотя исходников пока немного - 350Кб. petr707 пишет: цитата: | Возможно, неудачно модифицирован ERRORSYS (или заменен при выполнении ERRORBLOCK ) и сообщения ошибок при выполнении не видны. |
| Ничего не менял и не заменял.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3619
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.09.14 08:43. Заголовок: Как на МиниГуи сдела..
Как на МиниГуи сделать правильно индексацию БД с бегунком ? На локальном компе сделанная мною индексация БД работает нормально, а по сети вешается.... Причем на разных файлах. Кол-во файлов для индексации примерно 200 штук.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 638
Зарегистрирован: 11.02.10
|
|
Отправлено: 08.09.14 10:50. Заголовок: Andrey пишет: Как н..
Andrey пишет: цитата: | Как на МиниГуи сделать правильно индексацию БД с бегунком ? |
| У меня работает такой пример (см.ниже) Скрытый текст
/* MINIGUI - Harbour Win32 GUI library Demo */ #include "minigui.ch" #include "dbstruct.ch" DECLARE WINDOW Form_PrgBar PROCEDURE Main filltable( 500 ) GO TOP DEFINE WINDOW Form1 ; AT 0 , 0 ; WIDTH 600 HEIGHT 400 ; TITLE "ProgressBar Demo" ; MAIN DEFINE BUTTON Button_1 ROW 20 COL 20 WIDTH 80 HEIGHT 28 CAPTION "Process 1" ACTION NtxCreate( FIELD(2), FIELD(2) ) DEFAULT .T. END BUTTON ON KEY ESCAPE ACTION ThisWindow.Release END WINDOW CENTER WINDOW Form1 ACTIVATE WINDOW Form1 RETURN /////////////////////////////////////////////////////////////////// FUNCTION NtxCreate( cField, cNtxName ) CreateProgressBar( "Create index " + cNtxName + "..." ) INDEX ON (cField) TO (cNtxName) EVAL NtxProgress() EVERY LASTREC()/10 Form_PrgBar.PrgBar_1.Value := 100 Form_PrgBar.Label_1.Value := "Completed 100%" // final waiting INKEYGUI(1000) CloseProgressBar() RETURN NIL /////////////////////////////////////////////////////////////////// FUNCTION NtxProgress() LOCAL nComplete := INT((RECNO()/LASTREC()) * 100) Form_PrgBar.PrgBar_1.Value := nComplete Form_PrgBar.Label_1.Value := "Completed "+ +HB_NTOS(nComplete) + "%" // refreshing INKEYGUI(100) RETURN .T. ////////////////////////////////////////////////////////////////////// FUNCTION CreateProgressBar( cTitle ) DEFINE WINDOW Form_PrgBar ; ROW 0 COL 0 ; WIDTH 428 HEIGHT 200 ; TITLE cTitle ; WINDOWTYPE MODAL ; NOSIZE ; FONT 'Tahoma' SIZE 11 @ 10,80 ANIMATEBOX Avi_1 ; WIDTH 260 HEIGHT 40 ; FILE 'filecopy.avi' ; AUTOPLAY TRANSPARENT NOBORDER @ 75,10 LABEL Label_1 ; WIDTH 400 HEIGHT 20 ; VALUE '' ; CENTERALIGN VCENTERALIGN @ 105,20 PROGRESSBAR PrgBar_1 ; RANGE 0,100 ; VALUE 0 ; WIDTH 380 HEIGHT 34 END WINDOW Form_PrgBar.Center Activate Window Form_PrgBar NoWait RETURN NIL ////////////////////////////////////////////////////////////////////// FUNCTION CloseProgressBar() Form_PrgBar.Release DO MESSAGE LOOP RETURN NIL ////////////////////////////////////////////////////////////////////// PROCEDURE filltable ( nCount ) LOCAL aDbf[11][4], i if !file('test.dbf') aDbf[1][ DBS_NAME ] := "First" aDbf[1][ DBS_TYPE ] := "Character" aDbf[1][ DBS_LEN ] := 20 aDbf[1][ DBS_DEC ] := 0 // aDbf[2][ DBS_NAME ] := "Last" aDbf[2][ DBS_TYPE ] := "Character" aDbf[2][ DBS_LEN ] := 20 aDbf[2][ DBS_DEC ] := 0 // aDbf[3][ DBS_NAME ] := "Street" aDbf[3][ DBS_TYPE ] := "Character" aDbf[3][ DBS_LEN ] := 30 aDbf[3][ DBS_DEC ] := 0 // aDbf[4][ DBS_NAME ] := "City" aDbf[4][ DBS_TYPE ] := "Character" aDbf[4][ DBS_LEN ] := 30 aDbf[4][ DBS_DEC ] := 0 // aDbf[5][ DBS_NAME ] := "State" aDbf[5][ DBS_TYPE ] := "Character" aDbf[5][ DBS_LEN ] := 2 aDbf[5][ DBS_DEC ] := 0 // aDbf[6][ DBS_NAME ] := "Zip" aDbf[6][ DBS_TYPE ] := "Character" aDbf[6][ DBS_LEN ] := 10 aDbf[6][ DBS_DEC ] := 0 // aDbf[7][ DBS_NAME ] := "Hiredate" aDbf[7][ DBS_TYPE ] := "Date" aDbf[7][ DBS_LEN ] := 8 aDbf[7][ DBS_DEC ] := 0 // aDbf[8][ DBS_NAME ] := "Married" aDbf[8][ DBS_TYPE ] := "Logical" aDbf[8][ DBS_LEN ] := 1 aDbf[8][ DBS_DEC ] := 0 // aDbf[9][ DBS_NAME ] := "Age" aDbf[9][ DBS_TYPE ] := "Numeric" aDbf[9][ DBS_LEN ] := 2 aDbf[9][ DBS_DEC ] := 0 // aDbf[10][ DBS_NAME ] := "Salary" aDbf[10][ DBS_TYPE ] := "Numeric" aDbf[10][ DBS_LEN ] := 6 aDbf[10][ DBS_DEC ] := 0 // aDbf[11][ DBS_NAME ] := "Notes" aDbf[11][ DBS_TYPE ] := "Character" aDbf[11][ DBS_LEN ] := 70 aDbf[11][ DBS_DEC ] := 0 DBCREATE("test", aDbf) endif if select('test') == 0 dbusearea(.t.,,'test') endif for i := 1 to nCount append blank replace first with 'first' + str(i) replace last with 'last' + str(i) replace street with 'street' + str(i) replace city with 'city' + str(i) replace state with chr( HB_RANDOMINT( 65,90 ) ) + chr( HB_RANDOMINT( 65,90 ) ) replace zip with alltrim( str( HB_RANDOMINT( 9999 ) ) ) replace hiredate with date() - 20000 + i replace married with ( HB_RANDOMINT() == 1 ) replace age with HB_RANDOMINT( 99 ) replace salary with HB_RANDOMINT( 10000 ) replace notes with 'notes' + str(i) next i RETURN
|
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3621
Зарегистрирован: 12.09.06
|
|
Отправлено: 10.09.14 13:34. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | У меня работает такой пример (см.ниже) |
| Посмотрел код, я также делаю. Единственно добавлен у меня еще один бегунок по общему кол-ву файлов. Буду переделывать тогда этот код. О результатах сообщу. Спасибо большое за помощь !
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3624
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.09.14 20:04. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | У меня работает такой пример (см.ниже) |
| Сделал тест на базе этого примера - https://cloud.mail.ru/public/fb23fc2d8f87%2FPROGRESSBAR_4.7z По сети работает без ошибок ! Единственно что не смог сделать - это корректное прекращение индексации по крестику. Подскажите пожалуйста как это сделать ?
|
|
|
Dima
|
| |
Пост N: 4208
Зарегистрирован: 17.05.05
|
|
Отправлено: 12.09.14 21:00. Заголовок: Andrey пишет: Един..
Andrey пишет: цитата: | Единственно что не смог сделать - это корректное прекращение индексации по крестику |
| Если оборвать индексацию файла , то индекс будет битым или я чего не понял.... PS Пример не смотрел.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3625
Зарегистрирован: 12.09.06
|
|
Отправлено: 12.09.14 21:57. Заголовок: Dima пишет: Если об..
Dima пишет: цитата: | Если оборвать индексацию файла , то индекс будет битым или я чего не понял.... |
| Подождать пока не закончится индексация этого файла, а остальные прервать.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 642
Зарегистрирован: 11.02.10
|
|
Отправлено: 12.09.14 22:07. Заголовок: Andrey пишет: Подож..
Andrey пишет: цитата: | Подождать пока не закончится индексация этого файла, а остальные прервать. |
| Посмотри, как прерывается цикл в примере из папки samples\Basic\StopWatch и попробуй использовать эту идею в цикле индексации
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3626
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.09.14 00:03. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Посмотри, как прерывается цикл в примере из папки samples\Basic\StopWatch |
| Идея понятна, спасибо ! Пример исправил - https://cloud.mail.ru/public/1b3427b9e886%2FPROGRESSBAR_4a.7z А как по крестику отловить нажатие мышки ? Там в функции CreateDualProgressBar() окно модальное, не знаю как сделать обработку.
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 643
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.09.14 15:41. Заголовок: Andrey пишет: как п..
Andrey пишет: цитата: | как по крестику отловить нажатие мышки ? |
| Попробуй использовать для этого событие ON INTERACTIVECLOSE
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3627
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.09.14 18:35. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Попробуй использовать для этого событие ON INTERACTIVECLOSE |
| Я и поставил его туда уже ! Не собирается исходник !!! См. пример выше !
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 414
Зарегистрирован: 17.02.12
|
|
Отправлено: 13.09.14 18:58. Заголовок: Andrey вот так соби..
Andrey вот так собирает: Скрытый текст
DEFINE WINDOW Form_2Index ; ROW 0 COL 0 ; WIDTH 455 HEIGHT 320 ; TITLE cTitle ; MODAL NOSIZE ; ON INTERACTIVECLOSE MyExitIndex() ; FONT 'Tahoma' SIZE 12
| MyExitIndex() - должен возвращать .T./.F. для ON INTERACTIVECLOSE, определи lExit - она NIL
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 644
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.09.14 19:04. Заголовок: Andrey пишет: См. п..
Andrey пишет: Попробуй изменить так: DEFINE WINDOW Form_2Index ; ROW 0 COL 0 ; WIDTH 455 HEIGHT 320 ; TITLE cTitle ; /*WINDOWTYPE*/ MODAL ; NOSIZE ; FONT 'Tahoma' SIZE 12 ; ON INTERACTIVECLOSE { || MyExitIndex() }
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3628
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.09.14 21:12. Заголовок: SergKis пишет: MyEx..
SergKis пишет: цитата: | MyExitIndex() - должен возвращать .T./.F. для ON INTERACTIVECLOSE, определи lExit - она NIL |
| Это я просто сократил уже после проб. Просмотрел. Первоначально было: lExit := MsgYesNo( cMsg, "Exit", .T. ) IF lExit
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3629
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.09.14 21:29. Заголовок: Все теперь собираетс..
Все теперь собирается, а прерывать индексацию не получается ! Вылетает программа: Error MGERROR/0 Window: Form_2Index is not defined. Program terminated. Called from MSGMINIGUIERROR(72) Called from DOMETHOD(4648) Called from CLOSEDUALPROGRESSBAR(336) Called from NTXCREATE100(191) Вот исправленный исходник - https://cloud.mail.ru/public/5a291a67d2e6%2FPROGRESSBAR_4b.7z
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 645
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.09.14 22:06. Заголовок: Andrey пишет: Вылет..
Andrey пишет: Попробуй изменить функцию так: FUNCTION CloseDualProgressBar() if iswindowdefined(Form_2Index) Form_2Index.Release endif DO MESSAGE LOOP RETURN NIL
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3630
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.09.14 22:38. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Попробуй изменить функцию так: |
| Один раз работает, Окно MsgInfo("Нажата отмена индексации !") не выводит. И на третий раз при отказе - сваливается !!! Error MGERROR/0 Control: PrgBar_1 Of Form_2Index Not defined. Program terminated. Called from MSGMINIGUIERROR(72) Called from SETPROPERTY(3662) Called from NTXDUALPROGRESS(212) Может вообще убрать этот крестик закрытия окна ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 646
Зарегистрирован: 11.02.10
|
|
Отправлено: 13.09.14 22:45. Заголовок: Andrey пишет: Может..
Andrey пишет: цитата: | Может вообще убрать этот крестик закрытия окна ? |
| Вероятно, это лучший вариант - не будет соблазна нажать Или попробуй использовать класc NOAUTORELEASE
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3632
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.09.14 23:58. Заголовок: Ну тогда окончательн..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3637
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.09.14 13:03. Заголовок: Можно ли пример Mini..
Можно ли пример MiniGUI\SAMPLES\Applications\SendMail переделать для отправки по почте mail.ru или yandex.ru ? То есть исправить для протокола SSL ? Там используется oSocket := TSMTP():New()
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 661
Зарегистрирован: 11.02.10
|
|
Отправлено: 29.09.14 14:06. Заголовок: Andrey пишет: То ес..
Andrey пишет: цитата: | То есть исправить для протокола SSL ? |
| Нет, поскольку класс TSMTP не поддерживает SSL Поддержка SSL есть только в библиотеке HBTIP в связке с библиотекой HBSSL. Также потребуются две доп.библиотеки из поставки OpenSSL (инсталлятор Win32OpenSSL_Light-1_0_0g.exe). Итого команда сборки выглядит так: цитата: | hbmk2 -lhbtip -lhbssl -llibeay32 -lssleay32 mail.prg |
| Пример отправки почты выглядит так: цитата: | #require "hbssl" #require "hbtip" REQUEST __HBEXTERN__HBSSL__ #include "simpleio.ch" PROCEDURE Main( cFrom, cPassword, cTo ) IF ! tip_SSL() ? "Error: Requires SSL support" wait RETURN ENDIF hb_default( @cFrom , "test@yandex.ru" ) hb_default( @cPassword, "parol" ) hb_default( @cTo , "mail@mail.ru" ) ? hb_SendMail( ; "smtp.yandex.ru", ; 465, ; cFrom, ; cTo, ; NIL /* CC */, ; {} /* BCC */, ; "It is a test message", ; "It is a test subject", ; NIL /* attachment */, ; cFrom, ; cPassword, ; "", ; NIL /* nPriority */, ; NIL /* lRead */, ; .T. /* lTrace */, ; .F., ; NIL /* lNoAuth */, ; NIL /* nTimeOut */, ; NIL /* cReplyTo */, ; .T. ) wait RETURN |
| Вот такие дела
|
|
|
Dima
|
| |
Пост N: 4220
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.09.14 15:05. Заголовок: gfilatov2002 пишет: ..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3638
Зарегистрирован: 12.09.06
|
|
Отправлено: 29.09.14 16:08. Заголовок: Dima пишет: И еще в..
Dima пишет: цитата: | И еще возможно придется ставить пакет Visual C++ Redistributables вот от сюда |
| Это для компиляции, или для каждого клиента (юзера) где стоит программа ?
|
|
|
Dima
|
| |
Пост N: 4221
Зарегистрирован: 17.05.05
|
|
Отправлено: 29.09.14 16:12. Заголовок: Andrey пишет: для к..
Andrey пишет: цитата: | для каждого клиента (юзера) где стоит программа ? |
| Для каждого , ну если Винда не обновляется конечно. Проверять надо.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3642
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.10.14 15:45. Заголовок: HYPERLINK для объекта IMAGE ?
Меня тут спрашивают: Просто я хочу сделать чтоб По клику на объекте IMAGE запускался браузер и открывалась указанная страгичка в Интернете . Наподобие HYPERLINK ..... Вот как я сделал у себя: DEFINE IMAGE Image_MiniGUI Row 5 Col 5 WIDTH 50 HEIGHT 50 PICTURE "MINIGUI" ACTION ShellExecute( 0, "open", "http://hmgextended.com/" ) OnMouseHover RC_CURSOR( "MINIGUI_FINGER" ) END IMAGE
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3644
Зарегистрирован: 12.09.06
|
|
Отправлено: 08.10.14 20:37. Заголовок: Andrey пишет: Ну то..
Andrey пишет: По поводу этого алгоритма. Переделал индексацию своих баз из хХарбора 1.2.3 под МиниГуи. У меня индексируется 208 баз. Время локальной индексации, на одном компе: под хХарбором 1 мин. под МиниГуи 3.5 мин. По сетке времени еще больше затрачивается: под хХарбором 3 мин. под МиниГуи 13 мин. Вот что значит красоту (авишку и бегунок) наводить... Да и еще INKEYGUI увеличивает время индексации. Надо бы как то ускорить это дело, не гоже юзеру ждать... Не знаю где то читал, что средний пользователь может ожидать отклика от программы в среднем менее 2х минут, потом начинает нервничать...
|
|
|
Dima
|
| |
Пост N: 4227
Зарегистрирован: 17.05.05
|
|
Отправлено: 08.10.14 21:30. Заголовок: Andrey пишет: Вот ч..
Andrey пишет: цитата: | Вот что значит красоту (авишку и бегунок) наводить... |
| Красота требует жертв Andrey пишет: цитата: | Да и еще INKEYGUI увеличивает время индексации. |
| Может в нем таймаут уменьшить........?
|
|
|
Haz
|
| |
Пост N: 322
Зарегистрирован: 20.02.11
|
|
Отправлено: 08.10.14 21:49. Заголовок: Andrey пишет: Надо ..
Andrey пишет: цитата: | Надо бы как то ускорить это дело, |
| Андрей, в NtxProcess незачем выводить каждое значение nComplete . Нужно только измененное т.к. экранный вывод и в консоли и в гуи операция не быстрая У себя делаю примерно так Static n := 0 nComplete := INT((RECNO()/LASTREC()) * 100) IF n <> nComplete n := nComplete cRecno := "(" + HB_NTOS(RECNO()) + "/" + HB_NTOS(LASTREC()) + ") - " Form_Index.PrgBar_1.Value := nComplete Form_Index.Label_1.Value := "Completed " + cRecno + HB_NTOS(nComplete) + "%" END ЗЫ и не пойму зачем там INKEYGUI
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3645
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.10.14 06:57. Заголовок: Haz пишет: ЗЫ и не ..
Haz пишет: цитата: | ЗЫ и не пойму зачем там INKEYGUI |
| Без него PROGRESSBAR не отображается правильно !
|
|
|
Haz
|
| |
Пост N: 323
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.10.14 07:15. Заголовок: Andrey пишет: Без н..
Andrey пишет: цитата: | Без него PROGRESSBAR не отображается правильно ! |
| всегда без него делаю вот кусок кода IF Int((i)/(nRecCount)*100) <> nGauge nGauge := Int((i)/(nRecCount)*100) SetProperty("WList", "ProgressBar_MT", "Value", nGauge ) END processMessages() правда использую DO EVENTS ( оно же processMessages() ) может в этом дело ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3646
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.10.14 07:39. Заголовок: Haz пишет: вот кусо..
Haz пишет: цитата: | вот кусок кода IF Int((i)/(nRecCount)*100) <> nGauge |
| Чему равно nGauge ?
|
|
|
PSP
|
| постоянный участник
|
Пост N: 996
Зарегистрирован: 27.01.07
|
|
Отправлено: 09.10.14 07:41. Заголовок: Haz пишет: правда и..
Haz пишет: цитата: | правда использую DO EVENTS ( оно же processMessages() ) может в этом дело ? |
| Конечно в этом
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 669
Зарегистрирован: 11.02.10
|
|
Отправлено: 09.10.14 09:48. Заголовок: Andrey пишет: У мен..
Andrey пишет: цитата: | У меня индексируется 208 баз. |
| Не пойму, зачем периндексировать такое количество баз при старте программы Для этого должен быть отдельный режим переиндексации ВСЕХ баз
|
|
|
Haz
|
| |
Пост N: 324
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.10.14 09:58. Заголовок: gfilatov2002 пишет: ..
Andrey пишет: это статик переменная для отлова изменения целого процента. На большой базе , к примеру 1 000 000 записей значение выражения INT( Recno()/RecCount()*100) будет меняться только через каждые 10 000 записей. Совершенно бесполезно 10 000 раз обновлять прогрессбар одним и тем же значением, это только лишний тормоз.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3647
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.10.14 13:02. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Не пойму, зачем периндексировать такое количество баз при старте программы Для этого должен быть отдельный режим переиндексации ВСЕХ баз |
| Да это и есть мой режим переиндексации ВСЕХ моих баз. Неправильно выразился...
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3648
Зарегистрирован: 12.09.06
|
|
Отправлено: 09.10.14 13:05. Заголовок: Haz пишет: вот кусо..
Haz пишет: цитата: | вот кусок кода IF Int((i)/(nRecCount)*100) <> nGauge nGauge := Int((i)/(nRecCount)*100) SetProperty("WList", "ProgressBar_MT", "Value", nGauge ) END processMessages() |
| Тогда может так нужно было написать ? nGauge := Int((i)/(nRecCount)*100) IF Int((i)/(nRecCount)*100) <> nGauge SetProperty("WList", "ProgressBar_MT", "Value", nGauge ) END
|
|
|
Haz
|
| |
Пост N: 325
Зарегистрирован: 20.02.11
|
|
Отправлено: 09.10.14 14:03. Заголовок: Andrey пишет: Тогда..
Andrey пишет: цитата: | Тогда может так нужно было написать ? |
| нет не нужно тогда nGauge всегда будет равно Int((i)/(nRecCount)*100) и в тело IF не войдет никогда. в моем варианте изначально nGauge = 0 и как только Int((i)/(nRecCount)*100) станет равно 1% условие IF Int((i)/(nRecCount)*100) <> nGauge выполнится, в теле IF этот 1% присвоится новым значением в nGauge и все сначала пока не тикнет 2%. Переменная nGauge - STATIC переменная и сохраняет свое значение между вызовами функции. По завершении прогрессбара nGauge останется 100 , но при повторном вызове функции 0% <> 100 и все повториться PS для простоты в примере i следует рассматривать как Reno() а nRecCount - RecCount() соответственно
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3652
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.10.14 20:59. Заголовок: Dima пишет: Может в..
Dima пишет: цитата: | Может в нем таймаут уменьшить........? |
| Убрал совсем INKEYGUI(), собираю теперь с ключом -mt ! AVI-ка не тормозит, бегунки красиво (до конца) не доходят. Зато быстро стало, аж меньше минуты.
|
|
|
Dima
|
| |
Пост N: 4228
Зарегистрирован: 17.05.05
|
|
Отправлено: 13.10.14 21:09. Заголовок: Andrey пишет: Убрал..
Andrey пишет: цитата: | Убрал совсем INKEYGUI(), собираю теперь с ключом -mt ! |
| Не вижу связи ключа -mt и тормоза что был. Думаю без него будет так же работать. Попробуй.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3653
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.10.14 21:30. Заголовок: Dima пишет: Не вижу..
Dima пишет: цитата: | Не вижу связи ключа -mt и тормоза что был. Думаю без него будет так же работать. Попробуй. |
| Работать будет, АВИшка подвисать будет.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3654
Зарегистрирован: 12.09.06
|
|
Отправлено: 13.10.14 21:37. Заголовок: Столкнулся с еще одн..
Столкнулся с еще одной непоняткой, вот картинка: На рис.1 окно создано с флагом Form_Dim.Sizable := .T. // разрешить растягивание окна Когда перехожу в режим редактирования справочника делаю Form_Dim.Sizable := .F. // NOSIZE - запретить растягивание окна ! Результат на рис.2 - изображение на окне делает "прыг" и справа и снизу появляется свободная область окна Как убрать эту свободную область ? Или можно делать как то по другому ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3663
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.10.14 20:47. Заголовок: Может можно вычислит..
Это что-то TBROWSE "скачет" .... Сделал после смены режима пересчет окна TBROWSE и все нормально стало...
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 670
Зарегистрирован: 11.02.10
|
|
Отправлено: 15.10.14 22:58. Заголовок: Andrey пишет: Может..
Andrey пишет: цитата: | Может можно вычислить ЭТОТ дурацкий отступ ? |
| Отступ по вертикали - GetBorderHeight() Отступ по горизонтали - GetBorderWidth() Пробуй
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3664
Зарегистрирован: 12.09.06
|
|
Отправлено: 15.10.14 23:05. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: Спасибо, попробую !!!
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3670
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.11.14 15:16. Заголовок: Привет всем ! Подска..
Привет всем ! Подскажите пожалуйста, как на свою форму вывести всплывающее окно ? Примерно как в примере \MiniGUI\SAMPLES\Advanced\TrayBalloon_2
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3671
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.11.14 19:03. Заголовок: Как убрать в окне ТО..
Как убрать в окне ТОЛЬКО элемент закрытия окна [x] ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 675
Зарегистрирован: 11.02.10
|
|
Отправлено: 02.11.14 19:40. Заголовок: Andrey пишет: Как у..
Andrey пишет: цитата: | Как убрать в окне ТОЛЬКО элемент закрытия окна [x] ? |
| Попробуй SetProperty( ThisWindow.Name, 'Closable', .F. )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3672
Зарегистрирован: 12.09.06
|
|
Отправлено: 02.11.14 20:25. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Попробуй SetProperty( ThisWindow.Name, 'Closable', .F. ) |
| Спасибо БОЛЬШОЕ !!! А как насчет предыдущего вопроса ? Есть такой пример или нет ?
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3675
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.11.14 18:27. Заголовок: Использую функции Ge..
Использую функции GetIni() и WriteIni() для работы с ини-файлами. Как хранить массив в ини-файле ? И как тогда его записывать/считывать ? Типа: Color_1 = {11048235,6174208} Можно конечно массив держать как строку с разделителем Color_1 = 11048235;6174208 и считывать её как aDim := HB_ATOKENS( GetIni( cSection , "Color_1" , "", cFileConfig ) ,";", .T. ) // массив Но тогда массив будет строковый ! А нужно числовой !!! И еще замечание массив должен быть ВСЕГДА однородным, а бывают случаи что нужно содержать - число, строку и вложенный массив. Как быть ? Поделитесь своим опытом.
|
|
|
Dima
|
| |
Пост N: 4240
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.11.14 19:09. Заголовок: Andrey Сохранить мо..
Andrey Сохранить можно так в INI hb_Valtoexp(massiv) а восстановить , считываем из INI этот параметр в переменную C:=&Переменная
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3676
Зарегистрирован: 12.09.06
|
|
Отправлено: 03.11.14 19:32. Заголовок: Dima пишет: Сохрани..
Dima пишет: цитата: | Сохранить можно так в INI |
| Спасибо БОЛЬШОЕ !!! Облегчил ты мне работу ! aDim := {11048235,6174208,12856,"test",{"dim"}, "test2" } WriteIni( cSection, "Color_1" , hb_Valtoexp(aDim), cFileConfig ) aDim := &( GetIni( cSection , "Color_1" , '{}', cFileConfig ) ) // массив А как записать блок кода в ини-файл ?
|
|
|
Dima
|
| |
Пост N: 4241
Зарегистрирован: 17.05.05
|
|
Отправлено: 03.11.14 22:34. Заголовок: hb_Valtoexp тут не п..
hb_Valtoexp тут не поможет так как не допилили его в плане блоков. делай так. c:={|x| x+1} а вот так пиши в ini '{|x| x+1}' , на вскидку более красивого решения пока не вижу.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3689
Зарегистрирован: 12.09.06
|
|
Отправлено: 06.11.14 19:21. Заголовок: Борьба с огромными ш..
Борьба с огромными шрифтами у себя в программе !
|
|
|
Marquis031
|
| |
Пост N: 5
Зарегистрирован: 21.10.14
|
|
Отправлено: 07.11.14 10:07. Заголовок: http://clipper.borda..
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 3691
Зарегистрирован: 12.09.06
|
|
Отправлено: 07.11.14 12:25. Заголовок: Marquis031 пишет: ..
Marquis031 пишет: То что нужно ! Спасибо !
|
|
|
Haz
|
| |
Пост N: 340
Зарегистрирован: 20.02.11
|
|
Отправлено: 10.11.14 14:03. Заголовок: Зависает TSBROWSE Н..
Зависает TSBROWSE Никак не могу понять где проблема ... Если создать TSBROWSE с количеством колонок примерно 300 в режимеCELL ( GRID ) и гонять его курсор вправо -влево до упора ( нажать стрелку на клавиатуре и держать ), то бровс перестает перерисовывать весь экран, рисует только текущую строку и начинает грузить проц под 100%. При этом задача имеет все признаки зависа . Как бороться с этой не пойму. Складывается впечатление что бровс не успевает отрабатывать нажатие клавиш и мрет Отдельные нажатия на стрелки отрабатывает отлично , виснет только если нажать и держать. Видимо нужна временная задержка , а вот куда ее сунуть не знаю. Мож есть у кого мысли, как победить PS. Вариант не давить на стрелки - отпадает, т.к. пользователям на это пофиг вот пример на всякий случай, собирается с hbsqldd.lib Скрытый текст #include "minigui.ch" #include "tsbrowse.ch" #include "common.ch" REQUEST SQLMIX Procedure Main() Public oBrw1 DEFINE WINDOW Form1 ; AT 0,0 ; WIDTH (RR_GetDesktopArea()[4] * 0.99) ; HEIGHT (RR_GetDesktopArea()[3] * 0.91) ; TITLE "TsBrowse Array Bug Test" ; MAIN ; FONT 'Tahoma' SIZE 9 Test() END WINDOW Form1.Center Form1.ACTIVATE Return *-------------------------------------------------------------- Function Test() local i := 0 local j := 0 Local aStr := {} local cAlias := "TEST" local cBrw := "BRW" local aField := {} PUBLIC &cBrw FOR j := 1 TO 300 AADD( aStr, {"F_" + NTOC(j) , "N", 14, 2 }) END rddSetDefault( "SQLMIX" ) dbCreate( cAlias, aStr,, .T., cAlias ) FOR i := 1 TO 100 (cAlias)->(DbAppend()) FOR j := 1 TO 300 (cAlias)->(FieldPut(j, i*j)) END END rddSetDefault( "SQLMIX" ) DEFINE TBROWSE &cBrw At 50, 5 ALIAS cAlias ; OF Form1 ; WIDTH (Form1.Width - 20) ; HEIGHT (Form1.Height - 70) ; COLORS { CLR_BLACK, CLR_BLUE } ; FONT "MS Sans Serif" ; SIZE 8 ; CELL; SELECTOR .T. END TBROWSE &cBrw:LoadFields( FALSE ) Return Nil
|
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 679
Зарегистрирован: 11.02.10
|
|
Отправлено: 10.11.14 14:57. Заголовок: Haz пишет: Видимо н..
Haz пишет: цитата: | Видимо нужна временная задержка , а вот куда ее сунуть не знаю. |
| Игорь, Попробуй пример ниже - возможно, поможет Скрытый текст
#include "minigui.ch" #include "tsbrowse.ch" REQUEST SQLMIX Procedure Main() DEFINE WINDOW Form1 ; AT 0,0 ; WIDTH (RR_GetDesktopArea()[4] * 0.99) ; HEIGHT (RR_GetDesktopArea()[3] * 0.91) ; TITLE "TsBrowse Array Bug Test" ; MAIN ; FONT 'Tahoma' SIZE 9 END WINDOW Test() Form1.Center Form1.ACTIVATE Return *-------------------------------------------------------------- Function Test() local i := 0 local j := 0 Local aStr := {} local cAlias := "TEST" local cBrw := "BRW" PUBLIC &cBrw FOR j := 1 TO 300 AADD( aStr, {"F_" + NTOC(j) , "N", 14, 2 } ) NEXT rddSetDefault( "SQLMIX" ) dbCreate( cAlias, aStr,, .T., cAlias ) FOR i := 1 TO 100 (cAlias)->( DbAppend() ) FOR j := 1 TO 300 (cAlias)->( FieldPut(j, i*j) ) NEXT NEXT rddSetDefault( "SQLMIX" ) DEFINE TBROWSE &cBrw ; At 20, 5 ; ALIAS cAlias ; OF Form1 ; WIDTH (Form1.Width - 20) ; HEIGHT (Form1.Height - 70) ; COLORS { CLR_BLACK, CLR_BLUE } ; FONT "MS Sans Serif" ; SIZE 8 ; CELL; SELECTOR .T. END TBROWSE &cBrw:LoadFields( FALSE ) FOR i := 1 TO LEN(&cBrw:aColumns) &cBrw:aColumns[ i ]:bGotFocus := {|| ProcessMessages()} NEXT Return Nil
|
|
|
|
Haz
|
| |
Пост N: 343
Зарегистрирован: 20.02.11
|
|
Отправлено: 10.11.14 15:34. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | Попробуй пример ниже - возможно, поможет |
| К сожалению не помогает , и по bLostFocus и по bOnChange уже пихал ( ProcessMessages(), SysRefresh(), Millisec(100 ) и пр ) где-то затык , уменя бровс помирает примерно на 60 -63 колонке при скроле в право. Помогает только одно , ДО достижения колонки 60 успеть отжать клавишу стрелка вправо и можно держать еще 60 колонок Понимаю что бессмысленно туда сюда гонять курсор, но уверен что пользователи будут кричать что без этого никак и главное - процесс зависает так что только через диспетчер задач рубится То что что-то с задержкой - понял по запущенному RemoteDesktop , когда он работает - есть у клавиатуры "инерционность" когда он запущен то кнопки отрабатывают с опозданием типа палец отжал, а оно еще двигается зато бровс не виснет
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 680
Зарегистрирован: 11.02.10
|
|
Отправлено: 10.11.14 16:10. Заголовок: Haz пишет: есть у к..
Haz пишет: цитата: | есть у клавиатуры "инерционность" |
| В таком случае попробуй уменьшить частоту повтора символа при нажатии клавиш в настройках Винды
|
|
|
Haz
|
| |
Пост N: 345
Зарегистрирован: 20.02.11
|
|
Отправлено: 10.11.14 16:28. Заголовок: gfilatov2002 пишет: ..
gfilatov2002 пишет: цитата: | В таком случае попробуй уменьшить частоту повтора символа при нажатии клавиш в настройках Винды |
| Это помогает , хоть и напрягает тормоз И НЕКРАСИВОСТЬ РЕШЕНИЯ но НЕ ВИСНЕТ. Можно как то это из программы сделать ?
|
|
|
gfilatov2002
|
| moderator
|
Пост N: 681
Зарегистрирован: 11.02.10
|
|
Отправлено: 10.11.14 17:04. Заголовок: Haz пишет: Можно ка..
Haz пишет: цитата: | Можно как то это из программы сделать ? |
| цитата: | Настройка параметров клавиатуры Формат команды: mode CON: RATE=r DELAY=d Параметры: CON: — указание команде MODE, что она должна настраивать параметры клавиатуры; R АТЕ=d — задание частоты повтора символов после того, как нажатая клавиша клавиатуры удерживается пользователем. Значения параметра d лежат в пределах от 1 до 32. Это соответствует примерно частоте повторения от 2 до 30 символов в секунду. По умолчанию частота повтора установлена равной 20 для клавиатур, совместимых с клавиатурой машин IBM PC/AT, и равной 21 для клавиатур, совместимых с клавиатурой компьютера IBM PS/2. При задании в команде MODE частоты повторения символов необходимо указывать и задержку перед их повтором; DELAY=d — указание времени задержки перед повтором символов после нажатия клавиши. Этот параметр может быть равным следующим числам: 1, 2, 3 и 4. Приведенные значения задержки примерно соответствуют 0.25, 0.50, 0.75 и 1-секундной задержке соответственно. Пример использования: mode con: delay=2 rate=3 После выполнения этой команды для клавиатуры устанавливаются следующие характеристики: - частота повтора символов — 10 символов в секунду; - задержка перед автоповтором — 0.5 с. Общие примечания к команде MODE: В команде MODE при изменении кодовых страниц дисплея не допускается использовать кодовую таблицу, назначенную драйверу DISPLAY.SYS, если он подключен к ОС в файле CONFIG.SYS. Команду MODE в различных вариантах очень удобно использовать в файле AUTOEXEC.BAT для изменения параметров работы устройств вашего компьютера при загрузке ОС. |
|
|
|
|
Dima
|
| |
Пост N: 4256
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.11.14 17:10. Заголовок: KBDSPEED(, ) --&..
KBDSPEED([<nDelay>], [<nFrequency>]) --> lAmended Не ? ;) Упс...она не реализована.
|
|
|
Haz
|
| |
Пост N: 346
Зарегистрирован: 20.02.11
|
|
Отправлено: 10.11.14 17:18. Заголовок: Dima пишет: KBDSPEE..
Dima пишет: цитата: | KBDSPEED([<nDelay>], [<nFrequency>]) |
| Дим привет. не нашел где живет эта функция , есть похожая NF_SetRate() в hbnf.lib но внутри нее только для OS_DOS по любому это заплатка , проблема кроется в классе TSBROWS который судя по всему не успевает отработать автоповтор клавиш про скроллинге по горизонтали и где-то затыкается. Мне бы это "где-то" найти , попробую с внутренним методом :KeyDown() поколдовать
|
|
|
Dima
|
| |
Пост N: 4257
Зарегистрирован: 17.05.05
|
|
Отправлено: 10.11.14 17:20. Заголовок: Haz пишет: не нашел..
Haz пишет: цитата: | не нашел где живет эта функция |
| Это HBCT Ранее юзал ее в Clipper
|
|
|
Haz
|
| |
Пост N: 347
Зарегистрирован: 20.02.11
|
|
Отправлено: 10.11.14 17:26. Заголовок: Haz пишет: mode CON..
Григорий спасибо. Работает буду иметь ввиду как вариант "Б"
|
|
|
Ответов - 301
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
All
[только новые]
|
|