Вопрос № 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