Вверх ↑
Этот топик читают: Гость
Ответов: 4794
Рейтинг: 538
#1: 2021-11-11 19:15:58 ЛС | профиль | цитата
Вечер добрый.
Может кто знает...
Не получается прочитать свойства


  W := integer(SearchParam(PRec, 'width').Value^);
H := integer(SearchParam(PRec, 'height').Value^);

//C1 := ColorRGB(integer(SearchParam(PRec, 'Color1').Value^));
//C2 := ColorRGB(integer(SearchParam(PRec, 'Color2').Value^));
//C1 := ColorRGB(integer(SearchParam(PRec, 'LightColor').Value^));
//C2 := ColorRGB(integer(SearchParam(PRec, 'DarkColor').Value^));

кроме width и height ничего не читает. При установке компонента ошибка рунтайм и пипец...
width и height читает, картинку вижу. Но хотелось то свойствами играть

p.s
закончил работу над GDIPTabs (статический контроллер страниц)
Имеет на борту 10 вкладок. Может делать скосы, подсвечивать неактивные вкладки, может их вообще не отображать (плоский вид)
Свойств немного легко настраивается.
демка если кто желает поклацать https://forum.hiasm.com/getfile/39305

карма: 7
0
файлы: 1GDIPTabs.zip [145.1KB] [76]
vip
#1.1контекстная реклама от партнеров
Ответов: 58
Рейтинг: 1
#2: 2021-11-12 12:27:24 ЛС | профиль | цитата
andrestudio писал(а):
GDIPTabs

Красатищеее...
карма: 0
HiAsm Studio
0
Ответов: 4525
Рейтинг: 724
#3: 2021-11-12 13:18:13 ЛС | профиль | цитата
Если речь идёт об draw dll, то в пакете Android делал так:
var 
Initialized: boolean = false;

// Индексы свойств (чтобы не искать при каждой перерисовке)
PropWidth,
PropHeight,
PropText,
PropHint: integer;


procedure Init(PRec:PParamRec; var ed:pointer; DTools:PDrawTools); cdecl;
function SearchIndex(const name:string):integer;
begin
result := 0;
while lowercase(PRec^[result].name) <> lowercase(name) do
inc(result);
end;
begin
if Initialized then exit;

PropWidth := SearchIndex('Width');
PropHeight := SearchIndex('Height');
PropText := SearchIndex('Text');
PropHint := SearchIndex('Hint');

Initialized := true;
end;

procedure Draw(PRec:PParamRec; ed:pointer; dc:HDC); cdecl;
var C: PCanvas;
R: TRect;
Width, Height: integer;
Text, Hint : string;
begin

Width := integer(PRec[PropWidth].Value^);
Height := integer(PRec[PropHeight].Value^);
Text := string(PRec[PropText].Value^);
Hint := string(PRec[PropHint].Value^);

C := NewCanvas(dc);
SetRect(R, 4, 2, Width - 8, Height - 4);
with C^ do
begin

.....

Редактировалось 2 раз(а), последний 2021-11-12 15:05:55
карма: 26

0
Ответов: 4794
Рейтинг: 538
#4: 2021-11-12 17:48:50 ЛС | профиль | цитата
envoy_sky писал(а):
Красатищеее...

При чём сделан на почти самом отстойном языке
Netspirit, спасибо, ночью поколдую.

p.s не удержался и сделал GDIPTabsEx с горизонтальными вкладками.
поклацать тут https://forum.hiasm.com/getfile/39306



карма: 7
0
файлы: 1GDIPTabsEx.zip [128.1KB] [24]
Ответов: 4794
Рейтинг: 538
#5: 2021-11-13 03:26:36 ЛС | профиль | цитата
Netspirit, всё получилось. Я даже автоматизировал процесс.
dll собираю прямо в HiAsm.
Открываю проект dll
вставляю из другого проекта дочернию форму



проваливаюсь в неё



пишем IC, в нём объявляем экспорт Draw
далее на скорую руку склепал утилитку которая часть грязной работы делает за меня
копирую свойства с ini



Create. Лишнее выпиливаем, расставляем типы и в hiComponent. в IC его соответственно включаем в uses



тут чистим правим дополняем и в IC



в hiComponent берём любой подходящий метод коментируем его делаем дубликат, чистим, правим, дополняем



p.s к сожалению через IC напрямую к контролу достучатся не удалось, одни крэши вероятно из за доступа к памяти
вот и пришлось такой лисапед крутить
В любом случае при таком раскладе при хорошей сноровке можно даже со сложным компонентом за час управится
В удобной среде, все Debug(и) работают, все error по строкам видны, песня ведь...

Редактировалось 4 раз(а), последний 2021-11-13 03:37:17
карма: 7
0
Ответов: 4794
Рейтинг: 538
#6: 2021-11-13 10:44:30 ЛС | профиль | цитата
Проснулся, шары протёр кофе попил.
За час GDIPTrackBar, только тики не отображает почему то а остальное всё работает. Разбираюсь с тиками

карма: 7
0
Ответов: 4794
Рейтинг: 538
#7: 2021-11-13 17:54:56 ЛС | профиль | цитата
Покрасил таки
Тики так и не нашёл, да х.. с ним, остальное всё устраивает. Быстро и сердито.
Пошёл пиво пить



Редактировалось 1 раз(а), последний 2021-11-20 09:36:51
карма: 7
0
Ответов: 4794
Рейтинг: 538
#8: 2021-11-15 16:47:34 ЛС | профиль | цитата
Едем дальше...
В панелях отрисовываю контура контролов редактирования и отображения информации. (в самих элементах ничего не трогаю, всё остаётся неизменным)
Элемент в фокусе подсвечиваю жирной рамкой (думаю и в руш контролы такой сервис вставить не трудно, GDI+ там не обязательно)
IPEdit и DataEdit потом подправлю


Редактировалось 1 раз(а), последний 2021-11-15 16:49:14
карма: 7
0
Ответов: 4794
Рейтинг: 538
#9: 2021-11-17 20:45:19 ЛС | профиль | цитата
К сожалению в Desing-Time для шрифтов доступны только имя и размер, остальные атрибуты увы недоступны, даже цвет
Данные типа Stream тоже пусты, хотя тип данных отображает верно.
Добавил свойство CaptionTop для экономии рабочего пространства



Редактировалось 1 раз(а), последний 2021-11-17 20:50:50
карма: 7
0
Ответов: 4794
Рейтинг: 538
#10: 2021-11-18 16:40:04 ЛС | профиль | цитата
Добавлен круглый индикатор прогресса GDIPCircleProgressBar
Вроде ничего получилось, с учётом того что раньше самостоятельно такие штуки не делал.
Свойств не так уж много

@Max=Задает максимальное значение величины|1|100
@Caption=Текст в центре, если поле пустое текст не отображается|2|%
LineWidth=Ширина линии прогресса|1|20
Color1=Верхний цвет градиента|8|clWhite
Color2=Нижний цвет градиента полосы|8|16744448
Color3=Цвет фоновой полосы|8|16774636
OffsetColor2=Смещение цвета от Color2 для контурной рамки, подбирается индивидуально|1|48
Alpha1=Величина альфа канала Color1 (0-255)|1|255
Alpha2=Величина альфа канала Color2 (0-255)|1|255
OutLine=Рисовать контур|14|0|True,False
LineCapRound=Полоса прогресса с сглаженными углами|14|1|True,False
FonLine=Рисовать фоновую полосу прогресса|14|0|True,False
DrawBackground=Рисовать фон, для GDIPPanel отключить|14|1|True,False
VPadding=Отступ текста сверху для точной центровки в прогрессе|1|0




Редактировалось 1 раз(а), последний 2021-11-18 16:40:15
карма: 7
0
Ответов: 4794
Рейтинг: 538
#11: 2021-11-19 01:36:51 ЛС | профиль | цитата
Продолжаю обзор своего творчества.
Усложним задачу.
Добавлена возможность отрисовки прогресса секторами
добавлены свойства:
ShowSectors=Отображать прогресс секторами|14|1|True,False
SectorsStepPos=При ShowSectors True значением типа Real определяет шаг (растояние между секторами) подбирается индивидуально|7|1.3

OffsetColor2 заменён на Color4=Цвет контурной рамки. Оказалось что Offset хуже человеческого газа
Результат



Редактировалось 2 раз(а), последний 2021-11-19 02:10:05
карма: 7
0
Ответов: 4794
Рейтинг: 538
#12: 2021-11-19 19:06:43 ЛС | профиль | цитата
Добавлен метод doPleaseWaitMode для неопределённых по времени процессах


Редактировалось 1 раз(а), последний 2021-11-19 19:07:09
карма: 7
0
Ответов: 58
Рейтинг: 1
#13: 2021-11-20 20:18:58 ЛС | профиль | цитата
GDIPluse controls уже готов?
Интересует цена.
карма: 0
HiAsm Studio
0
Ответов: 4794
Рейтинг: 538
#14: 2021-11-21 20:34:34 ЛС | профиль | цитата
envoy_sky писал(а):
GDIPluse controls уже готов?

Нет, до нового года точно пилить буду. Ну а про цену я даже не знаю. Всё будет зависить от количества желающих.

Добавлены аналоговые часы
Подправил шкалу, добавил графические шкалы и стрелки
Размеры стрелок и маркеров циферблата устанавливается программно
INI пока такой
@Active=Отключает/Включает режим отображения времени|14|1|True,False
Caption=Надпись в часах под ценром стрелок|2|
Color1=Верхний цвет градиента|8|clWhite
Color2=Нижний цвет градиента|8|clSkyBlue
Alpha1=Величина альфа канала Color1 (0-255)|1|255
Alpha2=Величина альфа канала Color2 (0-255)|1|255
Radius=Радиус углов (при равной ширине и высоте часов и радиусом *2 часы будут круглыми)|1|15
Outline=Рисовать контур|14|0|True,False
Line=Величина контурной линиии|1|1
ClockFaceMode=Режим отображения циферблата и стрелок часов|4|1|Circle,Line,Images
LineCapMode=Режим отображения стрелок|4|1|Line,LineRound,LineArrow
ShowNumbers=Отображать цифры на циферблате|14|0|True,False
##Images=Изображение для графического представления часов при ClockFaceMode-Images
ImageClock=Содержит содержит изображение циферблата(PNG,ICO)|10|
ImgHour=Содержит вертикальное изображение часовой стрелки(PNG,ICO)|10|
ImgMinute=Содержит вертикальное изображение минутной стрелки(PNG,ICO)|10|
ImgSecond=Содержит вертикальное изображение секундной стрелки(PNG,ICO)|10|
ImgSpot=Содержит изображение пятачка в центре над стрелками(PNG,ICO)|10|
##

демка поюзать https://forum.hiasm.com/getfile/39313





Редактировалось 2 раз(а), последний 2021-11-22 20:41:43
карма: 7
0
Ответов: 4794
Рейтинг: 538
#15: 2021-11-24 03:06:53 ЛС | профиль | цитата
Раз пошла такая пьянка с углами, градусами и с окружностьями (бля.. как я их ненавижу, вот что значит бухать бросить ) запилил GDIPKnob
Вероятно прорисовку графических ручек тоже добавлю
демка поюзать https://forum.hiasm.com/getfile/39316


карма: 7
0
файлы: 1GDIPKnob.zip [149KB] [22]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)