Thema: Delphi TTreeView Frage

Einzelnen Beitrag anzeigen

Ascuriah

Registriert seit: 6. Okt 2010
52 Beiträge
 
#7

AW: TTreeView Frage

  Alt 29. Nov 2010, 16:58
hm habs jetzt so:

Delphi-Quellcode:
function TForm1.FilterDirectory(_dirname: string; _level: integer): boolean;
begin
   Result := false;
   if (_level = 0) and (Length(_dirname) >= 2) and (_dirname[1]='K') and TOlapExtraktorBase.isnumeric(_dirname[2])
   then
      Result := true
   else
   if (_level = 1) and (Length(_dirname) >= 2) and (_dirname[1]='M') and TOlapExtraktorBase.isnumeric(_dirname[2])
   then
      Result := true
   else
   if (_level = 2) and (Length(_dirname) >= 2) and (_dirname[1]='F') and TOlapExtraktorBase.isnumeric(_dirname[2])
   then
      Result := true
   else
   if (_level = 3) and (Length(_dirname) >= 2) and TOlapExtraktorBase.isnumeric(_dirname[1]) and
   TOlapExtraktorBase.isnumeric(_dirname[2]) then
      Result := true
   else
   begin
      ShowMessage('FEHLER');
   end;
end;
und so:

Delphi-Quellcode:
procedure TForm1.ShowDirectory(_Tree: TTreeView; _sVerzeichnis: string; _KnotenRoot: TTreeNode);

{$region 'Kommentar ShowDirectory( _Tree:TTreeView,  _sVerzeichnis:string,  _Eintrag:TTreeNode, )'}
{*
   Beschreibung  :  Procedur baut aus einer Pfadangabe einen TreeView
 
   @param _Tree  :  der Tree der neu erstellt wird
   @param _sVerzeichnis  :  das QuellVerzeichnis aus dem der Tree entsteht
   @param _Eintrag  :  der erste Startknoten
}

{$endregion}
var
   SearchRec : TSearchRec;
   KnotenNeu : TTreeNode;
   verz, str : string;
   i : integer;
begin
   verz := _sVerzeichnis;
   _Tree.Items.BeginUpdate;
   verz := IncludeTrailingPathDelimiter(verz);
   if FindFirst(verz + '*.*',faDirectory, SearchRec) = 0 then
   begin
      repeat
         if (SearchRec.Attr and faDirectory = faDirectory) and FilterDirectory(SearchRec.Name, 0) then
         begin
            if ((SearchRec.Attr and faDirectory) <> 0) then
            begin
               _KnotenRoot := _Tree.Items.AddChild(_KnotenRoot, SearchRec.Name);
               KnotenNeu := _KnotenRoot.Parent;
               ShowDirectory(_Tree, verz + SearchRec.Name, _KnotenRoot);
               _KnotenRoot := KnotenNeu;
            end;

         end;
      until FindNext(SearchRec) <> 0 ;
      FindClose(SearchRec);
   end;
   _Tree.Items.EndUpdate;
end;
hab zum testn mal beim level einfach 0 genommen aber er schmeist mir jetzt die ShowMessage, das heist irgendwas passt ned. Meine is numeric sieth so aus:
Delphi-Quellcode:
class function TOlapExtraktorBase.IsNumeric(_value: string): boolean;
var
   i: integer;
begin
   result := true;
   try
   i := StrToInt(_value);
   except
   result := false;
   end;
end;
Wenn ich in der Filter Funktion den Else ShowMessage Teil weglasse schmeist er mir folgenden Fehler:

Erste Gelegenheit für Exception bei $75E39617. Exception-Klasse EConvertError mit Meldung ''M' ist kein gültiger Integerwert'. Prozess OlapUI.exe (5048)
Bin grad bissle überfragt was da ned passt ;(
  Mit Zitat antworten Zitat