Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.26;
Скачать: CL | DM;

Вниз

Сортировка   Найти похожие ветки 

 
Керик   (2003-04-25 20:47) [0]

Как сделать, чтобы ListView сортировал Item"ы по алфавиту и чтобы на Column"ах были стрелочки вверх, вниз, щёлкая по которым можно выполнить сортировку по любому Column"у в алфавитном и обратном алфавитному порядке (по возрастанию или убыванию)?


 
NetBreaker666 ©   (2003-04-26 19:41) [1]

COlumnClick=True
Дальше описываешь соответствующим образом OnCompare


 
Керик   (2003-04-26 22:09) [2]

Сортировку я уже сделал. Как сохранить её для последующего запуска программы.


 
Керик   (2003-04-27 13:03) [3]

Как мне сделать, чтобы сохранялась сортировка Item`ов (номер столбца, по которому сортировать и направление - вниз, вверх)? Вот так я обрабатываю OnCompare:

procedure TLogForm.NetListCompare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
var
ix: Integer;
begin
if (SortingColumn = 0) or (Item2.SubItems.Count = 0) then
begin
if Direction = drDown then
Compare := CompareText(Item1.Caption, Item2.Caption)
else Compare := CompareText(Item2.Caption, Item1.Caption);
end
else
begin
ix := SortingColumn - 1;
if Direction = drDown then
Compare := CompareText(Item1.SubItems.Strings[ix], Item2.SubItems.Strings[ix])
else Compare := CompareText(Item2.SubItems.Strings[ix], Item1.SubItems.Strings[ix]);
end;
end;

А вот так OnColumnClick:

procedure TLogForm.NetListColumnClick(Sender: TObject;
Column: TListColumn);
begin
NetList.Columns.Items[SortingColumn].ImageIndex := -1;
if SortingColumn <> Column.Index then
begin
SortingColumn := Column.Index;
Direction := drDown;
end
else
begin
if Direction = drDown then
Direction := drUp
else Direction := drDown;
end;
(Sender as TCustomListView).AlphaSort;
if Direction = drDown then
Column.ImageIndex := 0
else Column.ImageIndex := 1;
end;

Вот так выполняется загрузка параметров:

procedure LoadParams;
var R: TRegistry;
begin
R := TRegistry.Create;
R.RootKey := HKEY_LOCAL_MACHINE;
R.OpenKey(Key, True);
if R.ValueExists("LastColumn") then
SortingColumn := R.ReadInteger("LastColumn");
if R.ValueExists("Direction") then
begin
if R.ReadString("Direction") = "Down" then
Direction := drDown;
if R.ReadString("Direction") = "Up" then
Direction := drUp;
end;
end;

Вот так я описал тип TDirection:

type
TDirection = (drUp, drDown);

Вот так сохраняются параметры:

procedure SaveParams;
var R: TRegistry;
begin
R := TRegistry.Create;
with R do
begin
RootKey := HKEY_LOCAL_MACHINE;
OpenKey(Key, True);
WriteInteger("LastColumn", SortingColumn);
if Direction = drDown then
WriteString("Direction", "Down")
else WriteString("Direction", "Up");
CloseKey;
end;
R.Free;
end;

Вот константы:
const Key = "Software\MyProgram";

Перед созданием окон в самом проекте я ставлю вызов к LoadParams;
Затем после создания окна прога вызывает ошибку List index out of bounds (0). Я с помощью брейкпоинтов выследил как происходит ошибка. Вот как она получается: происходит она при обработке события OnCompare: причина в том, что у Item2 нет SubItems, хотя я точно знаю что на самом деле есть, так же как и у Item1, хотя там ошибки не возникает. Как с этим справиться, я не знаю...



 
Avenger [NhT] ©   (2003-04-27 13:30) [4]

Вобще-то эта конференция посвящена програмингу на ВыньАпи!
А на нем как это сделать?



Страницы: 1 вся ветка

Текущий архив: 2003.06.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
14-84650
` frizZ. `
2003-06-10 12:07
2003.06.26
От чего зависит размер скомпилированного файла ?


14-84660
Maclud_Maclaud
2003-06-10 13:31
2003.06.26
Неужеле никто не знает как программно регулировать MasterVolume


1-84153
MegaVolt
2003-06-11 12:09
2003.06.26
Подскажите прогу которая может мониторить обращения к DLLкам.


3-83986
DBDev
2003-05-29 16:55
2003.06.26
ПОМОГИТЕ грамотно организовать поиск на базе SP?


14-84556
nick-from
2003-06-05 22:40
2003.06.26
Не могу записать в ini текст из Edit а