|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.11.2009, 12:22 | #1 |
Форумчанин
Регистрация: 04.07.2007
Сообщений: 549
|
Помогите решить проблему с ListView и TrackBar
Вопрос: № 1
Я пишу программу будильник, в ней есть такая функция, как воспроизвести музыкальный файл, который тебя и будет утром будить, кнопка такая нажимаешь и прослушиваешь, что ты за песню выбрал. Я нажимаю воспроизвести (кнопка Play), появляется ползунок/бегунок (TrackBar1.Visible := True; ) Запускается таймер с интервалом 1000 миллисекунд, он и меняет положение ползунка каждую секунду и если песня кончилась, то присваивает кнопке плэй, вид и тэг, что она типа уже не плэй, а стоп, меняет положение ползунка на начало и сам себя (таймер) выключает. Теперь сам вопрос, как сделать, чтобы ползунок показывал сколько песни проиграло, сколько осталось. Проще говоря, как получить сколько длиться песня? Как я понимаю когда получу миллисекунды (продолжительность трэка), то мне надо сделать так: (TrackBar1.Max := «Те самые миллисекунды»; ) Воспроизводит звук TMediaPlayer . Да и вообще посоветуйте как это лучше реализовать, если я не правильно придумал? Вопрос: №2 Я пишу будильник, но уже приличный, там будут напоминания дней рождений, простые напоминания и сами будильники. На форме SettingForm есть ListView, нажимаю кнопку «Новый» (будильник), появляется форма, настраиваю, жму «ОК» и будильник добавляется в список «ListView» Будильник это объект: TClock = class(TObject). Мне надо как то привязать будильник к конкретной строке списка, чтобы когда я выделял в списке нужный будильник и нажимал «Изменить» то он передавал свои параметры той форме про которую я говорил выше. Как передавать я знаю, как привязывать объект и потом его получать не могу понять, объясните кто нибудь пожалуйста. Вот код нажатия на кнопку «Новый», я походу не правильно добавляю объект. Если правильно то как его вызывать? procedure TForm1.BtnNewClockClick(Sender: TObject); var Alarm : TClock; begin FormNewClock := TFormNewClock.Create(self); FormNewClock.ReserveVolume := FormNewClock.GetVolume; //зарезервировать текущую громкость звука try if FormNewClock.ShowModal = mrOK then //если в FormNewClock нажали "ОК" то выполняется код begin Alarm := TClock.Create; FormNewClock.SetData(Alarm); //получить настройки будильника из формы FormNewClock if (Alarm.FMode = ONE_ALARM) then begin with ListViewAlarm.Items.Add do begin Caption := Alarm.FTextMessage; SubItems.Add(DateToStr(FormNewClock .DatePicker.Date)); SubItems.Add(TimeToStr(FormNewClock .TimePicker.Time)); SubItems.Add(Alarm.FPeriodAlarm);//добавляется периодичность срабатывания Checked := True; end; end; if (Alarm.FMode = EVERY_DAY) then begin with ListViewAlarm.Items.Add do begin Caption := Alarm.FTextMessage; DecodeTime(FormNewClock.TimePicker. Time, Alarm.FHour, Alarm.FMin, Alarm.FSec, Alarm.FMilSec); if (Alarm.FHour >= HourOf(Now)) and (Alarm.FMin > MinuteOf(Now)) then SubItems.Add('сегодня ') else SubItems.Add('завтра '); SubItems.Add(TimeToStr(FormNewClock .TimePicker.Time)); SubItems.Add(Alarm.FPeriodAlarm);//добавляется периодичность срабатывания SubItems.AddObject('Будильник', Alarm); Checked := True; end; end; if (Alarm.FMode = EVERY_WEEK) then begin with ListViewAlarm.Items.Add do begin Caption := Alarm.FTextMessage; SubItems.Add(IntDayWeekToStr(Alarm. FDayOfWeek)); SubItems.Add(TimeToStr(FormNewClock .TimePicker.Time)); SubItems.Add(Alarm.FPeriodAlarm); SubItems.AddObject('Будильник', Alarm); Checked := True; end; end; if (Alarm.FMode = EVERY_HOUR) then begin with ListViewAlarm.Items.Add do begin Caption := Alarm.FTextMessage; DecodeTime(FormNewClock.TimePicker. Time, Alarm.FHour, Alarm.FMin, Alarm.FSec, Alarm.FMilSec); SubItems.Add('ежедневно '); SubItems.Add(IntToStr(Alarm.FMin)+' мин'); SubItems.Add(Alarm.FPeriodAlarm); SubItems.AddObject('Будильник', Alarm); Checked := True; end; end; if (Alarm.FMode = EVERY_MONTH) then begin with ListViewAlarm.Items.Add do begin Caption := Alarm.FTextMessage; SubItems.Add((FormNewClock.EditEver yYear.Text)+'-го числа'); SubItems.Add(TimeToStr(FormNewClock .TimePicker.Time)); SubItems.Add(Alarm.FPeriodAlarm); SubItems.AddObject('Будильник', Alarm); Checked := True; end; end; if (Alarm.FMode = EVERY_YEAR) then begin with ListViewAlarm.Items.Add do begin Caption := Alarm.FTextMessage; SubItems.Add((FormNewClock.EditEver yYear.Text)+'-го '+IntMonthToStr(Alarm.FMonth)); SubItems.Add(TimeToStr(FormNewClock .TimePicker.Time)); SubItems.Add(Alarm.FPeriodAlarm); SubItems.AddObject('Будильник', Alarm); Checked := True; end; end; end; //чтобы в дальнейшем их сохранить и добавить запись в ListView finally FormNewClock.Free; waveOutSetVolume(WAVE_MAPPER, FormNewClock.ReserveVolume); end; end; |
08.11.2009, 12:25 | #2 |
Форумчанин
Регистрация: 04.07.2007
Сообщений: 549
|
Блин, перепутал тему форума не там вопрос написал. Да простят меня админы...
|
10.11.2009, 20:25 | #3 | |
Форумчанин
Регистрация: 04.07.2007
Сообщений: 549
|
Вот решение, на другом форуме подсказали, мож кому пригодиться:
Цитата:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ПОМОГИТЕ РЕШИТЬ ПРОБЛЕМУ !!!!!!!!!!!! | ЛиЛу | Помощь студентам | 5 | 29.12.2008 15:36 |
Помогите решить проблему | nismo | Microsoft Office Excel | 7 | 12.09.2008 08:59 |
помогите решить проблему | 1234 | Общие вопросы Delphi | 2 | 04.07.2008 11:52 |
помогите решить проблему ... | alexey7 | Microsoft Office Excel | 2 | 16.10.2007 13:25 |