Форум » GUI » Примеры из Минигуи -ошибки, вопросы..... (продолжение) » Ответить

Примеры из Минигуи -ошибки, вопросы..... (продолжение)

Andrey: Всем привет. Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ? А заодно может и исправить и добавить новые.... Очень красочный пример: \MiniGUI\SAMPLES\Advanced\AVI_Animation - не работает под Win7 (наверно AVI-шки нет в ресурсах) Предложение Григорию: Можно ли добавить еще один пример с отдельным AVI-файлом в ресурсах проекта и показом такого же бегунка ? Пример: \MiniGUI\SAMPLES\Advanced\DisplayMode - не работает под ХР и далее.... Пример: \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.

Ответов - 198, стр: 1 2 3 4 5 6 7 8 9 10 All

Andrey: Всем привет ! Пытаюсь на кнопку поставить обычный знак минус, не красиво получается. Какой фонт и какой символ можно использовать для этого ? И ещё вопрос. Можно ли в объекты Label, ButtonEx назначить фонт типа Wingdings и вводить оттуда символы ? И как проще подбирать нужный символ ? P.S. Проехали, разобрался сам ....

Andrey: Всем привет ! А как узнать высоту меню, которое вверху окна создаётся ? [pre2] DEFINE MAIN MENU .... POPUP 'Help' FONT cFont1 ITEM 'About the program' ACTION MsgInfo ("Reference!") END POPUP END MENU[/pre2]

Dima: Andrey пишет: А как узнать высоту меню, которое вверху окна создаётся ? Посмотреть сырец


SergKis: Dima пишет Посмотреть сырец Для начала ChangeLog.txt [pre2] 2018/06/06: HMG Extended Edition version 18.05. ... * New: Added possibility to set/get of the NON CLIENT attributes of windows at runtime. You can get the following properties with the functions: - GetWindowBorderSize(); - GetScrollBarSize(); - GetTitleBarWidth() and GetTitleBarHeight(); - GetMenuBarSize(). You can set these properties with the commands: SET WINDOW BORDER TO <nPixels> SET SCROLLBAR [SIZES] TO <nPixels> SET TITLEBAR [ WIDTH | HEIGHT ] TO <nPixels> SET [STANDARD] MENU [SIZES] TO <nPixels> ... [/pre2]

Andrey: SergKis пишет: Для начала ChangeLog.txt Блин, видел же этот кусочек, вставлял уже эту функцию в другую прогу.... Памяти вообще нет. Спасибо !

Andrey: А как можно проверить, что программа запущена 2 раза ? [pre2] LOCAL cAppTitle := Form_0.Title LOCAL hWnd := FindWindowEx( ,,, cAppTitle ) If hWnd # 0 // ? можно ли как то продолжить перебор окна Endif [/pre2]

Haz: Andrey пишет: можно ли как то продолжить перебор окна Дима так и называл тему Findwindowex, там простой пример перебора. И ты в этой теме отметился. Пора заводить блокнотик, память слишком часто подводит.

Andrey: Haz пишет: Дима так и называл тему Findwindowex, там простой пример перебора. Спасибо Haz ! Только там нет перебора, т.е. как продолжить поиск далее ?

Andrey: Нашёл как сделать перебор всех окон в памяти: [pre2]/////////////////////////////////////////////////////////////////////////// #define GW_HWNDFIRST 0 #define GW_HWNDLAST 1 #define GW_HWNDNEXT 2 #define GW_HWNDPREV 3 #define GW_OWNER 4 #define GW_CHILD 5 // Проверка на запуск второй/третьей копии программы // Check to run the second/third copy of the program FUNCTION OnlyOneInstance() LOCAL cTitle, cAppTitle := Form_0.Title LOCAL hWnd, aWindows := {} hWnd := GetWindow( GetForegroundWindow(), GW_HWNDFIRST ) WHILE hWnd != 0 // Loop through all the windows cTitle := GetWindowText( hWnd ) IF GetWindow( hWnd, GW_OWNER ) = 0 .AND. cTitle == cAppTitle AADD( aWindows, { hWnd, cTitle, IsWindowVisible( hWnd ) } ) ENDIF hWnd := GetWindow( hWnd, GW_HWNDNEXT ) // Get the next window ENDDO IF LEN(aWindows) == 1 // пропуск ELSEIF LEN(aWindows) == 2 ELSEIF LEN(aWindows) == 3 ENDIF RETURN Nil[/pre2]

Haz: Andrey пишет: Только там нет перебора [pre2] lMore := TRUE While lMore do events hWnd := FindWindowText( Application.Handle, { |x| "TEST123" $ Upper(x) } ) IF hWnd > 0 // находит всегда lMore := FALSE END End [/pre2] В цикле перебираем окна, как только нашли то завершает цикл. Что мешает запомнить найденный хендл и продолжить поиск следующего и так далее

Andrey: Haz пишет: Что мешает запомнить найденный хендл и продолжить поиск следующего и так далее Не могу понять как продолжить поиск дальше... Т.е. до какого цикла перебирать всё это. А вдруг окажется 3-5 программ одинаковых одновременно в памяти ? Вот мне нужно и подсчитать сколько программ в памяти - допустим "TEST123" P.S. Есть ли короче решение, чем работающее - Пост N: 6047 ?

Haz: Andrey пишет: GetWindow Да это я тупанул.) много работать вредно. Ты сам спросил, сам нашёл Я тут уроки с ребёнком делаю, математика 6 класс, вот где (_! _)

Andrey: Вот так сделал подсчёт и реализовал смену цвета в Tsbrowse:

Andrey: Haz пишет: Ты сам спросил, сам нашёл Не всегда бывает, что сам нахожу... Спасибо за помощь !

Haz: Andrey пишет: сделал подсчёт Через индекс? Ordkeyno()? В общем случае правильно, при активном фильтре опять шляпа получится

Andrey: Haz пишет: Через индекс? Ordkeyno()? В общем случае правильно, при активном фильтре опять шляпа получится Это обучающий пример для тех кто переходит на CDX и МиниГуи + работа в сети. Я сейчас товарищу помогаю с терминалки перейти, вот чтобы на пальцах не объяснять, сделал пример. Я сам не знал что удаление записи имеет такой короткий код. В примере Tsb_config для удаления куча кода используется. А этот пример и не особо много кода занимает...

SergKis: Andrey пишет этот пример и не особо много кода занимает... Добавь еще чуть чуть[pre2] #include "hmg.ch" #include "TSBrowse.ch" ... SET AUTOPEN OFF SET DIALOGBOX CENTER OF PARENT aAlias := UseOpenBase() // открыть базы [/pre2]

Andrey: SergKis пишет: SET DIALOGBOX CENTER OF PARENT А что это за команда ? Никогда не пользовался.... Вопрос возник, ставлю таймер: // включить таймер 1 раз в полминуты вызов функции DEFINE TIMER Timer_1 INTERVAL 30 * 1000 ACTION RecnoRefresh(oBr) Можно ли в STATUSBAR (допустим в 3 позицию) получить состояния таймера с обратным отсчётом ? Т.е. повесить таймер2 и выдавать каждую секунду 00:00:30, 00:00:29 и т.д.

SergKis: Andrey пишет А что это за команда ? Никогда не пользовался.... 1. Читай ChangeLog.txt 18.06 2. Собери exe примера с ней, запусти 2а раза, разведи окна по сторонам и делай (+) и (-) кнопки 3. Повтори все без этой строки и ощути разницу Т.е. повесить таймер2 и выдавать каждую секунду 00:00:30, 00:00:29 и т.д. Даже не знаю, что сказать .... Тут тебе надо к Игорю, у него математика 6-го класса, а у меня арифметика 4-го (внук)

Dima: SergKis пишет: Даже не знаю, что сказать .... К первоклашкам надоть ему



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