Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 3 020

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
Обращаюсь к Вам впервые. Как сообщил в сведениях о себе, сделал программу пособия, которая работает, и хотел бы ее улучшить. В ней 13 текстовых глав и 12 лингафонных сопровождений к ним. В форме глав по три кнопки: "открыть текст", "возврат в оглавление" для выбора главы и "вставить плеер". Вопрос 1: текст глав открываю кодом -(см. ниже). Но в разделе "предисловие" есть картинка плеера AIMP2, которая естественно не рисуется после открытия текста. Какие надо внести изменения в код, чтобы она прорисовывалась? Теоретически понимаю, но практически не получается.

Приложение:
  1. procedure TForm3.Button3Click(Sender: TObject);
  2. var
  3. Sin:TFileStream;
  4. begin
  5. Sin:=TFileStream.Create((ExtractFilePath(Application.ExeName)+
  6. 'GLVZglava1.rtf'),fmOpenRead);
  7. RichEdit1.Lines.LoadFromStream(Sin);
  8. FreeAndNil(Sin);
  9. RichEdit1.ReadOnly:=true;
  10. end;
  11.  
  12. end.


oldman Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: oldman (статус: Посетитель)
Вопрос отправлен: 21 июля 2009, 18:53
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, oldman!
К сожалению, стандартный RichEdit не отображает картинки. Для этого стоит использовать сторонние компоненты. Например с библиотеки JVCL (брать здесь http://jvcl.delphi-jedi.org/ , всё бесплатно и с сорцами). Либо искать другие сторонние компоненты.

В коде есть одна большая ошибка. Крайне не рекомендуется давать переменным имена, которые совпадают с встроенными (да и своими тоже) функциями. (в данном коде это Sin - делфи не чувствительная к регистру!). Здесь это может никак и не проявиться, но иногда может принести такую большую проблему и десятки бессонных ночей ...

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 21 июля 2009, 19:32
Оценка за ответ: 5

Комментарий к оценке: Спасибо! Мои поиски в Win API по работе с документами Word (.doc) не увенчались успехом. Покапаюсь в JEDI.
 Хотя в проекте я не использую математические функции, но замечание по существу. Для перестраховки исправлю.

Мини-форум вопроса

Всего сообщений: 13; последнее сообщение — 9 августа 2009, 11:03; участников в обсуждении: 2.

21 июля 2009, 20:08: Вопрос перемещён из тематического раздела Delphi » Взаимодействие с Windows в раздел Delphi » Работа с компонентами и библиотеками модератором Ерёмин А.А.

oldman

oldman (статус: Посетитель), 29 июля 2009, 15:02 [#1]:

Уважаемый Вадим К.! По Вашему совету просмотрел указанный сайт и все имеющиемя там примеры и исходники (не знаю что такое сорци) и дополнительно просмотрел раздел, к которому был отнесен мой вопрос - "работа с компонентами и библиотеками", но к сожалению не нашел подходящего, хотя там много интересного. Если сможете указать более конретный источник, в котором можно еще покопаться, буду признателен.
Вадим К

Вадим К (статус: Академик), 29 июля 2009, 15:50 [#2]:

сорцы = исходники (от англ source)
Сайт, который я дал - там большая библиотека компонентов - около 600 штук. Среди них есть компонент JvRichEdit (вроде так его имя). Он и нужен. Но только не ищите там этот компонент. Все компоненты идут одним пакетом.
Галочка "подтверждения прочтения" - вселенское зло.
oldman

oldman (статус: Посетитель), 29 июля 2009, 21:04 [#3]:

Добрый вечер, Вадим К.! Да, библиотека на этом сайте очень большая и я просматривал каждый пакет и все .pas файлы из раздела run, поэтому так долго молчал. Как сообщал в разделе о себе у меня несколько вопросов по улучшению моего проекта пособия. Полученная от Вас информация поможет мне со временем справится с вопросом 1. Теперь если можно вопрос 2.
Для лингафонного сопровождения учебного текста использую готовый player AIMP2, файл .exe которого разместил в директории проекта. Открыв любую форму для текста, вручную запускаю AIMP2.exe и размещаю картинку плеера в правом верхнем углу формы в зарезервированной Panel1. Картинка маленькая, а техническая характеристика плеера позволяет удобно работать с временными отметками, раставленными в ткстах для возможности повторения пройденного материала или прослушивания любого раздела главы (у меня их 12) прокручиванием и перетаскиванием движка времени.Качество звука отличное. Пытался сделать так чтобы при открытии формы нужной главы нажатием соответствующей кнопки из оглавления автоматически устанавливалась картинка плеера, т.е. типа open 'AIMP2.exe', но не получается. Можете ли посоветовать где найти нужные команды для кода открытия главы с автоматическим запуском файла AIMP2.exe и установкой его в Panel1?
Вадим К

Вадим К (статус: Академик), 29 июля 2009, 21:40 [#4]:

Честно скажу, пытался переварить. Не могу.
Комадны для кода открытия главы... это Ваше приложения и вам лучше знать, что там внутри.
Галочка "подтверждения прочтения" - вселенское зло.
oldman

oldman (статус: Посетитель), 30 июля 2009, 10:40 [#5]:

Доброе утро, Вадим К.! Написал я много и, наверно, бестолково. На форме каждой открывающейся главы есть кнопка -"установить плеер". Если использовать для неё код типа:
procedure Form3.Button3Click(Sender:TObject);
var f:File; FileName:Strings;
AssingFile(f,'player\AIMP2.exe');
begin
OpenFile:(f); то он дает ошибку. Что нужно исправить?
Вадим К

Вадим К (статус: Академик), 30 июля 2009, 11:16 [#6]:

А зачем открывать exe файл таким образом? что с ним потом делать будете?
Ну и во вторых - открытия по относительному пути, не всегда открывает там, где думаете откроет.
Галочка "подтверждения прочтения" - вселенское зло.
oldman

oldman (статус: Посетитель), 30 июля 2009, 20:47 [#7]:

Как я упоминал этой мленькой программкой плеера обеспечивается звуковое сопровождение текстовых материалов учебного пособия. Встроенный в Delphi компонент MediaPlayer приметивен, а доработка его до параметров настоящего плеера - сплошная бесполезная головная боль. Есть готовый плеер и зачем изобретать велосипед, жотя таких изобретений видел много. Сейчас загрузив свой проект в любой Windows и открыв его exe файл, открывается главная форма оглавления всех глав. Перехожу в корневой каталог проекта, открвыаю папку player и запускаю файл AIMP2.exe, а появившуюся картинку плеера в центре экрана передвигаю в верхний правый угол в рамку Panal1, где она и остается при смене глав до конца работы с программой. Ниже в поле RichEdit в полный экран размещается текст выбраной главы с возможностью его прокрутки для лучшего усвоения и возможности повторения, для чего и нужен движок времени воспроизведения. В работе надежен и удобен.
Научившись программно открывать этот файл будет нетрудно заставить открываться его картинке в нужном месте (например в Panal1). Где можно почитать об открытии такого нетипизированного файла? У Никиты Культина и у Архангельского А.Я. все это в очень общей форме для чисто теоретического понимания. Надеюсь на ответ.
Вадим К

Вадим К (статус: Академик), 31 июля 2009, 03:08 [#8]:

все понятно, но вот "Научившись программно открывать этот файл будет нетрудно заставить открываться его картинке в нужном месте" - никак. хочется просто его запустить и спозиционировать в нужное место?

З.Ы. - у русских авторов мало полезного и правильно (иногда попадают исключения). Но найти, то что надо сложно, если не можете объяснить, что же надо.
Галочка "подтверждения прочтения" - вселенское зло.
oldman

oldman (статус: Посетитель), 31 июля 2009, 10:55 [#9]:

Последним сообщением я пытался ответить на заданные Вами вопросы - зачем, что делать, и где откроется. Выщло по школьному, но меня надо простить. За те полтора года, когда с нуля пытаюсь начать разбираться в вопросах программирования я еще не могу выражаться по Delphi-йски, но Вы меня поняли.
Да, хочется просто запустить и спозиционировать а нужюное место, что я и делаю (вручную).
Если сможете отослать меня к источнмку по данному вопросу на английском - will be very glad, а к исключению по-русски, то тоже. А всё таки она вертится (программа). Не посылайте меня далеко.
Вадим К

Вадим К (статус: Академик), 31 июля 2009, 11:26 [#10]:

что бы запустить, используйте WinExec или CreateProcess.(дальше гугл)
так как AIMP находиться рядом с программой, то можно запускать такой строкой
winexec(PChar(ExtractFilePath(Application.exename)+'AIMP.exe'), 0);
Галочка "подтверждения прочтения" - вселенское зло.
oldman

oldman (статус: Посетитель), 31 июля 2009, 14:22 [#11]:

Большое спасибо! Надо будет мне более внимательно покопаться в "Приемы программирования в Delphi на основе VCL" А.Я. Архангельского и "Создание эффективных WIN32 приложений" Джефри Рихтера. Когда созрею, то подойду к вопросу 3. Признателен за участие. Удобная форма общения.
oldman

oldman (статус: Посетитель), 4 августа 2009, 16:16 [#12]:

Увыжаемый Вадим К.! Еще разю благодарю за оказанную помощь. По вопросу 1 - применил компонент WebBrowser из раздела Internet. Текст с картинкой открывает, правда в оболочке Word'a. По 2-му - Ваше предложение и добавил OpenDialog, а 3-тий решился сам собой при решении 2-го. Сейчас занимаюсь созданием цивилизованного установочного диска. В моей версии Delphi7 нет раздела InstallShield Express, а запускать программу с диска обычным способом не очень прилично. Эта проблема мелкая и я ее решу. Всего Вам доброго.
oldman

oldman (статус: Посетитель), 9 августа 2009, 11:03 [#13]:

Поскольку возможности Delphi неограничены, то ни один проект нельзя назвать законченным. Я буду заниматься его улучшением и, наверняка, возникнут вопросы, а просмотр новостей портала поможет подобраться к их решению. Я хочу иметь возможность их получать.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:26
Выполнено за 0.03 сек.