[gelöst] TListView Problem...

Antworten
RSI
Beiträge: 2
Registriert: Di 16. Feb 2016, 04:44
OS, Lazarus, FPC: Windows 10 / Debian Linux (Lazarus 1.6)
CPU-Target: 64Bit

[gelöst] TListView Problem...

Beitrag von RSI »

Hallo,

ich versuche gerade nach sehr, sehr langer Zeit wieder ein wenig zu programmieren und habe mich für Lazarus/FPC entschieden.
Ich habe Ende der 80er, Anfang der 90er mit IT und Programmierung angefangen, habe mich aber später (so ab 1998/2000) weniger um die Programmierung und mehr um Administration und Installation von Windows und Linux Systeme gekümmert. Bin also auf beiden Plattformen zu Hause.

So, aber zu meinem Problem. Ich habe mir Beispiel-Code aus dem Netz geholt und dies soweit an mein kleines, persönliches Projekt-Tool angepasst. Aber irgend wo ist ein Haken und ich finde den Fehler nicht. Vielleicht kann mich also jemand auf den richtigen Weg führen. :D

Hier mal der Code, der wohl irgend wo ein Problem hat.

Code: Alles auswählen

PROCEDURE TFormMain.ButtonStartSeachClick ( Sender : TObject ) ;
BEGIN
    SearchDirectory( DirectoryEdit.Text );
end;
 
PROCEDURE TFormMain.SearchDirectory ( SearchDir : STRING );
VAR
	Info			: TSearchRec;
	Count			: LONGINT;
	ListViewItem	: TListItem;
	FileTime		: TDateTime;
    SearchMask		: STRING;
BEGIN
	ListView.Items.Clear;
    ListView.Items.BeginUpdate;
    Count := 0;
 
	SearchDir := IncludeTrailingPathDelimiter( SearchDir );
	CurrentDirectory := SearchDir;
    SearchMask := EditSearchMask.Text;
    IF ( Length(SearchMask) <= 0 ) THEN SearchMask := FileMask;
 
	// if we have found a file...
	IF FindFirstUTF8( SearchDir + SearchMask, faAnyFile AND faDirectory, Info ) = 0 THEN
	BEGIN
		REPEAT
			Inc( Count );
			// we do stuff with the file entry we found
            // TODO: system file icon image list ...
			IF ( Name <> '.' ) AND ( Name <> '..' ) THEN
			BEGIN
				ListViewItem := ListView.Items.Add;
				ListViewItem.Caption := Info.Name;
	 			// If we find a folder
				IF ( Info.Attr AND faDirectory ) <> 0 THEN
				BEGIN
//					ListViewItem.ImageIndex := 1;
					ListViewItem.SubItems.Add( '--' );	// folders can't show size
				END
				ELSE	// if we find a file
				BEGIN
//					ListViewItem.ImageIndex := 2;
					ListViewItem.SubItems.Add( FileSizeFormat( Info.Size ) );
				END;
				FileTime := FileDateToDateTime( Info.Time );
				ListViewItem.SubItems.Add( FormatDateTime( 'dd/mm/yyyy hh:nn:ss', FileTime ) );
			END;
		UNTIL FindNextUTF8( Info ) <> 0;
	END;
 
	// we are done with file list
    ListView.Items.EndUpdate;
	FindCloseUTF8( Info );
	Caption := 'Wiolant : ' + IntToStr( Count );
END;
 
FUNCTION TFormMain.FileSizeFormat ( nBytes : DOUBLE ) : STRING;
BEGIN
	IF nBytes < KiB THEN
		Result := floattostr( nBytes ) + ' B'
	ELSE IF ( nBytes >= KiB ) AND ( nBytes < MiB ) THEN
		Result := FormatFloat( '0.00', nBytes / KiB ) + 'KiB'
	ELSE IF ( nBytes >= MiB ) AND ( nBytes < GiB ) THEN
		Result := FormatFloat( '0.00', nBytes / MiB ) + 'MiB'
	ELSE IF ( nBytes >= GiB ) AND ( nBytes < TiB ) THEN
		Result := FormatFloat( '0.00', nBytes / GiB ) + 'GiB'
	ELSE
		Result := FormatFloat( '0.00', nBytes / TiB ) + 'TiB';
END;
 
Das Ergebnis sieht dann wie im Bild aus, also irgend wo stimmt was nicht.
capture_001_05042016_032648.jpg
Und hier noch, wie ich es erstellt habe.
capture_002_05042016_032713.jpg
Bin für jeden Tipp dankbar!

Gruß
Robert
Zuletzt geändert von RSI am Di 5. Apr 2016, 21:05, insgesamt 1-mal geändert.

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: TListView Problem...

Beitrag von theo »


wp_xyz
Beiträge: 5203
Registriert: Fr 8. Apr 2011, 09:01

Re: TListView Problem...

Beitrag von wp_xyz »

@RSI: Du bist neu hier - herzlich willkommen. Aber bitte, wenn du ein Problem postest, versetzt dich doch bitte in dieLeute, die dir helfen wollen. Mit Fehlerbeschreibungen wie "Aber irgend wo ist ein Haken" oder "irgend wo stimmt was nicht." kann niemand etwas anfangen (außer theo mit seiner berühmten Kristallkugel). Je präziser dein Problem formuliert ist, um so besser und einfacher wird die Antwort. Es gibt hier Unmengen von Threads, wo die Leute aneinander vorbeireden, weil das Problem nicht gut beschrieben ist.

RSI
Beiträge: 2
Registriert: Di 16. Feb 2016, 04:44
OS, Lazarus, FPC: Windows 10 / Debian Linux (Lazarus 1.6)
CPU-Target: 64Bit

Re: TListView Problem...

Beitrag von RSI »

Hallo!

Danke für den Hinweis / Link Theo!

@wp_xyz
Ja, ich verstehe was du meinst. Aber ich wusste nicht wie ich das beschreiben sollte, deshalb die Bilder als Anhang.
Irgend wo fehlte da was bei den Columnen, nur da ich mich noch am einarbeiten bin, kann ich selber nicht sagen, was da falsch gelaufen ist.
Aber du hast natürlich Recht, es ist bei schlechten Beschreibungen immer schwer zu helfen.

Gruß
Robert

Edit:
Super! Das war das Problem. Ich hatte es auf vsList stehen und vsReport wäre richtig gewesen. Machmal sieht man den Wald vor lauter Bäumen nicht! :shock:

Antworten