[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: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: TListView Problem...

Beitrag von theo »


wp_xyz
Beiträge: 4869
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