Вверх ↑
Этот топик читают: Гость
Ответов: 5227
Рейтинг: 586
#91: 2021-12-10 15:08:17 ЛС | профиль | цитата
Хочу кое что добавить.

Стал разбиратся что мои контролы GDI+ перестали работать при подключенных точках событий MouseEnter и onMouseLeave
и что я вижу в Win.pas
procedure THIWin.SetMouseEnter(Ev:THI_Event);
begin
// история костыля:
// если св-ва установлены, то появляется лишнее событие WM_PAINT на контролах, но верно работает MouseEnter
// если не установлены или сделаны иначе, то MouseEvent может приходить много раз + еще хз какие проблемы
fonMouseEnter := ev;
Control.onMouseEnter := _onMouseEnter;
end;

procedure THIWin.SetMouseLeave(Ev:THI_Event);
begin
fonMouseLeave := ev;
Control.onMouseLeave := _onMouseLeave;
end;

т.е присвоили себе события а там хоть трава не расти...

а что нельзя было проверочку добавить, может кто из компонентов уже использует эти методы?
procedure THIWin.SetMouseEnter(Ev:THI_Event);
begin
// история костыля:
// если св-ва установлены, то появляется лишнее событие WM_PAINT на контролах, но верно работает MouseEnter
// если не установлены или сделаны иначе, то MouseEvent может приходить много раз + еще хз какие проблемы
fonMouseEnter := ev;
if not Assigned(Control.onMouseEnter) then // вот так к примеру
Control.onMouseEnter := _onMouseEnter;
end;

procedure THIWin.SetMouseLeave(Ev:THI_Event);
begin
fonMouseLeave := ev;
if not Assigned(Control.onMouseLeave) then // и так
Control.onMouseLeave := _onMouseLeave;
end;
Тогда уж пусть на события в этих точках ляжет на плечи разработчика.

ну что там вызвать то одноимённые методы труда не составит
_hi_OnEvent(_event_onMouseEnter);
_hi_OnEvent(_event_OnMouseLeave);

Короче у себя поправил, всё работает. Но может кто мне другое кун-фу объяснит

Редактировалось 1 раз(а), последний 2021-12-10 15:09:03
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 5227
Рейтинг: 586
#92: 2021-12-15 07:51:56 ЛС | профиль | цитата
Так интересно самим с собой разговаривать , видать разработчики заняты особо важными делами
Ну да ладно, сегодня у нас обзор ScrollManager(a) сделанного с помощью GDI+
Не сосвсем он и конечно менеджер а лишь обычный компонент но в составе контейнера он рисует скролы редакторов и дополнительно рисует им фокус.
Штатные компоненты при этом изменениям не подвергались. Проблемным пока остаётся RichEdit, чёт ни фига он ползунок таскать не хочет (будем разбираться позже) Как обычно в интернете ничего нету а кто пытался сделать сломал голову Но мы упорно кодили всю ночь без пива и добились результата
вот такой ини у нас пока

[Property]
ColorStart=Верхний цвет градиента|8|16771797
ColorEnd=Нижний цвет градиента|8|clSkyBlue
ColorArrow=Цвет стрелок|8|12622454
ColorEdging=Цвет окантовки бегунка и рисок|8|clSkyBlue
ColorFocus=Цвет фокусной рамки и контура контрола|8|clSkyBlue
[Methods]
OnMsg=Для отладки!|2|

кто желает поклацать https://forum.hiasm.com/getfile/39330
Можно обсудить дизайн кто желает...
p.s надо ведь и поспать хоть пару часиков



Редактировалось 3 раз(а), последний 2021-12-15 13:15:19
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
1
Голосовали:zeta211
Ответов: 5227
Рейтинг: 586
#93: 2021-12-15 10:18:58 ЛС | профиль | цитата
FPC покряхтел-покряхтел на моём тормозном ящике но собрал
Всё пашет!

Подготовка к сборке проекта...
Генерация кода целевого языка
Компоновка проекта...
Command line: fpc.exe '"C:\HiAsm_AltBuild\Elements\delphi\code\GDIPSCrollManager_test2.pas"' -Sd -Mdelphi '"-FEC:\Project\GDIPlusControl\GDIPScrollManager\"' '"-FUC:\HiAsm_AltBuild\Elements\delphi\code\units"' -FDtools\ -CX -dF_P
Free Pascal Compiler version 1.9.6 [2004/12/31] for i386
Copyright (c) 1993-2004 by Florian Klaempfl
Target OS: Win32 for i386
Compiling C:\HiAsm_AltBuild\Elements\delphi\code\GDIPSCrollManager_test2.pas
Compiling C:\HiAsm_AltBuild\Elements\delphi\code\hiMainForm_4734C10.pas
Compiling C:\HiAsm_AltBuild\Elements\delphi\code\ScrollManager.pas
ScrollManager.pas(47,16) Warning: An inherited method is hidden by "destructor THScroll.Destroy"
ScrollManager.pas(83,16) Warning: An inherited method is hidden by "destructor TVScroll.Destroy"
ScrollManager.pas(39,5) Note: Private field "THScroll.FMsgEvent" is never used
Compiling C:\HiAsm_AltBuild\Elements\delphi\code\hiChildGDIPPanel_44E7AA0.pas
Compiling C:\HiAsm_AltBuild\Elements\delphi\code\hiChildGDIPPanel_44E79F0.pas
Compiling C:\HiAsm_AltBuild\Elements\delphi\code\hiChildForm_44E7B50.pas
Compiling C:\HiAsm_AltBuild\Elements\delphi\code\hiChildForm_44E9DB0.pas
Compiling resource C:\HiAsm_AltBuild\Elements\delphi\code\allres.res
Linking C:\Project\GDIPlusControl\GDIPScrollManager\GDIPSCrollManager_test2.exe
2398 Lines compiled, 1.6 sec
Сжатие кода...
Сборка завершена.

--- Добавлено в 2021-12-15 10:22:40

Эх, надо ещё заголовки у таблицы покрасить , ну что делать, покрасим тогда...

Редактировалось 1 раз(а), последний 2021-12-15 10:22:40
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 5227
Рейтинг: 586
#94: 2021-12-15 13:14:14 ЛС | профиль | цитата
Устранил серьёзную багу, отображение текста справа налево. Теперь нормально, халтура не конает
поклацать тут https://forum.hiasm.com/getfile/39330


карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 5227
Рейтинг: 586
#95: 2021-12-17 09:26:45 ЛС | профиль | цитата
Конкретно уеб..... но покрасил таки StringTabe
поклацать тут -> https://forum.hiasm.com/getfile/39331



--- Добавлено в 2021-12-17 09:27:59

Ini стал таким

[Property]
ColorStart=Верхний цвет градиента|8|16771797
ColorEnd=Нижний цвет градиента|8|clSkyBlue
ColorArrow=Цвет стрелок|8|12622454
ColorEdging=Цвет окантовки бегунка и рисок|8|clSkyBlue
ColorFocus=Цвет фокусной рамки и контура контрола|8|clSkyBlue
##STOptions=Настройки для заголовков StringTable
STFont=Шрифт для заголовка таблицы|15| Helvetica,8,0,0,1
STColorStart=Верхний цвет градиента заголовка таблицы|8|16771797
STColorEnd=Нижний цвет градиента заголовка таблицы|8|clSkyBlue
STColorEdging=Цвет разделителей колонок в заголовках|8|clSkyBlue
STColor=Цвет таблицы|8|clWindow
STColorGrid=Цвет сетки|8|clSkyBlue
STFocusDraw=Рисовать градиентный фокус|14|0|True,False
STFocusColorStart=Верхний цвет градиента фокуса таблицы|8|16771797
STFocusColorEnd=Нижний цвет градиента фокуса таблицы|8|clSkyBlue
STFocusTextColor=Цвет текста в фокусной рамке|8|clBlack
##

Редактировалось 1 раз(а), последний 2021-12-17 09:27:59
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
файлы: 1GDIPScrollManager.zip [74.4KB] [255]
Ответов: 5227
Рейтинг: 586
#96: 2021-12-18 11:54:10 ЛС | профиль | цитата
Пытаюсь добавить свой цвет выделения, (говорят что это не так просто) попытка №1 и пока только в IC.
Попытка вроде зачётная.



p.s эх, пойду выпью , задрало уже это программирование...
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 5227
Рейтинг: 586
#97: 2021-12-26 02:36:40 ЛС | профиль | цитата
GDIPImageListView как вьювер изображений. Форматы которые поддерживает GDI+ '*.bmp;*.dib;*.jpeg;*.jpg;*.emf;*.wmf;*.gif;*.tif;*.tiff;*.png;*.ico'
пока просто набросок...
GDIPImageListView demo

хотя можно даже уже демку поюзать https://forum.hiasm.com/getfile/39335

Редактировалось 2 раз(а), последний 2021-12-26 02:51:36
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 5227
Рейтинг: 586
#98: 2021-12-27 17:49:33 ЛС | профиль | цитата
Дело малость продвинулось.
Нашпиговал свойств и методов
Изменил отрисовку миниатюр
Изменил отрисовку фона (52 кисти на борту у GDI+)
для поюзать тут https://forum.hiasm.com/getfile/39336

Уже так выглядит

ини уже такой
@ThumbnailSize=Размер миниатюры|1|130
@ThumbnailColor=Цвет миниатюры|8|clCream
@BorderColor=Цвет оконтовки миниатюры|8|clSilver
@Spacing=Растояние между миниатюрами|1|5
@ShowNames=Показывать имена файлов|14|0|True,False
@PatternBkgnd=Узорный фон|14|1|True,False
@Color1=Цвет 1 для узорного фона|8|clWhite
@Color2=Цвет 2 для узорного фона|8|clSkyBlue
@PatternIndex=Тип узорного фона(велтчина от 1-52)|1|47

[Methods]
onSelect=Событие происходит при выборе эскиза и выдаёт его путь в поток|2|
*onLoad=Событие происходит после загрузки изображений из дириктории|2|
*onProgress=Событие происходит после очередного добавления эскиза и выводит позицию прогресса|2|
*onMaxProgress=Событие происходит перед началом прогресса и выводит его максимальное значение|2|
Dir=Директория файлов (*.bmp, *.dib, *.jpeg/*.jpg, *.emf, *.wmf, *.gif, *.tif/tiff, *.png, *.ico)|4|2
Count=Содержит количество миниатюр|3|1
Select=Содержит список выбранных миниатюр|3|2
*SizeImg=Содержит размер файла изображения выделенного эскиза|3|2
*SizeImgAll=Содержит общий размер файлов выделенных эскизов|3|2

Редактировалось 2 раз(а), последний 2021-12-27 18:19:06
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
1
Голосовали:zeta211
98
Сообщение
...
Прикрепленные файлы
(файлы не залиты)