[gelöst] ShellListView.Mask und Links in Windows .lnk

Rund um die LCL und andere Komponenten

[gelöst] ShellListView.Mask und Links in Windows .lnk

Beitragvon gtmind.de » 2. Jan 2018, 18:07 [gelöst] ShellListView.Mask und Links in Windows .lnk

Habe Probleme mit dem Filter im TShellListView.
In einem Verzeichnis befinden sich Verknüpfungen von jeweils *.jpg und *.cr2 Dateien.
Ich möchte nun nur die *.jpg Dateien (Verknüpfungen) angezeigt bekommen
also
ShellListView1.Mask:='*.jpg' funktioniert aber nicht unter Windows. (Unter Linux funktioniert es mit Symlinks)
Die Verknüpfungen werden nur mit *.lnk angezeigt aber wieder alle.

weiss jeman hierfür eine Lösung?
Zuletzt geändert von gtmind.de am 3. Jan 2018, 17:49, insgesamt 1-mal geändert.
Auch aus Steinen, die einem in den Weg gelegt werden, kann man etwas schönes bauen.
gtmind.de
 
Beiträge: 8
Registriert: 27. Feb 2011, 16:23
Wohnort: Dessau-Roßlau
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.4.z) | 
CPU-Target: AMD 32/64 bit
Nach oben

Beitragvon wp_xyz » 2. Jan 2018, 18:17 Re: ShellListView.Mask und Links in Windows .lnk

Du könntest dich ins Ereignis OnFileAdded reinhängen, die lnk-Datei öffnen und dann prüfen, ob der Link auf eine jpg-Datei zielt (wie das geht, müsstest du suchen - ich bin sicher, dass das funktioniert). Falls es sich um keinen jpg-Link handelt, müsstest du den dem Event mitgegebenen ListItem zerstören, da das Event erst dann kommt, wenn der Eintrag schon in die ListView aufgenommen ist.
wp_xyz
 
Beiträge: 2533
Registriert: 8. Apr 2011, 08:01

Beitragvon gtmind.de » 2. Jan 2018, 18:51 Re: ShellListView.Mask und Links in Windows .lnk

wp_xyz hat geschrieben:Du könntest dich ins Ereignis OnFileAdded reinhängen, die lnk-Datei öffnen und dann prüfen, ob der Link auf eine jpg-Datei zielt (wie das geht, müsstest du suchen - ich bin sicher, dass das funktioniert). Falls es sich um keinen jpg-Link handelt, müsstest du den dem Event mitgegebenen ListItem zerstören, da das Event erst dann kommt, wenn der Eintrag schon in die ListView aufgenommen ist.


Danke, müsste so gehen. Habe schon ein wenig versucht und die Liste schon ohne dem ganzen "Versknüpfung.lnk". Blos mit dem .Mask geht noch nicht. Werde ich wohl etwas dort selber schreiben müssen.
Auch aus Steinen, die einem in den Weg gelegt werden, kann man etwas schönes bauen.
gtmind.de
 
Beiträge: 8
Registriert: 27. Feb 2011, 16:23
Wohnort: Dessau-Roßlau
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.4.z) | 
CPU-Target: AMD 32/64 bit
Nach oben

Beitragvon gtmind.de » 2. Jan 2018, 19:45 Re: ShellListView.Mask und Links in Windows .lnk

Funktioniert :twisted:

Code: Alles auswählen
type
procedure TfrmMain.seSourceFileAdded(Sender: TObject; Item: TListItem);
var
  fExt : String;
begin
  // ersten Teil vom String "xyz.jpg - verknüpfung.lnk" vor dem "-"
  fExt := Trim(GetCSVBit(Item.Caption,'-',0));
  // mit * alle Dateien zulassen
  if cbSEFilter.Text <> '*' then
    if UpperCase(GetCSVBit(fExt,'.',1)) <> UpperCase(cbSEFilter.Text) then Item.Delete; // nur Filter
end;
 
function TfrmMain.GetCSVBit(inp: string; Switch: Char; pos: integer): string;
var
  i, j: integer;
  tmp: string;
begin
  tmp:='';
  j:=0;
  for i:=1 to Length(inp) do
  begin
    if inp[i] = Switch then inc(j);
 
    if (j = pos) and (inp[i] <> Switch) then
      tmp:=tmp+inp[i];
  end;
  Result:=tmp;
end;
Auch aus Steinen, die einem in den Weg gelegt werden, kann man etwas schönes bauen.
gtmind.de
 
Beiträge: 8
Registriert: 27. Feb 2011, 16:23
Wohnort: Dessau-Roßlau
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.4.z) | 
CPU-Target: AMD 32/64 bit
Nach oben

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 4 Gäste

porpoises-institution
accuracy-worried