На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Обязательно выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Этот раздел предназначен для вопросов, посвященных разработке компонентов, а также для тестирования собственных бесплатных компонентов с открытым исходным кодом.

Здесь запрещается:
1. Размещать ссылки на какие-либо коммерческие компоненты, реализующие требуемую функциональность.
2. Обсуждать и тестировать коммерческие компоненты или компоненты с закрытым кодом.
3. Давать ссылки на сайты с исходным кодом компонентов. Все тестируемые исходные коды должы быть размещены на сайте ИСХОДНИКИ.RU.
Модераторы: Rouse_, DimaBr
  
> Image Controls 2.0 , Новая версия!!!
    Наконец-то я выкладываю новую версию своей библиотеки компонентов.

    Что нового в этой версии?

    1. Добавлен компонент TTexturePanel.
    2. В TCustomScrollingImage добавлено масштабирование, а также автоматическое масштабирование по размеру компонента.
    3. Изменена иерархия компонентов для скроллинга, теперь TFastScrollingImage наследуется от TScrollingImage.
    4. Наследники TCustomScrollingImage, а также компоненты TBitmapContainer и TBitmapPanel теперь имеют свойство Transparent, позволяющее делать компонент прозрачным.
    5. Добавлена возможность нестандартной отрисовки изображения в компонентах для скроллинга.
    6. Добавлено изменение курсоров для скроллинга в design-time с помощью свойств ImageCanScrollCursor, ImageDragCursor, ImageScrollDisabled.
    7. В TCustomScrollingImage добавлены свойства RealImagePos, RealImageLeft, RealImageTop, по которым можно узнать настоящие координаты изображения в компоненте, учитывая то, что оно может неполностью заполнять компонент.
    8. Добавлено в TCustomScrollingImage свойство CanScrollWithMouse, позволяющее запретить скроллинг с помощью мыши.
    9. Исправлен глюк в навигаторе при щелчке в нем правой кнопкой мыши.
    10. В модуль ImgCtrlUtils добавлена процедура LoadGraphicToBitmap и немного подправлена функция IsEmptyPicture.
    11. Добавлен модуль ImgCtrlsSkins.
    12. Устранены другие небольшие баги и ошибки.

    Жду ваших пожеланий и оценок!

    Обновления:
    2.1 - http://forum.sources.ru/index.php?act=Atta...=post&id=677520
    2.1.1 - http://forum.sources.ru/index.php?act=Atta...=post&id=755480 (только модуль ScrollingImageAddons)
    Прикреплённый файлПрикреплённый файлImgCtrls.zip (159.8 Кбайт, скачиваний: 838)
      Правда, релиз этот во второй версии еще не последний, у меня еще есть идеи по усовершенствованию компонентов.
        s-mike, сразу же мелкое пожелание :)
        ImageCanScrollCursor и ImageScrollDisabled свойства взаимосвязанные, но разработчику будет трудно их в связке запомнить. Желательно назвать их одинаково, типа ScrollEnabledCursor и ScrollDisabledCursor.
        Ну и не знаю, насколько правильно еще вот такое: RealImagePos и иже с ними, может быть лучше обозвать OffsetImagePos, OffsetImageTop, Left... По крайней мере, таковы названия свойств объектов в javascript по отношению к таблицам стилей. В общем хотелось бы иметь некоторое соответствие в терминах с общепринятыми... Но тут тебе лучше судить.

        Это что касается твоей презентации в первом сообщении. Саму новую версию щас смотреть некогда, на неделе еще что-нибудь напишу. :)
        Успехов!
          Цитата Mischka @
          Но тут тебе лучше судить.

          Ну почему только мне. Вполне согласен, что некоторые свойства следует переименовать, потому что названы они были в спешке и не всегда понятно. Спасибо за рекомендации.
            У меня не пошло.
            Но судя по сообщениям компилятора, на моём 5-ом Delphi и не может пойти: класс Types и куча других мелочей.
            Есть старая версия для 5-го Delphi?
              Цитата Stevendall @
              У меня не пошло.
              Но судя по сообщениям компилятора, на моём 5-ом Delphi и не может пойти: класс Types и куча других мелочей.
              Есть старая версия для 5-го Delphi?

              Компонент разрабатывался под и для Дельфи 7. Когда будет время возможно подумаю и про порт для Дельфи более ранних версий.
                Цитата Stevendall @
                моём 5-ом Delphi и не может пойти: класс Types

                types - это модуль. а не класс. Закоментируй всякие Types, Variants и тд.

                Добавлено
                да, Майк, у тя в исходниках в обилии встречаются такие вещи {@exclude} { @abstract и тд.. Что то похожее на html теги.. Есть предположение. что их генерирует какой то эксперт, для состовления документации - это так?
                  Цитата jack128 @
                  Есть предположение. что их генерирует какой то эксперт, для состовления документации - это так?

                  :yes: DIPasDoc

                  Добавлено
                  Делает документацию из комментариев к исходникам, удобная вещь.
                    Цитата jack128 @
                    Цитата Stevendall @
                    моём 5-ом Delphi и не может пойти: класс Types

                    types - это модуль. а не класс.

                    Да уж, опечатался... Хотел исправить, но не стал этого делать, когда и так уже это другие прочитали.
                      Почему лицензия только на буржуйском? :-(
                        Цитата MrZ @
                        Почему лицензия только на буржуйском? :-(

                        Программист должен знать язык врага :D
                          Я ваще-то CYB, тока пароль пасеял, а служба восстановления - глючит.
                          Но пишу не про это. Компоненты афигена харошие. Желаю тебе чувак успеха в последующих разработках.
                            Пожалуй пришло время выложить обещанный апдейт до версии 2.1.

                            Цитата
                            1. По свежим следам исправлен глюк с GetFitImageScale при пустом изображении.
                            2. Немного усовершенствована процедура отрисовки, в частности отрисовки с прозрачностью TScrollingImage.
                            3. Исправлены баги в отрисовке TFastScrollingImage и TSBScrollingImage при включенной прозрачности (мерцание фона).
                            4. Устранены глюки свойства FitImage в design-time в компонентах для скроллинга.
                            5. Переименованы свойства

                            ImageCanScrollCursor -> CanScrollCursor
                            ImageDragCursor -> DragImageCursor
                            ImageScrollDisabled -> ScrollDisabledCursor

                            RealImagePos -> ImageOffset
                            RealImageLeft -> ImageOffsetLeft
                            RealImageTop -> ImageOffsetTop

                            6. Свойство FitImage поделено на два свойства - AutoZoomImage и AutoShrinkImage.
                            7. Удален модуль MiniMath потому что Math все равно используется в модуле Forms, а значит выгоды в использовании MiniMath нет.
                            8. Добавлено событие OnPaint в навигаторе и для рамки навигатора. Соответственно опубликовано свойство Canvas.
                            9. Устранен глюк, при котором при увеличении размера компонента TSBScrollingImage не перерисовывалась область спрятавшегося скроллбара.
                            10. ScrollButton теперь добавлено у всех наследников TCustomScrollingImage. Исправлена неправильная работа этого свойства в TFastScrollingImage и TSBScrollingImage.
                            11. В TCustomScrollingImage добавлено свойство StretchMode, позволяющее выбрать качество масштабирования изображения в компоненте. Названия значений свойства аналогичны значениям констант для WinAPI-функции SetStretchBltMode.

                            К сожелению на данный момент остаются еще некоторые проблемы с работой компонента в design-time.

                            Прикреплённый файлПрикреплённый файлImgCtrls21.zip (157.53 Кбайт, скачиваний: 994)
                              На сегодняшний день версию 2.0 скачали 42 раза, 2.1 - 10. :) Но топик практически пустой. :( Неужели там все так идеально, что и сказать нечего. Хотелось бы более активного обсуждения.
                                Pass! Пока не установлю себе Delphi-7. :)
                                  Скачал, установил.
                                  теперь при компиляции и запуске ооочень долго думает (и очень сильно думает - почти 100% проца) Дельфя

                                  почему? :(
                                    Версия Дельфи (хотя в принципе думаю 7), комп (проц, оператива), винда? И единственный ли мой компонент так долго ставится?
                                      Дельфи 7 - для 8ой заломало качать Framework SDK :)
                                      проц p4 2.8, оперативка 512.

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

                                      мб я как-то криво устанваливал?
                                      точнее не так - дайте плз сцылку на мануал по установке компоонент и я скажу криво или нет :)

                                      Добавлено
                                      нет.....
                                      тормозит, когда заранее подгружаешь бмпшку (1536*1024)
                                      картинку очистил - стало ок :)
                                        Цитата Zomb1e @
                                        нет.....
                                        тормозит, когда заранее подгружаешь бмпшку (1536*1024)
                                        картинку очистил - стало ок :)

                                        Фух, а я уже беспокоится стал. :) А как устанавливать в хелпе написано.
                                          А почему только bmp поддерживат?? Jpg в студию (и gif по возможности) :)
                                            Цитата Алексей @
                                            А почему только bmp поддерживат?? Jpg в студию (и gif по возможности) :)

                                            Метод LoadGraphic. А также ImgCtrlUtils.LoadGraphicToBitmap.
                                              У меня вот какой вопрос: почему бы у компонента ScrollingImageNavigator1 не добавить такое замечательное свойство как StretchMode, ведь он используется для навигации по Bitmap, а сам должен быть маленький, но при таких размерах качество картинки очень снижается. Спасибо.
                                                GreySkil, я просто не догадался сам, спасибо за предложение. Хотя с другой стороны есть событие на масштабирование навигатора. Но и это свойство можно добавить.
                                                  s-mike, если сделаешь это свойство, кинь мне ссылку на новый компонент.
                                                    Цитата GreySkil @
                                                    s-mike, если сделаешь это свойство, кинь мне ссылку на новый компонент.

                                                    Да я его сюда приаттачу. Я сейчас делаю потоковою загрузку (вроде как в ACDSee), ну заодно и это свойство сделаю. Выложу с этими нововведениями. И я уже думаю над новой версии, в которой я запланировал сделать много интересных новшеств (даже не знаю, получится ли все реализовать :rolleyes: ).
                                                      s-mike, как появиться новая версия, сообщи мне на GreySkil@kemtel.ru, с удовльствием попользуюсь, еще и идей тебе мож каких придумаю.
                                                        s-mike, еще подскажи можно ли скопировать из Scrollingimage изображение которое в нем показывается, а то если

                                                        Image1.picture.bitmap:=scrollingimage1.picture;

                                                        то картинка копируется не та которая показана, а вся.
                                                          Выкладываю апдейт навигатора. Потому что долизывать новые функции пока нет времени. Так что наверно они все появятся уже в следующей версии.
                                                          Прикреплённый файлПрикреплённый файлScrollingImageAddons.zip (4.6 Кбайт, скачиваний: 687)
                                                            Цитата GreySkil @
                                                            s-mike, еще подскажи можно ли скопировать из Scrollingimage изображение которое в нем показывается, а то если

                                                            Image1.picture.bitmap:=scrollingimage1.picture;

                                                            то картинка копируется не та которая показана, а вся.

                                                            Сорри, только сейчас вопрос заметил. CopyRect'ом естественно. Хотя может есть смысл и метод соответствующий сделать? Буду рассматривать как предложение.
                                                              А планов у меня много, в частности:
                                                              1) сделать виртуальный компонент-контейнер, инкапсулирующий все свойства TScrollingImage, но не хранящий никаких данных, вся отрисовка - по событиям;
                                                              2) на основе предыдущего компонента сделать классы TVectorImage для отображения и редактирования (если сил и желания хватит) векторных данных, а также компонент для скроллинга, базирующийся на GDI+;
                                                              3) ну естественно побольше событий собственной отрисовки, а также компоненты-рисовалки (ну как скины в тулбарах обычно делают). Для этого, кстати, мне потребуются добровольцы, которые будут создавать компоненты-рисовальщики и они будут включены в релиз компонентов. Кто желает?
                                                              4) компонент(ы), позволяющие настраивать клавиши перемещения изображения в TScrollingImage, скейлинг...
                                                              5) hot spot areas, то есть ссылки внутри компонента, с соответствующими событиями и собственной отрисовкой
                                                              6) выделение с собственной отрисовкой
                                                              7) загрузка файлов в потоке, что даст возможность показывать прогресс загрузки и прерывать его досрочно
                                                              8) анимированный зум/изменение изображения (возможно, в последнюю очередь, потому как сам не люблю особо такие вещи, но дань моде)

                                                              Запланировал, как видите, немало. Думаю, что работа предстоит серьезная, так что было бы неплохо, если бы нашлись желающие стать бета-тестерами моей библиотеки компонентов.
                                                                Цитата s-mike @
                                                                мне потребуются добровольцы, которые будут создавать компоненты-рисовальщики

                                                                хочу-хочу-хочу!!! Аську мою ты знаешь. Давай обсудим, когда освободишься.
                                                                  Цитата Miscђka @
                                                                  хочу-хочу-хочу!!! Аську мою ты знаешь. Давай обсудим, когда освободишься.

                                                                  Отлично :rolleyes:
                                                                    Сделай события OnMouseWheelUp и OnMouseWheelDown и цены компоненту не будет!
                                                                      Выдаёт ошибку после компиляции и обращения к функции:
                                                                      Цитата
                                                                      Project Project.exe raised exception class EInvalidGraphic with message 'Bitmap image is not valid'. Process stopped. Use Step or Run to continue.

                                                                      Указывает сюда:
                                                                      ExpandedWrap disabled
                                                                        procedure TCustomBitmap.LoadFromFile(const Filename: string);
                                                                        var
                                                                          OldOnChange: TNotifyEvent;
                                                                        begin
                                                                          OldOnChange := OnChange;
                                                                          try
                                                                            OnChange := nil;
                                                                           inherited  LoadFromFile(FileName);
                                                                          finally
                                                                            OnChange := OldOnChange;
                                                                          end;
                                                                         
                                                                          NewImage;
                                                                        end;

                                                                      А ниже:
                                                                      Цитата
                                                                      [Hint] Main.pas(49): Private symbol 'OnJpegProgress' declared but never used

                                                                      Мой код. Странно, что при использовании диалога открытия и указания вместо 'C:\спец2.jpg' тот путь, который переходит из диалога открытия, всё работает нормально, иначе ошибка появляется.

                                                                      ExpandedWrap disabled
                                                                        procedure TTMainForm.FileOpenClick(Sender: TObject);
                                                                        var
                                                                          Picture: TPicture;
                                                                        begin
                                                                              Picture := TPicture.Create;
                                                                              Picture.LoadFromFile('C:\сцеп2.jpg');
                                                                              SI.LoadGraphic(Picture.Graphic);
                                                                              Picture.Free;
                                                                              SI.Picture.LoadFromFile('C:\сцеп2.jpg');
                                                                              StatusBar.SimpleText := 'C:\сцеп2.jpg';
                                                                        end;
                                                                        s-mikeПривет, извини что беспокою. Твой компонент очень крутой. Но мне понадобилось на FastScrollingImage1 рисовать линии. Рисую по нажатию мышки, но дело в том что линия сразу не отрисовывается, отрисовывается только после того если проскролить изображение. Как правильно рисовать на даном компоненте?
                                                                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                                        0 пользователей:


                                                                        Рейтинг@Mail.ru
                                                                        [ Script execution time: 0,0900 ]   [ 19 queries used ]   [ Generated: 29.03.24, 04:56 GMT ]