Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Продолжение темы Вопросы по Delphi (до версии 2009) - часть 5

Познаем сами, помогаем другим...
Обсуждаем вопросы, не связанные с юникоидными версиями Delphi - для этого есть соответствующая тема (см. ссылки ниже).


 
Правила топика:
    Прежде чем спрашивать:
  1. Желательно изучить вопрос, попытаться найти ответ в прилагаемых мануалах, хелпах и анализируя исходники.
  2. Выполнить поиск по топику (открыть "Версия для печати" и поискать ответ там).
  3. Применить фильтр по разделу "Прикладное программирование". Ответы на многие старые вопросы могли быть даны в отдельных темах.
  4. Продумайте вопрос. На поверхностные вопросы вы получите поверхностные ответы, или вообще ответов не получите.
  5. Желательно указывать версии используемого компилятора и операционной системы.
    Прежде чем отвечать:
  1. Если не можете помочь, не мешайте.
  2. Если уж вы отвечаете на вопрос, давайте ответ по сути.
  3. Если вы не уверены, так и говорите! Ошибочный, но авторитетно звучащий ответ хуже, чем отсутствие ответа.
  4. Задавайте дополнительные вопросы, чтобы получить больше информации.
  • Отсутствие ответа не равносильно игнорированию - иногда участники форума просто не знают ответ. Повторная посылка вопроса не приветствуется. Посты типа "неужели никто не знает ответа..." или "может мне все-таки кто-нибудь ответит" недопустимы.  
  • Все большие куски кода (более 5 строк) оформляем в тег [morе] дабы уменьшить размер поста. FAQ по тегу [morе].


    Некоторые "родственные" топики:
     
  • Вопросы по Delphi (версии 2009-2010 Weaver)
  • Вопросы по компонентам для Delphi, C++ Builder
  • Использование DevExpress
  • Вопросы по Ehlib
  • Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus - только Open Source
  • Коммерческие компоненты и утилиты для Delphi/BCB
  • кабак программистов :)
     
    См. также: Некоторые полезные ресурсы о Delphi
     
    И старайтесь, чтобы ваш код не попал сюда :)

  • Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 05:13 19-05-2010 | Исправлено: akaGM, 02:33 15-07-2020
    Czechoslovak



    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Aladdinych
    Так используй просто панель Visible := false\true

    Всего записей: 175 | Зарегистр. 27-06-2007 | Отправлено: 11:07 17-06-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Aladdinych
    А зачем вообще нужна такая странная схема? Чем не устраивает набор текста прямо на основной форме приложения?

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 11:45 17-06-2011
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Aladdinych
    К сожалению не понятно зачем оно Вам такое надо. И не понятно как оно вообще должно выглядеть. Что Вы написали реально сделать, но боюсь, что кода дам рекомендации Вы скажите, а здесь не годится потому, что вот еще условие и т.д. и т.п.
    Пример

    Цитата:
    При наборе текста, должна создаваться иллюзия, что текст набирается на рабочем поле основной формы, т.е. диалоговая форма должна быть прозрачной.  

    Ну дал я вам код прозрачной формы, а Вы говорите А чего кнопки "Ok" и "Cancel" в воздухе висят, а где заголовок окна за который я могу переместить его в другое место.
    Озвучьте цель и шанс получения нормального ответа резко возрастет.

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 13:28 17-06-2011
    Aladdinych



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    можно конечно и в основной форме, но у компонента, где вводится текст должен быть прозрачный фон
     
    Добавлено:
    а если подробнее - пишу небольшой векторный редактор
    на рабочем поле размещаются объекты. среди них и объект текст.
    Просто нужно набирать текст так, чтобы он был виден в процессе ввода на фоне этих объектов, а не в некой форме ввода. В процессе ввода текста, надо иметь возможность изменять его свойства. Это надо делать посредством контролов на панели инструментов.
    Вот почему тот контрол, где набирается текст должен иметь прозрачный фон

    Всего записей: 322 | Зарегистр. 18-10-2005 | Отправлено: 16:29 17-06-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Aladdinych
    В таком случае вам нужен прозрачный edit. Исправить стандартный довольно сложно, хотя найти не очень удачные примеры в интернете можно. Намного более перспективны компоненты, где вся отрисовка реализована с нуля. Что то типа RichMemo, SynEdit и т д. Готовые компоненты с поддержкой прозрачности наверняка есть в пакетах типа TMS или DevEx.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 22:19 17-06-2011 | Исправлено: Frodo_Torbins, 23:09 17-06-2011
    Aladdinych



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    я пользуюсь компоненктами от tms
    но что-то такого не нашел
    по крайней мере в палитре tms memo

    Всего записей: 322 | Зарегистр. 18-10-2005 | Отправлено: 10:42 18-06-2011
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Aladdinych
    В целом согласен с Frodo_Torbins. Но я не пользую TMS и точно сказать про них не могу, но думаю должно что-то типа свойсва Transparent или Opaque. Если нет таковых попробуйте переписать обработчик что то типа OnCustomDraw.
    Но я настоятельно рекомендую глянуть в сторону готовых векторных редакторов. Я не знаю Ваших задач, но знаю, что "аппетит приходит во время еды" и возможно на каком то этапе Ваш код станет слишком загроможден решениями типа прозрачный TEdit.  

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 21:44 18-06-2011 | Исправлено: V1s1ter, 21:45 18-06-2011
    Aladdinych



    Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    точнее прозрачный  не edit а memo
     
    Добавлено:
    точнее прозрачный  не edit а memo

    Всего записей: 322 | Зарегистр. 18-10-2005 | Отправлено: 21:45 18-06-2011
    V1s1ter



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Aladdinych

    Цитата:
    точнее прозрачный  не edit а memo

    Ну это в данном контексте не принципиально.  
    Еще вариант:
    1) В момент создание/редактирования в нужное место ставится Memo и делается видимым.
    2) Пользователь редактирует и завершает редактирование.
    3) Набранный текст помещается в новый/ранее созданый Label или StaticText, а Memo и делается не видимым.

    Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 21:52 18-06-2011
    krapotkin

    Junior Member
    Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
    Aladdinych
    я в аналогичном случае просто написал ввод текста "с нуля"
    обработать десяток спецклавиш Del Bk Home End PgUp PgDn и т.д. - это не проблема вообще
    и никаких заморочек с прозрачными компонентами
    если контрол позволяет многострочный текст, то встанет еще и проблема одинаковости отображения строк, переносов и т.д.

    Всего записей: 69 | Зарегистр. 10-01-2006 | Отправлено: 08:15 20-06-2011
    RuPurple



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    Я пишу небольшую программку, которая в процессе работы открывает и проигрывает небольшие видео-файлы (с помощью TMediaPlayer). Для вывода видео используется компонент TPanel:
    Код:
     
    MediaPlayer1.Display := Panel1                                                   ;
    MediaPlayer1.DisplayRect := Rect(0,0,Panel1.Width,Panel1.Height) ;
    MediaPlayer1.Play                                                                      ;
     
    В процессе разработки программы я обнаружил такое явление. Если свернуть форму после того, как видео-файл закончился, а потом развернуть ее, то последний кадр из видео, который до этого оставался на экране (т.е. на TPanel), исчезает. Тоже самое происходит, если перед формой открыть другое окно, а потом закрыть его: изображение последнего кадра исчезает с панели. Но если выводить видео не на панель, а на саму форму (MediaPlayer.Display := Form1), то все в порядке - изображение последнего кадра после этих действий остается на месте.
    Мне как раз нужно, чтобы изображение оставалось, но использовать форму для вывода нежелательно.  
    В связи с этим возникает пара вопросов. Почему исчезает изображение с TPanel и не исчезает с формы? Можно ли сделать так, чтобы изображение не исчезало с TPanel, или какой другой компонент для этой цели использовать?

    Всего записей: 724 | Зарегистр. 21-02-2010 | Отправлено: 16:25 27-06-2011 | Исправлено: RuPurple, 16:28 27-06-2011
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RuPurple
    по-видимому, придётся перекрывать paint() панели...

    Всего записей: 24115 | Зарегистр. 06-12-2002 | Отправлено: 19:24 27-06-2011 | Исправлено: akaGM, 22:09 27-06-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RuPurple
    В зависимости от операционки с формы тоже стирается. Вообще если у вас начинаются подобные проблемы, то чем лепить костыли типа копирования содержимого панели, лучше поискать более продвинутый метод воспроизведения видео.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 20:38 27-06-2011
    RuPurple



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    Цитата:
    по-видимому, придётся перекрывать paint() формы...
    На сколько это сложно? Дело в том, что воспроизведение видео-файлов в этом приложении несет вспомогательную функцию, и поэтому делать что-либо сложное мне бы не хотелось...
    Frodo_Torbins
    У меня на всех машинах Windows XP стоит, и поэтому я не замечал, что с изображение последнего кадра может стираться и с формы.
    Какой наиболее простой, на Ваш взгляд, метод воспроизведения видео можно было бы использовать?

    Всего записей: 724 | Зарегистр. 21-02-2010 | Отправлено: 22:19 27-06-2011
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RuPurple
    да ничего, в общем-то, особенного...
    посмотри как это делается для любого контрола в rtl

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

    ну и зачем тебе тогда с этим последним кадром так упираться?

    Всего записей: 24115 | Зарегистр. 06-12-2002 | Отправлено: 23:07 27-06-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RuPurple
    Это смотря что нужно получить.
    Можно к примеру использовать ActiveX-контрол виндовсовского WMP. Самое сложное в этом компоненте это установка (у меня бы ушло минуты 3). А использовать его пожалуй даже проще чем стандартный медиаплеер, но и настроек минимум.
    Можно наоборот немного посложнее компоненты использовать типа DSPack или BasicVideo. От них, я думаю, без проблем сможете добиться точно того поведения, которое вам нужно.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 23:20 27-06-2011
    RuPurple



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    Цитата:
    посмотри как это делается для любого контрола в rtl  
    Можно по-точнее узнать, что и где посмотреть? Что такое rtl?
    Frodo_Torbins
    Я начал с Windows Media Player. В принципе, он бы вполне устроил, если бы не его характерная панелька с кнопками управления. От нее можно как-нибудь избавиться?
    И еще, я не нашел, как удалить установленный мной WMP. Как теперь вернуть вкладку ActiveX в пержнее состояние?

    Всего записей: 724 | Зарегистр. 21-02-2010 | Отправлено: 03:28 28-06-2011
    akaGM

    Platinum Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RuPurple
    файлы в директории:
    .../source/Win32/vcl/*.pas
     
    rtl -- run-time library

    Всего записей: 24115 | Зарегистр. 06-12-2002 | Отправлено: 09:07 28-06-2011
    Frodo_Torbins

    Silver Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    RuPurple
    С панелькой скорее всего ничего не сделать.
    А вот удалить компонент без проблем. Если вы создавали для него отдельный пакет, то просто удалите его из "Component -> Install Packages", или отредактируйте и перекомпилируйте его.

    Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 15:33 28-06-2011
    RuPurple



    Advanced Member
    Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
    akaGM
    Спасибо! Я, правда, плохо понял о чем идет речь, и поэтому использовать предложенный Вами метод не смогу.
     
    Frodo_Torbins
    Судя по всему, я установил WMP в уже существующий Borland User Components, во всяком случае в списке Components он там был, причем один. Однако, список Contains пакета dclusr.dpk оказался пустым, т.е. убирать оттуда было нечего. В общем, я удалил весь Borland User Components, и TWindowsMediaPlayer исчез с вкладки ActiveX. Вроде Дельфи пока работает.
    Попробую связаться с заказчиком, и если его устроит текущее состояние программы, то оставлю все как есть. Если не устроит, то буду разбираться с BasicVideo.  
    Очень благодарен Вам!

    Всего записей: 724 | Зарегистр. 21-02-2010 | Отправлено: 16:27 28-06-2011 | Исправлено: RuPurple, 16:27 28-06-2011
    Открыть новую тему     Написать ответ в эту тему

    Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

    Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (до версии 2009) - часть 6


    Реклама на форуме Ru.Board.

    Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
    Modified by Ru.B0ard
    © Ru.B0ard 2000-2024

    BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

    Рейтинг.ru