Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 4698
Рейтинг: 426
#1: 2017-03-17 13:36:06 ЛС | профиль | цитата
Компонент внесен в официальную сборку (доступно по SVN)!

Назначение компонента - установка стандартных свойств формы BorderStyle и WinStyle по Handle элемента, за счет этого применимо к любым визуальным элементам, имеющим Handle. Пример использования в архиве.

Скачать архив 


Как установить элемент в HiAsm4?

Компонент выполнен по этому заказу и выложен в свет по просьбе заказчика.

Редактировалось 3 раз(а), последний 2017-03-19 16:34:09
карма: 10
5
файлы: 1WinBorders.zip [2KB] [558]
Голосовали:Iliya, Nickname, Konst, Shonyi, halt
Разработчик
Ответов: 26155
Рейтинг: 2127
#2: 2017-03-17 15:02:45 ЛС | профиль | цитата
Assasin, спроси у заказчика, может разрешит в пакет добавить, в радел Окно, ты же имеешь доступ к SVN?

Редактировалось 2 раз(а), последний 2017-03-17 15:05:10
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#3: 2017-03-17 15:14:06 ЛС | профиль | цитата
nesco, да, имею. Если он не против, добавлю. Только тогда стоит несколько подредактировать WinControl.pas и hiMainForm. Чтобы обеспечить поддержку именно HiAsm-овых стилей, я оттуда скопировал необходимый набор устанавливаемых флагов контролу. Если же вносить это в пакет, лучше сразу в этих двух файлах выделить флаги в отдельные экспортируемые константы и потом их использовать в моем компоненте.

Редактировалось 1 раз(а), последний 2017-03-17 15:16:12
карма: 10
0
Разработчик
Ответов: 26155
Рейтинг: 2127
#4: 2017-03-17 16:02:24 ЛС | профиль | цитата
Assasin писал(а):
Если же вносить это в пакет, лучше сразу в этих двух файлах выделить флаги в отдельные экспортируемые константы и потом их использовать в моем компоненте.

Если от этого не пострадает никакая совместимость, то никто этого и не заметит.
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#5: 2017-03-17 16:25:39 ЛС | профиль | цитата
nesco писал(а):
Если от этого не пострадает никакая совместимость, то никто этого и не заметит.

Да вроде не должна
карма: 10
0
Ответов: 16884
Рейтинг: 1239
#6: 2017-03-17 20:23:08 ЛС | профиль | цитата
Assasin писал(а):
Да вроде не должна
как в анекдоте писал(а):
- Михална, я тут открытки подписываю. Как правильно писать: "годавщина" или "гадовщина" ?
- Пиши "ебелей".


Редактировалось 3 раз(а), последний 2017-03-17 20:24:51
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 165
Рейтинг: 6
#7: 2017-03-17 21:32:08 ЛС | профиль | цитата
Я только "за".
карма: 4

1
Голосовали:Konst
Разработчик
Ответов: 4698
Рейтинг: 426
#8: 2017-03-19 16:34:24 ЛС | профиль | цитата
Внес на SVN.
карма: 10
1
Голосовали:Tad
Ответов: 4630
Рейтинг: 749
#9: 2017-03-20 12:24:52 ЛС | профиль | цитата
Появились warning-и:
E:\HiAsm\Elements\delphi\code\hiMainForm.pas(299) Warning: Combining signed and unsigned types - widened both operands
E:\HiAsm\Elements\delphi\code\hiMainForm.pas(300) Warning: Combining signed and unsigned types - widened both operands

Предлагаю в Win.pas массивы BorderStyle_Set, BorderStyle_ExSet, WinStyle_ExSet объявить как array of DWord.
карма: 26

0
Разработчик
Ответов: 4698
Рейтинг: 426
#10: 2017-03-20 14:42:06 ЛС | профиль | цитата
Netspirit, там с этим вообще непонятно что: функция Length возвращает знаковое число, константы винды знаковые, функция винды, по-моему, тоже знаковые возвращает, в KOL беззнаковые. А со знаковыми переменными еще по Си у меня опасение, что непредсказуемо будут работать бинарные операторы. Я вроде везде приведения типов сделал, но видимо где-то забыл. На всякий случай, какой компилятор и какая версия?

--- Добавлено в 2017-03-20 14:51:02

Вроде пофиксил.

Редактировалось 2 раз(а), последний 2017-03-20 14:51:02
карма: 10
0
Ответов: 4630
Рейтинг: 749
#11: 2017-03-20 15:14:40 ЛС | профиль | цитата
Эти константы объявлены в Windows.pas - как беззнаковые. Сответственно, в KOL TControl.Style и TControl.ExStyle тоже беззнаковые. В твоём предыдущем варианте из массива бралось значение как знаковое, результат получался знаковый, а присваивалось в беззнаковые TControl.Style и TControl.ExStyle. Всего лишь.

Assasin писал(а):
Вроде пофиксил.

Ты, конечно, приколист. Вместо того, чтобы исправить в самом источнике, ты правишь там, где возникло. А возникнет оно везде, где используется таким образом. Да и не поправил ты - беззнаковый BorderStyle_Mask/BorderStyle_ExMask комбинируется со знаковыми числами.

Редактировалось 2 раз(а), последний 2017-03-20 15:45:37
карма: 26

0
Ответов: 165
Рейтинг: 6
#12: 2017-03-20 18:45:00 ЛС | профиль | цитата
У меня другой Win.pas и после ваших переделок получился конфликт SVN обновления. Можно скинуть сюда, что надо дописать в старый Win.pas?
карма: 4

0
Ответов: 4630
Рейтинг: 749
#13: 2017-03-20 18:54:00 ЛС | профиль | цитата
Так посмотри в TortoiseSVN разницу. Можешь выбрать "Resolve Conflicts using mine", затем Diff по своему файлу - увидишь чем отличается от обновленного.
карма: 26

0
Ответов: 165
Рейтинг: 6
#14: 2017-03-20 19:23:20 ЛС | профиль | цитата
Netspirit, использую HiUpdate.exe (HiSVN), увы
карма: 4

0
Разработчик
Ответов: 4698
Рейтинг: 426
#15: 2017-03-20 21:56:38 ЛС | профиль | цитата
Netspirit писал(а):
Эти константы объявлены в Windows.pas - как беззнаковые

В Windows.pas они вообще без типа объявлены. Как и в Си - просто дефайны, а тип интерпретируется по месту использования.
А вот функции GetWindowLong/SetWindowLong оперируют знаковым типом LONG (что есть int32). Отсюда я сделал вывод, что работа идет со знаковыми константами, поэтому и посчитал верными именно знаковые типы. Говорил же, сплошной бардак:
Assasin писал(а):
там с этим вообще непонятно что
В итоге и не ясно, где с чем правильно работать.

--- Добавлено в 2017-03-20 22:02:16

Сделал dword, пропали варнинги? У меня они еще с предыдущего коммита перестали показываться на обоих компиляторах, поэтому сам не могу протестить.

Редактировалось 2 раз(а), последний 2017-03-20 22:02:41
карма: 10
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)