Вопрос № 32409: На панели кнопки квадратные 1-15 штук
Каждая в свойстве Caption имеет номера от1 до 15
Есть свободное место в размер кнопки
Как перемещать кнопки,мышкой, при запущеном приложении ...Вопрос № 32430: Здравствуйте!
У меня такой вопросик: я создаю в dll форму. Как мне открыть эту форму из своего exe приложения?
P.S. Можно ли получить из dll не только функцию или процедуру, но и константу, значение переменной??...Вопрос № 32432: Здравствуйте, уважаемые эксперты!
Проблема: где мне достать ХОРОШУЮ программу, которая создаёт файл справки *.hlp? (У меня была какая-то, но она создавала практически пустой фаил с весом 10 метров)....Вопрос № 32435: Здравствуйте!
У меня вопрос по TMediaPlayer.
Как с помощью TTarckBar(или ещё чего-нибудь) отображать и менять позицию песни....Вопрос № 32451: Здравствуйте!
Опять вопрос по TMediaPlayer, я понял как отображать и менять позицию песни, но как это сделать в одном TTrackBar'е??? Пожалуйста, поподробней....Вопрос № 32454: Доброго времени суток господа Эксперты!!!
Поздравляю всех вас с Новым 2006 годом. Желаю вам всего самого лучшего, пусть сбудутся все ваши мечты!!!
У меня к вам вопрос как средствами делфи можно сделать список файлов находящихся в оп...Вопрос № 32457: TMediaPlayer:
1.Как создать что-нибуть на подобии плейлиста?
2.Как мона регулировать громкость воспроизводимого трека?
3.Создаю на форме TPanel ставлю TMediaPlayer.Display := Panel1, но при запуски фильма на TPanel видна только часть филь...
Вопрос № 32.409
На панели кнопки квадратные 1-15 штук
Каждая в свойстве Caption имеет номера от1 до 15
Есть свободное место в размер кнопки
Как перемещать кнопки,мышкой, при запущеном приложении
Отвечает: Ерёмин Андрей
Здравствуйте, Вячеслав Петрович!
Насколько я понял, вы хотите, чтобы каждую кнопку можно было двигать... В этом случае не нужно писать один и тот же код много раз. Вот вам практическое решение от меня по данному вопросу :)
Выделяете все кнопки (1-15 или сколько их там), переходите на закладку Events в Object Inspector и активируете событие OnMouseDown, которое приводите к виду:
После этого кнопки можно "таскать".
--------- Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 29.12.2005, 22:55 Оценка за ответ: 4 Комментарий оценки: Кнопки тоскаются, всё класно. Не плохо бы каментариев чуть-чуть.
Андрей, а как сделать чтоб кнопки не наезжали друг на друга.
Отвечает: Лучников Юрий Владимирович
Здравствуйте, Вячеслав Петрович!
Мое виденье вашего вопроса:
Ввести в программе режим редактирования положения кнопок...
При активном режиме в событии OnMouseDown установить флаг что кнопка перешла в режим перемещения, в OnMouseMove - делать собственно перемещение кнопки, отслеживая координаты курсора, в OnMouseUp - сбросить флаг перемещения кнопки.
Успехов!
Ответ отправил: Лучников Юрий Владимирович (статус: 8-ой класс)
Отправлен: 30.12.2005, 08:22 Оценка за ответ: 3 Комментарий оценки: А как установить и сбросить флаги? Пальцем покажите.
Отвечает: Toxic~Fire
Здравствуйте, Вячеслав Петрович!
Что-то вы выражаетесь как-то не понятно:
Но как я понял, вы пишете игру "пятнашки" - в интернете очень много алгоритмов содания этой игры!
А про перетаскивание кнопки во время работы см. приложение:
Приложение:
Ответ отправил: Toxic~Fire (статус: 2-ой класс)
Отправлен: 30.12.2005, 12:37 Оценка за ответ: 5 Комментарий оценки: С новым годом!
Вопрос № 32.430
Здравствуйте!
У меня такой вопросик: я создаю в dll форму. Как мне открыть эту форму из своего exe приложения?
P.S. Можно ли получить из dll не только функцию или процедуру, но и константу, значение переменной??
Отправлен: 30.12.2005, 11:29
Вопрос задал: Toxic~Fire (статус: 2-ой класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Лучников Юрий Владимирович
Здравствуйте, Toxic~Fire!
Константу или переменную лучше обернуть функцией, которая и будет их возвращать. В свою очередь такую функцию нужно эскпортировать вместе с остальными, используемыми из-вне.
Отвечает: Diman_A
Здравствуйте, Toxic~Fire!
У меня получилось сделать только модальный показ формы, т.е. когда форма из DLL запущена, главная бездействует.
Если у вас собрать все не получится, пишите мне, вышлю исходники на delphi 6: aganovdiman@mail.ru.
Текст DLL:
library DLLWithForm;
uses
SysUtils,
Classes,
DLLFormU in 'E:!проекты!RusFaqформа из DLL (ответ №4)DLLFormU.pas' {DLLForm};
exports
ShowModalForm, FreeForm;
begin
end.
Текст формы в DLL:
unit DLLFormU;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, Buttons;
type
Tdllform = class(TForm)
BitBtn2: TBitBtn;
procedure FormClose(Sender: TObject;
var Action: TCloseAction);
private
CallForm: THandle; //Дескриптор вызывающей формы
end;
// Объявление экспортируемых подпрограмм
function ShowModalForm: Integer;
procedure FreeForm; overload;
var
DLLForm: TDLLForm;
implementation
{$R *.DFM}
// Модальный вызов
function ShowModalForm: Integer;
begin
DllForm := TDllForm.Create(Application);
DLLForm.Show;
DLLForm.Free;
end;
// Уничтожение формы
procedure FreeForm;
begin
DLLForm.Free
end;
procedure TDLLForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
if CallForm > 0 then
SendMessage(CallForm, wm_User, 0, 0)
end;
end.
А здесь исходник программы, юзающей DLL:
unit TestMainU;
interface
uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
type
Tform1 = class(TForm)
Button2: TButton; // Закрыть окно
label1: TLabel;
procedure Button2Click(Sender: TObject);
end;
var
form1: Tform1;
implementation
{$R *.DFM}
function ShowModalForm: Integer;
external 'c:DLLWithForm.dll'; // поменяйте на путь к этой DLL на вашем жестком диске
procedure FreeForm;
external 'c:DLLWithForm.dll'; // поменяйте на путь к этой DLL на вашем жестком диске
// Модальный вызов
procedure Tform1.Button2Click(Sender: TObject);
begin
Button2.Enabled := False;
label1.Caption := 'ModalResult = ' + IntToStr(ShowModalForm);
label1.Show; // Показываем результат вызова
Button2.Enabled := True;
end;
end.
Ответ отправил: Diman_A (статус: 2-ой класс)
Отправлен: 30.12.2005, 17:47
Вопрос № 32.432
Здравствуйте, уважаемые эксперты!
Проблема: где мне достать ХОРОШУЮ программу, которая создаёт файл справки *.hlp? (У меня была какая-то, но она создавала практически пустой фаил с весом 10 метров).
Отправлен: 30.12.2005, 12:41
Вопрос задал: Toxic~Fire (статус: 2-ой класс)
Всего ответов: 6 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Kazakh
Здравствуйте, Toxic~Fire!
Я пользуюсь "Help Development Studio". Классная вещь. В дистрах 780 кбайт.
Могу выслать, но у меня не самая последняя версия.
Скинь мне на мыло sikosha@inbox.ru если надо.
Ответ отправил: Kazakh (статус: 2-ой класс)
Отправлен: 30.12.2005, 12:57
Отвечает: Ерёмин Андрей
Здравствуйте, Toxic~Fire!
Рекомендую вам создавать справку не в формате hlp, а в формате chm. Это вариант более продвинутый и удобный. Для этого воспользуйтесь программой htm2chm (http://yarix.by.ru). Программа удобна в обращении, а в файлах chm используется сжатие, поэтому они имеют маленький объём. В файле chm размером 150 Кб можно уместить большое количество справки. При этом в chm можно помещать картинки и другие файлы.
--------- Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 30.12.2005, 13:51
Отвечает: Лучников Юрий Владимирович
Здравствуйте, Toxic~Fire!
Советую зайти на мой любимый, очень хороший каталог софта - softodrom.ru.
Там ты без труда найдешь себе все что душа пожелает;)
Отвечает: Diman_A
Здравствуйте, Toxic~Fire!
Формат *.hlp - довольно старый. В новых виндах файлы помощи - в формате *.chm, юзеру им пользоваться гораздо удобнее. Я для их компиляции изпользую программу Page2CHM 2.3. Скачать ее можно на http://issoft.net.ru/downloads/p2c_installer.zip.
Ответ отправил: Diman_A (статус: 2-ой класс)
Отправлен: 30.12.2005, 16:53
Отвечает: [TiER]
Здравствуйте, Toxic~Fire!
Help & Manual 4 и выше!
Ответ отправил: [TiER] (статус: 1-ый класс)
Отправлен: 30.12.2005, 18:49
Отвечает: Denisss Здравствуйте, Toxic~Fire!
Для этого можно воспользоваться программой Help&Manual.
Но вообще-то я бы рекомендовал отбросить этот устаревший формат справки и воспользоваться более удобным и компактным форматом справки CHM. Его можно создать либо с помощью той же H&M, либо с помощью Вашего любимого редактора HTML (если таковой имеется) + HTMLHelp или HTM2CHM
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 30.12.2005, 19:29
Вопрос № 32.435
Здравствуйте!
У меня вопрос по TMediaPlayer.
Как с помощью TTarckBar(или ещё чего-нибудь) отображать и менять позицию песни.
Отвечает: Ерёмин Андрей
Здравствуйте, SuperXakep!
В прикреплённом файле статья по созданию простенького мультимедиа-проигрывателя. Там есть этап - отображение позиции проигрывания в TGauge. Для этого используются свойства TMediaPlayer: Position (позиция) и Length (длина). Этим и следует воспользоваться. С отображением, думаю, всё понятно - просто заменить в коде Gauge на TrackBar. А для перехода просто присваивайте MediaPlayer.Position значение, которое выдаст TrackBar (событие OnChange).
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 30.12.2005, 15:05 Оценка за ответ: 5
Отвечает: Лучников Юрий Владимирович
Здравствуйте, SuperXakep!
СВойство TTarckBar.Max установить равным длине проигрываемого трека, которе можно узнать Через свойство MediaPlayer.TrackLength.
Текущюю позицию TrackBar.Position нужно синхронизировать с позицией проигрываемого участка, которую можно определить по свойству MediaPlayer.TrackPosition.
Успехов!
Ответ отправил: Лучников Юрий Владимирович (статус: 8-ой класс)
Отправлен: 30.12.2005, 16:00 Оценка за ответ: 5
Вопрос № 32.451
Здравствуйте!
Опять вопрос по TMediaPlayer, я понял как отображать и менять позицию песни, но как это сделать в одном TTrackBar'е??? Пожалуйста, поподробней.
Отвечает: Ерёмин Андрей
Здравствуйте, SuperXakep!
Странный всё-таки этот компонент, TTrackBar... Много пробовал, но так и не получилось совместить две эти операции в один TrackBar. Но решение есть и когда-то я его видел. В данный момент не знаю как сделать. Зато могу предложить хороший пакет - MMTool (http://www.swiftsoft.de). Он включает в себя компоненты, с помощью которых легко построить мультимедиа-проигрыватель. Подобных проблем там нет. Если всё же необходимо увязать TrackBar, прошу извинить за отсутствие решения.
--------- Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 30.12.2005, 20:39 Оценка за ответ: 5 Комментарий оценки: Всё ясно насчёт TtrackBar. Напишите пожалуйста по внтр. почте про этот сайт, а то я English фигово знаю:)))
Вопрос № 32.454
Доброго времени суток господа Эксперты!!!
Поздравляю всех вас с Новым 2006 годом. Желаю вам всего самого лучшего, пусть сбудутся все ваши мечты!!!
У меня к вам вопрос как средствами делфи можно сделать список файлов находящихся в определенной папке и вывести его например в RichEdit.
Помогите пажалуйста с этой проблемой, а то я целый день промучался, но результата толкового не получил.
Отвечает: Ерёмин Андрей Здравствуйте, Ujin Antikvar!
В данном коде нужно заменить значение переменной Dir на путь к той директории, в которой следует произвести поиск (без слеша на конце). Код в приложении.
Приложение:
--------- Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 30.12.2005, 22:20 Оценка за ответ: 5 Комментарий оценки: Спасибо.
Отвечает: Diman_A
Здравствуйте, Ujin Antikvar!
Не пойму, для чего тебе RichEdit? Для вывода всевозможных списков можно использовать ListBox или ListView, но там можно сделать несколько колонок. Я в примере использовал ListBox, но нетрудно будет переделать это для RichEdit, если тебе это действительно нужно - например, перечислять имена через запятую. На форме находятся: ListBox с именем LB, две кнопки с именами XiButton1 и XiButton2 - одна на старт, другая для удаления строк из ListBox, вдруг пригодится.
В тексте проги один блок помечен как примечание {} - это сделано, чтобы не искал файлы в поддиректориях, если тебе это нужно, уберешь фигурные скобки.
Приложение:
Ответ отправил: Diman_A (статус: 2-ой класс)
Отправлен: 31.12.2005, 06:43 Оценка за ответ: 5 Комментарий оценки: Спасибо!!!
Отвечает: Schmak
Здравствуйте, Ujin Antikvar!
Посмотрите ответы на вопросы 31170 и 31183.
В приложении привожу мой ответ на данные вопросы. Пример приведён для Listboxa, чтобы переделать под Richedit исправьте только одну строку:
ListBox1.Items.Add(f.name); на Richedit1.lines.Add(f.name) если не ошибаюсь
Приложение:
--------- Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 31.12.2005, 11:52 Оценка за ответ: 5 Комментарий оценки: Спасибо!!!
Вопрос № 32.457
TMediaPlayer:
1.Как создать что-нибуть на подобии плейлиста?
2.Как мона регулировать громкость воспроизводимого трека?
3.Создаю на форме TPanel ставлю TMediaPlayer.Display := Panel1, но при запуски фильма на TPanel видна только часть фильма, как сделать что бы видео подстраивалось под TPanel?
4.Как сделать что бы трек(плейлист) всё время повторялся?
Отвечает: Ерёмин Андрей
Здравствуйте, SuperXakep!
1. А в чём именно состоит проблема? Чтобы визуализировать плейлист, используйте ListBox, а лучше - какой-нибудь ListBox, но из сторонних пакетов (JediVCL, GlobusLib), у которого можно изменять оформление.
2. Средствами TMediaPlayer этого сделать нельзя, разве что регулировать громкость всей системы, но это плохой вариант. Также см. *.
3. Насколько я помню, Panel1.AutoSize:=True; решит эту проблему и размер установится автоматически под размер видео.
4. Здесь зависит от того, как воспроизводить. Без конкретного примера показать не получится. Просто, если закончился последний трек, то надо воспроизводить первый.
* Ответом на все ваши вопросы может служить MMTool, о котором я уже говорил. Там всё это (включая плей-листы) реализовано.
** Чтобы сделать плей-лист, можно завести динамический массив (Var PL: Array of String;) и вставлять в него полные пути к файлам (SetLength(PL,1); PL[0]:='C:\music1.mp3';). Чтобы извлечь имя файла из полного пути, можно воспользоваться функцией ExtractFileName(Path); Удачи!
--------- Работа - не волк, а произведение силы на расстояние!
Ответ отправил: Ерёмин Андрей (статус: Профессионал)
Отправлен: 30.12.2005, 22:27
Отвечает: Лучников Юрий Владимирович
Здравствуйте, SuperXakep!
Складывается ощущение отсутствие логиеского мышления. Вы пытаетесь сделать ВСЕ по шаблону, причем даже не удосуживаетесь взгялнуть в ХЕЛП. А ведь это не лучший путь постич искусство программирования.
Компонент TMediaPlayer не доработан Борландцами, сыроват. Посему советую использовать всю мощь DirectX(для этого нужно обзавестить DirectX SDK) ;)
1. Используйте TListBox, TListView и др. подобные компоненты.
2,3,4. Для воспроизведения аудио (позволяет использовать DSP эффекты, регулировать громкость, микшировать, использовать эквалайзер и пр.) рекомендую использовать библиотеку BASS (http://www.un4seen.com/) и можно найти компонент TBassPlayer (http://www.torry.net/quicksearchd.php?String=TBassPlayer&Title=Yes).
Для воспроизведения видео (с возможностью регулировки звука, контрастности, яркости, четкости изображения, масштаба и пр., есть возможность подключения DSP эффектов, эквалайзера и пр.) рекомендую использовать набор компонентов DSPack (http://sourceforge.net/projects/dspack).
А с помощью TMediaPlayer такого не добьешься :(
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 31.12.2005, 11:04 Оценка за ответ: 5