[gelöst] TListView Problem...

[gelöst] TListView Problem...

Beitragvon RSI » 5. Apr 2016, 02:46 [gelöst] TListView Problem...

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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von RSI am 5. Apr 2016, 20:05, insgesamt 1-mal geändert.
RSI
 
Beiträge: 2
Registriert: 16. Feb 2016, 04:44
OS, Lazarus, FPC: Windows 10 / Debian Linux (Lazarus 1.6) | 
CPU-Target: 64Bit
Nach oben

Beitragvon theo » 5. Apr 2016, 09:34 Re: TListView Problem...

theo
 
Beiträge: 7881
Registriert: 11. Sep 2006, 18:01

Beitragvon wp_xyz » 5. Apr 2016, 09:46 Re: TListView Problem...

@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.
wp_xyz
 
Beiträge: 2251
Registriert: 8. Apr 2011, 08:01

Beitragvon RSI » 5. Apr 2016, 19:58 Re: TListView Problem...

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:
RSI
 
Beiträge: 2
Registriert: 16. Feb 2016, 04:44
OS, Lazarus, FPC: Windows 10 / Debian Linux (Lazarus 1.6) | 
CPU-Target: 64Bit
Nach oben

• Themenende •

Zurück zu Windows



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried