Вверх ↑
Этот топик читают: Гость
Ответов: 168
Рейтинг: 7
#1: 2013-03-20 18:12:03 ЛС | профиль | цитата
Здравствуй Dilma
Вот сдесь http://www.hiasm.com/forum.html?q=3&p=234221
спросил у Nesco он переадресовал к тебе.Возможно выпытываю секреты хиасма-но хотелось бы узнать кроме Draw какие еще функции могут использоваться.
Задачу себе поставил такую
накидываются шейпы, из них строится мнемоника труб
появится необходимость пересекающий обьект поднять/опустить в z- последовательности по реакции от мыши или клавы. Можно конечно попытаться повесить хуки
но думаю у тебя есть интегрированный в среду соответствующий метод да и в 7-ке все это работать не будет.
В обмен могу быть полезен в изготовлении например
драйверов чего-либо к чему либо (протоколы,интерфейсы)
(сейчас у меня прикручены 2 dll к хиасу для работы через USB->FTDI->rs485:
1 Profibus-DP для обмена с сименсами S7-22x
2 FC-Drive для обмена с частотниками Danfoss )
Или к примеру посильная помощь в разработке какого-нить ус-ва (сам я электроник, в советском прошлом инж-конструктор).
Пишу предпочтительно на асме -х86 -атмел
Просьба ответить
карма: 1

0
Ответов: 704
Рейтинг: 44
#2: 2013-03-20 18:21:17 ЛС | профиль | цитата
А компоненты ChildPanelEx и MoveWindow не подходят для таких целей?
карма: 0

0
Ответов: 168
Рейтинг: 7
#3: 2013-03-20 18:30:42 ЛС | профиль | цитата
Нет, это все будет работать в рунтайме после компиляции
Я спрашивал о dll которая уже работает во время разработки и запускается когда нажимаеш на просмотр формы.
Все они имеют имя как и имя визуального компонента но без приставки 'hi'
и находятся в папке Elements\Delphi\Draw
их исходники там-же с расширением .dpr
внутри работа практически только с WinApi
карма: 1

0
Разработчик
Ответов: 26113
Рейтинг: 2126
#4: 2013-03-20 18:53:17 ЛС | профиль | цитата
flash1103 писал(а):
внутри работа практически только с WinApi

Ну почему же только с WinAPI, там и KOL функции можно использовать
карма: 22

0
Ответов: 168
Рейтинг: 7
#5: 2013-03-20 22:39:11 ЛС | профиль | цитата
Извините уехал с работы сейчас дома
Да да оговорился, я имел ввиду
что отсутствуют структуры канвы и все
ассоциации свойств с этим связанные (после точки)
хотя в ф-цию draw передается поинтер на некую структуру PParamRec
в Drawshare , по которой пробегается функция SearchParam
в поиске имени параметра.
Так вот при пробеге по структуре с перебором всех имен указанных в свойствах
элемента, заметил что, структур больше чем именованных свойств приблизительно на ~8..10 шт;
то-есть строчный параметр пустой а указатель куда-то показывает
Интересно со всем этим поковыряться, авось куда-то приведет (на массив хендлов формы например,а то и pcontrol найдется) -шучу
(ed)-указатель на структуру в которой фигурирует bmp(видимо для компонентов имеющих свойство холста)
-Все!., вижу в grapher.dpr есть экспорт: init,close,draw,change. Во всех функциях 3-й параметр разный
а в init он =PDrawTools
В общем пошел ковыряться.
Dilma неотвечает,наверное раз в месяц заглядывает, и то из чувства долга. 10 лет сопровождать изделие/инструмент/..
не каждый сможет, и я его понимаю.

карма: 1

0
Ответов: 8921
Рейтинг: 823
#6: 2013-03-20 23:09:12 ЛС | профиль | цитата
flash1103, Раздавишь цветок -- умрёт Звезда, любые телодвижения увеличивают энтропию во Вселенной.
карма: 19

0
Ответов: 4628
Рейтинг: 749
#7: 2013-03-21 12:24:56 ЛС | профиль | цитата
flash1103, как бы не хотелось, но выше головы не прыгнешь. Библиотеки в папке Draw предназначены исключительно для отрисовки компонента в редакторе формы. Для этого им дается возможность получить значения свойств текущего компонента (возможно, изменить в процедуре Change) и в соответствии с ними нарисовать компонент на DC. Больше ничего.
flash1103 писал(а):
(ed)-указатель на структуру в которой фигурирует bmp
Это указатель на что тебе угодно. Устанавливается в процедуре Init.
flash1103 писал(а):
что отсутствуют структуры канвы

Методы канвы можно использовать так:

#pas
procedure Draw(PRec:PParamRec; ed:pointer; dc:HDC); cdecl;
var C: PCanvas;
R: TRect;
Width, Height: integer;
begin
// PropXXXX - переменные, содержащие индексы свойств
Width := integer(PRec[PropWidth].Value^);
Height := integer(PRec[PropHeight].Value^);

C := NewCanvas(dc);
SetRect(R, 4, 2, Width - 8, Height - 4);
with C^ do
begin
Pen.Color := $2894ff;
Pen.PenWidth := 2;
Brush.Color := clWhite;
RoundRect (0, 0, Width, Height, 6, 6);
end;
C.Free;
end;
карма: 26

0
Ответов: 5227
Рейтинг: 587
#8: 2013-03-21 12:45:33 ЛС | профиль | цитата
flash1103, в справке это есть HiAsm->Пакеты->Структура пакета HiAsm->Разработка элемента->Класс Custom




карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Гость
Ответов: 17029
Рейтинг: 0
#9: 2013-03-21 14:35:06 правка | ЛС | профиль | цитата


Редактировалось 9 раз(а), последний 2021-06-21 04:13:19
карма: 0

0
Ответов: 168
Рейтинг: 7
#10: 2013-03-21 16:11:29 ЛС | профиль | цитата
^ это я
карма: 1

0
Ответов: 168
Рейтинг: 7
#11: 2013-04-16 13:31:01 ЛС | профиль | цитата
Netspirit писал(а):
flash1103, как бы не хотелось, но выше головы не прыгнешь. Библиотеки в папке Draw предназначены исключительно для отрисовки компонента в редакторе формы. Для этого им дается возможность получить значения свойств текущего компонента (возможно, изменить в процедуре Change) и в соответствии с ними нарисовать компонент на DC. Больше ничего

Попытался, вроде получилось.
Пошел по пути сбора классов оконв каждом элементе с сохранением дерева хендлов в своей структуре в плоть до своего.Кстати класс любого окна компонента "TCpanel" на форме "TForm2". В общем не буду флудить если кому интересно, распишу детально.
Почти все закончил, остались некоторые сложные формы.
-Присутствует ориентированная градиентная заливка
-натягивание любой из 10 текстур с произвольным смешением с градиентом+ 4 битмапа пользователя из файла/ов "user1..4.bmp". все текстуры запихал в ресурсы длл, сейчас вес ~14M
сначала все изменения синхронизировал в хи-рунтайм модуле, потом плюнул и забросил в рунтайме будут совсем другие функции.
-динамическая установка/снятие хуков мыши/клавиатуры.Мышь для определения и установки псевдофокуса компонента, клавиши для изменения локальной z-последовательности в диапазоне +1..-1 (ниасмовских top-bottom не хватает)

Назрел вопрос к nesco,andrestudio,Netspirit, вернее три:

1 Никогда и ни при каких обстоятельствах не вызывается функция Close?
2 В борьбе с утечками памяти заметил что клик мыши по пустой форме увеличивает занятую память на 4кб?
3 Как сделать что-бы при выборе свойства формы "Picture", битмап рисунка натягивался на всю клиентскую область а не наоборот?
В принципе это можно решить своими путями (1,3) но если есть стандартный метод то хотелось бы его освоить.
Просто ткните в какую сторону смотреть.






карма: 1

0
Ответов: 4628
Рейтинг: 749
#12: 2013-04-16 13:56:15 ЛС | профиль | цитата
По поводу Close в справке описано всё красиво и понятно, но действительно, процедура никогда не вызывается. Я не знаю почему. Наверное, баг среды.
карма: 26

0
12
Сообщение
...
Прикрепленные файлы
(файлы не залиты)