TOpenPictureDialog und "Filter" unter Linux [gelöst]

Rund um die LCL und andere Komponenten
Antworten
MmVisual
Beiträge: 1150
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 2.0.10 FPC 3.2)
CPU-Target: 32/64Bit

TOpenPictureDialog und "Filter" unter Linux [gelöst]

Beitrag von MmVisual »

Hallo,

Im TOpenPictureDialog habe ich Filter für Grafikdateien eingestellt, z.B.:

Joint Picture Expert Group (*.jpeg;*.jpg;*.jpe;*.jfif) | *.jpeg;*.jpg;*.jpe;*.jfif

Wenn die Datei so heißt:
Bild.jpg
dann wird dieses in der Auswahlliste gezeigt.
Hingegen die Bilder mit dem Dateiname:
Bild2.JPG, Bild3.Jpg
werden nicht gezeigt.

Kann man den Dialog so einstellen, das alle Dateien unabhängig von der Groß-/Kleinschreibung immer angezeigt werden, so wie es Windows auch macht?

Dankeschön für die Hilfe, Viele Grüße Markus.
Zuletzt geändert von MmVisual am Do 27. Aug 2020, 11:06, insgesamt 1-mal geändert.

Roland Chastain
Beiträge: 101
Registriert: Sa 7. Jul 2012, 21:50
Wohnort: Frankreich
Kontaktdaten:

Re: TOpenPictureDialog und "Filter" unter Linux

Beitrag von Roland Chastain »

Hallo!

Jemand hat hier eine Lösung angeboten.

https://forum.lazarus.freepascal.org/in ... #msg288408

Ich habe es nicht versucht. Ich weiß nicht, ob das bei Ihnen funktioniert.
Petit poisson deviendra grand,
Pourvu que Dieu lui prête vie.

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 712
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Linux Mint 20 , FPC 3.3.1 , Lazarus 2.1.0 -Win10 & XE7Pro
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: TOpenPictureDialog und "Filter" unter Linux

Beitrag von kralle »

Moin,

aus Neugier habe ich das gerade mal aus probiert.
Ergebnis: Nur Dateiendungen in Kleinbuchstaben werden angezeigt. :(
OS: Linux Mint 20 Cinnamon 64-Bit

Gruß HEiko
Linux Mint 20, FPC-Version: 3.3.1 , Lazarus 2.1.0
+ Delphi XE7SP1

MmVisual
Beiträge: 1150
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winuxarm (L 2.0.10 FPC 3.2)
CPU-Target: 32/64Bit

Re: TOpenPictureDialog und "Filter" unter Linux

Beitrag von MmVisual »

Vielen Dank für den Tipp, hier mein Code daraus :)

Code: Alles auswählen

// Für z.B. TFileNameEdit:
Function ChangeFileNameFilter(sFilter: String): String; // Filter-String für Linux die Groß/Kleinschreibung als Filter setzen
{$ifdef UNIX}
Var sl: TStringList;
  s, s2: String;
  i, k: Integer;
{$endif}
Begin
  {$ifdef UNIX}
  // macht aus "*.jpg" ein "*.[jJ][pP][gG]"
  sl := TStringList.Create;
  sl.Delimiter := '|';
  sl.StrictDelimiter := True;
  sl.DelimitedText := sFilter;
  For i := 0 To sl.Count - 1 Do
  Begin
    If (i Mod 2) = 1 Then
    Begin
      s := sl[i];
      For k := Length(s) DownTo 1 Do
      Begin
        s2 := LowerCase(Copy(s, k, 1));
        If s2[1] In ['a'..'z'] Then
        Begin
          s2 := '[' + s2 + UpperCase(s2) + ']';
          Delete(s, k, 1);
          Insert(s2, s, k);
        End;
      End;
      sl[i] := s;
    End;
  End;
  Result := sl.DelimitedText;
  sl.Free;
  {$else} // Windows
  Result := sFilter;
  {$endif}
End;

Procedure ChangeTDialogFilter(dlg: TFileDialog); // TDialogXXX.Filter für Linux die Groß/Kleinschreibung als Filter setzen
Begin
  {$ifdef UNIX}
  dlg.Filter := ChangeFileNameFilter(dlg.Filter);
  {$endif}
End; 
Beim FormCreate kann man automatisch alle Komponenten durchlaufen und alle TFileDialog wandeln.

Mathias
Beiträge: 5089
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: TOpenPictureDialog und "Filter" unter Linux [gelöst]

Beitrag von Mathias »

Interessanter Trick mit den [].
Kommt dies vom OS ?
In der Unit "Dialogs" kann ich keine [] finden.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Socke
Lazarusforum e. V.
Beiträge: 2841
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: TOpenPictureDialog und "Filter" unter Linux [gelöst]

Beitrag von Socke »

Mathias hat geschrieben:
Do 27. Aug 2020, 16:05
Interessanter Trick mit den [].
Kommt dies vom OS ?
In der Unit "Dialogs" kann ich keine [] finden.
Das kommt vom Widgetset, wird aber von vielen Entwicklern in verschiedenen Programmen umgesetzt. Die Bash kann das z.B. auch. Stichwort: glob bzw. globbing
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Roland Chastain
Beiträge: 101
Registriert: Sa 7. Jul 2012, 21:50
Wohnort: Frankreich
Kontaktdaten:

Re: TOpenPictureDialog und "Filter" unter Linux

Beitrag von Roland Chastain »

MmVisual hat geschrieben:
Do 27. Aug 2020, 11:06
Vielen Dank für den Tipp, hier mein Code daraus :)
Sehr gut gemacht. Ich hätte es nicht so einfach machen können. :wink:
Petit poisson deviendra grand,
Pourvu que Dieu lui prête vie.

Antworten