On-line: PSP, Haz, tnsr2, гостей 2. Всего: 5 [подробнее..]
АвторСообщение
gfilatov
модератор




Пост N: 699
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 29.01.08 13:59. Заголовок: Новая версия Расширенного релиза библиотеки MiniGUI (часть V) (продолжение)


Начало темы находится здесь, а теперь

АНОНС * АНОНС * АНОНС * АНОНС * АНОНС

Готовится к опубликованию новая сборка №48, которая выйдет в конце недели.
Если у Вас есть интересные наработки для включения в новый релиз, то сейчас самое удобное время для их отправки мне

Кратко, что нового:

- исправление обнаруженных ошибок и неточностей кода;
- новый класс HEADERIMAGE для Grid и Browse;
- свойство Address в Hyperlink может теперь открывать папку или файл на диске;
- добавлен NOTABSTOP класс для Browse;
- поддержка пользовательских компонентов (заимствована из оффициального релиза);
- расширения и исправления в библиотеках TsBrowse и PropGrid;
- обновлены сборки Харбор и HMGS-IDE;
- новые и обновленные старые примеры (как обычно ).




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


SergKis
постоянный участник




Пост N: 1147
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.08.16 15:53. Заголовок: Подправил \BASIC..


Подправил \BASIC\GetClientSize\demo.prg на использование This... Скрытый текст



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




Пост N: 1148
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.08.16 16:05. Заголовок: gfilatov2002 Change..


gfilatov2002
ChangeLog.txt

 цитата:
* Enhanced: Added a shorten form 'App' for the 'Application' object.
Examples: App.ExeName, App.Handle, App.FormName etc.


Похоже потерялось в сборке

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




Пост N: 981
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.08.16 16:21. Заголовок: SergKis пишет: поте..


SergKis пишет:

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


Не потерялось, посмотри
//////////////////////////////////////////// 
// Application pseudo-commands
////////////////////////////////////////////

#translate <p:Application,App>.ExeName => GetExeFileName()
#translate <p:Application,App>.Handle => _HMG_MainHandle
...


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




Пост N: 1149
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 08.08.16 16:30. Заголовок: gfilatov2002 пишет Н..


gfilatov2002 пишет
 цитата:
Не потерялось, посмотри


Виноват исправлюсь.
Наверно пытался в старом сделать
? _HMG_aFormNames [ _HMG_MainIndex ]
? Application.FormName
? App.FormName




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




Пост N: 982
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 08.08.16 16:40. Заголовок: SergKis пишет: Подп..


SergKis пишет:

 цитата:
Подправил \BASIC\GetClientSize\demo.prg


Благодарю за упрощение кода этого примера - так лучше

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




Пост N: 983
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.08.16 11:20. Заголовок: Петр пишет: в принц..


Петр пишет:

 цитата:
в принципе использовать можно уже сейчас


Благодарю за помощь
Как первый шаг - весьма неплохо, но за кадром осталось использование CommandLink, RadioButton и ProgressBar в этом диалоге.

Если автор не потерял интерес к этому примеру, то ждем продолжения ...
Иначе придется допиливать самостоятельно, по мере сил

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


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


gfilatov2002 пишет:

 цитата:
за кадром осталось использование CommandLink, RadioButton и ProgressBar в этом диалоге



Вроде бы не заказывали такого
Callback, ипользование ресурсов, поддержка Unicode и возврат стандартного для TaskDialogIndirect результата..


Вот такой нужен пример (картинка)?

В принципе планировал написать несколько другой пример, но можно и такой.


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


Пост N: 1241
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 09.08.16 12:51. Заголовок: Добавлена функция-об..


Добавлена функция-обертка к TaskDialog, простой пример использования, пофиксены найденные ошибки.
обновленные исходники

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




Пост N: 984
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 09.08.16 13:15. Заголовок: Петр пишет: Вот так..


Петр пишет:

 цитата:
Вот такой нужен пример


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

Петр пишет:

 цитата:
Добавлена функция-обертка к TaskDialog, пример использования


Премного благодарен, буду вечером разбираться ...

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




Пост N: 985
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.08.16 10:04. Заголовок: Петр, Добавил подде..


Петр,

Добавил поддержку вывода стандартных иконок в диалоге (см.ниже)
Скрытый текст

Возникли следующие вопросы:
1) как сделать в этом диалоге вывод картинок из внешнего файла (использовать MAKEINTRESOURCE );
2) как правильно сделать неявный вызов функции TaskDialogIndirect() из comctl32.dll (с использованием LoadLibrary() / GetProcAddress())
Это требуется для вызова этой функции под BCC 5.5:

 цитата:
 
#if ( defined( __BORLANDC__ ) && __BORLANDC__ <= 1410 )
#include "tdi.h" // <-- здесь определения для структур TaskDialogIndirect
#endif


P.S. Благодарю за реализацию на Си функции TaskDialog() - пригодится

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


Пост N: 1244
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.08.16 21:26. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Добавил поддержку вывода стандартных иконок в диалоге (см.ниже)

gfilatov2002 пишет:


 цитата:
// 7 union { HICON hMainIcon; PCWSTR pszMainIcon; };
if ( hb_arrayGetType( pConfig, TDC_MAINICON ) & HB_IT_NUMERIC )
{
config.pszMainIcon = ( PCWSTR ) hb_arrayGetNL( pConfig, TDC_MAINICON );
}
else
{
config.pszMainIcon = NULL;
}



Что-то здесь не так.

при присвоении значения MainIcon мы можем использовать строку - имя ресурса, ID - числовой идентификатор ресурса, хендл HICON
при этом в первых двух случаях используется pszMainIcon, а в последнем hMainIcon.
 
typ = hb_arrayGetType( pConfig, TDC_MAINICON );
if ( typ & HB_IT_STRING )
{
config.pszMainIcon = HB_PARASTRDEF( 1, TDC_MAINICON, &hText[iText++], NULL )
}
else if (typ & HB_IT_NUMERIC )
{
config.pszMainIcon = MAKEINTRESOURCE( hb_arrayGetNI( pConfig, TDC_MAINICON ) );
}
else if (typ & HB_IT_POINTER )
{
config.hMainIcon = (HICON) ( hb_arrayGetPtr( pConfig, TDC_MAINICON ) );
}
else
{
config.pszMainIcon = NULL;
}


Поскольку в Minigui есть своя, скажем так, специфика в интерпретации указателей, я осознанно (не только из-за лени ) упустил
присвоение значения нескольким членам структуры TASKDIALOGCONFIG.


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




Пост N: 986
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.08.16 21:37. Заголовок: Петр пишет: при при..


Петр пишет:

 цитата:
при присвоении значения MainIcon мы можем использовать


Благодарю за помощь - работает

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


Пост N: 1245
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.08.16 21:40. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
как сделать в этом диалоге вывод картинок из внешнего файла


Что значит внешний файл. TaskDialogIndirect ориентирован в первую очередь на использование ресурсов (строк и иконок).
При этом ресурсы могут находиться как в собственно исполняемом файле config.hInstance = NULL или GetModuleHandle(NULL), так и в других файлах (например динамической библиотеке dll или другом исполняемом файле exe).

О hMainIcon уже писал, т.е иконку можно загрузить из файла, сгенерировать на лету или сконвертировать из другого формата с помощью gdi+ или других библиотек для обработки изображений.


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


Пост N: 1246
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 10.08.16 21:43. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Благодарю за помощь - работает



Все это, я думаю вы уже поняли, относится и к FooterIcon.

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




Пост N: 987
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.08.16 21:44. Заголовок: Петр пишет: в друг..


Петр пишет:

 цитата:
в других файлах (например динамической библиотеке dll


Имел в ввиду этот случай - конкретно, системные dll

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




Пост N: 988
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 10.08.16 21:47. Заголовок: Петр пишет: Все это..


Петр пишет:

 цитата:
Все это, я думаю вы уже поняли, относится и к FooterIcon


Да, понял
Благодарю за разъяснение

Увы, но работа этих диалоговых функций под bcc 5.5 приводит к вылету программы (не судьба, видимо, использовать со старым компилятором )

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




Пост N: 989
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 11.08.16 11:11. Заголовок: Петр , Обратил внима..


Петр,

Обратил внимание, что параметр lParam в callback-функции при использовании флажка TDF_ENABLE_HYPERLINKS
должен быть строкового типа (и содержать адрес URL), а не число, как сейчас
Возможно ли это поправить

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


Пост N: 1247
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 11.08.16 11:44. Заголовок: gfilatov2002 пишет: ..


gfilatov2002 пишет:

 цитата:
Возможно ли это поправить



Попробуйте это (нет возможности проверить самому)

 цитата:
HRESULT CALLBACK TDCallbackProc( HWND hWnd, UINT uNotification, WPARAM wParam, LPARAM lParam, LONG_PTR dwRefData ) 
{
HRESULT hRes;
PHB_ITEM pCallback = ( PHB_ITEM ) dwRefData;

if( pCallback && hb_vmRequestReenter() )
{
PHB_ITEM itm = hb_itemNew( NULL );

hb_vmPushEvalSym();
hb_vmPush( pCallback );
hb_vmPushNumInt( ( HB_MAXINT ) ( HB_PTRUINT ) hWnd );
hb_vmPushNumInt( ( HB_MAXINT ) uNotification );
hb_vmPushNumInt( wParam );

if ( uNotification == TDN_HYPERLINK_CLICKED)
{
HB_ITEMPUTSTR( itm, (HB_WCHAR *) lParam );

hb_vmPushItemRef( itm );
}
else
{
hb_vmPushNumInt( lParam );
}

hb_vmSend( 4 );

hRes = ( ( hb_parl( -1 ) == HB_TRUE ) ? S_OK : S_FALSE );

hb_itemRelease( itm );
hb_vmRequestRestore();

return hRes;
}
return S_OK;
}




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




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


Петр пишет:

 цитата:
Попробуйте это


Проверю сегодня вечером ...
Судя по коду - должно работать
Благодарю за помощь

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



Пост N: 318
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 11.08.16 15:51. Заголовок: Вопрос вроде как уже..


Вопрос вроде как уже поднимался ..... не нашел в темах . Извините если что

Имеем - стандартное окно . В нем организовано еще одно типа PANEL с VIRTUAL HEIGHT - оно со скроллингом разумеется .
в это окно (назовем его VIRTUAL_W ) - имеется некоторое количество контролов , лабелов и т д .

1 проблема >>
после заполнения всех контролов - пока не сдвинешь в этом окне (стрелками или скролбаром) - некоторые элементы отображаются неверно
Например LABEL - задан один цвет - а при первичной прорисовке он вовсе не такой . Нужно это окно сдвинуть вверх-вниз . тогда цвет уже такой как задавал

Пытаюсь передать в это окно команду PageUp - чтоб имитировать нажатие
форма всё-равно не прорисовывается правильно ....:

hwnd:=ASCAN(_HMG_aFormNames,'HC_VIRT')

IF hwnd >0
SendMessage ( hwnd, WM_VSCROLL, SB_PAGEUP, 0 )
ENDIF

2 Проблема - в окне есть элемент DRAW GRADIENT или DRAW LINE
при каких то изменениях в этом окне - например передвижение или изменение LABEL VALUE и т д , этот самый DRAW LINE /GRADIENT не перерисовывается .
Причем не всегда - то нормально - то с запаздыванием от от пары секунд до десятка . Иногда вообще не перерисовывается .
прилагаю скрин







Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 223
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет