Avatar billede mr.meincke Nybegynder
08. juli 2002 - 15:19 Der er 3 kommentarer og
1 løsning

Problemer med TShellListView

Hej eksperter,
Jeg vil godt have min ShellListView til kun at vise følgende file typer:
*.asp;*.html;*.htm osv....
Hvordan gør jeg det????
Avatar billede borrisholt Novice
08. juli 2002 - 15:26 #1
du implemterer et OnAddFolder event, Så i det skal du blot validere dine navne.

procedure TForm1.ShellListView1AddFolder(Sender: TObject; AFolder: TShellFolder; var CanAdd: Boolean);
begin
  Caption := AFolder.DisplayName;
end;


Jens B
Avatar billede mr.meincke Nybegynder
08. juli 2002 - 18:12 #2
og hvordan validere jeg navnene???? :D
Avatar billede borrisholt Novice
09. juli 2002 - 08:44 #3
sådan her :

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ShellCtrls, StdCtrls;

type
  TForm1 = class(TForm)
    ShellListView1: TShellListView;
    procedure ShellListView1AddFolder(Sender: TObject; AFolder: TShellFolder; var CanAdd: Boolean);
  private
    { Private declarations }
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
var
  ValidList : TStringList;


function Like(AString: string; APattern: string; Const CaseSensetive : Boolean = false): boolean;
var
  lng:    integer;
  p:      integer;
  segment: string;
  tPStr:  string;
begin
  if not CaseSensetive then
  begin
    AString := AnsiUpperCase(AString);
    APattern := AnsiUpperCase(APattern);
  end;

  lng    := Length(APattern);
  p      := Pos('*', APattern);
  SetLength(tPStr, 256);

  if p = 1 then // Find pattern at end.
  begin
    tPStr :=  Copy(APattern, 2, Pred(lng));
    if Length(AString) < Length(tPStr) then
      Result := false
    else
    begin
      segment := Copy(AString, Length(AString) - Length(tPStr) + 1, Length(AString));
      Result  := CompareText(segment, tPStr) = 0;
    end;
  end
  else if p = lng then // Find pattern at beginning.
      begin
        tPStr := Copy(APattern, 1, Pred(lng));
        if Length(AString) < Length(tPStr) then
          Result := false
        else
          begin
            segment := Copy(AString, 1, Length(tPStr));
            Result  := CompareText(segment, tPStr) = 0;
        end;
      end
  else
    begin // Find pattern anywhere.
      tPStr := APattern;
      if Length(AString) < Length(tPStr) then
        Result := false
      else
        Result := Pos(tPStr, AString) <> 0;
    end;
end;

procedure TForm1.ShellListView1AddFolder(Sender: TObject; AFolder: TShellFolder; var CanAdd: Boolean);
var
  i : Integer;
begin
  CanAdd := true;
  if not AFolder.IsFolder then
    for i := 0 to ValidList.Count -1 do
    begin
      CanAdd := Like(AFolder.DisplayName, ValidList[i]);
      if CanAdd then
        Exit;
    end;
end;

initialization
  ValidList := TStringList.Create;
  ValidList.Add('*.SQL');
  ValidList.Add('*.TXT');
  ValidList.Add('*.ZIP');
finalization
  FreeAndNil(ValidList);
end.

Jens B
Avatar billede mr.meincke Nybegynder
09. juli 2002 - 23:17 #4
Tak!! Du er for sej :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Politiets Efterretningstjeneste

GenAI Specialist i PET

Politiets Efterretningstjeneste

AI/ML udvikler i PET

Capgemini Danmark A/S

AI Data Architect