Full-stack webdeveloper in Groningen
Verwijderd
Je kunt er natuurlijk altijd zelf eentje maken, dat is helemaal niet moeilijk, als je hulp nodig hebt daarbij...
Dus als je me daarmee zou kunnen helpen, graag!
Full-stack webdeveloper in Groningen
'people say I'm a drinker, but I'm sober half the time' - Mick Jagger | mail: freddifish_AT_gmx.net
Is het wel mogelijk? Ik ben een vrij ervaren Pascal programmeur, en in TP7 kan het echt niet! In Delphi dan ook niet? De component TFileListBox werkt met FindFirst en FindNext, die hetzelfde werken als in Pascal. Is het echt niet mogelijk?
Full-stack webdeveloper in Groningen
A software developer is someone who looks both left and right when crossing a one-way street.
Dé antenne-innovatie voor de korte golf
Welke idioot bij Borland heeft bedacht om het sorteren maar weg te laten?
In Turbo Pascal 3 kon het al niet, dan zou je toch denken dat ze naar een jaar of 10 het wel hebben kunnen programmeren!!!
Full-stack webdeveloper in Groningen
Verwijderd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
| unit FileCtrlEx;
interface
uses
FileCtrl;
type
TFileListBoxEx = class(TFileListBox)
private
FExtensionSort: Boolean;
procedure SetExtensionSort(const Value: Boolean);
protected
procedure ReadFileNames; override;
public
procedure SortByExt;
published
property ExtensionSort: Boolean read FExtensionSort write SetExtensionSort;
end;
procedure Register;
implementation
uses
Classes, SysUtils;
function ExtCompare(List: TStringList; Index1, Index2: Integer): Integer;
begin
Result := CompareText(ExtractFileExt(List[Index1]),
ExtractFileExt(List[Index2]));
end;
{ TFileListBoxEx }
procedure TFileListBoxEx.ReadFileNames;
begin
inherited;
if ExtensionSort then SortByExt;
end;
procedure TFileListBoxEx.SetExtensionSort(const Value: Boolean);
begin
if Value <> FExtensionSort then
begin
FExtensionSort := Value;
Sorted := Sorted and not FExtensionSort;
ReadFileNames;
end;
end;
procedure TFileListBoxEx.SortByExt;
var
TmpList: TStringList;
i: Integer;
begin
Sorted := False;
TmpList := TStringList.Create;
try
TmpList.Assign(Items);
TmpList.CustomSort(ExtCompare);
Items.Assign(TmpList);
finally
TmpList.Free;
end;
end;
procedure Register;
begin
RegisterComponents('Win 3.1', [TFileListBoxEx]);
end;
end. |
Een listbox heeft een onCompare event (als je sorttype op stdata zet tenminste).
1
2
3
4
5
| procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); begin end; |
En vergelijk dan bijv de Item1.caption en item2.caption met elkaar. Als item1 groter is dan item2 moet je compare op 1 zetten, -1 als item1 kleiner is dan item2, en 0 als ze gelijk zijn.
Ah.. en om de sorteer routine maar helemaal af te maken:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
var ext1, ext2: string;
begin
ext1:=extractfileext(item1.caption);
ext2:=extractfileext(item2.caption);
if ext1 < ext2 then
compare:=1
else if ext1 > ext2 then
compare:=-1
else
compare:=0;
end; |
Moet je alleen nog de items van de listview vullen..
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
Het werkt perfect, en ik zal je naam noemen in het helpbestand van mijn programma
Full-stack webdeveloper in Groningen
Verwijderd
Daarom zei ik ook al: waarom niet een gewone listview met een eigen oncompare handler??Op zaterdag 18 mei 2002 02:37 schreef DiFool het volgende:
Kijk vooral ook ff bij linschke. Goed tree/list component waar volgens mij ook een file-versie bijzit, want wat je nu gebruikt is echt uit de prehistorie [lees ca 3 jaar oud]
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
Alleen jammer van die icoontjes... Die wil ik ook nog veranderen
(Ja, ik weet het... ik zeur en ik ben ontzettend lastig)
Full-stack webdeveloper in Groningen