Вверх ↑
Этот топик читают: Гость
Ответов: 4621
Рейтинг: 746
#16: 2014-04-30 14:56:55 ЛС | профиль | цитата
sla8a писал(а):
Не уверен

sla8a писал(а):
б) переворачивать; перекидывать (резким движением)
в) (flip through) пролистать, бегло просмотреть


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

------------ Дoбавленo в 14.56:
Artweaver
IrfanView
Greenfish Icon Editor
карма: 26

1
файлы: 3artweaver.jpg [85.4KB] [708], irfanview.jpg [40.1KB] [729], gfie.jpg [69.6KB] [751]
Голосовали:sla8a
Ответов: 2193
Рейтинг: 673
#17: 2014-04-30 15:15:01 ЛС | профиль | цитата
Элемент Img_UseReflect будет переименован в Img_UseFlip.
Элемент Img_UseShear будет переименован в Img_UseSkew (Скос)
карма: 10

0
Ответов: 4621
Рейтинг: 746
#18: 2014-04-30 15:26:34 ЛС | профиль | цитата
Кстати, на скриншоте Artweaver специально показал применение команды Skew.
карма: 26

0
Ответов: 8886
Рейтинг: 823
#19: 2014-04-30 15:29:09 ЛС | профиль | цитата
sla8a, или Img_Zerkalo главное на иконках суть отразить
[flood]
Анекдот писал(а):
Женятся зайчики и котики, а разводятся уже козлы и коровы!
Это Ваши трансформеры поработали![/flood]
карма: 19

0
Ответов: 4621
Рейтинг: 746
#20: 2014-04-30 16:43:51 ЛС | профиль | цитата
[offtop]
Леонид писал(а):
главное на иконках суть отразить
Ага, у меня до сих пор оскомина от компонента Screenshort [/offtop]
------------ Дoбавленo в 16.43:
По поводу Share.pas. Нет смысла добавлять свои функции работы с типом TTransform - если на точку подать тип Integer, то получишь ошибку при работе с типом TTransform (проверь). Этого же можно достичь, работая с точками как с Integer.

Если же добавлять свои функции, то нужно объявить и свой тип data_xxx и проверять его в этих функциях. Но это немного неудобно (в смысле, много изменений в share.pas + при таком подходе в будущем другие компоненты будут проходить тот же путь).

Там есть несколько функций, которые работают с типом data_object. При этом тип объекта (как я понял) предлагается отличать по уникальному ID (для каждого типа объекта - свой). При этом мы получаем гарантию, что нам на точку придет объект именно нужного типа. Только нужно добавить функцию ReadObject, функции событий и возможно некоторые другие.
карма: 26

1
Голосовали:sla8a
Ответов: 2193
Рейтинг: 673
#21: 2014-04-30 17:45:46 ЛС | профиль | цитата
Netspirit, эта ошибка из-за не полностью дополненного мною Share.pas (спасибо что напомнили). У данных трансформации будет своя точка (23), а не как сейчас int (1). На момент тестирования, не дописывал, да и забыл чтоб не вы, допишу. Будет вот так:
transform_06.jpg
И конфликтов при подключении не будет.
Кстати а кто в курсе что элемент Img_Point рисует не точку, а кляксу? Вот из-за этого:
hiImg_Point.pas писал(а):
procedure THIImg_Point._work_doDraw;
...
MoveToEx(pDC, x1, y1, nil);
LineTo(pDC, x1+1, y1+1);
И выглядит это так:
transform_07.jpg
А без +1 выглядит вот так:
transform_08.jpg

карма: 10

1
файлы: 3transform_06.jpg [43.4KB] [690], transform_07.jpg [26.4KB] [700], transform_08.jpg [25.1KB] [670]
Голосовали:foksov
Ответов: 9906
Рейтинг: 351
#22: 2014-04-30 17:50:42 ЛС | профиль | цитата
Netspirit писал(а):
Только нужно добавить функцию ReadObject

Вообще-то, уже есть комбинация: ReadData + __IsObject
карма: 9

0
Ответов: 4621
Рейтинг: 746
#23: 2014-04-30 18:39:58 ЛС | профиль | цитата
Galkov писал(а):
Вообще-то, уже есть комбинация
По-моему, костыль.
Предлагаю следующее: share.pas 2014-04-30.7z. Добавлены все необходимые функции, так что sla8a не придется ничего своего дописывать.
В функцию ToObject добавлен аргумент со значением по-умолчанию для совместимости с уже готовыми компонентами. Желательно убрать умолчание (для однообразия и чтобы не забывали указывать) после правки существующих компонентов.

[offtop]И ещё замечание: по-моему, "GUID" объекта не стоит генерировать в конструкторе класса, а правильно в секции initialization. Иначе, объекты, выдаваемые разными экземплярами классов будут "несовместимые" между собой (точнее, там глобальная переменная, в которой хранится только последний сгенерированный ID, и чисто потому, что он используется только после создания всех классов, не возникает такой ошибки)[/offtop]

------------ Дoбавленo в 18.39:
ПЕРЕЗАЛИЛ: функция ToObject была несовместима с текущими компонентами.
карма: 26

0
Ответов: 9906
Рейтинг: 351
#24: 2014-04-30 21:07:54 ЛС | профиль | цитата
Костыль, или нет - не мы его делали.
А если одну задачу решать всеми известными способами -- это называется индусский код.
Чем более таких способов, тем менее сопровождаемый код получается.

Фактически одна и та же задача решается а) встроенными типами б) менеджерами в) объектными типами г) теперь еще одним способом.
Обратите внимание: все четыре упоминались в этом одном топике.
Может быть последний и лучший... не знаю (в смысле - слету не скажу).

Но я верю Калашникову: "Все нужное - просто. Все сложное - не нужно"
Кто-то готов привести всю элементную базу к одному единому (лучшему) стилю
карма: 9

1
Голосовали:Tad
Гость
Ответов: 17029
Рейтинг: 0
#25: 2014-04-30 21:12:22 правка | ЛС | профиль | цитата


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

0
Ответов: 4621
Рейтинг: 746
#26: 2014-04-30 22:34:46 ЛС | профиль | цитата
1) Не могу ничего сказать по поводу способа использования представленных компонентов
2) Моё предложение в share.pas касается и существующих и будущих компонентов
3) Конкретная разница. Существующий в THIChangeFileSecurity._work_doSetFileSecurity код:


#pas
procedure THIChangeFileSecurity._work_doSetFileSecurity;
var SecDescr: PSecurityDescriptor;
fn:string;
dt:TData; // <<====
begin
dt := ReadData(_Data,_data_PSD,nil); // <<====
fn := ReadString(_Data, _data_Filename, _prop_FileName);
SecDescr := PSecurityDescriptor(ToObject(dt)); // <<====
if _IsObject(dt,PSD_GUID) then // <<====
begin
if not SetFileSecurity(PChar(fn), OWNER_SECURITY_INFORMATION or DACL_SECURITY_INFORMATION, SecDescr) then
_hi_onEvent(_event_onError);
end;
_hi_onEvent(_event_onSetFileSecurity);
end;
После моих изменений:


#pas
procedure THIChangeFileSecurity._work_doSetFileSecurity;
var SecDescr: PSecurityDescriptor;
fn:string;
begin
SecDescr := PSecurityDescriptor(ReadObject(_Data,_data_PSD,PSD_GUID));
fn := ReadString(_Data, _data_Filename, _prop_FileName);
if SecDescr <> nil then
begin
if not SetFileSecurity(PChar(fn), OWNER_SECURITY_INFORMATION or DACL_SECURITY_INFORMATION, SecDescr) then
_hi_onEvent(_event_onError);
end;
_hi_onEvent(_event_onSetFileSecurity);
end;
- не нужно заводить отдельно переменную для TData, читать в неё, проверять её на тип объекта, читать объект. В моем варианте сразу читается объект и проверяется на nil. Уменьшение "индусятины" номер раз.
- этот прием универсальный для всех компонентов и каждому автору не придется изменять share.pas под себя. Уменьшение "индусятины" номер два.
- я добавил привычные для остальных типов функции чтения данных и выдачи событий. Не вижу тут никакого усложнения.
карма: 26

0
Ответов: 2193
Рейтинг: 673
#27: 2014-05-02 23:33:16 ЛС | профиль | цитата
Обновил архив. Пока не внесен в архив Img_Poligon и Img_MultiText
nesco писал(а):
handler умудрился попасть в Img_Polygon, зачем
Кто-то из нас двоих что-то недопонимает. Давайте разберемся. Мое личное мнение, что Handler там очень даже к месту. И вот почему. С вставленным Handler-ом, есть возможность нажать кнопку возле свойства Offset и в открытом редакторе Point(X;Y) ввести нужные данные. Так что ответ будет такой: Handler поставил для удобства ввода данных в свойство Offset.
poligon_01.jpg
nesco, а как вы вводите данные в свойство Offset?
карма: 10

0
файлы: 1poligon_01.jpg [23.6KB] [542]
Разработчик
Ответов: 26061
Рейтинг: 2120
#28: 2014-05-03 01:45:14 ЛС | профиль | цитата
sla8a писал(а):
а как вы вводите данные в свойство Offset?

А как его раньше вводили, когда не было хендлера
sla8a писал(а):
Handler поставил для удобства ввода данных в свойство Offset

В принципе, пусть остается, если он штатный.

P.S. Неплохо бы еще и печать проверить с введенными изменениями.
карма: 22

0
Ответов: 2193
Рейтинг: 673
#29: 2014-05-03 02:00:10 ЛС | профиль | цитата
nesco писал(а):
А как его раньше вводили, когда не было хендлера
Лично мне раньше приходилось ставить рядом какой нибудь элемент с свойством Point (к примеру Img_Rectangle) и вводя в него данные, копировать и вставлять в Offset. Многие скорее всего так и делают до сих пор.
nesco писал(а):
P.S. Неплохо бы еще и печать проверить с введенными изменениями.
О какой печати речь? Поподробней можно?
карма: 10

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#30: 2014-05-03 02:31:10 ЛС | профиль | цитата
sla8a писал(а):
О какой печати речь? Поподробней можно?

Об обычной, на листе бумаги.
карма: 22

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