On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
Andrey
постоянный участник




Пост N: 1929
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.11.11 21:36. Заголовок: Примеры из Минигуи -ошибки, вопросы.....


Всем привет.
Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ?
А заодно может и исправить и добавить новые....

Очень красочный пример: \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.



Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]


gfilatov2002
moderator




Пост N: 293
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.11.11 23:16. Заголовок: Andrey пишет: Взялс..


Andrey пишет:

 цитата:
Взялся смотреть примеры из МиниГуи, так не все работают



Andrey пишет:

 цитата:
\MiniGUI\SAMPLES\Advanced\AVI_Animation - не работает под Win7


Посмотрю, что можно сделать...
Andrey пишет:

 цитата:
Пример: \MiniGUI\SAMPLES\Advanced\Tsb_filter - вылетает на ХР


Похоже, у Вас есть некорректно установленные программы
Но все равно попробую поправить...
Andrey пишет:

 цитата:
Пример: \MiniGUI\SAMPLES\BASIC\MsgEdit - не собирается


Устаревшая информация! Проверьте на текущей версии 2.0.3 - дата файла demo.prg должна быть 11.10.2011

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 1932
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.11.11 15:43. Заголовок: Пример: \MiniGUI..


Пример: \MiniGUI\SAMPLES\Advanced\Tsb_filter - в версии 2.0.3 работает !
Классный пример ! Хочу также и для хХарбора !!!


gfilatov2002 пишет:

 цитата:
Устаревшая информация! Проверьте на текущей версии 2.0.3 - дата файла demo.prg должна быть 11.10.2011


Точно в версии 2.0.3 работает ! Классный пример !


Остался \MiniGUI\SAMPLES\Advanced\AVI_Animation
И еще:
Можно ли добавить еще один пример с отдельным AVI-файлом в ресурсах проекта и показом такого же бегунка ?


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 294
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 16.11.11 16:02. Заголовок: Andrey пишет: Остал..


Andrey пишет:

 цитата:
Остался \MiniGUI\SAMPLES\Advanced\AVI_Animation


Переработал этот пример:
- avi-файл хранится в ресурсах проекта;
- элемент управления ANIMATERES определен как пользовательский компонент и теперь его можно вызвать из своей программы, подключив в нее файл animate.prg


Спасибо: 1 
Профиль
Andrey
постоянный участник




Пост N: 1934
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.11.11 13:57. Заголовок: Пример: \MiniGU..


Пример: \MiniGUI\SAMPLES\BASIC\Menu_2>demo2.exe

Выглядит так:



Как сделать чтоб само меню было с левой стороны ?


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2025
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.01.12 14:15. Заголовок: Столкнулся с непоказ..


Столкнулся с непоказом иконки на форме.
Какой максимальны размер иконки можно выводить ?

Если использую одну иконку 128х128 в ICO-файле и записываю ее в ресурсный файл, то не показывает.

Как можно выводить из ICO-файла конкретную иконку, т.е. нужно допустим 128х128 ?

Может я чего то не понимаю, объясните мне пожалуйста как происходит показ иконок из ресурсов.
Заранее спасибо.

Спасибо: 0 
Профиль
PSP
постоянный участник


Пост N: 713
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 24.01.12 14:24. Заголовок: Если не ошибаюсь, то..


Если не ошибаюсь, то набор размеров для винды такой: 256х256, 48х48, 32х32 и 16х16.
128х128 используется в Mac OS.
Винда сама выбирает размер в зависимости от того, в каком месте интерфейса рисуется иконка. Если нужного размера нет, то ничего и не нарисует.
Имхо.


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2026
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.01.12 14:28. Заголовок: PSP пишет: 128х128 ..


PSP пишет:

 цитата:
128х128 используется в Mac OS.



Т.е. если я использую одну иконку 128х128 в ICO-файле и записываю ее в ресурсный файл, то при показе
ICO на форме ничего показываться не будет ?



Спасибо: 0 
Профиль
PSP
постоянный участник


Пост N: 714
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 24.01.12 14:33. Заголовок: http://www.allok.ru/..

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2027
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.01.12 18:40. Заголовок: PSP Спасибо большое ..


PSP Спасибо большое !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2071
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.02.12 13:34. Заголовок: Вопрос по примеру sa..


Вопрос по примеру samples\Advanced\MenuEx
По хелпу читал, так и не понял.
Как задать шрифт (по умолчанию он 10) в верхнем меню программы ?





Спасибо: 0 
Профиль
Softlog86



Пост N: 31
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 26.02.12 17:07. Заголовок: Andrey По моему эти ..


Andrey По моему эти вопросы решает сама Винда ....

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2073
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.02.12 17:30. Заголовок: Softlog86 пишет: По..


Softlog86 пишет:

 цитата:
По моему эти вопросы решает сама Винда ....


А почему тогда можно увеличить и изменить шрифт в ниспадающем меню ?
Значит можно увеличить и шрифт верхнего меню программы !
Но вот только как ?

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 340
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 26.02.12 20:47. Заголовок: Andrey пишет: Значи..


Andrey пишет:

 цитата:
Значит можно увеличить и шрифт верхнего меню программы


http://windows.microsoft.com/ru-RU/windows7/Change-Windows-fonts

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2074
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.02.12 22:21. Заголовок: Судя по ссылке, прог..


Судя по ссылке, программно (из МиниГуи) никак !
Очень жалко... Спасибо за терпение....

Спасибо: 0 
Профиль
vovchok





Пост N: 1
Зарегистрирован: 28.02.12
ссылка на сообщение  Отправлено: 29.02.12 00:45. Заголовок: Andrey Кажись я таки..


Andrey Кажись я таки нашел Вас... Это Ваш пример? У меня пара ламерских вопросов (потому как клиппером 17 лет не занимался и основательно забыл его).

Скачал MiniGUI с того поста, но скомпилировать вышеупомянутый пример так и не удалось - ругается "unresolved external _hd_fun_adosettable_" и "unresolved external _hd_fun_adordd_". Добавил #include "c:\MiniGUI\Harbour\lib\adordd.lib" - прежние ошибки при компиляции сменились кучей ошибок c:\MiniGUI\Harbour\lib\adordd.lib(1) Error E0001 Illegal character '\x00' и в конце c:\MiniGUI\Harbour\lib\adordd.lib(1) Error E0030 Syntax error "syntax error at 'Ё'"

Еще одна проблема - взял пример tutor20.prg из того же MiniGUI и наткнулся на невозможность включить 866 кодировку, в которой почему-то работает Excel с файлами dbase4. Получается, что то, что в dbf занесено в Excel не читабельно в BROWSE от Harbour и наоборот. Вставлял REQUEST HB_CODEPAGE_RU866 после #include и hb_SetCodepage( "RU866" ) после main - никакой реакции: ни на что не ругается но выдает всю кирилицу в 1251. Как победить?

Спасибо: 0 
Профиль
AlexMyr



Пост N: 458
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 29.02.12 09:40. Заголовок: vovchok пишет: Скач..


vovchok пишет:

 цитата:
Скачал MiniGUI с того поста, но скомпилировать вышеупомянутый пример так и не удалось - ругается "unresolved external _hd_fun_adosettable_" и "unresolved external _hd_fun_adordd_".

Minigui тут ни причем! Чистый harbour. Попробуйте тот же пример, только без adordd и создания базы access, а просто база dbf


REQUEST HB_LANG_RUWIN 
REQUEST HB_CODEPAGE_RU1251

Function Main()
Local nI:=45, nK:=32 // - объявление переменных

hb_SetCodepage( "RU1251" ) // - переключение на русскую кодировку (доступны и др.языки, со всеми сортировками, датами и .д.)

DbCreate( "test2", { { "FIRST", "C", 10, 0 },;
{ "LAST", "C", 10, 0 },;
{ "AGE", "N", 8, 0 } } ) // - создать таблицу

USE test2 // - открыть таблицу
APPEND BLANK // - добавить запись в таблицу
test2->First := "Вася" // - запись в поле
test2->Last := "Сидоров"
test2->Age := nI
APPEND BLANK
test2->First := "Коля"
test2->Last := "Пупкин"
test2->Age := nK
GO TOP // переместить указатель на первую запись в таблице
Browse() // показать таблицу со всеми записями.....
return nil


Спасибо: 0 
Профиль
vovchok





Пост N: 2
Зарегистрирован: 28.02.12
ссылка на сообщение  Отправлено: 29.02.12 21:18. Заголовок: Попробуйте тот же пр..



 цитата:
Попробуйте тот же пример, только без adordd и создания базы access, а просто база dbf

Что-то все равно не то... В процессе компиляции не ругается, но созданный EXEшник зависает в памяти ничего не выдавая на экран (видимо Browse() глючит) и его приходится снимать принудительно. Кроме того созданная база выглядит в Excel таким образом (крякозябы)
FIRST LAST AGE
┬рё  ╤шфюЁют 45
╩юы  ╧єяъшэ 32
А все потому, что кирилица в DBF в понимании мелкософтов должна быть в кодировке 866, а не 1251. Но включить 866 не получается - как это сделать?

 цитата:
Minigui тут ни причем! Чистый harbour

MiniGUI - это виндовый оконный интерфейс, а чистый Harbour работает лишь с системной консолью? Что же все-таки должна выдавать функция Browse()?

Спасибо: 0 
Профиль
AlexMyr



Пост N: 461
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 29.02.12 21:35. Заголовок: Вот рабочий пример, ..


Вот рабочий пример, проверил

func main()
Local nI:=45, nK:=32 // - объявление переменных
REQUEST HB_CODEPAGE_RU1251
REQUEST HB_CODEPAGE_RU866
HB_CDPSELECT( "RU866" ) // - переключение на русскую кодировку (доступны и др.языки, со всеми сортировками, датами и .д.)

DbCreate( "test2", { { "FIRST", "C", 10, 0 },{ "LAST", "C", 10, 0 },{ "AGE", "N", 8, 0 } } ) // - создать таблицу

USE test2 // - открыть таблицу
APPEND BLANK // - добавить запись в таблицу
test2->First := "Вася" // - запись в поле
test2->Last := "Сидоров"
test2->Age := nI
APPEND BLANK
test2->First := "Коля"
test2->Last := "Пупкин"
test2->Age := nK
GO TOP // переместить указатель на первую запись в таблице
Browse() // показать таблицу со всеми записями.....
return nil


вот browse
╒═════════════════════════════════════════════════════════════════════ 
│ Record 1/2
│ FIRST LAST AGE
╞══════════════════════════════════ ══════════ ═══════════════════════
│ Вася Сидоров 45
│ Коля Пупкин 32





Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2078
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.02.12 22:09. Заголовок: vovchok пишет: Скач..


vovchok пишет:

 цитата:
Скачал MiniGUI с того поста


Какая версия ?

vovchok пишет:

 цитата:
MiniGUI - это виндовый оконный интерфейс, а чистый Harbour работает лишь с системной консолью?



Harbour работает везде - и в МиниГуи и Qt и в терминалке. Это язык программирования. Более подробно читайте: http://ru.wikipedia.org/wiki/Harbour

Почитайте также как установить:
http://clipper.borda.ru/?1-4-0-00000515-000-0-0-1267900828

А потом напишите - какую задачу вы хотите сделать: терминалку под Win32 или полноценное приложение Win32 на МиниГуи ?

Спасибо: 0 
Профиль
AlexMyr



Пост N: 463
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 29.02.12 23:02. Заголовок: Andrey пишет: Harbo..


Andrey пишет:

 цитата:
Harbour работает везде - и в МиниГуи

это как?

Спасибо: 0 
Профиль
vovchok





Пост N: 3
Зарегистрирован: 28.02.12
ссылка на сообщение  Отправлено: 01.03.12 00:06. Заголовок: Чувствую себя в танк..


Чувствую себя в танке в башне и в шлемофоне...
AlexMyr пишет:
 цитата:
Вот рабочий пример, проверил

Эффект все тот же - Browse() не работает и вешает программу с блокировкой базы. Пробовал запускать в системной консоли - результат не меняется - на экран вообще ничего не выводится, а в диспетчере задач висит процесс с именем проги и блокирует базу. Когда Browse() комментирую - создает файл без зависания, но все с теми же крякозябами. Видимо Harbour у Вас не такой, как у меня.
Andrey пишет:
 цитата:
Какая версия ?

не знаю где это посмотреть - файл hmg-1.7-79-setup.zip, BCC55
Andrey А почему с базами Access у меня в Вашем примере не получается ничего?

Спасибо: 0 
Профиль
AlexMyr



Пост N: 464
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 01.03.12 00:25. Заголовок: vovchok пишет: не з..


vovchok пишет:

 цитата:
не знаю где это посмотреть - файл hmg-1.7-79-setup.zip, BCC55

Ищите папку harbour/bin потом команда
harbour -build
результат сюда.

Начните лучше с Harbour http://sourceforge.net/projects/harbour-project/files/binaries-windows/3.0.0/harbour-3.0.0-win.exe/download

Спасибо: 0 
Профиль
vovchok





Пост N: 4
Зарегистрирован: 28.02.12
ссылка на сообщение  Отправлено: 01.03.12 00:35. Заголовок: AlexMyr пишет: Ищите..


AlexMyr пишет:
 цитата:
Ищите папку harbour/bin потом команда

c:\MiniGUI\Harbour\bin>harbour -build
Harbour 2.0.0 (Rev. 13372)
Copyright (c) 1999-2010, http://www.harbour-project.org/
Harbour MiniGUI Extended Distribution
AlexMyr пишет:
 цитата:
Начните лучше с Harbour

Это я тоже разворачивал и harbour-nightly-win (3.1), но хотел выполнить пример Андрея, а оно не дается мне никак - вот и взял его же дистрибутив из поста с примером. К тому же в том пакете MiniGUI есть пакетники для компиляции, а в чистом Harbour я их не обнаружил... Хотя может плохо искал...
Кстати примеры, которые в том MiniGIU компилируются и выполняются без проблем, довольно таки поучительно, если что-то писать под винды.

Спасибо: 0 
Профиль
AlexMyr



Пост N: 465
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 01.03.12 00:43. Заголовок: В harbour есть утили..


В harbour есть утилита hbmk2, ее и используете для сборки prg в exe:

Допустим мой пример, имя файла test1.prg, выполняете комманду: hbmk2 test1.prg, должно получиться test1.exe, никаких батников не нужно.

Спасибо: 0 
Профиль
vovchok





Пост N: 5
Зарегистрирован: 28.02.12
ссылка на сообщение  Отправлено: 01.03.12 01:23. Заголовок: AlexMyr пишет: выпол..


AlexMyr пишет:
 цитата:
выполняете комманду: hbmk2 test1.prg, должно получиться test1.exe

Выполнил на HB31 - заработало в системной консоли, но крякозябы все равно и в окне программы и в Excel.
REQUEST HB_CODEPAGE_RU866
HB_CDPSELECT( "RU866" )
не работает

Спасибо: 0 
Профиль
AlexMyr



Пост N: 466
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 01.03.12 01:36. Заголовок: Я давал пример в дос..


Я давал пример в дос кодировке, потому у меня и выбирается дос кодировка HB_CDPSELECT( "RU866" ), если Вы скопировали текст с форума и вставили его в редактор в вин кодировке, то нужно и выбирать вин кодировку HB_CDPSELECT( "RU1251" )

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2082
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.03.12 09:22. Заголовок: AlexMyr пишет: Andr..


AlexMyr пишет:

 цитата:
Andrey пишет:
цитата:
Harbour работает везде - и в МиниГуи

это как?



Я имел ввиду, что МиниГуи (HMG EE) это библиотека, с которой можно работать на языках: Харбор и хХарбор.


Петр пишет:

 цитата:
Дать точное описание HMG EE трудно и на русском.
Для меня это набор который состоит из компилятора Harbour, ряда библиотек, конечно же главной из которых является одноименная HMG EE GUI библиотека для платформы Windows базирующаяся на WinAPI, утилит и огромного числа примеров использования как самой библиотеки, так и WinAPI. Ну и IDE.


http://clipper.borda.ru/?1-1-160-00000188-000-0-0-1248515674



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2084
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.03.12 10:15. Заголовок: Да. vovchok пишет: ..


Да. vovchok пишет:

 цитата:
Andrey А почему с базами Access у меня в Вашем примере не получается ничего?



Посмотрите примеры в папках:
\MiniGUI\SAMPLES\BASIC\Adordd
...............
\MiniGUI\SAMPLES\BASIC\ADORDD_4

Спасибо: 0 
Профиль
vovchok





Пост N: 6
Зарегистрирован: 28.02.12
ссылка на сообщение  Отправлено: 01.03.12 11:27. Заголовок: Andrey пишет: Посмот..


Andrey пишет:
 цитата:
Посмотрите примеры в папках: \MiniGUI\SAMPLES\BASIC\Adordd

Я имею ввиду конкретный Ваш пример - почему он не работает? Или Вы его там привели просто как абстрактный образец исходника на Harbour не предполагая, что кто-то его надумает компилировать и он должен быть рабочим?

AlexMyr пишет:
 цитата:
если Вы скопировали текст с форума и вставили его в редактор в вин кодировке, то нужно и выбирать вин кодировку

т.е. выбор кодировки в программе не предполагает введение содержимого в этой кодировке, а только устанавливает порядок сортировки? Что нужно сделать, чтобы текст кирилицы, вводимой в поле БД DBF сохранялся в нем в DOS кодировке, как это происходит, если ту же базу заполнять в Excel? Меня интересует вот этот пример из MiniGUI: http://zalil.ru/32797519 - попробуйте заполнить имеющуюся в нем базу из скомпилированной программы и из Excel. Как добиться, чтобы прога вводила так же как Excel?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2085
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.03.12 12:30. Заголовок: vovchok пишет: Или ..


vovchok пишет:

 цитата:
Или Вы его там привели просто как абстрактный образец исходника на Harbour не предполагая, что кто-то его надумает компилировать и он должен быть рабочим?


Именно так !


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2086
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.03.12 13:35. Заголовок: vovchok пишет: т.е...


vovchok пишет:

 цитата:
т.е. выбор кодировки в программе не предполагает введение содержимого в этой кодировке, а только устанавливает порядок сортировки?


Да ! Если вы используете MINIGUI ! Для терминалки - нет !

vovchok пишет:

 цитата:
Что нужно сделать, чтобы текст кирилицы, вводимой в поле БД DBF сохранялся в нем в DOS кодировке, как это происходит, если ту же базу заполнять в Excel? Меня интересует вот этот пример из MiniGUI: http://zalil.ru/32797519 - попробуйте заполнить имеющуюся в нем базу из скомпилированной программы и из Excel. Как добиться, чтобы прога вводила так же как Excel?



Если вы начали работать с МиниГуи, то необходимо почитать документацию \MiniGUI\Doc
Или посмотрите примеры по базам (:\MiniGUI\SAMPLES\Applications\DBFview)
Я в МиниГуи не работал сам еще с базами. Пока еще не перешел на МиниГуи. Так что ваш вопрос адресуйте gfilatov2002 !
Могу помочь только с ТЕРМИНАЛКАМИ.

EXCEL вводит кодировку RU1251, зачем использовать DOS-кодировку ?

Спасибо: 0 
Профиль
vovchok





Пост N: 7
Зарегистрирован: 28.02.12
ссылка на сообщение  Отправлено: 01.03.12 17:11. Заголовок: Andrey пишет: EXCEL ..


Andrey пишет:
 цитата:
EXCEL вводит кодировку RU1251, зачем использовать DOS-кодировку ?

Простите мне мою дерзость, т.к. мне приходится Вам перечить, но у меня, если я создаю файл в Excel, ввожу в нем кирилицу и сохраняю его как dbf - вся кирилица получается в dos кодировке и через проги, написанные с применением MiniGUI, не просматривается (office2003). Собственно поэтому я и спросил - что надо указать в проге на MiniGIU, чтобы кирилица в графических окнах была в кодировке 866, и то, что набрано в Excel было читабельно?

Спасибо: 0 
Профиль
gustow
постоянный участник




Пост N: 272
Зарегистрирован: 06.02.07
ссылка на сообщение  Отправлено: 01.03.12 19:16. Заголовок: vovchok , может быть..


vovchok , может быть, хоть в чем-то "для старта с ноля" поможет начатый да заброшенный мной "курс мол.бойца по МиниГУИ"? хоть немного вопросов снимет? оно тут: http://gustow.narod.ru/harbour/MiniGUI_help/welcome.htm . Заодно и отрецензировали бы имеющееся там - как уж явно самый "молодой боец" (в смысле - с МиниГУИ). :)


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2088
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.03.12 19:17. Заголовок: vovchok пишет: Прос..


vovchok пишет:

 цитата:
Простите мне мою дерзость, т.к. мне приходится Вам перечить


Да не заморачивайся, причем тут дерзость и перечить... Я просто спросил.

vovchok пишет:

 цитата:
Собственно поэтому я и спросил - что надо указать в проге на MiniGIU, чтобы кирилица в графических окнах была в кодировке 866, и то, что набрано в Excel было читабельно?



Подправил ваш исходник. Да все равно не показывает DOS-кодировку.
Хотя \MiniGUI\SAMPLES\Applications\DBFview показывает правильно. Там наверно что-то в BROWSE передавать надо....
Увы, моих знаний не хватает.
Так что ваш вопрос адресуйте gfilatov2002 !

Спасибо: 0 
Профиль
vovchok





Пост N: 8
Зарегистрирован: 28.02.12
ссылка на сообщение  Отправлено: 01.03.12 23:42. Заголовок: AlexMyr пишет:В harb..


AlexMyr пишет:
 цитата:
В harbour есть утилита hbmk2, ее и используете для сборки prg в exe:

Все было хорошо, пока в программе не было ошибок... (компилировал готовые примеры, но когда начал ваять свое...) Теперь оно быстро моргает окном на экране и ничего не делает - где посмотреть почему? (exeшник не создается, ругательств не видно - просто запускается и тут же закрывается...)

Спасибо: 0 
Профиль
AlexMyr



Пост N: 469
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 01.03.12 23:47. Заголовок: vovchok пишет: Все ..


vovchok пишет:

 цитата:
Все было хорошо, пока в программе не было ошибок...


hbmk2 test1.prg -trace >err.log 2>&1

Спасибо: 0 
Профиль
Vlad04
постоянный участник


Пост N: 300
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 02.03.12 13:52. Заголовок: В MiniGU я использу..


В MiniGU я использую IDE. Там ведется лог ошибок. Все собирается. А с DOS кодировкой не получилось.Но работать с Excel можно как угодно. Используй для ввода данных в дбф специальные программы - здесь ПАША выкладывал свою, много есть чужих , поддерживающих обе кодировки( я применяю еще DBF dESKTOP)

Спасибо: 0 
Профиль
vovchok





Пост N: 9
Зарегистрирован: 28.02.12
ссылка на сообщение  Отправлено: 03.03.12 10:46. Заголовок: Сори за оффтоп - мал..


Сори за оффтоп - маленький вопрос не по теме, но не хотел начинать новую.

Нужен генератор случайных чисел - в клиппере такого не встречал, есть это в Harbour, или нужно использовать С?

ps:Вопрос снимаю - нашел: round(HB_RANDOM(),10) возвращает случайное число от 0 до 1 с точностью 10 знаков.

Спасибо: 0 
Профиль
AlexMyr



Пост N: 471
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 03.03.12 14:14. Заголовок: vovchok пишет: Нуже..


vovchok пишет:

 цитата:
Нужен генератор случайных чисел - в клиппере такого не встречал, есть это в Harbour

в hbmk2 используется hb_rand32()

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2092
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.03.12 16:21. Заголовок: Vlad04 пишет: А с D..


Vlad04 пишет:

 цитата:
А с DOS кодировкой не получилось.


Что тогда получается НЕЛЬЗЯ использовать
@ 5,5 BROWSE Browse_1 ;
WIDTH 930 ;
HEIGHT 423 ;
HEADERS { 'Code' , 'First Name' , 'Last Name', 'Birth Date', 'Married' , 'Biography' } ;
WIDTHS { 50 , 120 , 120 , 70 , 60 , 490 } ;
WORKAREA Test ;
FIELDS { 'Test->Code' , 'Test->First' , 'Test->Last' , 'Test->Birth' , 'Test->Married' , 'Test->Bio' } ;
DELETE ;
LOCK ;
EDIT INPLACE

для DOS-кодировки ?

Кто может помочь в решении этой проблемы ?
Пример здесь. http://files.mail.ru/X77OOJ

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 344
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 03.03.12 17:25. Заголовок: Andrey пишет: Кто м..


Andrey пишет:

 цитата:
Кто может помочь в решении этой проблемы ?


Скорая помощь прибыла

См. рабочий пример ниже
Скрытый текст


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2093
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.03.12 22:38. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Скорая помощь прибыла



Ну что мы без тебя делали .... Спасибо большое !
2 правильные строчки и все работает.... Чувствуется рука мастера....

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 5
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.03.12 08:41. Заголовок: Пример: \MiniGUI..


Пример: \MiniGUI\SAMPLES\BASIC\Mdi_2>demo.exe
В browse по Up/Dn курсор двигается через строку (как будто dbSkip(2)). Это только у меня или это err ?
HB 2.0, MiniGUI 2.07


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2111
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.03.12 22:44. Заголовок: SergKis пишет: HB 2..


SergKis пишет:

 цитата:
HB 2.0, MiniGUI 2.07



Если установлен MiniGUI 2.0.7, то там используется Харбор - Version: 3.1.0dev !
У меня тоже через строку курсор двигается.
И в добавок на большой базе (200 полей и 242 Mb) вешается программа.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 6
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.03.12 23:20. Заголовок: Andrey пишет: Если у..


Andrey пишет:

 цитата:
Если установлен MiniGUI 2.0.7, то там используется Харбор - Version: 3.1.0dev !


У нас VC9. Все, что надо на данный момент (опробовано примерами) работает без проблем. В MiniGUI MDI немного похоже сыроват (неточность с проскоком строки в browse мой товарищ уже нашел. Он основной c++ в нашей команде).
Но полезли еще фишки ... . MDI child окно три browse в работе проблемы:
1. VK_TAB реагирует, но НЕ переходит в фокус след. окна (в обычном режиме переключает) и т.д.
2. ON KEY ESCAPE на окно реагирует нормально, но при включении EDIT [INPLACE] (внутри browse идет переназначение ESC на контрол ввода), то при возврате в окно теряется первоначальное назначение (нет сохранения/восстановления ON KEY в edit).



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2113
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.03.12 23:26. Заголовок: SergKis пишет: Но п..


SergKis пишет:

 цитата:
Но полезли еще фишки ...



Это только Григорий вам поможет, я очень слаб пока в МиниГуи....

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 7
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.03.12 23:34. Заголовок: Andrey пишет: Это то..


Andrey пишет:

 цитата:
Это только Григорий вам поможет


Если Григорий учтет это в след. версия будет отлично.
А т.к. нам надо срочно и быстро будем пилить что-то под себя.
Спасибо, что посмотрел MDI, а то сначала думали, что сами занесли что-то при адаптации к vc.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2145
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 04.04.12 13:18. Заголовок: Непонятка по иконкам..


Непонятка по иконкам в диалоговых окнах....


Можно задать одну иконку на все диалоговые окна ?
И где можно посмотреть пример ?

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 363
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 05.04.12 09:43. Заголовок: Andrey пишет: Почем..


Andrey пишет:

 цитата:
Почему нет иконки ?


Не верно, иконка на рисунке есть - просто она стандартная

Andrey пишет:

 цитата:
где можно посмотреть пример ?


Рабочий пример для задания своей иконки в диалоговых окнах есть в папке samples\Basic\MsgBox (см. пункт меню 'Extend HMG MsgBox')

Спасибо: 1 
Профиль
Andrey
постоянный участник




Пост N: 2146
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.04.12 11:26. Заголовок: Спасибо. :sm36: А..


Спасибо.

А можно ли (в ХР) программно поменять цвет окна на другой для некоторых окон ?
Или для всей программы ?



Я знаю что в темах Windows изменить цвета можно.
Я просто хочу для своей программы цвет изменить !

Спасибо: 0 
Профиль
AndreyZh





Пост N: 221
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 05.04.12 14:47. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Рабочий пример для задания своей иконки в диалоговых окнах есть в папке samples\Basic\MsgBox (см. пункт меню 'Extend HMG MsgBox')


Весело... всё таки:

1. Иконка ICON "name.ico" при размещении не после title даёт ошибку компиляции
2. В примерах расширение для файла иконок не обязательно, но если менять другие примеры... иконки (имя) без расширения не воспринимается

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2165
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.04.12 23:17. Заголовок: Пытаюсь сделать прог..


Пытаюсь сделать программу на несколько разрешений экрана:
1) 800 на 600
2) 1024 на 768
3) и выше

Как НУЖНО (правильно) сделать программу на разное разрешение экрана ???

Приведите примерный код пожалуйста !


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2168
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.04.12 12:15. Заголовок: Какая функция в Мини..


Какая функция в МиниГуи возвращает разрешение экрана и размеры рабочего стола ?

Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 1090
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 16.04.12 12:52. Заголовок: Просмотр примеров и ..


Просмотр среди примеров, поставляемых с библиотекой и поиск по форуме, ключевое слово desktop, тема "Размеры экрана" - помогут вам

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 17
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.04.12 13:13. Заголовок: Для Andrey. Вот прим..


Для Andrey. Вот примерная выборка функций:
Скрытый текст



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2169
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.04.12 13:44. Заголовок: SergKis пишет: Вот ..


SergKis пишет:

 цитата:
Вот примерная выборка функций



Спасибо большое !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2170
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.04.12 13:53. Заголовок: А как насчет этого в..


А как насчет этого вопроса:

Пытаюсь сделать программу на несколько разрешений экрана:
1) 800 на 600
2) 1024 на 768
3) и выше

Как НУЖНО (правильно) сделать программу на разное разрешение экрана ???

Приведите примерный код пожалуйста !


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 368
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.04.12 10:00. Заголовок: Andrey пишет: Приве..


Andrey пишет:

 цитата:
Приведите примерный код


Внимательно посмотри изменения, внесенные в стандарный пример Алексеем Густовым (функция Def_Pubs() и использование в коде коэффициентов gu_hk и gu_vk):
/* 
* 2009-Apr-01 (it's not joke! it's today!)
* modified for "windows/controls auto-zoom" by
* Alex Gustow < gustow33 @ mail.ru >
* < http://gustow.narod.ru/harbour/harbour.htm >
*
* + little code modifications (by Gustow too)
*
* code reindenting made with "Indent.exe" from MiniGUI\UTILS\Code_ReIndent
*/

/*
* MINIGUI - Harbour Win32 GUI library Demo
*
* Copyright 2002 Roberto Lopez <harbourminigui@gmail.com>
* http://harbourminigui.googlepages.com/
*
* Update 2002 Interativo Networks <xharbour@terra.com.br>
* Daniel Crocciari
* http://www.ihpz.net
*
*
* Modified by Roberto Lopez <harbourminigui@gmail.com> 2007.12.02
*
*/

* Value property selects a record by its number (RecNo())
* Value property returns selected record number (recNo())
* Browse control does not change the active work area
* Browse control does not change the record pointer in any area
* (nor change selection when it changes)
* You can programatically refresh it using refresh method.
* Variables called <MemVar>.<WorkAreaName>.<FieldName> are created for
* validation in browse editing window. You can use it in VALID array.
* Using APPEND clause you can add records to table associated with WORKAREA
* clause. The hotkey to add records is Alt+A.
* Append Clause Can't Be Used With Fields Not Belonging To Browse WorkArea
* Using DELETE clause allows to mark selected record for deletion pressing <Del> key
* The leftmost column in a browse control must be left aligned.

#include "minigui.ch"

//-------------------------
Function Main

set century ON
set date BRITISH
set delete ON

Def_Pubs() // PUBLICs definition & zoom calculating

define window Form_1 ;
at 0,0 ;
width 550 height 535 + if(IsXPThemeActive(), 8, 0) ;
title 'MiniGUI Browse Demo' ;
MAIN nomaximize ;
on init { || OpenTables(), Fun_1() } ; // edited by Gustow, was "OpenTables()"
on release CloseTables()

define main menu

popup 'File'
item 'New' action if( Form_1.ButtonNew.Enabled == .t., ButtonNewClick(), Nil )
item 'Delete' action if( Form_1.ButtonDelete.Enabled == .t., ButtonDeleteClick(), Nil )
separator
item 'Exit' action Form_1.Release
end popup

popup 'Help'
item 'About' action MsgInfo ( "MINIGUI - Browse Demo" + CRLF + ;
"Copyright 2002 Roberto Lopez <harbourminigui@gmail.com>" + CRLF + ;
"http://harbourminigui.googlepages.com/" + CRLF + CRLF + ;
"Update 2002 Interativo Networks <xharbour@terra.com.br>" + CRLF + ;
"Daniel Crocciari" + CRLF + ;
"http://www.ihpz.net", "About" )
end popup

end menu

end window

// center window Form_1 Gustow: move this to Fun_1()
activate window Form_1

Return Nil

//-------------------------
Function Def_Pubs()
* definitions of PUBLICs (Gustow)

public gu_vk := 1, gu_hk := 1 // horizontal & vertical zoom

public gu_th := GetTitleHeight(), ;
gu_bw := GetBorderHeight()

gu_hk := (0.8 * GetDesktopWidth() ) / (0.8 * 800)
gu_vk := (0.8 * GetDesktopHeight()) / (0.8 * 600)

/*
MsgInfo( "Your screen resolution is: " + ;
ltrim(str( GetDesktopWidth() )) + " * " + ;
ltrim(str( GetDesktopHeight() )) + CRLF + CRLF + ;
"Design-time screen resolution is: 800 * 600" + CRLF + CRLF + ;
"Hor.zoom: gu_hk =" + str(gu_hk, 10, 2) + CRLF + ;
"Ver.zoom: gu_vk =" + str(gu_vk, 10, 2) )
*/

Return Nil

//-------------------------
Function Fun_1()
* controls definitions (with autozoom)

Public gu_fs := 9 * gu_hk // for fontsize

Form_1.Width := int( Form_1.Width * gu_hk )
Form_1.Height := int( Form_1.Height * gu_vk )

Form_1.Center // move here from Main()

@ 05 * gu_vk, 10 * gu_hk browse Browse_1 ;
of Form_1 ;
width 515 * gu_hk ;
height 180 * gu_vk ;
headers { 'Married', 'Code', 'First Name', 'Last Name', 'Birth Date' } ;
widths { 40*gu_hk, 50*gu_hk, 150*gu_hk, 150*gu_hk, 90*gu_hk } ;
workarea Teste ;
fields { 'Teste->Married', 'Teste->Code' , 'Teste->First' , 'Teste->Last' , 'Teste->Birth'} ;
value 1 ;
on change { || BrowseChange() } ;
on dblclick { || BrowseEdit() } ;
nolines;
justify { BROWSE_JTFY_LEFT, BROWSE_JTFY_RIGHT, BROWSE_JTFY_LEFT, BROWSE_JTFY_LEFT, BROWSE_JTFY_CENTER };
image {"br_no","br_ok"} ;
font "Arial" size 9 * gu_hk // line added by Gustow

@ 200 * gu_vk, 010 * gu_hk label LabelCode of Form_1 ; // don't forget "OF"!
value "Code" ;
width 95 * gu_hk height 25 * gu_vk ;
font "Arial" size 9 * gu_hk

@ 200 * gu_vk, 105 * gu_hk textbox TextBoxCode of Form_1 ;
value "" ;
width 100 * gu_hk height 25 * gu_vk ;
font "Arial" size 9 * gu_hk

@ 230 * gu_vk, 010 * gu_hk label LabelFirst of Form_1 ;
value "First Name" ;
width 95 * gu_hk height 25 * gu_vk ;
font "Arial" size 9 * gu_hk

@ 230 * gu_vk, 105 * gu_hk textbox TextBoxFirst of Form_1 ;
value "" ;
width 300 * gu_hk height 25 * gu_vk ;
font "Arial" size 9 * gu_hk

@ 260 * gu_vk, 010 * gu_hk label LabelLast of Form_1 ;
value "Last Name" ;
width 95 * gu_hk height 25 * gu_vk ;
font "Arial" size 9 * gu_hk

@ 260 * gu_vk, 105 * gu_hk textbox TextBoxLast of Form_1 ;
value "" ;
width 300 * gu_hk height 25 * gu_vk ;
font "Arial" size 9 * gu_hk

@ 290 * gu_vk, 012 * gu_hk label LabelBirthdate of Form_1 ;
value "Birth Date" ;
width 85 * gu_hk height 25 * gu_vk ; // was 95, 25 (shadowed "DatePickerBirth")
font "Arial" size 9 * gu_hk

@ 295 * gu_vk, 105 * gu_hk ; // was 290, 105
datepicker DatePickerBirth of Form_1 ;
width 100 * gu_hk ; // what about auto-zoom for HEIGHT?
value date() ;
font "Arial" size 9 * gu_hk // line added by Gustow

@ 320 * gu_vk, 012 * gu_hk label LabelMarried of Form_1 ;
value "Married" ;
width 95 * gu_hk height 25 * gu_vk ;
font "Arial" size 9 * gu_hk

@ 320 * gu_vk, 105 * gu_hk checkbox CheckBoxMarried of Form_1 ;
caption "Yes Married" ;
width 100 * gu_hk height 25 * gu_vk ;
value .T. ;
font "Arial" size 9 * gu_hk

@ 350 * gu_vk, 012 * gu_hk label LabelBio of Form_1 ;
value "Bio" ;
width 95 * gu_hk height 25 * gu_vk ;
font "Arial" size 9 * gu_hk

@ 350 * gu_vk, 105 * gu_hk editbox EditBoxBio of Form_1 ;
width 300 * gu_hk height 130 * gu_vk ;
value "" ;
nohscroll ;
font "Arial" size 9 * gu_hk

@ 325 * gu_vk, 425 * gu_hk image ImagePhoto of Form_1 ;
picture "0.bmp" ;
width 100 height 125 // no auto-zoom

@ 455 * gu_vk, 425 * gu_hk textbox TextBoxPhoto of Form_1 ;
value "" ;
width 100 * gu_hk height 25 * gu_vk ;
font "Arial" size 9 * gu_hk

@ 200 * gu_vk, 425 * gu_hk button ButtonNew of Form_1 ;
caption "&New" ;
action ButtonNewClick() ;
width 100 * gu_hk height 25 * gu_vk ;
font "Arial" size 9 * gu_hk

@ 230 * gu_vk, 425 * gu_hk button ButtonSave of Form_1 ;
caption "&Save" ;
action ButtonSaveClick() ;
width 100 * gu_hk height 25 * gu_vk ;
font "Arial" size 9 * gu_hk

@ 260 * gu_vk, 425 * gu_hk button ButtonCancel of Form_1 ;
caption "&Cancel" ;
action ButtonCancelClick() ;
width 100 * gu_hk height 25 * gu_vk ;
font "Arial" size 9 * gu_hk

@ 290 * gu_vk, 425 * gu_hk button ButtonDelete of Form_1 ;
caption "&Delete" ;
action ButtonDeleteClick() ;
width 100 * gu_hk height 25 * gu_vk ;
font "Arial" size 9 * gu_hk

on key ESCAPE of Form_1 ;
action if( Form_1.ButtonCancel.Enabled == .T., ButtonCancelClick(), Nil )

Form_1.TextBoxCode.Enabled := .F.
Form_1.TextBoxFirst.Enabled := .F.
Form_1.TextBoxLast.Enabled := .F.
Form_1.DatePickerBirth.Enabled := .F.
Form_1.CheckBoxMarried.Enabled := .F.
Form_1.TextBoxPhoto.Enabled := .F.
Form_1.EditBoxBio.Enabled := .F.
Form_1.ButtonSave.Enabled := .F.
Form_1.ButtonCancel.Enabled := .F.

Form_1.Browse_1.SetFocus

Return Nil

//-------------------------
Function OpenTables()

use Test alias Teste new

Return Nil

//-------------------------
Function CloseTables()

close all

Return Nil

//-------------------------
Function BrowseEdit()

BrowseChange()

Form_1.TextBoxFirst.Enabled := .T.
Form_1.TextBoxLast.Enabled := .T.
Form_1.DatePickerBirth.Enabled := .T.
Form_1.CheckBoxMarried.Enabled := .T.
Form_1.TextBoxPhoto.Enabled := .T.
Form_1.EditBoxBio.Enabled := .T.
Form_1.ButtonNew.Enabled := .F.
Form_1.ButtonSave.Enabled := .T.
Form_1.ButtonCancel.Enabled := .T.
Form_1.ButtonDelete.Enabled := .F.
// Form_1.Browse_1.Enabled := .F.

Form_1.TextBoxFirst.SetFocus

Return Nil

//-------------------------
Function ButtonNewClick()

Form_1.TextBoxCode.Value := ""
Form_1.TextBoxFirst.Value := ""
Form_1.TextBoxLast.Value := ""
Form_1.DatePickerBirth.Value := date()
Form_1.TextBoxPhoto.Value := "0.bmp"
Form_1.CheckBoxMarried.Value := .T.
Form_1.EditBoxBio.Value := ""

Form_1.ImagePhoto.Picture := "0.bmp"

Form_1.TextBoxFirst.Enabled := .T.
Form_1.TextBoxLast.Enabled := .T.
Form_1.DatePickerBirth.Enabled := .T.
Form_1.CheckBoxMarried.Enabled := .T.
Form_1.TextBoxPhoto.Enabled := .T.
Form_1.EditBoxBio.Enabled := .T.
Form_1.ButtonNew.Enabled := .F.
Form_1.ButtonSave.Enabled := .T.
Form_1.ButtonCancel.Enabled := .T.
Form_1.ButtonDelete.Enabled := .F.
Form_1.Browse_1.Enabled := .F.

Form_1.TextBoxFirst.SetFocus

Return Nil

//-------------------------
Function ButtonDeleteClick()

Local vRecno := Form_1.Browse_1.Value

goto vRecno

If MsgYesNo( ;
"Delete This Record?" + CRLF + CRLF + ;
"Code: " + alltrim( str( Teste->Code ) ) + CRLF + ;
"First Name: " + alltrim( Teste->First ) + CRLF + ;
"Last Name: " + alltrim( Teste->Last ), "Confirmation" )

delete
skip -1
Form_1.Browse_1.Value := Teste->(Recno())
Form_1.Browse_1.Refresh
Form_1.Browse_1.SetFocus

endif

Return Nil

//-------------------------
Function ButtonSaveClick()

Local vTextBoxCode := val( Form_1.TextBoxCode.Value ), ;
vTextBoxFirst := Form_1.TextBoxFirst.Value, ;
vTextBoxLast := Form_1.TextBoxLast.Value, ;
vDatePickerBirth := Form_1.DatePickerBirth.Value, ;
vCheckBoxMarried := Form_1.CheckBoxMarried.Value, ;
vTextBoxPhoto := Form_1.TextBoxPhoto.Value, ;
vEditBoxBio := Form_1.EditBoxBio.Value

if vTextBoxCode <= 0
goto bottom
vTextBoxCode := Teste->Code + 1
append blank
replace Teste->Code with vTextBoxCode
endif

replace Teste->First with vTextBoxFirst, ;
Teste->Last with vTextBoxLast, ;
Teste->Birth with vDatePickerBirth, ;
Teste->Married with vCheckBoxMarried, ;
Teste->Photo with vTextBoxPhoto, ;
Teste->Bio with vEditBoxBio
commit
// Gustow:
// DbCommit() is better
// (COMMIT flushes data in _all_ databases, DbCommit() - in current only.
// great speed decreasing in XP ! )

Form_1.TextBoxCode.Value := alltrim(str(Teste->Code))
Form_1.TextBoxFirst.Enabled := .F.
Form_1.TextBoxLast.Enabled := .F.
Form_1.DatePickerBirth.Enabled := .F.
Form_1.CheckBoxMarried.Enabled := .F.
Form_1.TextBoxPhoto.Enabled := .F.
Form_1.EditBoxBio.Enabled := .F.
Form_1.ButtonNew.Enabled := .T.
Form_1.ButtonSave.Enabled := .F.
Form_1.ButtonCancel.Enabled := .F.
Form_1.ButtonDelete.Enabled := .T.
Form_1.Browse_1.Enabled := .T.

Form_1.ImagePhoto.Picture := alltrim(Teste->Photo)

Form_1.Browse_1.Value := Teste->(Recno())
Form_1.Browse_1.Refresh

Form_1.Browse_1.SetFocus

Return NIL

//-------------------------
Function ButtonCancelClick()

Form_1.TextBoxFirst.Enabled := .F.
Form_1.TextBoxLast.Enabled := .F.
Form_1.DatePickerBirth.Enabled := .F.
Form_1.CheckBoxMarried.Enabled := .F.
Form_1.TextBoxPhoto.Enabled := .F.
Form_1.EditBoxBio.Enabled := .F.
Form_1.ButtonNew.Enabled := .T.
Form_1.ButtonSave.Enabled := .F.
Form_1.ButtonCancel.Enabled := .F.
Form_1.ButtonDelete.Enabled := .T.
Form_1.Browse_1.Enabled := .T.

BrowseChange()
Form_1.Browse_1.SetFocus

Return NIL

//-------------------------
Function BrowseChange()

Local vRecno := Form_1.Browse_1.Value

goto vRecno

Form_1.TextBoxCode.Value := alltrim(str(Teste->Code))
Form_1.TextBoxFirst.Value := alltrim(Teste->First)
Form_1.TextBoxLast.Value := alltrim(Teste->Last)
Form_1.DatePickerBirth.Value := Teste->Birth
Form_1.CheckBoxMarried.Value := Teste->Married
Form_1.EditBoxBio.Value := Teste->Bio
Form_1.TextBoxPhoto.Value := alltrim(Teste->Photo)

Form_1.ImagePhoto.Picture := ;
if( file( alltrim(Teste->Photo) ), alltrim(Teste->Photo), "0.bmp" )

Return NIL

Возможно, это натолкнет на собственные идеи

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2172
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.04.12 10:36. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Возможно, это натолкнет на собственные идеи



Спасибо большое за помощь !

Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 1095
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 22.04.12 11:13. Заголовок: SAMPLES\BASIC\IMAGE_2\DEMO.exe


GPF
Скрытый текст



Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 370
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 23.04.12 10:33. Заголовок: Петр Благодарю за с..


Петр,

Благодарю за сообщение об ошибке!

Догадываюсь, что этот сбой получен на Win7

Можно попробовать запустить этот пример в режиме совместимости с WinXP, как вариант

У меня на Win7 64bit Ultimate C:\MiniGUI\SAMPLES\BASIC\IMAGE_2\DEMO.exe при изменении картинки типа .CUR отрабатывает без ошибки, поэтому, возможно, что есть проблемы с локальной системой.

В любом случае, Ваши предложения по исправлению возникшей ошибки всегда приветствуются

Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 1096
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 23.04.12 10:57. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Догадываюсь, что этот сбой получен на Win7


Нет, XP SP3.
Просто, после запуска программы начните "тыкать" мышкой по всем кнопкам, слева направо или наоборот - без разницы. У меня где-то после 20 щелчков валилась.

gfilatov2002 пишет:

 цитата:
В любом случае, Ваши предложения по исправлению возникшей ошибки всегда приветствуются


Уже исправил, осталось только по просьбе Андрея Верченко вывод PNG для систем поддерживающих gdiplus (XP и выше) прикрутить.

Опубликую здесь или сброшу куда-то, по желанию.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2180
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.04.12 12:04. Заголовок: Петр пишет: осталос..


Петр пишет:

 цитата:
осталось только по просьбе Андрея Верченко поддержу вывода PNG для систем поддерживающих gdiplus (XP и выше) прикрутить.



Ура...
Жду с нетерпением...

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 372
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 23.04.12 12:30. Заголовок: Петр пишет: Опублик..


Петр пишет:

 цитата:
Опубликую здесь


Ждем...

Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 1097
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 23.04.12 22:58. Заголовок: Петр пишет: Опублик..


Петр пишет:

 цитата:
Опубликую здесь


click here

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2183
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.04.12 23:29. Заголовок: В примере DEMOGDIP.e..


В примере DEMOGDIP.exe перестал работать показ кнопки "Set cur"

И очень хотелось бы для таких подключений библиотек делать файлы проектов *.hbp
Ну нет пока практики у меня (начинающего) включения разных библиотек в свои проекты.
Заранее спасибо !

Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 1098
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 24.04.12 08:00. Заголовок: Andrey пишет: В при..


Andrey пишет:

 цитата:
В примере DEMOGDIP.exe перестал работать показ кнопки "Set cur"


Спасибо за подробное тестирование c_image.obj и RTFM


 цитата:
И очень хотелось бы для таких подключений библиотек делать файлы проектов *.hbp


вообще-то, автор hbmk2 для "таких подключений библиотек" *.hbc файлы рекомендует


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2184
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.04.12 09:51. Заголовок: Петр пишет: вообще-..


Петр пишет:

 цитата:
вообще-то, автор hbmk2 для "таких подключений библиотек" *.hbc файлы рекомендует



Можно и *.hbc

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 373
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.04.12 11:13. Заголовок: Петр пишет: Опублик..


Петр пишет:

 цитата:
Опубликую здесь


Идея понятна - надо использовать GdiPlus.Dll вместо функции LoadImage() для вывода картинок из файлов в форматах, отличных от BMP.
Но в бинарной форме это можно рассматривать только в качестве примера

Замечание по поводу ошибки в примере Image_2 для файлов типа CUR и ICO. Проблема при частом обновлении этих картинок возникает только под WinXP. При работе в Win7 или Win98 этой проблемы не возникает

Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 1100
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 24.04.12 12:42. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Но в бинарной форме это можно рассматривать только в качестве примера


c_image.obj в стандартном режиме работы, без инициализации библиотеки gdi+, устраняет проблему разрушения памяти программы. К тому же, он позволяет вводить поддержку элементом управления Image формата PNG без перекомпиляции библиотеки, см. пример. Крайне полезная вещь для пользователей bcc55, в поставке которых нет gdiplus*.h (232 kB).
Ну и напоследок, я выложу код c_image.c после окончательной пришлифовки, т.е. более точного копирования поведения loadolepicture, с этим нет проблем.

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 374
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.04.12 12:55. Заголовок: Петр пишет: я вылож..


Петр пишет:

 цитата:
я выложу код c_image.c после окончательной пришлифовка, т.е. более точного копирования поведения loadolepicture


Большое спасибо! Но тогда уже это будет включено в следующую сборку

Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 1101
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 24.04.12 17:54. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Но тогда уже это будет включено в следующую сборку


Нет вопросов, пока же для желающих - модифицированная версия c_image.c (non-GDI+)
click here

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2185
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.04.12 18:13. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Но тогда уже это будет включено в следующую сборку



Желательно отдельным примером и файл для сборки hbmk2 !

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 375
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 25.04.12 10:22. Заголовок: Петр пишет: модифиц..


Петр пишет:

 цитата:
модифицированная версия c_image.c


Огромное спасибо за переработанный код: чувствуется рука профи!

Но я немного поправил, чтобы убрать предупреждение, которое выдает компилятор MinGW (см.ниже).

Скрытый текст


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2188
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.04.12 17:45. Заголовок: Петр пишет: Работа..


Петр пишет:

 цитата:

Работает, и следующий раз, пожалуйста, пишите в правильной ветке, которую, к тому же, сами и создали - примеры, ошибки и т.д.



Да, точно работает... Это глюк инета у меня был....

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2226
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.06.12 16:40. Заголовок: Вопрос возник такой:..


Вопрос возник такой:

Есть главное окно программы Form_1, делаю:

MINIMIZE WINDOW Form_1
Inkey(60)
RESTORE WINDOW Form_1

Программа успешно "скидывается" на панель задач, но мышкой (если юзер захочет) поднять ее невозможно !!!

Что нужно использовать вместо INKEY() или нужно по другому делать ?

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2406
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.06.12 16:53. Заголовок: Andrey пишет: Что н..


Andrey пишет:

 цитата:
Что нужно использовать вместо INKEY() или нужно по другому делать ?


А какова цель вообще ? ;)
Ну скинул ее на панель задач и хорошо. Мешает что ли ? На фига туда еще и задержку лепить.....:)

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2227
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.06.12 17:36. Заголовок: Dima пишет: Ну скин..


Dima пишет:

 цитата:
Ну скинул ее на панель задач и хорошо. Мешает что ли ? На фига туда еще и задержку лепить.....:)



Ну хотелось бы чтоб через минуту "поднялась" программа... Для дальнейших действий юзера.
И как сделать чтоб эта программа была "под" запущенной программой - типа SW_SHOWNOACTIVATE ???


Спасибо: 0 
Профиль
Петр
постоянный участник


Пост N: 1122
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 11.06.12 18:25. Заголовок: Я представляю шок юз..


Я представляю шок юзера, у которого сначала улетает, а потом откуда не возьмись появляется окно..

MINIMIZE WINDOW Form_1
создать событие таймера с интервалом 60 сек.

в событии проверить, распахнуто или нет окно, если нет
RESTORE WINDOW

грохнуть таймер.




Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2229
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.06.12 19:59. Заголовок: Петр пишет: MINIMIZ..


Петр пишет:

 цитата:
MINIMIZE WINDOW Form_1
создать событие таймера с интервалом 60 сек.

в событии проверить, распахнуто или нет окно, если нет
RESTORE WINDOW

грохнуть таймер.



Не знаю как "создать событие таймера" ?
Петр, набросай пожалуйста примерный код, (я пока только осваиваю Минигуи) !
Или ткни в пример где это делается...

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2408
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 11.06.12 21:19. Заголовок: Andrey Пошукай по п..


Andrey
Пошукай по примерам "DEFINE TIMER"

Спасибо: 1 
Профиль
Andrey
постоянный участник




Пост N: 2232
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.06.12 13:49. Заголовок: Dima пишет: Пошукай..


Dima пишет:

 цитата:
Пошукай по примерам "DEFINE TIMER"



Спасибо БОЛЬШОЕ Дима ! Нашел !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2233
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.06.12 13:54. Заголовок: Видимость переменных..


Видимость переменных или как сделать следующее ?

Имею код:
FUNCTION Main()
Local hWnd, nI, cTask, cButt, cMess
Local aButton := {}
AADD( aButton, {170, 20,170,35,'Menu 1','Task-1'} )
AADD( aButton, {220, 20,170,35,'Menu 2','Task-2'} )
AADD( aButton, {270, 20,170,35,'Menu 3','Task-3'} )
AADD( aButton, {320, 20,170,35,'Menu 4','Task-4'} )
AADD( aButton, {170,230,170,35,'Menu 5','Task-5'} )
AADD( aButton, {220,230,170,35,'Menu 6','Task-6'} )
AADD( aButton, {270,230,170,35,'Menu 7','Task-7'} )
......................

FOR nI := 1 TO LEN(aButton)
cButt := "RUN"+LTRIM(STR(nI))
cMess := 'Command: ShellExecute( , "open", "TaskTest2.exe", ..... )'
cTask := aButton[nI,6]
DEFINE BUTTON &cButt
ROW aButton[nI,1]
COL aButton[nI,2]
WIDTH aButton[nI,3]
HEIGHT aButton[nI,4]
CAPTION aButton[nI,5]
ACTION { || ExecTask(cTask,hWnd) }
TOOLTIP cMess
FONTNAME "MS Sans serif"
FONTSIZE 14
FONTBOLD .t.
LEFTTEXT .t.
BACKCOLOR WHITE
END BUTTON
NEXT

Так вот, при вызове ExecTask(cTask,hWnd) - cTask всегда возвращает последний элемент массива ...
Почему ?
Как нужно правильно сделать ?

Полный пример здесь: http://files.mail.ru/SNQMZ9




Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 389
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 14.06.12 16:06. Заголовок: Andrey пишет: при в..


Andrey пишет:

 цитата:
при вызове ExecTask(cTask,hWnd) - cTask всегда возвращает последний элемент массива ...
Как нужно правильно сделать ?


Отправил исправленный рабочий вариант по почте

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2243
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.06.12 22:31. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Отправил исправленный рабочий вариант по почте


Спасибо большое...

А как нужно правильно описывать переменные в МиниГуи ?
PRIVATE можно использовать в коде программы ?

Разбираюсь с чужим рабочим кодом... Вот выдержка из него:
Скрытый текст

Подскажите как нужно правильно писать код в таких случаях ?

Спасибо: 0 
Профиль
Vlad04
постоянный участник


Пост N: 312
Зарегистрирован: 13.10.05
ссылка на сообщение  Отправлено: 15.06.12 10:07. Заголовок: Что за программа ? В..


Что за программа ? Всю выложить можешь?

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 390
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.06.12 17:15. Заголовок: Andrey пишет: PRIVA..


Andrey пишет:

 цитата:
PRIVATE можно использовать в коде программы ?


Да, если они связаны с использованием макро-переменных.

Andrey пишет:

 цитата:
Подскажите как нужно правильно писать код в таких случаях ?


О каких случаях идет речь

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2249
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.06.12 19:01. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
О каких случаях идет речь


Объявление переменных в цикле, т.е. на ходу ?
FOR i_button := 1 TO kol_button
nam_exe_button := "act_exe_but0" + IIF(i_page<10, Str( i_page, 1 ), Str( i_page, 2 ) ) + AllTrim( Str( i_button, 2 ) )

PRIVATE &nam_exe_button
......

AAdd( curs_arr_size[ i_page, 3 ], &nam_exe_button )
........
ACTION ( Sect_Run_Tasks( &nam_exe_button ), Form_1.Setfocus, form_graph_tab() )
................
NEXT

или

FOR i_button := 1 TO kol_button
...........
image_ch1 := "CH2Image_" + AllTrim( Str( i_page, 3 ) ) + AllTrim( Str( i_button, 3 ) )
PRIVATE &image_ch1
&image_ch1 := AllTrim( Str( i_page, 3 ) ) + AllTrim( Str( i_button, 3 ) )
DEFINE BUTTONEX &( "ButtonEX_" + AllTrim( Str( i_page, 3 ) ) + AllTrim( Str( i_button, 3 ) ) )
// PICTURE arr_menu_button[i_button,7]//choice_bmp1
ICON arr_menu_button[ i_button, 7 ] //choice_bmp1
Row arr_menu_button[ i_button, 1 ] + 25
Col arr_menu_button[ i_button, 2 ]
WIDTH arr_menu_button[ i_button, 4 ]
HEIGHT arr_menu_button[ i_button, 3 ]
BACKCOLOR BROWN //для расцветки по градиенту, иначе не работает
FONTSIZE 12//&(font_button[2])
VERTICAL .T.
ADJUST .F.
ACTION ( Sect_Run_Tasks( &nam_exe_button ), Form_1.Setfocus, form_graph_tab() )
END BUTTONEX
...........
NEXT
Да Клипер и Харбор позволяет такое делать.
А как же общие рекомендации - объявлять все переменные в начале функции.
Какие последствия бывают за это ? Ну скорость может чуток падает или еще что-то есть ?
Код рабочий, работает... Но по моему не читаемый.
Как правильно оформить его ?
Я для себя хочу понять, как правильно писать на МиниГуи...

Извиняюсь за свое косноязычие....

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 391
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.06.12 21:08. Заголовок: Andrey пишет: Объяв..


Andrey пишет:

 цитата:
Объявление переменных в цикле


Вопрос понятен.
Посмотрите, как это сделано в коде библиотеки без использования частных переменных:

 цитата:
FOR nJ := 1 TO nMax(aData)
cName := "yVal_Name_"+Ltrim(Str(nJ))
@ nBottom + 8, nI - IF(l3D, nDeep, nDeep + 8) LABEL &cName OF &parent;
VALUE aYVals[nJ] AUTOSIZE;
FONTCOLOR aClrFore;
BACKCOLOR IF( lPrint, WHITE, aClrBack );
FONT _HMG_DefaultFontName SIZE _HMG_DefaultFontSize-1
nI += nWideB
NEXT




Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2250
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.06.12 23:55. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Посмотрите, как это сделано в коде библиотеки без использования частных переменных:


Спасибо БОЛЬШОЕ !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2264
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.07.12 21:09. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Петр пишет:
цитата:
я выложу код c_image.c после окончательной пришлифовка, т.е. более точного копирования поведения loadolepicture


Большое спасибо! Но тогда уже это будет включено в следующую сборку



А где в новой версии этот пример ?

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 396
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 11.07.12 10:25. Заголовок: Andrey пишет: А где..


Andrey пишет:

 цитата:
А где в новой версии этот пример ?


Нету
Увы, так и не получил от Петра обещанный отшлифованный код c_image.c

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2265
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 11.07.12 11:15. Заголовок: Григорий, а где можн..


Григорий, а где можно посмотреть примеры вывода иконок на окно из ресурсов или файлов ?
Так как иконки не имеют фона, то их можно выводить на форму - пока вместо PNG файлов.
Только как выводить иконки без кнопок ?
Пример: MiniGUI\SAMPLES\BASIC\ButtonEx - не подходит.

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 398
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 11.07.12 11:25. Заголовок: Andrey пишет: где м..


Andrey пишет:

 цитата:
где можно посмотреть примеры вывода иконок на окно из ресурсов или файлов ?


Посмотри, например, пример в папке samples\Advanced\IcoView

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2266
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.07.12 14:49. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Посмотри, например, пример в папке samples\Advanced\IcoView



Что-то пример какой то замороченный, в смысле - много кода который не нужен.
Как просто вывести иконку на форму ?

Спасибо: 0 
Профиль
Vladimir



Пост N: 10
Зарегистрирован: 27.07.10
ссылка на сообщение  Отправлено: 13.07.12 15:27. Заголовок: @ ... IMAGE <Con..


@ ... IMAGE <ControlName>

Пример SAMPLES\BASIC\IMAGE_2 не оно?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2267
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.07.12 15:50. Заголовок: Vladimir пишет: При..


Vladimir пишет:

 цитата:
Пример SAMPLES\BASIC\IMAGE_2 не оно?



А ты туда попробуй иконку 64х64 поставить !
У меня не получилось ...

Спасибо: 0 
Профиль
Vladimir



Пост N: 11
Зарегистрирован: 27.07.10
ссылка на сообщение  Отправлено: 13.07.12 16:53. Заголовок: Виноват. Похоже, про..


Виноват. Похоже, пропускает не все иконки.



Иконка 128х128. Скачана из Интернет, но преобразована в XnView в полноцветную.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2268
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.07.12 17:05. Заголовок: А у меня ни в какую ..


А у меня ни в какую не идет !
Берет только 256 colors - а другие нет !

@ 230,270 IMAGE Image_2 PICTURE 'res\comp32x32.ico'



Исходник здесь: http://files.mail.ru/P14ZZE


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2269
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.07.12 17:08. Заголовок: Vladimir пишет: Ико..


Vladimir пишет:

 цитата:
Иконка 128х128. Скачана из Интернет, но преобразована в XnView в полноцветную.



256-colors или Windows-XP формат цвета иконки ?

Выложи иконку и программу. Глянуть хочется как нужно делать.
Заранее спасибо.


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2281
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.07.12 21:30. Заголовок: Привет. Подскажите к..


Привет.
Подскажите как можно сделать следующее....

В начале программы всегда идет объявления ОКНA:
DEFINE WINDOW Form_1 AT 0, 344 WIDTH 410 HEIGHT 411 ... и т.д.


Изменение параметров и расположение, чтение значений делается через Form_1
Ну например:
Function ChangeVersion()
Local TypeVersion := Form_1.RadioGroup_1.Value

Function SetValue(cDescription,cImage,cPath)
Form_1.Label_3.Value := cDescription
Form_1.Icon_Big.Icon := cImage
Form_1.Text_1.Value := cPath


А как можно прочитать/изменить ОКНО если его задать внешне, т.е. имя ОКНА приходит из другой программы ?
Макроподстановка не проходит...

STATIC MyForm

FUNCTION MyEditVers( cWindows )

MyForm := cWindows
......

DEFINE WINDOW &MyForm AT 0, 344 WIDTH 410 HEIGHT 411 ... и т.д.
......
Center WINDOW &MyForm
ACTIVATE WINDOW &MyForm


Function ChangeVersion()
Local TypeVersion := &MyForm.RadioGroup_1.Value // - не работает

Function SetValue(cDescription,cImage,cPath)
&MyForm.Label_3.Value := cDescription // - не работает
&MyForm.Icon_Big.Icon := cImage // - не работает
&MyForm.Text_1.Value := cPath // - не работает


Заранее спасибо за ответ !
В новой документации MiniGuiPdf.pdf - не нашел. Есть только глава 16. Test Function



Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 407
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 30.07.12 10:35. Заголовок: Andrey пишет: В нов..


Andrey пишет:

 цитата:
В новой документации MiniGuiPdf.pdf - не нашел.


По-видимому, плохо искал

Обрати внимание на команду DECLARE WINDOW <Form>, которая прямо предназначена для таких вещей

Также в таких случаях удобнее использовать функцию SetProperty() вместо псевдо-ООП комманд:

Function SetValue(cDescription,cImage,cPath)
SetProperty('MyForm','Label_3','Value', cDescription)
SetProperty('MyForm','Icon_Big','Icon', cImage)
SetProperty('MyForm',Text_1','Value', cPath)

и функцию GetProperty():

Function ChangeVersion()
Local TypeVersion := GetProperty('MyForm','RadioGroup_1','Value')



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2282
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.07.12 11:11. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
По-видимому, плохо искал


Согласен ....

gfilatov2002 пишет:

 цитата:
Обрати внимание на команду DECLARE WINDOW <Form>, которая прямо предназначена для таких вещей


А есть пример, а то из описания плохо пока понимаю.

gfilatov2002 пишет:

 цитата:
Также в таких случаях удобнее использовать функцию SetProperty() вместо псевдо-ООП комманд:


Спасибо БОЛЬШОЕ, то что надо !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2283
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.07.12 13:55. Заголовок: А как сделать form..


А как сделать

form_1.refesh() для моего случая ?

Напоминаю, у меня идет определение окна через статик переменную:
MyForm := cWindows
......
DEFINE WINDOW &MyForm AT 0, 344 WIDTH 410 HEIGHT 411 ... и т.д.


Дело в том что я цвет ОКНА меняю по ходу работы самой программы:
SetProperty( MyForm, "BackColor", aNewColor )


Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2476
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.07.12 21:32. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как сделать

form_1.refesh() для моего случая ?


Ни как ;) Может все таки refresh ?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2284
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.07.12 22:10. Заголовок: Dima пишет: Может в..


Dima пишет:

 цитата:
Может все таки refresh ?



Ошибся малость при переносе на форум....

Дело в том что такое не проходит:
&MyForm.refesh()

Пробовал:
Domethod( MyForm, "Refresh" ) - ничего не происходит.

То есть мне нужно перерисовать форму, все объекты которые на ней лежат.
Как это сделать ?



Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 408
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 03.08.12 12:04. Заголовок: Andrey пишет: мне н..


Andrey пишет:

 цитата:
мне нужно перерисовать форму, все объекты которые на ней лежат.


Обшей команды Refresh для всей формы не существует, но Вы можете использовать перерисовку каждого элемента формы по отдельности, как это сделано в примере Color из папки samples\Basic\Color.

 цитата:

ITEM 'Set Form_1 BackColor' ACTION ( Form_1.BackColor := GetColor(), ;
Form_1.Label_1.BackColor := Form_1.BackColor, ;
Form_1.Check_1.BackColor := Form_1.BackColor, ;
Form_1.Radio_1.BackColor := Form_1.BackColor, ;
Form_1.Frame_1.BackColor := Form_1.BackColor, ;
Form_1.Slider_1.BackColor := Form_1.BackColor, ;
Form_1.Hide, Form_1.Show )


Если не хочется перечислять все элементы формы вручную, то можно использовать массив с именами всех этих элементов из примера Form Controls в папке samples\Basic\Form_Controls:

 цитата:
/******************************************************************************/ 
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 )



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2285
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 03.08.12 14:16. Заголовок: Спасибо БОЛЬШОЕ ! :..


Спасибо БОЛЬШОЕ !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2294
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.08.12 01:01. Заголовок: Можно ли с помощью М..


Можно ли с помощью МиниГуи сделать следующее:
1) PNG файл 128х128 загрузить в память и преобразовать в 128х128 ICO и сохранить файл ?
2) PNG файл любого размера "нарезать" на заданные размеры (для примера 128х128) ?



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2297
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.08.12 15:50. Заголовок: Сделал обучающий при..


Сделал обучающий пример по иконкам.

Не могу заставить компилироваться 2 примера из одного файла:
build.bat
call hbmk2.bat %* demo1.hbp
call hbmk2.bat %* demo2.hbp

Пишет ошибку:
building...
S:\SAMPLES\IconsToForm\build.log
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.
Harbour 3.2.0dev (Rev. 17966)


Как побороть это ?

Содержание: demo1.hbp
Скрытый текст

Содержание: demo2.hbp
Скрытый текст



Спасибо: 0 
Профиль
AlexMyr



Пост N: 569
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 20.08.12 16:01. Заголовок: Посмотрел hbp файлы,..


Посмотрел hbp файлы, вопрос: demo.prg это один файл или он разный и лежит в разных папках?
где содержимое hbmk2.bat?

Так пробовал?
call hbmk2.bat %* demo*.hbp

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2298
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.08.12 16:35. Заголовок: AlexMyr пишет: вопр..


AlexMyr пишет:

 цитата:
вопрос: demo.prg это один файл или он разный и лежит в разных папках?



Это один и тот же файл.

AlexMyr пишет:

 цитата:
Так пробовал?
call hbmk2.bat %* demo*.hbp



Попробовал ! Получилось !!! Спасибо БОЛЬШОЕ !!!



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2302
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.08.12 12:21. Заголовок: Всем привет ! Подск..


Всем привет !

Подскажите пожалуйста, как задавать цвет STATUSBAR-а ?
И изменять цвет STATUSBAR по надобности ?
Типа: DoMethod( MyForm,"Statusbar","Refresh") ??? а есть ли такой метод ???
Заранее спасибо.



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2328
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.09.12 14:57. Заголовок: МиниГуи - пример SAM..


МиниГуи - пример SAMPLES\BASIC\DirectoryRecurse

Если в папки записать файлы без расширений, то ничего НЕ ПОКАЗЫВАЕТ !
Почему ?

Папка для пробы здесь http://files.mail.ru/QJS1VX


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2407
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.11.12 20:11. Заголовок: Можно ли узнать како..


Можно ли узнать какой тип картинки записан в ресурсе EXE-ника ?

Т.е. у меня в rc файле лежат два разных файла:
DEMO1 BITMAP "res\LOGO_DEMO.BMP"
DEMO2 JPG "res\harbour-logo.jpg"

А в программе я хочу определить какой тип файла, чтобы вычислить размер рисунка:
// если тип файла "BMP"
IF ????
______aSize := BmpSize( cFile )
ELSE
______aSize := JpgSize( cFile )
ENDIF
nWidth := aSize[1]
nHeight := aSize[2]


И почему в ХЕЛПЕРе нет описание функции JpgSize( cFile ) и hb_GetImageSize() ?
Нашел только в примере \MiniGUI\SAMPLES\Advanced\JpgViewer, да и то с переназначением(вызовом) функции hb_GetImageSize() ? Да и то эта функция выдает размер файла на диске, а не в ресурсе !!!
Облом...

Что нельзя было сделать общую функцию определения размера картинки
независимо от типа файла и типа размещения (т.е. файл на диске или файл в ресурсе) ???

Может уже есть такая функция, а я не нашел...



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2487
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.12.12 21:34. Заголовок: Всем привет. Как реа..


Всем привет.
Как реализовать следующее:
Имею объект ГРИД:

DEFINE GRID Grid_Report
...............
HEADERS {'№','Наименование отчета', 'Файл' }
WIDTHS { 30,430, 120 }
ITEMS LoadReport()
VALUE 1
HEADERIMAGES aImages
BACKCOLOR { 159, 191, 236 }
TOOLTIP 'Выбор отчета/F4-Редактирование отчета'
ONDBLCLICK LoadViewFr3()
END GRID
.......
/////////////////
FUNCTION LoadViewFr3()
???
Как узнать выбранный элемент массива и название файла ?
Как можно назначить клавишу (допустим F4) - чтобы вызывалась отдельная функция ?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2489
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.12.12 12:52. Заголовок: Разобрался я с элеме..


Разобрался я с элементами меню ГРИДА...
И как назначить горячую клавишу на форме..

вот результат, если кому интересно... http://files.mail.ru/RNWL47


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 431
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 19.12.12 14:50. Заголовок: Andrey пишет: Разоб..


Andrey пишет:

 цитата:
Разобрался я с элементами меню ГРИДА...
И как назначить горячую клавишу на форме


Супер! Но вместо дополнительной функции GetColValue( xObj, xForm, nCol ) можно использовать стандарный объект Cell (row, col)

Например, так:

 цитата:
FUNCTION LoadViewFr3()
LOCAL cMsg := Form_1.Grid_Report.Cell( this.value, 3 )
LOCAL cMsg2 := Form_1.Grid_Report.Cell( this.value, 2 )

MsgInfo( cMsg )

MsgInfo( cMsg2 )

//MsgInfo( GetColValue( "Grid_Report", "Form_1", 3 ) )

//MsgInfo( GetColValue( "Grid_Report", "Form_1", 2 ) )

RETURN NIL



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2490
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.12.12 15:50. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Например, так:


Спасибо БОЛЬШОЕ !

Как насчет моего письма ?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2493
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.12.12 09:34. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
можно использовать стандарный объект Cell (row, col)



Для мышки и ENTER это работает !
А по горячей клавише F4 - вылетает с ошибкой....


Как можно исправить ?
Исходник здесь. http://files.mail.ru/42OT6H

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 432
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 20.12.12 11:31. Заголовок: Andrey пишет: А по ..


Andrey пишет:

 цитата:
А по горячей клавише F4 - вылетает с ошибкой


А если попробовать так:

Скрытый текст


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2495
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.12.12 23:31. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
А если попробовать так:


Спасибо ! Я понял как делать...

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2496
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.12.12 23:42. Заголовок: Есть красивый пример..


Есть красивый пример \MiniGUI\SAMPLES\Advanced\Tsb_filter\demo.prg
Пробовал его переделать под себя и не получилось:
1) Как запретить вывод(показ) всех полей базы (т.е. поля NOT1, NOT2, NOT3 - не показывать в TsBrowse) ?
2) Как разрешить редактировать ВСЕ поля в TsBrowse ?
3) Как разрешить редактировать ТОЛЬКО выборочные поля (KVIEWUK, KOD_EIRC, EIRC) в TsBrowse ?

Заранее спасибо за ответ.

Пример и база здесь. http://files.mail.ru/AEKHPY


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 433
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.12.12 13:33. Заголовок: Andrey пишет: 1) Ка..


Andrey пишет:

 цитата:
1) Как запретить вывод(показ) всех полей базы (т.е. поля NOT1, NOT2, NOT3 - не показывать в TsBrowse) ?


Можно просто скрыть их (как сделано в примере ниже) или не загружать вовсе (с помошью функции LoadFields()).

Andrey пишет:

 цитата:
2) Как разрешить редактировать ВСЕ поля в TsBrowse ?


Вызвать метод oBrw:LoadFields( .T. ) c параметром .T. - и все поля редактируемые

Andrey пишет:

 цитата:
3) Как разрешить редактировать ТОЛЬКО выборочные поля (KVIEWUK, KOD_EIRC, EIRC) в TsBrowse ?


Для этого надо разрешить перемещение по полям внутри строки данных и установить флажок редактирования для требуемых полей.

Рабочий пример см. ниже (все изменения сделаны в FUNCTION CreateBrowse):
Скрытый текст


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2502
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.12.12 14:00. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Рабочий пример см. ниже


Спасибо БОЛЬШОЕ !!! Чувствуется рука мастера !!!

А еще вопрос по этому примеру: зачем нужно в этом примере следующая конструкция ?
Скрытый текст


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2507
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.12.12 12:37. Заголовок: Добавил этот пример ..


Добавил этот пример к своему проекту.
ОДИН раз работает, при повторном вызове - вылетает с ошибкой:


53 строка:
DEFINE FONT Font_1 FONTNAME "Times New Roman" SIZE 12
DEFINE FONT Font_2 FONTNAME "Times New Roman" SIZE 11
DEFINE FONT Font_3 FONTNAME "Times New Roman" SIZE 10 BOLD


Я так понимаю, что шрифт повторно переопределяется ?
Я нашел что нужно делать RELEASE FONT <cName>.
В примере для выхода есть:
ON KEY ESCAPE ACTION ThisWindow.Release

Вместо неё (ThisWindow.Release) нужно написать свою функцию и там УДАЛИТЬ фонты ?
Или можно как то по другому сделать ?


Спасибо: 0 
Профиль
subbota



Пост N: 19
Зарегистрирован: 16.12.09
ссылка на сообщение  Отправлено: 23.12.12 16:11. Заголовок: Можно ли загружать ..


У меня вопрос простой.
Можно ли в MiniGui запускать ide сразу с проектом
по щелчку мышки на файле проекта *.hpj или *.hbp ?

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 54
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.12.12 12:15. Заголовок: Andrey пишет:Или мож..


Andrey пишет:
 цитата:
Или можно как то по другому сделать ?


Можно:
ON RELEASE ( <свои действия> )
...
ON KEY ESCAPE ACTION ThisWindow.Release // не менять

Применяя команды препроцессора (как в Clipper std.ch ), надо смотреть, что внутри - сильно помогает в понимании MiniGui, которая устроена довольно стройно:
I_<Контрл>.CH - команды препроцессора
H_<Контрл>.PRG - функции создания контрола и работы с ним
C_<Контрл>.C - HB_FUN для работы с контролом
Примеры:
DEFINE FONT ... из i_font.ch вызывает _DefineFont(...) из h_font.prg ,
@ <row>,<col> LABEL ... из i_Label.ch вызывает _DefineLabel(...) из h_Label.prg ,
@ <row>,<col> GRID ... из i_grid.ch вызывает _DefineGrid(...) из h_Grid.prg и так далее.
Посмотрев на функцию _Define...(...) можно увидеть, что назначено по умолчанию, а самое главное, как используются переменные _HMG_... ( полный список в I_VAR.CH).
В примере с GRID была использована доп. функция GetColValue( xObj, xForm, nCol ), а можно было использовать готовую функцию из h_grid.prg
_GetGridCellValue ( ControlName , ParentForm , Row , Col ) и для замены
_SetGridCellValue ( ControlName , ParentForm , Row , Col , CellValue ).



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2510
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.12.12 14:32. Заголовок: SergKis спасибо БОЛЬ..


SergKis спасибо БОЛЬШОЕ !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2511
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.12.12 14:45. Заголовок: В примере MiniGUI ..


В примере MiniGUI\SAMPLES\Advanced\CHECKMAILBOX
используется функция для пароля CHARXOR():
PUBLIC cCryptKey := REPL( "#$@%&", 2 )
...........
cPass := CHARXOR( GetIni( NTRIM(nI)+"/16", "Password", "", cIniFile ), cCryptKey )

Я её к себе в программу поставил и обнаружил фигню....
Если пароль из цифр ставить, то все.... ! Перестает работать пароль.
С чем связано, не знаю, наверно из ини-файла эту строку Харбор считать не может.
Я с таким еще на Клипере сталкивался.

Чем можно заменить эту функцию, чтобы можно было
считывать/записывать любой пароль в ини-файл ?

Пример здесь. http://files.mail.ru/VAPIMT


Спасибо: 0 
Профиль
a_sidorov



Пост N: 24
Зарегистрирован: 07.06.08
ссылка на сообщение  Отправлено: 26.12.12 08:06. Заголовок: Вы пишете в текстово..


Вы пишете в текстовой ини файл бинарный код. Для некоторых символов Вы получаете в ини файле коды 10, 13 и т.д. которые при считывании GetPrivateProfileString воспринимаются как конец строки и пароль обрезается. Нужно писать не коды символов, а их представление, например \u0013 -код 13

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2514
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.12.12 09:14. Заголовок: Я понял это еще в кл..


Я понял это еще в клипере. Просто думал что есть готовая функция в Харборе для таких целей...
А так получается, что строку нужно писать в кодах ascii или еще как нибудь.
Наверно достаточно будет воспользоваться функциями HB_StrToHEX() и HB_HexToStr() !

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 63
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.12.12 09:31. Заголовок: Andrey пишет: Наверн..


Andrey пишет:

 цитата:
Наверно достаточно будет воспользоваться функциями HB_StrToHEX() и HB_HexToStr()


Никогда не скрывал пароли разными способами, запоминал как есть. Рано или поздно всегда, кто нибудь забудет и тогда просто глянул и проблема снята !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2515
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.12.12 09:56. Заголовок: SergKis пишет: Рано..


SergKis пишет:

 цитата:
Рано или поздно всегда, кто нибудь забудет и тогда просто глянул


Для этого есть пароль Админа в программе (для изменения и просмотра).

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 65
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.12.12 10:58. Заголовок: Andrey пишет:Для это..


Andrey пишет:
 цитата:
Для этого есть пароль Админа в программе (для изменения и просмотра)


Это когда ты один, а если Админами являются люди "внедренцы" со своими паролями Админ (я не знаю эти пароли) и когда они не доступны, по разным причинам, обращаются ко мне и достаточно по удаленке просто глянуть ини и ВСЕ ... , а не разбираться что и где надо запустить с паролем Админ. Но все это субъективно и дело привычки.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2534
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.01.13 13:27. Заголовок: Подскажите пожалуйст..


Подскажите пожалуйста пример (или функции),
где можно запомнить координаты своей задачи на рабочем столе (в файл ini), а затем восстановить окно в этих координатах.


Спасибо: 0 
Профиль
Avf



Пост N: 18
Зарегистрирован: 19.10.05
ссылка на сообщение  Отправлено: 08.01.13 17:24. Заголовок: ResizeIt из Samples&..


ResizeIt из Samples\Advanced

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2535
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.01.13 09:48. Заголовок: Avf пишет: ResizeIt..


Avf пишет:

 цитата:
ResizeIt из Samples\Advanced


Спасибо БОЛЬШОЕ !!!


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2536
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.01.13 09:52. Заголовок: Подскажите, как можн..


Подскажите, как можно проверить ввод 2-х паролей и если они не одинаковы, то вернуться назад ?

Имею такую конструкцию:
Local cPwd, cPwd2
......
@ 173,155 TEXTBOX Text_Pass1 HEIGHT 24 WIDTH 190 VALUE cPwd PASSWORD ;
ON LOSTFOCUS {|| cPwd := Form_1.Text_Pass1.Value } ;
ON ENTER Form_1.Text_Pass2.SetFocus

@ 214,30 LABEL Label_Pass2 VALUE "Повтор:" WIDTH 120 HEIGHT 24 ;
@ 211,155 TEXTBOX Text_Pass2 HEIGHT 24 WIDTH 190 VALUE cPwd2 PASSWORD ;
ON LOSTFOCUS {|| cPwd2 := Form_1.Text_Pass2.Value } ;
ON ENTER {|| IF( cPwd2#cPwd,MsgInfo("Пароли не одинаковы ! Повторите ввод заново !") , SaveConfig(cUsr,cPwd) ) }



Спасибо: 0 
Профиль
Avf



Пост N: 19
Зарегистрирован: 19.10.05
ссылка на сообщение  Отправлено: 09.01.13 11:36. Заголовок: Можно, например, так..


Можно, например, так

while .t.


ввод

если пароли совпадают выйти
иначе
сбросить контролы

end




Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2537
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.01.13 12:32. Заголовок: Avf пишет: Можно, н..


Avf пишет:

 цитата:
Можно, например, так
while .t.



Нельзя так. Это на форме редактируется.



Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 67
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 09.01.13 14:35. Заголовок: Andrey пишет:Подскаж..


Andrey пишет:
 цитата:
Подскажите, как можно проверить ввод 2-х паролей


Примерно так:Скрытый текст


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2538
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.01.13 20:36. Заголовок: SergKis пишет: Прим..


SergKis пишет:

 цитата:
Примерно так:


Спасибо БОЛЬШОЕ !
Очень подробно и с разъяснениями !!! Просто супер !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2539
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.01.13 10:48. Заголовок: Не нравиться порядок..


Не нравиться порядок написания программ в МиниГуи... уж очень растянуто получается...
Подскажите можно ли как то уменьшить или изменить это ?

Вот например:
Скрытый текст


На более читаемую версию:
Скрытый текст


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2540
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.01.13 13:38. Заголовок: И еще вопрос вдогонк..


И еще вопрос вдогонку к предыдущему сообщению.

Видимость объектов на форме какая (допустим Label_1 )?
Это Public переменная или другая ?
В любом месте только одного модуля PRG можно обращаться к Form_1.Label_1.Value или в других модулях PRG тоже можно обращаться к объектам объявленных ранее ?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2545
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.01.13 01:26. Заголовок: Подскажите пожалуйст..


Подскажите пожалуйста, как в GRID'e можно сделать заголовки в 2-3 строчки ?
HEADERS { '№;№','1-строка;2-строка'..... } знак ";" как в TBROWSE() для Харбора не прокатывает...

Пробовал { '№'+CHR(13)+CHR(10)+'№', '1-строка'+CHR(13)+CHR(10)+'2-строка' ... } тоже не работает....


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 68
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 12.01.13 20:53. Заголовок: Andrey пишет:Видимос..


Andrey пишет:
 цитата:
Видимость объектов ...


Пока существует окно (не разрушено), существуют и контролы его и они всегда доступны.
Хранятся данные в переменных _HMG_... (см. i_var.ch).
Скрытый текст



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2547
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 12.01.13 22:53. Заголовок: SergKis пишет: Пока..


SergKis пишет:

 цитата:
Пока существует окно (не разрушено), существуют и контролы его и они всегда доступны.


Т.е. доступны в любых PRG файлах данной программы, как Public переменные ?

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 70
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 13.01.13 14:59. Заголовок: Andrey пишет:как Pub..


Andrey пишет:
 цитата:
как Public переменные ?


Да как Public переменные. См. h_init.prg:
Procedure Init
...
Public _HMG_SYSDATA [ _HMG_SYSDATA_SIZE ]
...
Повторю пример функции (вчера пропустил пропажу [ i ] и ошибку): Скрытый текст


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2550
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.01.13 23:42. Заголовок: Подскажите, как можн..


Подскажите, как можно на форме сделать мигающую надпись типа "Выбор здесь !" ?
MiniGUI\SAMPLES\BASIC\BLINK - не совсем красивый... цветами бы разными перерисовывался...

Или периодически всплывающее окошко с интервалом 5-10 сек. ?

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 72
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.01.13 13:34. Заголовок: Andrey пишет: как мо..


Andrey пишет:

 цитата:
как можно на форме сделать мигающую надпись


Примерно так: Скрытый текст



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2552
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.01.13 16:33. Заголовок: SergKis пишет: Прим..


SergKis пишет:

 цитата:
Примерно так:


Спасибо БОЛЬШОЕ !!!
Что-то медленно мигает, да и 2 цвета всего... и нет цикличности...

Скрытый текст


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 73
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.01.13 17:41. Заголовок: Andrey пишет:Что-то ..


Andrey пишет:
 цитата:
Что-то медленно мигает


Так INTERVAL 2000 - это две секунды (1000 * 2), надо задать как надо.

 цитата:
2 цвета всего


Можно сделать:
 
aColor : {{255,0,0}, {...}, ...} // цифры цвета взять с MS Paint режим Edit colors, поля {Red,Green,Blue}
Добавить:
Static nPos := 0
nPos += 1
IF nPos > len(aColor); nPos := 1
ENDIF
aFc := aColor [ nPos ]
...
Можно текст не менять, а менять цвет букв, бегая по циклу текста и массиву цветов, можно переставлять Label:
SetProperty(cWndName, cControlName, "Row", 70) // MyWnd.MyLabel.Row := 100
SetProperty(cWndName, cControlName, "Col", 10) // MyWnd.MyLabelCol := 10
или придумать что то еще.


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2553
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.01.13 19:25. Заголовок: SergKis пишет: цифр..


SergKis пишет:

 цитата:
цифры цвета взять с MS Paint режим Edit colors, поля {Red,Green,Blue}


Я по вашим ранним рекомендациям поступил, взял цвета с i_color.ch

Вот готовый результат :
Скрытый текст

Спасибо БОЛЬШОЕ за подсказку !!!

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 74
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 14.01.13 20:17. Заголовок: Andrey пишет:взял цв..


Andrey пишет:
 цитата:
взял цвета с i_color.ch


ОТЛИЧНО !!! А цвета взять с MS Paint - это дополнение к i_color.ch (если нужны разнообразные оттенки).
Используя TIMER, надо приостанавливать его выполнение в вызовах своих функций для блокирования повторного выполнения TIMER (это особенно важно при дисковых операциях). Пример:
Function MyWndTimer()
SetProperty("MyWnd", "MyWndTimer", "Enabled", .F.)
...
SetProperty("MyWnd", "MyWndTimer", "Enabled", .T.)
Return


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2554
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.01.13 20:20. Заголовок: SergKis пишет: Испо..


SergKis пишет:

 цитата:
Используя TIMER, надо приостанавливать его выполнение в вызовах своих функций для блокирования повторного выполнения TIMER (это особенно важно при дисковых операциях)


Спасибо большое ! Я бы не додумался ...

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2555
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.01.13 20:26. Заголовок: А как реализовать во..


А как реализовать вот такую трехцветную форму ?


Это еще при том что на ней будут кнопки, списки, лабел и т.д.
Нашел вот только это: SAMPLES\BASIC\WindowBackground
DEFINE BKGBRUSH <brush> SOLID IN [ WINDOW ] <form> - similar to window Backcolor property
DEFINE BKGBRUSH <brush> HATCHED IN [ WINDOW ] <form>
DEFINE BKGBRUSH <brush> PATTERN IN [ WINDOW ] <form>

Я так понимаю, нужно залить одним цветом, а потов в OnInit() докрасить ?
Типа:
LOCAL aColor1 := {251, 250, 174} ; aYX1 := {0,0,210,Координата-Ширины-Окна-как-Узнать?}
LOCAL aColor2 := {255, 0, 255}
LOCAL aColor3 := {178, 227, 137} ; aYX3 := {300,0,Координата-Высоты-Окна-как-Узнать?,Координата-Ширины-Окна-как-Узнать?}

DEFINE WINDOW Form_7 ;
...... ;
BACKCOLOR aColor2 ;
..... ;
ON INIT MyFormCOLOR(aColor1,aYX1, aColor3, aYX2)

....................
FUNCTION MyFormCOLOR(aColor1,aYX1, aColor3, aYX2)

// Координата-Высоты-Окна-как-Узнать? - Форма же не инициализирована, т.е. её еще нет !!!
// Координата-Ширины-Окна-как-Узнать?}


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 75
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.01.13 13:11. Заголовок: Andrey пишет:А как р..


Andrey пишет:
 цитата:
А как реализовать вот такую трехцветную форму


Как-то так:
 
#include "minigui.ch"

Function Main()
Local i,j,y,x,w,h,t
Local cWnd,hWnd,nCliW,nCliH
Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1,aLblC1
Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2,aLblC2
Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3,aLblC3

cWnd := "MyWnd"

DEFINE WINDOW &cWnd ;
AT 40, 50 ;
WIDTH 480 ;
HEIGHT 410 ;
TITLE 'Test Label box' ;
MAIN

hWnd := GetFormHandle(cWnd)
nCliW := GetClientWidth (hWnd)
nCliH := GetClientHeight(hWnd)

cLblN1 := cWnd + '_Frame_Lbl1'
nLblW1 := nCliW
nLblH1 := int(nCliH * 0.4)
nLblY1 := 0
nLblX1 := 0
aLblC1 := {251, 250, 174}

cLblN2 := cWnd + '_Frame_Lbl2'
nLblW2 := nCliW
nLblH2 := int(nCliH * 0.2)
nLblY2 := nLblY1 + nLblH1
nLblX2 := nLblX1
aLblC2 := {255, 0, 255}

cLblN3 := cWnd + '_Frame_Lbl3'
nLblW3 := nCliW
nLblH3 := nCliH - (nLblH1 + nLblH2)
nLblY3 := nLblY2 + nLblH2
nLblX3 := nLblX1
aLblC3 := {178, 227, 137}

@ nLblY1, nLblX1 LABEL &cLblN1 VALUE "" OF &cWnd ;
WIDTH nLblW1 HEIGHT nLblH1 ;
BACKCOLOR aLblC1 BORDER CLIENTEDGE

i := GetControlIndex(cLblN1, cWnd)
j := cWnd + '_Frame_Text1'
t := "Hello Frame 1"
y := _HMG_aControlRow [ i ] + 10
x := _HMG_aControlCol [ i ] + 10
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

@ nLblY2, nLblX2 LABEL &cLblN2 VALUE "" OF &cWnd ;
WIDTH nLblW2 HEIGHT nLblH2 ;
BACKCOLOR aLblC2 BORDER CLIENTEDGE

i := GetControlIndex(cLblN2, cWnd)
j := cWnd + '_Frame_Text2'
t := "Hello Frame 2"
y := _HMG_aControlRow [ i ] + 10
x := _HMG_aControlCol [ i ] + 10
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

@ nLblY3, nLblX3 LABEL &cLblN3 VALUE "" OF &cWnd ;
WIDTH nLblW3 HEIGHT nLblH3 ;
BACKCOLOR aLblC3 BORDER CLIENTEDGE

i := GetControlIndex(cLblN3, cWnd)
j := cWnd + '_Frame_Text3'
t := "Hello Frame 3"
y := _HMG_aControlRow [ i ] + 10
x := _HMG_aControlCol [ i ] + 10
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

END WINDOW

ACTIVATE WINDOW &cWnd

Return

/* C функции, если их нет
HB_FUNC( GETCLIENTWIDTH )
{
RECT rect;

GetClientRect( ( HWND ) hb_parnl(1), &rect );
hb_retni( ( INT ) rect.right - rect.left );
}

HB_FUNC( GETCLIENTHEIGHT )
{
RECT rect;

GetClientRect( ( HWND ) hb_parnl(1), &rect );
hb_retni( ( INT ) rect.bottom - rect.top );
}
*/


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 76
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.01.13 16:01. Заголовок: Andrey пишет:Я бы не..


Andrey пишет:
 цитата:
Я бы не додумался ...


В MiniGUI.chm есть раздел Timer (Controls Command) и в конце описания (и так практически везде) есть:
 
PROPERTIES (свойства): // GetProperty(...) или SetProperty(...) используем
...
EVENTS (события): // вызываются сами в определенных местах
...
METHODS (методы): // DoMethod(...) используем
...

Здесь смотрим, что есть в компонентах и пляшем отсюда ...


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2556
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.01.13 16:18. Заголовок: SergKis пишет: /* C..


Спасибо БОЛЬШОЕ !
Программа заработала..
А как бы сделать динамически эту заливку ?
А то когда форму раздвигаешь, то белый цвет появляется ....


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 77
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.01.13 17:52. Заголовок: Andrey пишет:когда ф..


Andrey пишет:
 цитата:
когда форму раздвигаешь ...


Вопрос Resize довольно сложный ... Мы решаем в основном за счет изменения размеров Browse, оставляя остальные части неизменными или как в данном примере - за счет нижней части:
 
#include "minigui.ch"

Function Main()
Local i,j,y,x,w,h,t
Local cWnd,hWnd,nCliW,nCliH
Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1,aLblC1
Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2,aLblC2
Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3,aLblC3

cWnd := "MyWnd"

DEFINE WINDOW &cWnd ;
AT 40, 50 ;
WIDTH 480 ;
HEIGHT 410 ;
TITLE 'Test Label box' ;
MAIN ;
ON SIZE ReSize() ;
ON MAXIMIZE ReSize()

hWnd := GetFormHandle(cWnd)
nCliW := GetClientWidth (hWnd)
nCliH := GetClientHeight(hWnd)

cLblN1 := cWnd + '_Frame_Lbl1'
nLblW1 := nCliW
nLblH1 := int(nCliH * 0.4)
nLblY1 := 0
nLblX1 := 0
aLblC1 := {251, 250, 174}

cLblN2 := cWnd + '_Frame_Lbl2'
nLblW2 := nCliW
nLblH2 := int(nCliH * 0.2)
nLblY2 := nLblY1 + nLblH1
nLblX2 := nLblX1
aLblC2 := {255, 0, 255}

cLblN3 := cWnd + '_Frame_Lbl3'
nLblW3 := nCliW
nLblH3 := nCliH - (nLblH1 + nLblH2)
nLblY3 := nLblY2 + nLblH2
nLblX3 := nLblX1
aLblC3 := {178, 227, 137}

@ nLblY1, nLblX1 LABEL &cLblN1 VALUE "" OF &cWnd ;
WIDTH nLblW1 HEIGHT nLblH1 ;
BACKCOLOR aLblC1 BORDER CLIENTEDGE

i := GetControlIndex(cLblN1, cWnd)
j := cWnd + '_Frame_Text1'
t := "Hello Frame 1"
y := _HMG_aControlRow [ i ] + 10
x := _HMG_aControlCol [ i ] + 10
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

@ nLblY2, nLblX2 LABEL &cLblN2 VALUE "" OF &cWnd ;
WIDTH nLblW2 HEIGHT nLblH2 ;
BACKCOLOR aLblC2 BORDER CLIENTEDGE

i := GetControlIndex(cLblN2, cWnd)
j := cWnd + '_Frame_Text2'
t := "Hello Frame 2"
y := _HMG_aControlRow [ i ] + 10
x := _HMG_aControlCol [ i ] + 10
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

@ nLblY3, nLblX3 LABEL &cLblN3 VALUE "" OF &cWnd ;
WIDTH nLblW3 HEIGHT nLblH3 ;
BACKCOLOR aLblC3 BORDER CLIENTEDGE

i := GetControlIndex(cLblN3, cWnd)
j := cWnd + '_Frame_Text3'
t := "Hello Frame 3"
y := _HMG_aControlRow [ i ] + 10
x := _HMG_aControlCol [ i ] + 10
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

END WINDOW

ACTIVATE WINDOW &cWnd

Return

Function ReSize()
Local cWnd,hWnd,nCliW,nCliH
Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1
Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2
Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3

cWnd := _HMG_ThisFormName
hWnd := _HMG_aFormHandles [ _HMG_ThisFormIndex ]

nCliW := GetClientWidth (hWnd)
nCliH := GetClientHeight(hWnd)

cLblN1 := cWnd + '_Frame_Lbl1'
nLblW1 := nCliW

cLblN2 := cWnd + '_Frame_Lbl2'
nLblW2 := nCliW

cLblN3 := cWnd + '_Frame_Lbl3'
nLblW3 := nCliW
nLblH3 := nCliH - ( GetProperty(cWnd, cLblN1, "Height") + ;
GetProperty(cWnd, cLblN2, "Height") )

SetProperty(cWnd, cLblN1, "Width" , nLblW1)
SetProperty(cWnd, cLblN2, "Width" , nLblW2)

SetProperty(cWnd, cLblN3, "Width" , nLblW3)
SetProperty(cWnd, cLblN3, "Height", nLblH3)

Return


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2557
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.01.13 18:05. Заголовок: SergKis пишет: Вопр..


SergKis пишет:

 цитата:
Вопрос Resize довольно сложный ...



Спасибо БОЛЬШОЕ ! То что надо !!!
Очень многое Вы мне прояснили....
Очень жалко что нет таких примеров в поставке Минигуи !

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 78
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.01.13 18:15. Заголовок: Andrey пишет:Очень м..


Andrey пишет:
 цитата:
Очень многое Вы мне прояснили....


Рад был помочь. Сами недавно сталкивались с такими вопросами. Помогла работа на VO.
Andrey пишет:
 цитата:
Очень жалко что нет таких примеров в поставке Минигуи !


Оформите и отдайте Григорию, если он сочтет полезным - включит.

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 440
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 15.01.13 18:37. Заголовок: Andrey пишет: Очень..


Andrey пишет:

 цитата:
Очень жалко что нет таких примеров в поставке Минигуи


Ну, почему же нет ?
Подобный пример использования события ON RESIZE есть в папке samples\Basic\GetClientSize

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2558
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.01.13 18:56. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Подобный пример использования события ON RESIZE есть в папке samples\Basic\GetClientSize


Ой, не нашел...
Спасибо Григорий !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2559
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 15.01.13 19:41. Заголовок: Видоизменил 1-ый при..


Видоизменил 1-ый пример (без RESIZE), положил на форму 3 кнопки.
Не работают эти новые кнопки !!!
Что не так делаю ?

Скрытый текст


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 79
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.01.13 21:21. Заголовок: Andrey пишет:Не рабо..


Andrey пишет:
 цитата:
Не работают эти новые кнопки !!!


Работает пример:
 
#include "minigui.ch"

Function Main()
Local i,j,y,x,w,h,t
Local cWnd,hWnd,nCliW,nCliH
Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1,aLblC1
Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2,aLblC2
Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3,aLblC3

cWnd := "MyWnd"

DEFINE WINDOW &cWnd ;
AT 40, 50 ;
WIDTH 480 ;
HEIGHT 410 ;
TITLE 'Test Label box' ;
MAIN ;
ON SIZE ReSize() ;
ON MAXIMIZE ReSize()

hWnd := GetFormHandle(cWnd)
nCliW := GetClientWidth (hWnd)
nCliH := GetClientHeight(hWnd)

cLblN1 := cWnd + '_Frame_Lbl1'
nLblW1 := nCliW
nLblH1 := int(nCliH * 0.4)
nLblY1 := 0
nLblX1 := 0
aLblC1 := {251, 250, 174}

cLblN2 := cWnd + '_Frame_Lbl2'
nLblW2 := nCliW
nLblH2 := int(nCliH * 0.2)
nLblY2 := nLblY1 + nLblH1
nLblX2 := nLblX1
aLblC2 := {255, 0, 255}

cLblN3 := cWnd + '_Frame_Lbl3'
nLblW3 := nCliW
nLblH3 := nCliH - (nLblH1 + nLblH2)
nLblY3 := nLblY2 + nLblH2
nLblX3 := nLblX1
aLblC3 := {178, 227, 137}

@ nLblY1, nLblX1 LABEL &cLblN1 VALUE "" OF &cWnd ;
WIDTH nLblW1 HEIGHT nLblH1 ;
BACKCOLOR aLblC1 BORDER CLIENTEDGE

i := GetControlIndex(cLblN1, cWnd)
j := cWnd + '_Frame_Text1'
t := "Hello Frame 1"
y := _HMG_aControlRow [ i ] + 10
x := _HMG_aControlCol [ i ] + 10
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

x += 10 + GetProperty(cWnd, j, "Width")
j := cWnd + '_Frame_Btn1_Ok'

@ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ;
ACTION ( SetProperty(cWnd, "Label_1", "Value", "LINE"), ;
SetProperty(cWnd, "Label_2", "Value", "ON" ) )

@ nLblY2, nLblX2 LABEL &cLblN2 VALUE "" OF &cWnd ;
WIDTH nLblW2 HEIGHT nLblH2 ;
BACKCOLOR aLblC2 BORDER CLIENTEDGE

i := GetControlIndex(cLblN2, cWnd)
j := cWnd + '_Frame_Text2'
t := "Hello Frame 2"
y := _HMG_aControlRow [ i ] + 10
x := _HMG_aControlCol [ i ] + 10
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

x += 10 + GetProperty(cWnd, j, "Width")
j := cWnd + '_Frame_Btn2_Ok'

@ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ;
ACTION ( SetProperty(cWnd, "Label_1", "Value", "BORDER"), ;
SetProperty(cWnd, "Label_2", "Value", "OFF" ) )

@ nLblY3, nLblX3 LABEL &cLblN3 VALUE "" OF &cWnd ;
WIDTH nLblW3 HEIGHT nLblH3 ;
BACKCOLOR aLblC3 BORDER CLIENTEDGE

i := GetControlIndex(cLblN3, cWnd)
j := cWnd + '_Frame_Text3'
t := "Hello Frame 3"
y := _HMG_aControlRow [ i ] + 10
x := _HMG_aControlCol [ i ] + 10
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

x += 10 + GetProperty(cWnd, j, "Width")
j := cWnd + '_Frame_Btn3_Ok'

@ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ;
ACTION ( MsgInfo("Press button "+j) )

@ 40, 110 LABEL Label_1 VALUE 'BORDER:' ;
WIDTH w HEIGHT h ;
BACKCOLOR aLblC1

@ 70, 110 LABEL Label_2 VALUE 'OFF' ;
WIDTH w HEIGHT h ;
BACKCOLOR aLblC1

END WINDOW

ACTIVATE WINDOW &cWnd

Return

Function ReSize()
Local cWnd,hWnd,nCliW,nCliH
Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1
Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2
Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3

cWnd := _HMG_ThisFormName
hWnd := _HMG_aFormHandles [ _HMG_ThisFormIndex ]

nCliW := GetClientWidth (hWnd)
nCliH := GetClientHeight(hWnd)

cLblN1 := cWnd + '_Frame_Lbl1'
nLblW1 := nCliW

cLblN2 := cWnd + '_Frame_Lbl2'
nLblW2 := nCliW

cLblN3 := cWnd + '_Frame_Lbl3'
nLblW3 := nCliW
nLblH3 := nCliH - ( GetProperty(cWnd, cLblN1, "Height") + ;
GetProperty(cWnd, cLblN2, "Height") )

SetProperty(cWnd, cLblN1, "Width" , nLblW1)
SetProperty(cWnd, cLblN2, "Width" , nLblW2)

SetProperty(cWnd, cLblN3, "Width" , nLblW3)
SetProperty(cWnd, cLblN3, "Height", nLblH3)

Return

Andrey пишет:

 цитата:

ACTION { || SetProperty(cWnd, cLblN3, "BORDER" , .T.), SetProperty(cWnd, "Label_2", "Value" , "ON" ) }


Что такое SetProperty(cWnd, cLblN3, "BORDER" , .T.) ?
Мы AUTOSIZE не используем в нашей версии он глючит при отображении ...


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 80
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 15.01.13 21:27. Заголовок: Andrey пишет:Не нрав..


Andrey пишет:
 цитата:
Не нравиться порядок написания программ в МиниГуи... уж очень растянуто получается...
Подскажите можно ли как то уменьшить или изменить это ?


Можно пойти по такому пути: Скрытый текст


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2560
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.01.13 05:43. Заголовок: SergKis пишет: Что ..


SergKis пишет:

 цитата:
Что такое SetProperty(cWnd, cLblN3, "BORDER" , .T.) ?



Да я хотел на кнопку повесить включение/отключение бордюра ..... BORDER CLIENTEDGE
как в примере MiniGUI\SAMPLES\BASIC\BLINK
Только по доку потом увидел что нет такого свойства у LABEL .... А жалко...

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 81
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.01.13 11:42. Заголовок: Andrey пишет:А жалко..


Andrey пишет:
 цитата:
А жалко..


Вы хотите типа такое:
 
#include "minigui.ch"

Function Main()
Local i,j,y,x,w,h,t
Local cWnd,hWnd,nCliW,nCliH,nGapsW,nGapsH
Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1,aLblC1
Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2,aLblC2
Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3,aLblC3

cWnd := "MyWnd"
nGapsW := 14
nGapsH := 14

DEFINE WINDOW &cWnd ;
AT 40, 50 ;
WIDTH 480 ;
HEIGHT 410 ;
TITLE 'Test Label box' ;
MAIN ;
ON SIZE ReSize() ;
ON MAXIMIZE ReSize()

hWnd := GetFormHandle(cWnd)
nCliW := GetClientWidth (hWnd)
nCliH := GetClientHeight(hWnd)

cLblN1 := cWnd + '_Frame_Lbl1'
nLblW1 := nCliW
nLblH1 := int(nCliH * 0.4)
nLblY1 := 0
nLblX1 := 0
aLblC1 := {251, 250, 174}

cLblN2 := cWnd + '_Frame_Lbl2'
nLblW2 := nCliW
nLblH2 := int(nCliH * 0.2)
nLblY2 := nLblY1 + nLblH1
nLblX2 := nLblX1
aLblC2 := {255, 0, 255}

cLblN3 := cWnd + '_Frame_Lbl3'
nLblW3 := nCliW
nLblH3 := nCliH - (nLblH1 + nLblH2)
nLblY3 := nLblY2 + nLblH2
nLblX3 := nLblX1
aLblC3 := {178, 227, 137}

@ nLblY1, nLblX1 LABEL &cLblN1 VALUE "" OF &cWnd ;
WIDTH nLblW1 HEIGHT nLblH1 ;
BACKCOLOR aLblC1 BORDER CLIENTEDGE

i := GetControlIndex(cLblN1, cWnd)

y := 0
x := int(nGapsH / 2)
w := GetClientWidth (_HMG_aControlHandles [ i ]) - int(nGapsW / 2)
h := GetClientHeight(_HMG_aControlHandles [ i ])

@ y, x FRAME &( cWnd + '_Frame_Frm1' ) CAPTION "" ;
WIDTH w HEIGHT h ;
OPAQUE


j := cWnd + '_Frame_Text1'
t := "Hello Frame 1"
y := _HMG_aControlRow [ i ] + nGapsH
x := _HMG_aControlCol [ i ] + nGapsW
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

x += 10 + GetProperty(cWnd, j, "Width")
j := cWnd + '_Frame_Btn1_Ok'

@ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ;
ACTION ( SetProperty(cWnd, "Label_1", "Value", "LINE"), ;
SetProperty(cWnd, "Label_2", "Value", "ON" ) )

@ nLblY2, nLblX2 LABEL &cLblN2 VALUE "" OF &cWnd ;
WIDTH nLblW2 HEIGHT nLblH2 ;
BACKCOLOR aLblC2 BORDER CLIENTEDGE

i := GetControlIndex(cLblN2, cWnd)
j := cWnd + '_Frame_Text2'
t := "Hello Frame 2"
y := _HMG_aControlRow [ i ] + nGapsH
x := _HMG_aControlCol [ i ] + nGapsW
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

x += 10 + GetProperty(cWnd, j, "Width")
j := cWnd + '_Frame_Btn2_Ok'

@ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ;
ACTION ( SetProperty(cWnd, "Label_1", "Value", "BORDER"), ;
SetProperty(cWnd, "Label_2", "Value", "OFF" ) )

@ nLblY3, nLblX3 LABEL &cLblN3 VALUE "" OF &cWnd ;
WIDTH nLblW3 HEIGHT nLblH3 ;
BACKCOLOR aLblC3 BORDER CLIENTEDGE

i := GetControlIndex(cLblN3, cWnd)
j := cWnd + '_Frame_Text3'
t := "Hello Frame 3"
y := _HMG_aControlRow [ i ] + nGapsH
x := _HMG_aControlCol [ i ] + nGapsW
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

x += 10 + GetProperty(cWnd, j, "Width")
j := cWnd + '_Frame_Btn3_Ok'

@ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ;
ACTION ( SetProperty(cWnd, cWnd + '_Frame_Frm1', "Visible", ;
! GetProperty(cWnd, cWnd + '_Frame_Frm1', "Visible")) )
// ACTION ( MsgInfo("Press button "+j) )

@ 40, 110 LABEL Label_1 VALUE 'BORDER:' ;
WIDTH w HEIGHT h ;
BACKCOLOR aLblC1

@ 70, 110 LABEL Label_2 VALUE 'OFF' ;
WIDTH w HEIGHT h ;
BACKCOLOR aLblC1

END WINDOW

ACTIVATE WINDOW &cWnd

Return

Function ReSize()
Local cWnd,hWnd,nCliW,nCliH
Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1
Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2
Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3

cWnd := _HMG_ThisFormName
hWnd := _HMG_aFormHandles [ _HMG_ThisFormIndex ]

nCliW := GetClientWidth (hWnd)
nCliH := GetClientHeight(hWnd)

cLblN1 := cWnd + '_Frame_Lbl1'
nLblW1 := nCliW

cLblN2 := cWnd + '_Frame_Lbl2'
nLblW2 := nCliW

cLblN3 := cWnd + '_Frame_Lbl3'
nLblW3 := nCliW
nLblH3 := nCliH - ( GetProperty(cWnd, cLblN1, "Height") + ;
GetProperty(cWnd, cLblN2, "Height") )

SetProperty(cWnd, cLblN1, "Width" , nLblW1)
SetProperty(cWnd, cLblN2, "Width" , nLblW2)

SetProperty(cWnd, cLblN3, "Width" , nLblW3)
SetProperty(cWnd, cLblN3, "Height", nLblH3)

Return

Можно смотреть в сторону команд (i_graph.ch):
DRAW LINE IN WINDOW ...
DRAW RECTANGLE IN WINDOW ...



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2561
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.01.13 14:09. Заголовок: А как тогда сделать ..


А как тогда сделать перерисовку всего лабела ?
Типа:
IF nFlagBorder == 1
@ nLblY1, nLblX1 LABEL &cLblN1 VALUE "" OF &cWnd ;
WIDTH nLblW1 HEIGHT nLblH1 ;
BACKCOLOR aLblC1
ELSEIF nFlagBorder == 2
@ nLblY1, nLblX1 LABEL &cLblN1 VALUE "" OF &cWnd ;
WIDTH nLblW1 HEIGHT nLblH1 ;
BACKCOLOR aLblC1 BORDER
ELSEIF nFlagBorder == 3
@ nLblY1, nLblX1 LABEL &cLblN1 VALUE "" OF &cWnd ;
WIDTH nLblW1 HEIGHT nLblH1 ;
BACKCOLOR aLblC1 BORDER CLIENTEDGE
ENDIF



Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 82
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.01.13 16:01. Заголовок: Andrey пишет:А как т..


Andrey пишет:
 цитата:
А как тогда сделать перерисовку всего лабела ?


Пример:
 
#include "minigui.ch"

Function Main()
Local i,j,y,x,w,h,t
Local cWnd,hWnd,nCliW,nCliH,nGapsW,nGapsH
Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1,aLblC1
Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2,aLblC2
Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3,aLblC3

cWnd := "MyWnd"
nGapsW := 14
nGapsH := 14

DEFINE WINDOW &cWnd ;
AT 40, 50 ;
WIDTH 480 ;
HEIGHT 410 ;
TITLE 'Test Label box' ;
MAIN ;
NOMINIMIZE ;
NOMAXIMIZE ;
NOSIZE
// ON SIZE ReSize() ;
// ON MAXIMIZE ReSize()

hWnd := GetFormHandle(cWnd)
nCliW := GetClientWidth (hWnd)
nCliH := GetClientHeight(hWnd)

cLblN1 := cWnd + '_Frame_Lbl1'
nLblW1 := nCliW
nLblH1 := int(nCliH * 0.4)
nLblY1 := 0
nLblX1 := 0
aLblC1 := {251, 250, 174}

cLblN2 := cWnd + '_Frame_Lbl2'
nLblW2 := nCliW
nLblH2 := int(nCliH * 0.2)
nLblY2 := nLblY1 + nLblH1
nLblX2 := nLblX1
aLblC2 := {255, 0, 255}

cLblN3 := cWnd + '_Frame_Lbl3'
nLblW3 := nCliW
nLblH3 := nCliH - (nLblH1 + nLblH2)
nLblY3 := nLblY2 + nLblH2
nLblX3 := nLblX1
aLblC3 := {178, 227, 137}

@ nLblY1, nLblX1 LABEL &( cLblN1 + "1") VALUE "" OF &cWnd ;
WIDTH nLblW1 HEIGHT nLblH1 ;
BACKCOLOR aLblC1 BORDER CLIENTEDGE

SetProperty(cWnd, cLblN1 + "1", "Visible", .F.)

@ nLblY1, nLblX1 LABEL &( cLblN1 + "0") VALUE "" OF &cWnd ;
WIDTH nLblW1 HEIGHT nLblH1 ;
BACKCOLOR aLblC1 // BORDER CLIENTEDGE

i := GetControlIndex(cLblN1 + "0", cWnd)

j := cWnd + '_Frame_Text1'
t := "Hello Frame 1"
y := _HMG_aControlRow [ i ] + nGapsH
x := _HMG_aControlCol [ i ] + nGapsW
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

x += 10 + GetProperty(cWnd, j, "Width")
j := cWnd + '_Frame_Btn1_Ok'

@ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ;
ACTION ( SetProperty(cWnd, "Label_1", "Value", "LINE"), ;
SetProperty(cWnd, "Label_2", "Value", "ON" ) )

@ nLblY2, nLblX2 LABEL &cLblN2 VALUE "" OF &cWnd ;
WIDTH nLblW2 HEIGHT nLblH2 ;
BACKCOLOR aLblC2 BORDER CLIENTEDGE

i := GetControlIndex(cLblN2, cWnd)
j := cWnd + '_Frame_Text2'
t := "Hello Frame 2"
y := _HMG_aControlRow [ i ] + nGapsH
x := _HMG_aControlCol [ i ] + nGapsW
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

x += 10 + GetProperty(cWnd, j, "Width")
j := cWnd + '_Frame_Btn2_Ok'

@ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ;
ACTION ( SetProperty(cWnd, "Label_1", "Value", "BORDER"), ;
SetProperty(cWnd, "Label_2", "Value", "OFF" ) )

@ nLblY3, nLblX3 LABEL &cLblN3 VALUE "" OF &cWnd ;
WIDTH nLblW3 HEIGHT nLblH3 ;
BACKCOLOR aLblC3 BORDER CLIENTEDGE

i := GetControlIndex(cLblN3, cWnd)
j := cWnd + '_Frame_Text3'
t := "Hello Frame 3"
y := _HMG_aControlRow [ i ] + nGapsH
x := _HMG_aControlCol [ i ] + nGapsW
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

x += 10 + GetProperty(cWnd, j, "Width")
j := cWnd + '_Frame_Btn3_Ok'

@ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ;
ACTION ( SetProperty(cWnd, cLblN1 + "0", "Visible", ! GetProperty(cWnd, cLblN1 + "0", "Visible")), ;
SetProperty(cWnd, cLblN1 + '1', "Visible", ! GetProperty(cWnd, cLblN1 + "1", "Visible")), ;
Lbl1Refr() )

@ 40, 110 LABEL Label_1 VALUE 'BORDER:' ;
WIDTH w HEIGHT h ;
BACKCOLOR aLblC1

@ 70, 110 LABEL Label_2 VALUE 'OFF' ;
WIDTH w HEIGHT h ;
BACKCOLOR aLblC1

END WINDOW

ACTIVATE WINDOW &cWnd

Return

Function Lbl1Refr()
Local cWnd := _HMG_ThisFormName

DoMethod(cWnd, cWnd + '_Frame_Text1', "Refresh")
SetProperty(cWnd, cWnd + '_Frame_Btn1_Ok', "Enabled", .T.)

Return


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2562
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.01.13 18:00. Заголовок: Нет, не перерисовыва..


Нет, не перерисовывается ! Кнопка закрыта и все !
Вот даже если взять предыдущий пример, кнопка Cancel - не работает !
А почему ?

Скрытый текст


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 83
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.01.13 22:40. Заголовок: Andrey пишет:не рабо..


Andrey пишет:
 цитата:
не работает


Собрал примеры
Сборка hb20, msvc, miniGui 2.07 сборка своя.
В Label след.изменения:
 
Function OLABELEVENTS( hWnd, nMsg, wParam, lParam )
*-----------------------------------------------------------------------------*
Local i := ascan ( _HMG_aControlHandles, hWnd )

HB_SYMBOL_UNUSED( wParam )
HB_SYMBOL_UNUSED( lParam )

if i > 0

If nMsg == WM_MOUSEMOVE
_DoControlEventProcedure ( _HMG_aControlGotFocusProcedure , i )

ElseIf nMsg == WM_MOUSELEAVE
_DoControlEventProcedure ( _HMG_aControlLostFocusProcedure , i )

ElseIf nMsg == WM_HMG_NOTIFY_LBL // BAA
IF ValType( _HMG_aControlMiscData1 [4] )=='B'
_DoControlEventProcedure( _HMG_aControlMiscData1[4], i )
ELSE
MoveWindow( _HMG_aControlHandles, ; // hWnd
_HMG_aControlCol, ; // X
_HMG_aControlRow, ; // Y
_HMG_aControlWidth, ; // W
_HMG_aControlHeight, .T. ) // W

SetWindowText( _HMG_aControlHandles, ; // hWnd
_HMG_aControlCaption ) // Text
ENDIF
EndIf

endif

Return 0


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 84
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 16.01.13 23:00. Заголовок: В догонку. Еще измен..


В догонку. Еще изменен h_label.prg:
 
Function _DefineLabel (...)
...
_HMG_aControlMiscData1 [k] := ;
{ 0, ;
blink, ; // 2. .T. - нужно моргать
.T., ; // 3. .T./.F. - при моргании состояние Вкл./Выкл.
NIL } // 4. Блок или NIL - выполнить перепоказ имея в виду что возможно изменились x,y,w,h текст

// 4. Блок или NIL - выполнить ... в данных примерах не использовалось.


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 85
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.01.13 08:43. Заголовок: И еще вдогонку: #def..


И еще вдогонку:
#define WM_APP 0x8000 // Это WinAPI

#define WM_HMG_NOTIFY (WM_APP+100)
#define WM_HMG_NOTIFY_LBL (WM_HMG_NOTIFY+1) // Перепоказ для Label



Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 86
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.01.13 09:23. Заголовок: Andrey пишет:не рабо..


Andrey пишет:
 цитата:
не работает


Каюсь. Совсем забыл об изменениях, сделанных в своей сборке, но это было май-июнь прошлого года. Если Григорий почитает это полезным, то:
// 4. Блок или NIL - выполнить перепоказ ... - это блок кода, вызываемый при изменении (например текста) в котором можно обновить данные других контролов, связанных с измененным Label. Например при смене кода карточки запустить перепоказ остальных данных по ней.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2563
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.01.13 12:37. Заголовок: SergKis пишет: Каюс..


SergKis пишет:

 цитата:
Каюсь. Совсем забыл об изменениях, сделанных в своей сборке, но это было май-июнь прошлого года.


А я уж думал совсем заработался... У вас работает , а у меня нет... Ну уж я не совсем криворукий...
Так что же делать ?
SergKis пишет:

 цитата:
Если Григорий почитает это полезным


Присоединяюсь ! Большая просьба внести это изменение !!!

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 87
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.01.13 13:54. Заголовок: Andrey в сборке прим..


Andrey в сборке примеров, как ведет себя demo.exe (demo.prg) - нормально работает или нет (рамка на первом Label меняется по нижней кнопке Ok) ?
Если да, то у Вас тоже сборка должна работать ( нет ReSize() ). Попробуйте.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 88
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.01.13 14:04. Заголовок: SergKis пишет:это бл..


SergKis пишет:
 цитата:
это блок кода, вызываемый при изменении ...


Я поговорил со своим товарищем - это были мысль неправильная, по знаниям на май прошлого года, нигде не примененная.
Короче, эту отсебятину надо игнорировать. А нормальный ON CHANGE не помешал бы.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 89
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.01.13 18:11. Заголовок: SergKis пишет:В Labe..


SergKis пишет:
 цитата:
В Label след.изменения:
Function OLABELEVENTS(...)
...
MoveWindow( _HMG_aControlHandles [ i ], ; // hWnd
_HMG_aControlCol [ i ], ; // X
_HMG_aControlRow [ i ], ; // Y
_HMG_aControlWidth [ i ], ; // W
_HMG_aControlHeight [ i ], .T. ) // W

SetWindowText( _HMG_aControlHandles [ i ], ; // hWnd
_HMG_aControlCaption [ i ] ) // Text



Сам в ночи запутался и других путаю. Сейчас спокойно посмотрел - эти изменения никакого отношения к resze не имеют.
Это ускоренный вариант вместо SetProperty(cForm, cControl, "Value", "Text label") (длинная цепочка команд). На форме много Label, Browse с OnChage заменяет данные в Label-ах по стандартному SetProperty(...) очень медленно. На медленных PC еле ползает.
Поэтому мы применяем такой ускоренный вариант в OnChange замены текста в Label:
i := GetControlIndex(cLabelName, cFormName)
_HMG_aControlCaption [ i ] := "New text label"
h := PostMessage( _HMG_aControlHandles [ i ], WM_HMG_NOTIFY_LBL, 0, 0 )
и выполняется в OLABELEVENTS(...) ElseIf nMsg == WM_HMG_NOTIFY_LBL.
Эти команды не на виду (лежат в libe) и поэтому куда-то меня вчера унесло. Извиняте товарищи ...

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2564
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.01.13 21:03. Заголовок: SergKis пишет: как ..


SergKis пишет:

 цитата:
как ведет себя demo.exe (demo.prg) - нормально работает или нет (рамка на первом Label меняется по нижней кнопке Ok)


Да, нормально работает !




Только собранная на стандартном MiniGUI Extended Edition 2.1.8 - 2012.12.12
НЕ РАБОТАЕТ !

А что делать с моим примером ?
Почему не работает положенная на Label кнопка Cancel или Message ?
Скрытый текст

Как сделать чтоб кнопки заработали в стандартном MiniGUI Extended Edition 2.1.8 - 2012.12.12 ???


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 90
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 17.01.13 23:53. Заголовок: Andrey пишет:А что д..


Andrey пишет:
 цитата:
А что делать с моим примером ?


В моей сборке это DemoA.exe (prg не положил в архив). Думаю он работает.
Почему не работает demo.prg на сборке 2.1.8. не знаю. Одна панель Visible := .F. (с окантовкой), вторая Visible := .T. (без окантовки) по кнопке меняем Visible := ! Visible у обоих панелей. Возможно Visible не вызывает Refresh ?
Попробуйте:
 
@ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ;
ACTION ( SetProperty(cWnd, cLblN1 + "0", "Visible", ! GetProperty(cWnd, cLblN1 + "0", "Visible")), ;
SetProperty(cWnd, cLblN1 + '1', "Visible", ! GetProperty(cWnd, cLblN1 + "1", "Visible")), ;
DoMethod(cWnd, cLblN1 + iif(GetProperty(cWnd, cLblN1+"1", "Visible"), "1", "0"), "Refresh"), ;
Lbl1Refr() )



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2565
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.01.13 09:12. Заголовок: SergKis пишет: В мо..


SergKis пишет:

 цитата:
В моей сборке это DemoA.exe (prg не положил в архив). Думаю он работает.


Да он у меня тоже работает. А можете PRG выложить ?


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 91
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.01.13 10:00. Заголовок: Andrey пишет:А может..


Andrey пишет:
 цитата:
А можете PRG выложить ?


 
#include "minigui.ch"

Function Main()
Local i,j,y,x,w,h,t
Local cWnd,hWnd,nCliW,nCliH
Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1,aLblC1
Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2,aLblC2
Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3,aLblC3

cWnd := "MyWnd"

DEFINE WINDOW &cWnd ;
AT 40, 50 ;
WIDTH 480 ;
HEIGHT 410 ;
MINWIDTH 480 MINHEIGHT 410 ;
TITLE 'Test Label box' ;
MAIN ;
ON SIZE ReSize() ;
ON MAXIMIZE ReSize()

hWnd := GetFormHandle(cWnd)
nCliW := GetClientWidth (hWnd)
nCliH := GetClientHeight(hWnd)

cLblN1 := cWnd + '_Frame_Lbl1'
nLblW1 := nCliW
nLblH1 := int(nCliH * 0.4)
nLblY1 := 0
nLblX1 := 0
aLblC1 := {251, 250, 174}

cLblN2 := cWnd + '_Frame_Lbl2'
nLblW2 := nCliW
nLblH2 := int(nCliH * 0.2)
nLblY2 := nLblY1 + nLblH1
nLblX2 := nLblX1
aLblC2 := {255, 0, 255}

cLblN3 := cWnd + '_Frame_Lbl3'
nLblW3 := nCliW
nLblH3 := nCliH - (nLblH1 + nLblH2)
nLblY3 := nLblY2 + nLblH2
nLblX3 := nLblX1
aLblC3 := {178, 227, 137}

@ nLblY1, nLblX1 LABEL &cLblN1 VALUE "" OF &cWnd ;
WIDTH nLblW1 HEIGHT nLblH1 ;
BACKCOLOR aLblC1 BORDER CLIENTEDGE

i := GetControlIndex(cLblN1, cWnd)
j := cWnd + '_Frame_Text1'
t := "Hello Frame 1"
y := _HMG_aControlRow [ i ] + 10
x := _HMG_aControlCol [ i ] + 10
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

@ nLblY2, nLblX2 LABEL &cLblN2 VALUE "" OF &cWnd ;
WIDTH nLblW2 HEIGHT nLblH2 ;
BACKCOLOR aLblC2 BORDER CLIENTEDGE

i := GetControlIndex(cLblN2, cWnd)
j := cWnd + '_Frame_Text2'
t := "Hello Frame 2"
y := _HMG_aControlRow [ i ] + 10
x := _HMG_aControlCol [ i ] + 10
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h

@ nLblY3, nLblX3 LABEL &cLblN3 VALUE "" OF &cWnd ;
WIDTH nLblW3 HEIGHT nLblH3 ;
BACKCOLOR aLblC3 BORDER CLIENTEDGE

i := GetControlIndex(cLblN3, cWnd)
j := cWnd + '_Frame_Text3'
t := "Hello Frame 3"
y := _HMG_aControlRow [ i ] + 10
x := _HMG_aControlCol [ i ] + 10
w := 100
h := 24

@ y, x LABEL &( j ) VALUE t WIDTH w HEIGHT h


@ nCliH - 40 , nCliW - 120 BUTTON Button_3 CAPTION 'Cancel' ;
ACTION ThisWindow.Release


END WINDOW

ACTIVATE WINDOW &cWnd

Return

Function ReSize()
Local cWnd,hWnd,nCliW,nCliH
Local cLblN1,nLblW1,nLblH1,nLblY1,nLblX1
Local cLblN2,nLblW2,nLblH2,nLblY2,nLblX2
Local cLblN3,nLblW3,nLblH3,nLblY3,nLblX3

cWnd := _HMG_ThisFormName
hWnd := _HMG_aFormHandles [ _HMG_ThisFormIndex ]

nCliW := GetClientWidth (hWnd)
nCliH := GetClientHeight(hWnd)

cLblN1 := cWnd + '_Frame_Lbl1'
nLblW1 := nCliW

cLblN2 := cWnd + '_Frame_Lbl2'
nLblW2 := nCliW

cLblN3 := cWnd + '_Frame_Lbl3'
nLblW3 := nCliW
nLblH3 := nCliH - ( GetProperty(cWnd, cLblN1, "Height") + ;
GetProperty(cWnd, cLblN2, "Height") )

SetProperty(cWnd, cLblN1, "Width" , nLblW1)
SetProperty(cWnd, cLblN2, "Width" , nLblW2)

SetProperty(cWnd, cLblN3, "Width" , nLblW3)
SetProperty(cWnd, cLblN3, "Height", nLblH3)
// сдвиг кнопки Button_3
SetProperty(cWnd, "Button_3", "Row", nCliH - 40 )
SetProperty(cWnd, "Button_3", "Col" , nCliW - 120 )

Return

/*
#pragma BEGINDUMP

#include <windows.h>
#include "hbapi.h"

HB_FUNC( GETCLIENTWIDTH )
{
RECT rect;

GetClientRect( ( HWND ) hb_parnl(1), &rect );
hb_retni( ( INT ) rect.right - rect.left );
}

HB_FUNC( GETCLIENTHEIGHT )
{
RECT rect;

GetClientRect( ( HWND ) hb_parnl(1), &rect );
hb_retni( ( INT ) rect.bottom - rect.top );
}

#pragma ENDDUMP
*/

он взят из Вашего поста где-то выше.
Andrey попробуйте у себя в demo.prg заменить текст кнопки третьей на текст:
 
@ y, x BUTTON &( j ) CAPTION "OK" WIDTH w HEIGHT h ;
ACTION ( SetProperty(cWnd, cLblN1 + "0", "Visible", ! GetProperty(cWnd, cLblN1 + "0", "Visible")), ;
SetProperty(cWnd, cLblN1 + '1', "Visible", ! GetProperty(cWnd, cLblN1 + "1", "Visible")), ;
DoMethod(cWnd, cLblN1 + iif(GetProperty(cWnd, cLblN1+"1", "Visible"), "1", "0"), "Refresh"), ; // new line
Lbl1Refr() )


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 92
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.01.13 10:04. Заголовок: SergKis пишет:в demo..


SergKis пишет:
 цитата:
в demo.prg заменить текст


demo.prg из архива моей сборки.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2566
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.01.13 10:14. Заголовок: SergKis пишет: он в..


SergKis пишет:

 цитата:
он взят из Вашего поста где-то выше.


Да это я помню.
Я его собрал заново на сборке 2.1.8. - НЕ РАБОТАЕТ !!!
Т.е. вы внесли изменения в свою сборку и теперь в стандартных сборках кнопки положенные на LABEL не работают, а у вас работает.
Правильно или нет ?


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 93
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.01.13 11:11. Заголовок: Andrey пишет:Правиль..


Andrey пишет:
 цитата:
Правильно или нет ?


Я взял Ваш текст prg из поста, закоментировал hb_fun GetClient...() (они в lib у меня), собрал demoA.exe и все.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 94
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.01.13 12:14. Заголовок: Andrey попробуйте со..


Andrey попробуйте собрать у себя пример:http://zalil.ru/34179692

Спасибо: 0 
Профиль
a_sidorov



Пост N: 30
Зарегистрирован: 07.06.08
ссылка на сообщение  Отправлено: 18.01.13 13:18. Заголовок: Это известная пробле..


Это известная проблема - Мышка в minigui работает на объекте, который положил раньше, то есть нижнем. Попробуй сделать nLblY1 := 50 , чтобы половина кнопки была не на label, тогда мышка будет работать на половине кнопки (верхней)

Спасибо: 0 
Профиль
a_sidorov



Пост N: 31
Зарегистрирован: 07.06.08
ссылка на сообщение  Отправлено: 18.01.13 13:49. Заголовок: Поставь самым первым..


Поставь самым первым объектом кнопку - тогда будет работать. То есть объект, на который должна срабатывать кнопка нужно класть на форму раньше. Мышка срабатывает не по видимости на экране, а по порядку выкладки на форму. Это неправильно, но это так.


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2567
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.01.13 14:28. Заголовок: a_sidorov пишет: Мы..


a_sidorov пишет:

 цитата:
Мышка срабатывает не по видимости на экране, а по порядку выкладки на форму. Это неправильно, но это так.


Спасибо БОЛЬШОЕ !!!

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 95
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.01.13 14:54. Заголовок: Andrey попробуйте со..


Andrey попробуйте собрать у себя этот пример и мне exe глянуть дайте ( если это возможно ? ): http://zalil.ru/34180183

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2568
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.01.13 15:31. Заголовок: Собрал. Вот он http:..

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 96
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 18.01.13 18:22. Заголовок: Andrey пишет:Собрал...


Andrey пишет:
 цитата:
Собрал.


Спасибо, не мог понять, что не работает. Думаю это к Григорию надо обращаться.
У нас ComboBox и GetBox (его мы правили) на таком Label работают.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2570
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.01.13 18:51. Заголовок: a_sidorov пишет: М..


a_sidorov пишет:

 цитата:
Мышка срабатывает не по видимости на экране, а по порядку выкладки на форму. Это неправильно, но это так.


SergKis пишет:

 цитата:
Думаю это к Григорию надо обращаться.


Григорий, подскажите что делать ?


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 441
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 18.01.13 19:33. Заголовок: Andrey пишет: Григо..


Andrey пишет:

 цитата:
Григорий, подскажите что делать ?


Хе-хе...
Я так понимаю, что SergKis удалось решить эту проблему в своей сборке
Так что ждем от него описание выполненных модификаций по поводу
Andrey пишет:

 цитата:
в стандартных сборках кнопки положенные на LABEL не работают




Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 97
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.01.13 00:18. Заголовок: gfilatof2002 пишет:Х..


gfilatof2002 пишет:
 цитата:
Хе-хе...


Я уже сам понял - надо у себя рыть и вспоминать, что меняли (воз и маленькую тележку) ...


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2573
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.01.13 01:41. Заголовок: Конечно если пользов..


Конечно если пользоваться MiniGUI\SAMPLES\Advanced\BosTaurus
то там есть хорошие и понятные функции:
BT_DrawLine (hDC, 0, 0, Height, Width, ORANGE, 5)
BT_DrawEllipse (hDC, 140, 200, 400, 230, WHITE, 5)
BT_DrawFillRectangle (hDC, 20, 250, 300, 100, ORANGE, RED, 3)
BT_DrawFillRoundRect (hDC, 400, 250, 300, 100, 10, 10, ORANGE, RED, 3)
и т.д.
Но для простых примеров хочется использовать обычные функции МиниГуи....

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2574
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.01.13 02:43. Заголовок: Имею такой код: DEF..


Имею такой код:
DEFINE WINDOW Form_7 ;
AT 0,0 ;
WIDTH 525 ;
HEIGHT IF(IsXPThemeActive(), 562, 562-4);
......

Как дальше определить MAXHEIGHT и MAXWIDTH окна ?
Вверху по примерам можно пользоваться для этого ВНЕШНИМИ функциями:
hWnd := GetFormHandle(cWnd)
nCliW := GetClientWidth (hWnd)
nCliH := GetClientHeight(hWnd)


Но я где то по примерам встречал более простое написание...
Типа такого:
x := _HMG_MouseCol
y := _HMG_MouseRow




Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 98
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 19.01.13 11:55. Заголовок: Andrey пишет:Как дал..


Andrey пишет:
 цитата:
Как дальше определить MAXHEIGHT и MAXWIDTH


Как я понимаю - это размеры, меньше которых, окно не может быть. Т.е. из default размеров контролов считаете эти значения, а пользователь может менять размеры окна и могут меняться размеры контролов со всеми последствиями.
Функции: GetClientWidth (hWnd), GetClientHeight(hWnd) дают внутренние (клиентская область) размеры окна, контрола - в зависимости от переданного handle.
Функции: GetWindowWidth (hWnd), GetWindowHeight(hWnd) дают внешние размеры окна, контрола - в зависимости от переданного handle и при их использовании для попадания в клиентскую область надо производить вычисления, используя GetBorderWidth(), GetBorderHeight(), GetTitleHeight(), ...
Используя GetWindowWidth (hWnd) для окна, получим Width клиентской области, для Label получим Width клиентской области контрола, ... и можно строить относительные координаты, для используемых контролов, в определенной плоскости и при необходимости изменения дизайна окна - достаточно переставлять плоскости, а не контролы.



Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 99
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 20.01.13 22:36. Заголовок: gfilatov2002 пишет:Т..


gfilatov2002 пишет:
 цитата:
Так что ждем от него описание выполненных модификаций ...


Вот они:
 
HB_FUNC( INITLABEL )
{
HWND hwnd;
HWND hbutton;

int Style = WS_CHILD; // | SS_NOTIFY убрали
...
if( hb_parl(10) )
Style = Style | SS_NOTIFY; // добавили
LabelOldWndProc = ( WNDPROC ) SetWindowLong( ( HWND ) hbutton, GWL_WNDPROC, ( LONG ) LabelSubClassFunc );
...
}


Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 442
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 21.01.13 11:58. Заголовок: SergKis пишет: int ..


SergKis пишет:

 цитата:
int Style = WS_CHILD; // | SS_NOTIFY убрали


Благодарю за подсказку!
Поправил для новой сборки, которая выйдет завтра

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2580
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.01.13 12:12. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Поправил для новой сборки, которая выйдет завтра


Ура ! Наконец то...
А то уже вторую неделю бьюсь с этим...

Вот экран задачи сразу после запуска:


А вот экран после сброса на панель задач:




Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 101
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.01.13 17:40. Заголовок: gfilatov2002 пишет:П..


gfilatov2002 пишет:
 цитата:
Поправил для новой сборки, которая выйдет завтра


Григорий, есть еще такое в GetBox:
 
Function OGETEVENTS(...)
...
CASE nMsg == WM_COMMAND // Вариант нажата одна из кнопок в oGet
...
n := AScan ( aHandle, HwndBtn )

IF n==GBB1 ; _DoControlEventProcedure ( _HMG_aControlProcedures, i)
ELSEIF n==GBB2 ; _DoControlEventProcedure ( _HMG_aControlDblClick, i)
ENDIF

SendMessage ( HwndBtn , BM_SETSTYLE , LOWORD ( BS_PUSHBUTTON ) , 1 )

SetFocus( aHandle[1] )
...
У нас это место так:
n := AScan ( aHandle, HwndBtn )

SetFocus( aHandle[1] ) // фокус на GetBox (иначе в процедурах GetFocus() на нажатую кнопку)

oGet:lSaveFocusEdit := .T. // new переменная для определения, что делать с фокусом после процедуры

IF n==GBB1 ; _DoControlEventProcedure ( _HMG_aControlProcedures, i)
ELSEIF n==GBB2 ; _DoControlEventProcedure ( _HMG_aControlDblClick, i)
ENDIF

SendMessage ( HwndBtn , BM_SETSTYLE , LOWORD ( BS_PUSHBUTTON ) , 1 )

IF oGet:lSaveFocusEdit ; SetFocus( aHandle[1] ) // если в процедуре окно ChildMdi, то SetFocus( aHandle[1] ) делать не надо, т.е.
ENDIF // в процедуре ChildMdi делаем: oGet:lSaveFocusEdit := .F.


Спасибо: 0 
Профиль
gustow
постоянный участник




Пост N: 346
Зарегистрирован: 06.02.07
ссылка на сообщение  Отправлено: 23.01.13 10:46. Заголовок: SergKis, хммм... опя..


SergKis, хммм... опять употребилось где-то "[ i ]", написанное БЕЗ пробелов (похоже, в конце IF после первого CASE). Извиняйте за "граммарнацизм" ;) просто иногда трудновато понять, "что сказать-то этим хотел?.." :)

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 102
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 23.01.13 12:38. Заголовок: gustow пишет:иногда ..


gustow пишет:
 цитата:
иногда трудновато понять


Согласен, недосмотрел, брал с исходника как есть, а там
 цитата:
"[ i ]", написанное БЕЗ пробелов


и это строчки:
 
IF n==GBB1 ; _DoControlEventProcedure ( _HMG_aControlProcedures [ i ], i)
ELSEIF n==GBB2 ; _DoControlEventProcedure ( _HMG_aControlDblClick [ i ], i)
ENDIF

но дело не в них (текст в версиях 2.1.8, 2.1.9 несколько другой, смысл такой же) см. h_getbox.prg.
Сказать этим хотел:
1.если в GetBox назначены Action [ и Action2], а так же кл. (например) F5 как Action, то происходит:
- нажатие кнопок Action [ или Action2] в процедуре получим ( i := ascan(_HMG_aContolHandles, getfocus()) ) == 0,
т.к. действительно фокус находится на нажатой кнопке (дополнение к GetBox), но работаем мы с GetBox - логичнее иметь и фокус на нем,
криминала нет по _HMG_ThisFormName, _HMG_ThisControlName получим индекс ...
- нажатие кнопки F5 (фокус на том же GetBox) - получим _HMG_ThisFormName, _HMG_ThisControlName и т.д. на HOTKEY, достаем контрол,
с которым работаем ( i := ascan(_HMG_aContolHandles, getfocus()) ) > 0
т.е. из-за мелочи имеем два алгоритма обработки.
2.установка фокуса на GetBox после процедур, должна быть управляемая, а не безусловная:
 
oGet:lSaveFocusEdit := .T. // new переменная для определения, что делать с фокусом после процедуры
......
IF oGet:lSaveFocusEdit ; SetFocus( aHandle[1] ) // если в процедуре окно ChildMdi, то SetFocus( aHandle[1] ) делать не надо, т.е.
ENDIF // в процедуре ChildMdi делаем: oGet:lSaveFocusEdit := .F.

т.е. если в процедуре окно MDICHILD (вызов и работа со справочником на документах), после активации Child окна
(фокус устанавливаем на какой-то контрол этого окна) процедура заканчивается (activate window в Mdi MAIN) и
срабатывает SetFocus( aHandle[1] ), устанавливая фокус на GetBox, убирая с окна MDICHILD, т.е. получаем проблему.
Мы ее решили так, как я изложил. Будет ли решаться в базовой MiniGUI - дело Григория.



Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 103
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 25.01.13 18:51. Заголовок: Andrey пишет:Да я хо..


Andrey пишет:
 цитата:
Да я хотел на кнопку повесить включение/отключение бордюра ..... BORDER CLIENTEDGE
как в примере MiniGUI\SAMPLES\BASIC\BLINK
Только по доку потом увидел что нет такого свойства у LABEL .... А жалко...


Свойства есть, надо использовать:
- менять стиль
SetWindowStyle(h, WS_BORDER, .T./.F.) - .T. устанавливать, .F. снимать
- менять Ext стиль
ChangeStyle(h, WS_EX_CLIENTEDGE, 0, .T.) - устанавливать или
ChangeStyle(h, 0, WS_EX_CLIENTEDGE, .T.) - снимать
У меня получалось менять или Ext стиль или стиль ( одновременно менять - срабатывал только стиль ).
Примеры:Скрытый текст



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2589
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.01.13 21:59. Заголовок: SergKis пишет: Свой..


SergKis пишет:

 цитата:
Свойства есть, надо использовать:



Супер ! Спасибо БОЛЬШОЕ !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2590
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.01.13 13:42. Заголовок: SergKis опять у меня..


SergKis опять у меня проблема с инициализацией до создания окна...
Я сделал пример (еще не отладил), подправьте его пожалуйста.
Скрытый текст


И хотелось бы избавиться от двойного дублирования массивов:
nH1 := nCliH/3
aLabel1 := { 0,0,nCliW,nH1 , "LabelColor_1", cWnd+"_Frame_Text1" }
aLabel2 := { nH1,0,nCliW,nH1*2 , "LabelColor_2", cWnd+"_Frame_Text2" }
aLabel3 := { nH1*2,0,nCliW,nCliH, "LabelColor_3", cWnd+"_Frame_Text3" }

в функциях Main() и ReSize(), если это возможно....

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 104
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.01.13 21:14. Заголовок: Andrey пишет:опять у..


Andrey пишет:
 цитата:
опять у меня проблема с инициализацией до создания окна...


Ошибочное утверждение. Всего навсего :
MySayColorLabel(aLabel1,aColors1) вызов, а
Function MySayColorLabel(cWnd,aLabel,aColor) - параметров 3 однако.

 цитата:
И хотелось бы избавиться от двойного дублирования массивов:


Делаем как и раньше в Clipper STATIC переменные. Скрытый текст


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2592
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.01.13 12:40. Заголовок: SergKis пишет: Ошиб..


SergKis пишет:

 цитата:
Ошибочное утверждение. Всего навсего :
MySayColorLabel(aLabel1,aColors1) вызов, а
Function MySayColorLabel(cWnd,aLabel,aColor) - параметров 3 однако.


Спасибо, БОЛЬШОЕ ! Как обычно, простые , заработался однако...

С примером понятно.
А почему форма не делится на 3-цвета одинаково ?
Я же задаю:
nCliW := GetClientWidth (hWnd)
nCliH := GetClientHeight(hWnd)
nH1 := nCliH/3
If aLbl == NIL
.........................
Else
aLbl[ 1] [ _W ] := nCliW; aLbl[ 1] [ _H ] := nH1
aLbl[ 2] [ _W ] := nCliW; aLbl[ 2] [ _H ] := nH1 * 2
aLbl[ 3] [ _W ] := nCliW; aLbl[ 3] [ _H ] := nCliH
Endif



Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 105
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.01.13 13:52. Заголовок: Andrey пишет:А почем..


Andrey пишет:
 цитата:
А почему форма не делится на 3-цвета одинаково ?


Делая: aLbl[ 1] [ _H ] := nH1; aLbl[ 1] [ _H ] := nH1*2; aLbl[ 1] [ _H ] := nCliH
мы должны задать высоту конкретного Label, а здесь ... ? В DemoA.prg было:
nLblH3 := nCliH - ( GetProperty(cWnd, cLblN1, "Height") + GetProperty(cWnd, cLblN2, "Height") ) .
Здесь надо как то так:
nH1 := int(nCliH/3)
nH2 := nH1
nH3 := nCliH - ( nH1 + nH2 )
и aLbl[ 1] [ _H ] := nH1; aLbl[ 1] [ _H ] := nH2; aLbl[ 1] [ _H ] := nH3



Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 106
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.01.13 13:57. Заголовок: SergKis пишет:aLbl ..


SergKis пишет:
 цитата:
aLbl[ 1] [ _H ] := nH1; aLbl[ 1] [ _H ] := nH2; aLbl[ 1] [ _H ] := nH3


Скопровал, а исправить забыл. Надо: aLbl[ 1] [ _H ] := nH1; aLbl[ 2] [ _H ] := nH2; aLbl[ 3] [ _H ] := nH3

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2593
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.01.13 16:41. Заголовок: Понял. все получилос..


Понял. все получилось. Еще добавил исправление координат по ROW.
Только не полностью работают:
@ 40, 70 BUTTON Button_Style CAPTION 'Label Style' ;
ACTION ( MyBorder(cWnd, aLbl[1][ _N ]), ;
MyBorder(cWnd, aLbl[2][ _N ]), ;
MyBorder(cWnd, aLbl[3][ _N ]) )

@ 80, 70 BUTTON Button_Edge CAPTION 'Label Edge' ;
ACTION ( MyEdge(cWnd, aLbl[1][ _N ]), ;
MyEdge(cWnd, aLbl[2][ _N ]), ;
MyEdge(cWnd, aLbl[3][ _N ]) )

Скорее всего там тоже надо ставить сразу изменение 3-х объектов ? Правильно ?

И еще, подправьте пожалуйста 11 строчку !

Почти готовый пример .... http://files.mail.ru/5F3EA2EABBE647E38CF1718BEA943D3C

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 107
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.01.13 20:16. Заголовок: Andrey пишет:Скорее ..


Andrey пишет:
 цитата:
Скорее всего там тоже надо ставить сразу изменение 3-х объектов ? Правильно ?


Да. Но все не так просто. Что бы менять resize во всех трех Label одновременно, надо придумать алгоритм расчета размеров (по % например):
- Left, Top, Right, Bottom - отступы от краев Label до контролов
- nGapsWidth, nGapsHeight - расстояния по горизонтали, вертикали между контролами
- nBtnWidth, nBtnHeight - размеры Button
- nGetWidth, nGetHeight - размеры GetBox
- и т.д.
- размеры фонтов учитывать или нет
после получения размеров контролов, можно располагать их в своем Label и ... все равно всего не учтешь, 5 GetBox или Button как не располагай, а во весь экран смотреться не будут.
Словом, как бы весь пар в свисток не вышел.

 цитата:
И еще, подправьте пожалуйста 11 строчку !


Это я не понял - в какой функции ?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2595
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.01.13 22:53. Заголовок: SergKis пишет: Да. ..


SergKis пишет:

 цитата:
Да. Но все не так просто. Что бы менять resize во всех трех Label одновременно, надо придумать алгоритм расчета размеров (по % например):
- Left, Top, Right, Bottom - отступы от краев Label до контролов


Давайте пока без отступов !
Просто:
nCliH := GetClientHeight(hWnd)
nH1 := int(nCliH/3)
nH2 := nH1*2
nH3 := nCliH
If aLbl == NIL
aLbl := {}
aAdd( aLbl, { 0, 0, nCliW, nH1, "LabelColor_1", cWnd+"_Frame_Text1" } )
aAdd( aLbl, { nH1, 0, nCliW, nH2, "LabelColor_2", cWnd+"_Frame_Text2" } )
aAdd( aLbl, { nH2, 0, nCliW, nH3, "LabelColor_3", cWnd+"_Frame_Text3" } )


И еще, подправьте пожалуйста 11 строчку ! Это просто 11 строка в файле, с самого начала PRG !!!

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 109
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.01.13 09:32. Заголовок: Andrey пишет:Это про..


Andrey пишет:
 цитата:
Это просто 11 строка в файле, с самого начала PRG !!!


Я совсем туплю - как она хоть выглядит ?
В
 цитата:
Почти готовый пример

это комментарий.
В предыдущем скрытом тексте это #define ...


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2596
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.01.13 12:32. Заголовок: SergKis пишет: Я со..


SergKis пишет:

 цитата:
Я совсем туплю - как она хоть выглядит ?


* Copyright ..... SergKis <????????>
Ваши данные нужны.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 110
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.01.13 19:11. Заголовок: Andrey пишет:Ваши да..


Andrey пишет:
 цитата:
Ваши данные нужны


Смело удаляйте эту строку !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2600
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.01.13 22:56. Заголовок: Andrey пишет: Почт..


Почти готовый пример .... http://files.mail.ru/FD03497F32DC4A309C7F85866BD39FDF
SergKis, я переделал пример, но БОРДЮР работает через один цвет. Я пробовал несколько вариантов, ничего не получается. Посмотрите пожалуйста.

SergKis, а зачем функция Test_This( cWnd ) в примере ?

И еще вопрос, кто знает:
cWnd := _HMG_ThisFormName
nWidth := ?
nHeight := ?

А в МиниГуи есть переменные типа _HMG_ThisFormName.MaxWidth и _HMG_ThisFormName.MaxHeight ?


Я нашел в \Include\i_var.ch
#xtranslate _HMG_LoadWindowRow => _HMG_SYSDATA\[427\]
#xtranslate _HMG_LoadWindowCol => _HMG_SYSDATA\[428\]
#xtranslate _HMG_LoadWindowWidth => _HMG_SYSDATA\[429\]
#xtranslate _HMG_LoadWindowHeight => _HMG_SYSDATA\[430\]
а для чего эти переменные ?

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 2611
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 29.01.13 23:15. Заголовок: Andrey пишет: А зач..


Andrey пишет:

 цитата:
А зачем функция Test_This( cWnd ) в примере ?


Это ты сам себя спросил ? ;)

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 111
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.01.13 12:53. Заголовок: Andrey пишет:а для ч..


Andrey пишет:
 цитата:
а для чего эти переменные ?


Это базовые переменные, используемые в MiniGUI для хранения информации - это регистрация окон, контролов, HotKey, ... в массивах MiniGUI (не путать с регистацией в windows). См. h_windows.prg, h_<control>.prg, ... .

 цитата:
есть переменные типа _HMG_ThisFormName.MaxWidth и _HMG_ThisFormName.MaxHeight ?


Препроцессор преобразует команды This... (см. i_this.ch) в вызов функций с использованием переменных _HMG_This...
ThisWindow.Width ==> GetProperty ( _HMG_THISFORMNAME , "Width") и т.д.
В событиях (OnInit, OnGotFocus, Action, ...) перед выполнением блока кода, устанавливаются переменные _HMG_This..., см. функции: _DoWindowEventProcedure(...), _DoControlEventProcedure(...).

 цитата:
А зачем функция Test_This( cWnd ) в примере ?


Это моя приблуда (для своей lib), но после нее, я уверен в _HMG_ThisFormName.


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 112
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.01.13 14:04. Заголовок: Andrey пишет:... Пос..


Andrey пишет:
 цитата:
... Посмотрите пожалуйста.


Подправил: http://zalil.ru/34214553

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2604
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.01.13 15:45. Заголовок: SergKis пишет: Это ..


SergKis пишет:

 цитата:
Это моя приблуда (для своей lib), но после нее, я уверен в _HMG_ThisFormName.



В этом (моем) примере можно её (Test_This( cWnd )) убрать ?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2605
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.01.13 16:03. Заголовок: SergKis пишет: Подп..


SergKis пишет:

 цитата:
Подправил: http://zalil.ru/34214553



Не понял.... А почему через один цвет бордюр не меняется ?


Я хочу чтобы, если меняем "Label Style" то было бы так:


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 113
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.01.13 18:14. Заголовок: Andrey пишет:Не поня..


Andrey пишет:
 цитата:
Не понял.... А почему через один цвет бордюр не меняется ?


Border ставится\снимается нормально, из-за ClientEdge визуальный обман получается для 2-го Label.
SergKis писал:
 цитата:

Свойства есть, надо использовать:
- менять стиль
SetWindowStyle(h, WS_BORDER, .T./.F.) - .T. устанавливать, .F. снимать
- менять Ext стиль
ChangeStyle(h, WS_EX_CLIENTEDGE, 0, .T.) - устанавливать или
ChangeStyle(h, 0, WS_EX_CLIENTEDGE, .T.) - снимать
У меня получалось менять или Ext стиль или стиль ( одновременно менять - срабатывал только стиль ).


В примере, я полагал, для каждого Label, одной кнопкой снимаем\ставим Border, другой - CLIENTEDGE.
Для решения Вашей задачи надо иметь в aLbl Label-ы таких же размеров со свойством Visible:=.F. (скрытый) и по кнопке переводить в Visible:=.T. (свойство добавить 9-м элементом), а Label-ы с BORDER и CLIENTEDGE в Visible:=.F.
 цитата:
В этом (моем) примере можно её (Test_This( cWnd )) убрать ?


Да. Я его оставлял как пример манипулирования This... переменными.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2616
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.02.13 16:01. Заголовок: Как сделать украинск..


Как сделать украинский язык (UA866) для программ на МиниГуи ?

Для русского делаю так:
FUNCTION Main()
.........
SET LANGUAGE TO RUSSIAN // язык/lang
SET CODEPAGE TO RUSSIAN // кодовая страница/codepage


Спасибо: 0 
Профиль
AlexMyr



Пост N: 707
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 01.02.13 17:16. Заголовок: Andrey пишет: Как с..


Andrey пишет:

 цитата:
Как сделать украинский язык (UA866) для программ на МиниГуи ?

Вот что говорит дока, к-ю наверное никто не читает
Select language for interface messages.

SYNTAX
SET LANGUAGE TO SPANISH | ENGLISH | FRENCH | PORTUGUESE | GERMAN | RUSSIAN | ITALIAN | FINNISH | CROATIAN | BASQUE | POLISH | DUTCH | SLOVENIAN | GREEK | CZECH | UKRAINIAN | BULGARIAN

И снова таки, причем тут minigui?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2620
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 01.02.13 18:35. Заголовок: AlexMyr пишет: И сн..


AlexMyr пишет:

 цитата:
И снова таки, причем тут minigui?


А там несколько вариантов было включения русского языка.
Вот и спросил как включить украинский язык (UA866) ?
Хотя тут МиниГуи не причем, это точно...

AlexMyr пишет:

 цитата:
Вот что говорит дока, к-ю наверное никто не читает


Это в точку !


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2637
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 09.02.13 08:01. Заголовок: Последний вариант 3х..


Последний вариант 3х цветной формы и изменения размера формы.
Для тех кому интересно.
http://files.mail.ru/A70681C9CE544B58A255E360B1E373CD

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 115
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.02.13 13:42. Заголовок: Andrey пишет:Последн..


Andrey пишет:
 цитата:
Последний вариант 3х цветной формы и изменения размера формы.


Примеры работают не корректно - при увеличении окна вниз - контролы и label-color наезжают друг на друга.
Исправить можно так: Скрытый текст



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2644
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.02.13 14:01. Заголовок: SergKis пишет: Испр..


SergKis пишет:

 цитата:
Исправить можно так:



Спасибо БОЛЬШОЕ !

Кстати функцию Test_This( cWnd ) убрать нельзя ! Пример перестает работать....


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 116
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 10.02.13 15:06. Заголовок: Andrey пишет:Пример ..


Andrey пишет:
 цитата:
Пример перестает работать....


Все правильно. Переменные _HMG_This... формируются в вызываемых процедурах (events) окна, контролов: Скрытый текст
`
Мы после DEFINE WINDOW &cWnd ; вызывали:
aLblClrInit()
AEval( aLbl, { | a, n | MySayColorLabel( n, n ) } )
и чтобы одинаково работать в своих вызовах и events процедурах Test_This(cWnd) устанавливает _HMG_ThisFormName, _HMG_ThisFormIndex. Если бы мы все проделывали только в events процедурах, то Test_This(cWnd) не нужна.


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2754
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.03.13 13:19. Заголовок: Вот столкнулся с тем..


Вот столкнулся с тем что не могу поменять цвет в RADIOGROUP
Вроде по доке там 2 параметра по цвету, а у меня только черным выводит....


Вот код:
Скрытый текст


Как поменять цвет в RADIOGROUP ?
И как увеличить размер "кружка" ?

P.S. Если не ставить первый пробел в OPTIONS {' ячейка (1:А)',' ячейка (2:А)'}, то труба, текст не появится !
НЕ ЛЮБИТ МИНИГУИ маленькую букву "я" !!!
Час убил на выяснения этого ФЕНОМЕНА !!!
Надо бы сообщить разработчикам... Григорий сообщи им пожалуйста !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2763
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.03.13 22:37. Заголовок: Разобрался я с цвето..


Разобрался я с цветом в RADIOGROUP !
В Win8 не меняется цвет, а в Win2003 и Win2008 все работает нормально !!!
До ХР пока не дошел...


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 176
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.03.13 08:36. Заголовок: Andrey пишет:Разобра..


Andrey пишет:
 цитата:
Разобрался я с цветом в RADIOGROUP !
В Win8 не меняется цвет, а в Win2003 и Win2008 все работает нормально !!!
До ХР пока не дошел...


Когда подстрагивали под себя MiniGui, обратили внимание, что в некоторых контролах управление цветами, фонтами заложено, но не до конца - т.е. для развития. Можно потратить кучу времени и без результата, если очень надо с цветами, то использовать альтернативные решения - Label, Image, Combobox,Browse или Grid (без линий и header, но с Image), и т.д. ...

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2765
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.03.13 11:47. Заголовок: SergKis пишет: Можн..


SergKis пишет:

 цитата:
Можно потратить кучу времени и без результата, если очень надо с цветами



Да не надо. Спасибо за разъяснения. Просто начал делать и не получается, думал что я что-то не так делаю...


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2792
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.04.13 00:58. Заголовок: Есть ли ПРИМЕР копир..


Есть ли ПРИМЕР копирования файла с бегунком (PROGRESSBAR) ?
Можно конечно и самому написать, но хочется посмотреть правильный код....


Спасибо: 0 
Профиль
Dima
администратор




Пост N: 3018
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 13.04.13 09:45. Заголовок: Andrey пишет: Есть ..


Andrey пишет:

 цитата:
Есть ли ПРИМЕР копирования файла с бегунком (PROGRESSBAR)


Где то выкладывали уже и тоже по твоей просьбе.

Спасибо: 0 
Профиль
Softlog86



Пост N: 87
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 13.04.13 16:34. Заголовок: А меня интересует ре..


А меня интересует регулировка прозрачности элемента управления "Slider" :) Хочу его запрятать за картинку

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2793
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.04.13 18:13. Заголовок: Dima пишет: Где то ..


Dima пишет:

 цитата:
Где то выкладывали уже и тоже по твоей просьбе.



Да я просмотрел все свои программки на МиниГуи, так и не нашел.
Индексация есть, а вот копирования файла нет.
Пришлось псевдокопирование сделать - бегунок в цикле до 50%, потом копирование, потом остаток бегунка.

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 69
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 13.04.13 22:02. Заголовок: не втех примерах иск..


не втех примерах искал
MiniGUI\SAMPLES\BASIC\Filecopy\

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2796
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.04.13 00:58. Заголовок: Haz пишет: не втех ..


Haz пишет:

 цитата:
не втех примерах искал
MiniGUI\SAMPLES\BASIC\Filecopy\


Это точно не в тех... Спасибо большое !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2804
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 18.04.13 22:09. Заголовок: Как сделать, чтобы п..


Как сделать, чтобы при аварийном сваливании программы на МиниГуи, она не оставалась в памяти ?
А то потом правишь ехе-ник, а он не собирается, пока из памяти свалившуюся прогу не снимешь...

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2843
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 10.06.13 13:03. Заголовок: Как можно получить р..


Как можно получить размеры AVI-файла, показываемый на форме из ресурсов EXE ?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2862
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.06.13 12:00. Заголовок: Как узнать запущена ..


Как узнать запущена ли чужая программа или нет ?
Нужно узнать по названию EXE файла.

Функция IsExeRunning() не работает !
Проверял на MiniGUI\SAMPLES\Advanced\IsExeRunning\demo.prg модифицированный немного:
cRun := "WINWORD.EXE"
l1 := IsExeRunning( cRun )
l2 := IsExeRunning( cFileNoPath( HB_ArgV( 0 ) ) )
cR3 := "demo2.exe"
l3 := IsExeRunning( cR3 )
MsgDebug(cRun, l1,cFileNoPath( HB_ArgV( 0 ) ), l2, cR3, l3 )

(запускал WINWORD и demo2.exe )



Спасибо: 0 
Профиль
Dima
администратор




Пост N: 3236
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 19.06.13 12:17. Заголовок: Andrey пишет: Как у..


Andrey пишет:

 цитата:
Как узнать запущена ли чужая программа или нет ?


Запущенные процессы надо анализировать

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2869
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.06.13 16:14. Заголовок: Можно ли вывести в ф..


Можно ли вывести в функциях BrowseForFolder() или GetFolder() ТОЛЬКО подключенные флешки к компьютеру ?
Или нужно писать самому такую функцию ?
Может у кого есть уже такая функция ?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2874
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.06.13 18:44. Заголовок: Haz пишет: не втех ..


Haz пишет:

 цитата:
не втех примерах искал
MiniGUI\SAMPLES\BASIC\Filecopy\



Посмотрел этот пример и не понял, ошибка или в новой версии БЕГУНОК не работает ?
Собирал с помощью MiniGUI 2.2.3 - 2013.06.12
Кто подскажет как исправить ошибку ?

Спасибо: 0 
Профиль
gfilatov2002
moderator




Пост N: 489
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 24.06.13 21:05. Заголовок: Andrey пишет: Кто п..


Andrey пишет:

 цитата:
Кто подскажет как исправить ошибку ?


Надо заменить вызов команды DO EVENTS на вызов функции inkey(.1) или InkeyGUI()
в этом месте
************************************ 
Function SHOW_IT(nDl)
************************************
Local nPos := int(nDl*100)
if nPos % _SHOW_PERCENT == 0
Form_1.Label_3.Value := ltrim(str(nPos))+" % complete"
Form_1.ProgressBar_1.Value := nPos
// DO EVENTS
inkey(.1)
endif
return NIL



Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2876
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.06.13 21:22. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Надо заменить вызов команды DO EVENTS на вызов функции inkey(.1) или InkeyGUI()
в этом мест


Спасибо БОЛЬШОЕ !!!

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2881
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.06.13 18:48. Заголовок: Пример MiniGUI\S..


Пример MiniGUI\SAMPLES\BASIC\Filecopy\ - заработал...
Для теста пробую копировать файл размером 160 Мб на флешку... Идет копирование медленно даже при
#define _LARGE_BLOCK 16384*10 (при 20 прога вешается...)
Если еще при этом сделать копирование другого файла на эту же флешку, то труба... Программа "подвисает" вот с таким сообщением:


Стандартная харборовская функция FILECOPY( cSource, cDestination ) - работает в разы лучше...
Вопрос: как увеличить скорость записи и убрать подвисание программы ?

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 3253
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.06.13 20:54. Заголовок: Andrey пишет: Станд..


Andrey пишет:

 цитата:
Стандартная харборовская функция FILECOPY( cSource, cDestination ) - работает в разы лучше...
Вопрос: как увеличить скорость записи и убрать подвисание программы ?


Переработать этот пример на Filecopy , Hb_fcopy ....и тд и тп
А вообще если шибко надо можно и свою функцию по копированию сваять.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2900
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.07.13 02:58. Заголовок: На форме использую о..


На форме использую объект ANIMATEBOX:
@ 10,80 ANIMATEBOX Avi_1 ;
WIDTH 340 HEIGHT 60 ;
FILE 'AVI1' AUTOPLAY TRANSPARENT NOBORDER

Работает отлично. Закончилась одна обработка, перехожу к другой обработке.
Как сменить AVI1 на другой, допустим AVI2 ?
В примерах и доке не нашел ничего....
Все AVI-файлы уже загружены в ресурсы программы....

Спасибо: 0 
Профиль
a_sidorov



Пост N: 41
Зарегистрирован: 07.06.08
ссылка на сообщение  Отправлено: 08.07.13 11:08. Заголовок: Попробуй так: Fo..


Попробуй так:
Form_Main.Avi_1.Stop()
Form_Main.Avi_1.Open('Avi2')
Form_Main.Avi_1.Play()


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2901
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 08.07.13 12:30. Заголовок: Спасибо, получилось ..


Спасибо, получилось !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2907
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 13.07.13 18:48. Заголовок: Как изменить цвета б..


Как изменить цвета букв после вывода на форму ?
Т.е. я не хочу выводить слово побуквенно, а вывести надпись целиком, а потом изменить цвет у некоторых букв.
Например:
@ 10,120 LABEL Label_1 VALUE "Test color label" ;
WIDTH 500 HEIGHT 60 FONT "Times Roman" SIZE 24 BOLD

и выборочно изменить цвет нескольких букв "e" и "o".


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2915
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.07.13 22:59. Заголовок: Работаю с базой, чер..


Работаю с базой, через объект GRID.
После обновления базы обновляю GRID, так:
aList := LoadLogZaiv() // загрузка базы (маленькая) в массив
Form_9.Grid_Log.DeleteAllItems
Form_9.Grid_Log.DisableUpdate
FOR nI := 1 to LEN(aList)
Form_9.Grid_Log.AddItem( aList[nI] )
NEXT
Form_9.Grid_Log.EnableUpdate


Вопрос: а как сделать чтобы в окне GRID отображались самые нижние записи ?
Может метод какой то есть ?

Заранее спасибо за ответ !



Спасибо: 0 
Профиль
Haz
администратор




Пост N: 80
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 22.07.13 23:16. Заголовок: это то что надо ?


Andrey пишет:

 цитата:
а как сделать чтобы в окне GRID отображались самые нижние записи ?



Это так ?

Form_9.Grid_log.Value := Len(aList)


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2916
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 23.07.13 12:30. Заголовок: Haz пишет: Form_9.G..


Haz пишет:

 цитата:
Form_9.Grid_log.Value := Len(aList)



Спасибо БОЛЬШОЕ !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2927
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 16.08.13 22:44. Заголовок: Всем доброй ночи... ..


Всем доброй ночи...

Подскажите как проконтролировать ввод названия папки:
M->cPubDirFlaska := "TEST\"
......
@ 128, 20 + 60 TEXTBOX Text_2 ;
WIDTH 500 ;
VALUE M->cPubDirFlaska ;
FONT "Courier New" Size 12 BOLD ;
ON LOSTFOCUS {|| M->cPubDirFlaska := AllTrim(Form_5.Text_2.Value) }

Т.е. если юзер забыл в конце добавить знак "\", то нужно его добавить автоматом...
Заранее спасибо за помощь !

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 3401
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 16.08.13 22:55. Заголовок: Andrey пишет: Т.е. ..


Andrey пишет:

 цитата:
Т.е. если юзер забыл в конце добавить знак "\", то нужно его добавить автоматом...


Тупо проверить символ справа например или устроить разбор строки.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2928
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.08.13 10:19. Заголовок: Dima пишет: Тупо пр..


Dima пишет:

 цитата:
Тупо проверить символ справа например или устроить разбор строки.


А как ?
Я не могу понять как это реализовать в МиниГуи ?
Где ставить вызов обрабатываемой функции ?

Сама функция есть:
Function MyFixDir(cDir)
cDir := AllTrim(cDir)
IF SubStr(cDir,Len(cDir),1) # "\"
cDir := cDir + "\"
ENDIF
RETURN cDir


Спасибо: 0 
Профиль
PSP
постоянный участник


Пост N: 902
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 17.08.13 10:28. Заголовок: Andrey пишет: Я не ..


Andrey пишет:

 цитата:
Я не могу понять как это реализовать в МиниГуи ?
Где ставить вызов обрабатываемой функции ?


У тебя ж есть блок кода в ON LOSTFOCUS. Туда и вставь.

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 3403
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 17.08.13 10:29. Заголовок: Andrey пишет: А как..


Andrey пишет:

 цитата:
А как ?


Andrey пишет:

 цитата:
M->cPubDirFlaska := "TEST\"


Вот так наверное M->cPubDirFlaska :=Твоя функция

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2929
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 17.08.13 12:30. Заголовок: PSP пишет: У тебя ж..


PSP пишет:

 цитата:
У тебя ж есть блок кода в ON LOSTFOCUS. Туда и вставь.


Dima пишет:

 цитата:
Вот так наверное M->cPubDirFlaska :=Твоя функция



Не пашет !!!
Только потом сообразил, что нужно перепоказать значение в TEXTBOX Text_2 ....
Вот так работает:
@ 128, 20 + 60 TEXTBOX Text_2 ;
WIDTH 500 ;
VALUE M->cPubDirFlaska ;
ON LOSTFOCUS {|| M->cPubDirFlaska := MyFixDir(Form_5.Text_2.Value) }

Сама функция:
Function MyFixDir(cDir)
cDir := AllTrim(cDir)
IF SubStr(cDir,Len(cDir),1) # "\"
cDir := cDir + "\"
ENDIF
Form_5.Text_2.Value := cDir
RETURN cDir


Спасибо за подсказку !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2930
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 19.08.13 18:36. Заголовок: Возможно ли выведенн..


Возможно ли выведенный объект на форме поменять цвет ?
Допустим есть объект
@ 275,20 PROGRESSBAR Progress_1 ;
RANGE 0,100 ;
VALUE 0;
WIDTH 530 HEIGHT 25

После завершения пробега бегунка, я хочу закрасить его другим цветом.
Как это сделать ?
Может пример есть ?

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2932
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 20.08.13 12:50. Заголовок: В Клипере и Харборе ..


В Клипере и Харборе есть отличная функция:
ColorWin()
Replaces a color attribute in a screen region

Есть ли аналог такой функции в МиниГуи ?


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2937
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.08.13 18:19. Заголовок: Помогите понять ошиб..


Помогите понять ошибку.
Прога сваливается с непонятной периодичностью... Ошибка вот такая:
Time from start: 0 days 0 hours 5 mins 0 secs
Error: Non Modal Window Win_Zaiv can't be activated when a Modal window is active.
Called from _ACTIVATEWINDOW(1303)
Called from DOMETHOD(4654)
Called from CHANGE_ZAIVKI(343)


Программа "сидит" в трее и функцию CHANGE_ZAIVKI(343) вызываю по таймеру через каждые 5 минут.
Как долго работает прога, не знаю... Может свалиться и через 5 минут или через час...
Непонятки сплошные...

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 3446
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 22.08.13 18:22. Заголовок: Andrey пишет: Non M..


Andrey пишет:

 цитата:
Non Modal Window Win_Zaiv can't be activated when a Modal window is active.


Не модальное окно Win_Zaiv не может быть активировано когда модальное окно активно.

PS
Прошу прощения за мой плохой англо русский перевод

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2938
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.08.13 18:25. Заголовок: Dima пишет: Не мода..


Dima пишет:

 цитата:
Не модальное окно Win_Zaiv не может быть активировано когда модальное окно активно.


Как такое может быть ?
Работает прога нормально, посылает на сайт данные... а потом бац: Non Modal Window Win_Zaiv can't be activated when a Modal window is active.


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 85
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 22.08.13 18:26. Заголовок: с окнами разберись


Андрей , а что за окно Win_Zaiv?
судя по ошибке ты пытаешься его активировать при активном модальном окне

Проверь все окна

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2939
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 22.08.13 20:26. Заголовок: Andrey пишет: Прогр..


Andrey пишет:

 цитата:
Программа "сидит" в трее и функцию CHANGE_ZAIVKI(343) вызываю по таймеру через каждые 5 минут.


Не правильно написал.

Скрытый текст

Вроде всегда при ошибках делаю закрытие окна Win_Zaiv.Release() !
Вот прога уже три часа нормально в трее сидит, не ломается.

Или нужно еще что-то делать, для обработок ошибок ?

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 86
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 22.08.13 21:16. Заголовок: самое простое - сде..


самое простое - сделать Win_Zaiv модальным окном а не CHILD

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 227
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 22.08.13 22:19. Заголовок: Andrey пишет:Или нуж..


Andrey пишет:
 цитата:
Или нужно еще что-то делать


В AutoCheckZaiv() надо отключать timer на время выполнения работ и включать timer по завершению снова, где-то на эту тему мы уже общались

Спасибо: 1 
Профиль
sashaBG
постоянный участник




Пост N: 125
Зарегистрирован: 15.09.05
ссылка на сообщение  Отправлено: 22.08.13 22:29. Заголовок: надо отключать timer на время выполнения работ


Я тоже так думаю

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2941
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 24.08.13 10:10. Заголовок: SergKis пишет: В Au..


Haz пишет:

 цитата:
самое простое - сделать Win_Zaiv модальным окном а не CHILD


Не ставиться ! Если меняю на:
DEFINE WINDOW Win_Zaiv ;
...........
TITLE cTitle ;
MODAL;
NOSIZE NOMAXIMIZE NOMINIMIZE;
........

То при сборке выдает кучу ошибок:
Source\Zaiv_to_Site.prg(310) Error E0030 Syntax error "syntax error at 'WINDOW'"
Source\Zaiv_to_Site.prg(341) Error E0030 Syntax error "syntax error at '.'"
Source\Zaiv_to_Site.prg(342) Error E0030 Syntax error "syntax error at '.'"
и т.д.

SergKis пишет:

 цитата:
В AutoCheckZaiv() надо отключать timer на время выполнения работ и включать timer по завершению снова, где-то на эту тему мы уже общались


Пересмотрел форум, не нашел.
Помню что вы рекомендовали, а что точно не помню.
Если несложно, пожалуйста повторите что и как нужно сделать ?
Заранее БОЛЬШОЕ спасибо.


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 87
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 24.08.13 10:24. Заголовок: Не ставиться


Andrey пишет:

 цитата:
TITLE cTitle ;
MODAL;
NOSIZE NOMAXIMIZE NOMINIMIZE;



Синтаксис описания модального окна отличается от не модального. Сравни по мануалу.
В частности там нет NOMAXIMIZE NOMINIMIZE

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 232
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 24.08.13 17:20. Заголовок: Andrey пишет: повтор..


Andrey пишет:
 цитата:
повторите что и как нужно сделать


Procedure AutoCheckZaiv()
SetProperty('Form_1', 'Timer_1', 'Enabled', .F.) // выкл.
или Form_1.Timer_1.Enabled := .F.
...
SetProperty('Form_1', 'Timer_1', 'Enabled', .T.) // вкл.
или Form_1.Timer_1.Enabled := .T.
Return

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2944
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 25.08.13 12:44. Заголовок: Спасибо БОЛЬШОЕ. Сд..


Спасибо БОЛЬШОЕ.
Сделал, работает.

Теперь другой вопрос.
Как вернуть текущему окну (в котором работает юзер) фокус ввода из моей задачи ?

А то, после запуска моей задачи из трея, приходится мышкой тыкать в то окно, с которым работал.

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 88
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.08.13 12:27. Заголовок: Как вернуть текущему окну


на вскидку два варианта

1) получить указатель окна пользователя ( ShrinkIt из примеров минигуи в помощь ) и читать типа этого http://www.wasm.ru/forum/viewtopic.php?pid=123607

2) Вообще не забирать фокус у окна пользователя а писать статистику в лог ( базу ). Из программы пользователя анализировать этот лог ( базу ) и выводить сообщения из нее.


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2949
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.08.13 13:20. Заголовок: Haz пишет: на вскид..


Haz пишет:

 цитата:
на вскидку два варианта


Спасибо БОЛЬШОЕ !
Второй вариант лучше. Меньше "париться" !

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2950
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.08.13 13:31. Заголовок: Если я создаю объект..


Если я создаю объект:

DEFINE WINDOW Win_Zaiv ;
MODAL ;
NOSHOW ;
.....
END WINDOW

Win_Zaiv.Center
Win_Zaiv.Activate

То почему то окно все равно показывается на экран.
Что не так делаю ?


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 89
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.08.13 15:01. Заголовок: все так


вроде все так, без живого примера не понять

перед Win_Zaiv.Center добавь Win_Zaiv.Hide и забудь


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2954
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 26.08.13 18:46. Заголовок: Haz пишет: перед Wi..


Haz пишет:

 цитата:
перед Win_Zaiv.Center добавь Win_Zaiv.Hide и забудь



Не получается !
Окно все равно выводиться. Почему ?
Я же ставлю при создание окна NOSHOW !
А окно появляется:


Вот полный код:
Скрытый текст


У Григория есть пример \MiniGUI\SAMPLES\BASIC\SPLASHDEMO\demo.prg
Там нормально отрабатывает NOSHOW:
Скрытый текст


По доке окно MODAL тоже может быть NOSHOW...
Или глюк какой то ?



Спасибо: 0 
Профиль
Haz
администратор




Пост N: 90
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.08.13 19:40. Заголовок: видимо косячек


видимо косячек в минигуи с модальным окном.
как вариант в ON INIT засунуть ThisWindow.hide , прячет но мелькает всеравно

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 241
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 26.08.13 19:50. Заголовок: Haz пишет:видимо кос..


Haz пишет:
 цитата:
видимо косячек в минигуи с модальным окном.


и не только в модальном (было в версии 2.07) всегда show


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 91
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 26.08.13 20:52. Заголовок: ТАБЛЕТКА


Андрей , держи таблетку и играй в прятки с модальными окнами

в h_windows.prg в строке 1295 вместо
If _HMG_aFormType == "M"
_ShowWindow ( _HMG_aFormNames , .F. )

нужно прописать условие IF ... и пересобратьбиблиотеки минигуи

If _HMG_aFormType == "M"
if _HMG_aFormNoShow == .F.
_ShowWindow ( _HMG_aFormNames , .F. )
ELSE
_hIDEWindow ( _HMG_aFormNames , .F. )
end


Спасибо: 0 
Профиль
Панченко





Пост N: 52
Зарегистрирован: 13.06.12
ссылка на сообщение  Отправлено: 29.08.13 18:09. Заголовок: Андрей, убери Win_Za..


Андрей, убери Win_Zaiv.Activate (ну и Hide перед ним тоже не нужен)

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2960
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.08.13 19:51. Заголовок: Панченко пишет: Анд..


Панченко пишет:

 цитата:
Андрей, убери Win_Zaiv.Activate (ну и Hide перед ним тоже не нужен)



Конечно. Ставил я это из-за того:

Haz пишет:

 цитата:
видимо косячек в минигуи с модальным окном.




Спасибо: 0 
Профиль
Панченко





Пост N: 53
Зарегистрирован: 13.06.12
ссылка на сообщение  Отправлено: 30.08.13 08:42. Заголовок: Andrey пишет: Haz п..


Andrey пишет:

 цитата:
Haz пишет:

 цитата:
видимо косячек в минигуи с модальным окном.




Андрей, описываешь модальное окно с NOSHOW. ACTIVATE не надо !!! (это активация окна, которая выводит его на экран). Окно нормально создается, но на экран не выводится.


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2962
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.08.13 20:36. Заголовок: Панченко пишет: Окн..


Панченко пишет:

 цитата:
Окно нормально создается, но на экран не выводится.



Да, создается. Только при повторном обращении к этой функции, теперь программа слетает !
С ошибкой:
Error: Window: Win_Zaiv is already defined.</p><BR>
Called from _DEFINEMODALWINDOW(440)
Called from CHANGE_ZAIVKI(311)


А с Win_Zaiv.Activate нормально работает.

Т.е. если я делаю модальное окно:
DEFINE WINDOW Win_Zaiv ;
MODAL ;
NOSHOW ;
ON INIT { || cDbfZip := InitChange(cDbfZaivIzm,cPathDbf,dZaivka,cTypeWin) }
.....
END WINDOW
Win_Zaiv.Center
RETURN NIL
////////////////////////////////////////////////////////////
// Инициализация формы
FUNCTION InitChange(cDbfZaivIzm,cPathDbf,dZaivka,cTypeWin)
.....
IF LEN(cTypeWin) == 0
Win_Zaiv.Show
ELSE
Win_Zaiv.Hide // "NOWIN"
ENDIF
............

То программа с параметром "NOWIN" - работает один раз. При повторном обращении падает с ошибкой указанной выше...
Где и что править ?
Или придется делать ДВЕ отдельные функции: с окном и без окна ? Но это же неправильно !


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 244
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 30.08.13 21:39. Заголовок: Andrey для проверки ..


Andrey
для проверки наличия есть:
_IsWindowDefined('Form_1') - для окон
_IsControlDefined('Label_1', 'Form_1') - для контролов

Спасибо: 1 
Профиль
Andrey
постоянный участник




Пост N: 2964
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 30.08.13 22:09. Заголовок: SergKis пишет: для ..


SergKis пишет:

 цитата:
для проверки наличия есть:
_IsWindowDefined('Form_1') - для окон
_IsControlDefined('Label_1', 'Form_1') - для контролов


СПАСИБО БОЛЬШОЕ ! Буду пользоваться.
Я не пойму только одного у себя, если модальное окно с NOSHOW и БЕЗ Win_Zaiv.Activate у меня окно показывается.

А у Григория в примере \MiniGUI\SAMPLES\BASIC\SPLASHDEMO\demo.prg стоит ACTIVATE WINDOW ALL
то у него все работает.

Панченко пишет:

 цитата:
Андрей, убери Win_Zaiv.Activate (ну и Hide перед ним тоже не нужен)



Тогда неправ Панченко ?


Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 245
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.08.13 05:32. Заголовок: Andrey пишет:А у Гри..


Andrey пишет:
 цитата:
А у Григория в примере \MiniGUI\SAMPLES\BASIC\SPLASHDEMO\demo.prg стоит ACTIVATE WINDOW ALL
то у него все работает


У него другая схема - сначала MAIN, потом другое окно. Начинать приложение сразу с MODAL у меня тоже были проблемы с управлением в окне. Сделал как у Григория, сначала MAIN в небольших координатах, сверху в OnInit MODAL и hide MAIN, но фокус эта конструкция будет забирать на себя при запуске из Tray - возможно запускать надо раньше, при старте своей проги и пусть сидит в фоне, или управлять заголовками (переключением фокуса между окнами по HWND)

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 246
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.08.13 06:07. Заголовок: Andrey при вызове (c..


Andrey
при вызове (click-ом) из Tray фокус на Tray меню, hide в новом запуске вернет фокус на последний фокус где был, т.е. на окно задачи не вернет.

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 2968
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 31.08.13 11:47. Заголовок: SergKis пишет: Начи..


SergKis пишет:

 цитата:
Начинать приложение сразу с MODAL у меня тоже были проблемы с управлением в окне.


Так у меня тоже приложение начинается не с MODAL, а с MAIN.
У меня в трее сидит приложение. Через 5 минут идет (открытие/проверка), выводит окно MODAL -бегунка подготовки БД. Вот это окно, я хочу убрать это окно, не показывать вообще (NOSHOW).
А это окно все равно показывается на экране.
У меня 2-3 места в программе, где я не хочу показывать такие MODAL-окна.
Вот и получается, что есть тогда 3 варианта:
1) Исправить этот баг в библиотеке МиниГуи
2) написать аналогичные процедуры у себя в программе - без использования окон
3) переключением фокуса между окнами по HWND

Пока хочу попробовать 3-вариант.
SergKis пишет:

 цитата:
или управлять заголовками (переключением фокуса между окнами по HWND)


А как вы это делаете ?
Подскажите пожалуйста.

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 248
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.08.13 15:58. Заголовок: Andrey Я это делаю A..


Andrey
Я это делаю AutiIt3, мы это уже обсуждали, в hb через FindWindow в ваших темах где-то было

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 249
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 31.08.13 16:04. Заголовок: Andrey пишет:А это о..


Andrey пишет:
 цитата:
А это окно все равно показывается на экране.


NOSHOW я не использую, когда надо делаю DoMethod(cWnd, 'Hide', .T.) или .F., работает как надо, претензий нет

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 92
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 31.08.13 16:50. Заголовок: пора определиться


Андрей, пора определиться )

мне кажется необходимости в этом окне в качестве NOSHOW нет никакой, т.к. никакой фоновой нагрузки оно не несет и используется исключительно для отображения бегунка.
Это можно оформить процедурой и рисовать обычное окно в ней при вызове .

NOSHOW нужно, к примеру , в окне типа "WAIT ..." в минигуи есть 2 примера использования ( и то не модальные ). Вот тут при старте задачи заявил окно и спрятал, а когда нужно пользователю сказать жди(те) - кинул в окно нужную строку и показал до нужного момента. Можно конечно это окно и бегунком украсить если надо )))


PS. если есть все же желание активировать модальное окно с noshow - я показал где это подправить в минигуи. что касается меня - так давно правлю каждый релиз минигуи под себя т.к.
некоторые вещи мне удобнее сделать один раз в библиотеке чем выеживаться в каждом проекте, к примеру это возможность получить имя поля базы из колонки tsbrowse и устанавливать ширину этих колонок через это имя, а не по номеру колонки.




Спасибо: 0 
Профиль
Ответов - 301 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 203
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет