Вопрос № 132197: Здравствуйте!
Подскажите как отсортировать данные в ListBox.
Есть список такого вида, который нужно сортировать по номеру:
(Символ номера + номер <далее пробел> и далее некоторые данные, не имеет значения какие)
----------------...Вопрос № 132220: Я пишу мр3-плеер на Delphi. Как реализовать регулятор громкости? За ранее спасибо....
Вопрос № 132.197
Здравствуйте!
Подскажите как отсортировать данные в ListBox.
Есть список такого вида, который нужно сортировать по номеру:
(Символ номера + номер <далее пробел> и далее некоторые данные, не имеет значения какие)
-----------------------
№1 12.12.05 Авб
№2 12.12.05 Йцукен
№4 12.12.05 Фывапр
№3 12.12.05 Ячсмит
...
№115 12.12.05 Qwerty
№123 12.12.05 Asdfgh
№116 12.12.05 Zxcvbn
№117 12.12.05 Poiuyt
...
и т.д.
---------------------------
Стандартный способ или нагугленные процедуры сортируют так:
№103 12.12.05 Asdfgh
№1231 12.12.05 Zxcvbn
№115 12.12.05 Zxcvbn
№1151 12.12.05 Zxcvbn
Получаемый список даже читать трудно.
А нужно вот так (т.е. нормально по номеру все отсортировать, сверху вниз):
№115 12.12.05 Zxcvbn
№123 12.12.05 Asdfgh
№1151 12.12.05 Zxcvbn
№1231 12.12.05 Zxcvbn
Подскажите какой-нибудь подходящий способ сортировки. Имею ввиду конкретную программу.
Отправлен: 14.04.2008, 20:02
Вопрос задал: Upgrader (статус: 7-ой класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 4)
Ответ отправил: Drbear (статус: 9-ый класс)
Ответ отправлен: 14.04.2008, 21:09 Оценка за ответ: 4
Отвечает: PavelGM
Здравствуйте, Upgrader!
Можно предложить вот такой вариант. Но если список большой тогда его лучше сразу считывать в StringList, сортировать, а уже потом в ListBox.
P.S. Если в одинаковых номерах нужна внутренняя сортировка по другим полям, то это можно реализовать там где result := 0 (т.е. при равенстве i1 и i2 учитывать дополнительные условия).
Приложение:
Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 16.04.2008, 10:26 Оценка за ответ: 5 Комментарий оценки: Спасибо, помогло! Как это оказывается просто можно сделать :)
Наконец-то сортировка заработала нормально! Хотелось бы за ваш ответ поставить 10 :)
Вопрос № 132.220
Я пишу мр3-плеер на Delphi. Как реализовать регулятор громкости? За ранее спасибо.
Отвечает: Gladiator
Здравствуйте, Бикметов Иршат Ринатович!
Вот один из способов реализации вашей задачи. Для этого необходим заголовочный файл AMixer.pas, который вы можете взять отсюда http://depositfiles.com/files/4754311.
Приложение:
Ответ отправил: Gladiator (статус: Студент)
Ответ отправлен: 15.04.2008, 08:50
Отвечает: Genia007
Здравствуйте, Бикметов Иршат Ринатович!
Попробуйте использовать следующий код:
uses mmsystem;
function GetWaveVolume: DWord;
var
Woc: TWAVEOUTCAPS;
Volume: DWord;
begin
result := 0;
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) = MMSYSERR_NOERROR then
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
begin
WaveOutGetVolume(WAVE_MAPPER, @Volume);
Result := Volume;
end;
end;
procedure SetWaveVolume(const AVolume: DWord);
var
Woc: TWAVEOUTCAPS;
begin
if WaveOutGetDevCaps(WAVE_MAPPER, @Woc, sizeof(Woc)) = MMSYSERR_NOERROR then
if Woc.dwSupport and WAVECAPS_VOLUME = WAVECAPS_VOLUME then
WaveOutSetVolume(WAVE_MAPPER, AVolume);
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
var
LeftVolume: Word;
RightVolume: Word;
begin
LeftVolume := TrackBar1.Position;
RightVolume := TrackBar2.Position;
SetWaveVolume(MakeLong(LeftVolume, RightVolume));
end;
procedure TForm1.TrackBar2Change(Sender: TObject);
var
LeftVolume: Word;
RightVolume: Word;
begin
LeftVolume := TrackBar1.Position;
RightVolume := TrackBar2.Position;
SetWaveVolume(MakeLong(LeftVolume, RightVolume));
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Caption := IntToStr(GetWaveVolume);
end;
Поставте трэкбары - максимум 50000,
позицию в 25000.
Ответ отправил: Genia007 (статус: 7-ой класс)
Ответ отправлен: 15.04.2008, 12:02
Вы имеете возможность оценить этот выпуск рассылки. Нам очень важно Ваше мнение!
* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.
Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!
Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.
Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.