TFileListBox refresht nicht

Rund um die LCL und andere Komponenten
pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Doch genau das Erwaten die meisten und ich auch. Aber was sollst. Wir sind uns also uneinige darüber ob das gewohlt ist oder ein Fehler ist.

Ich könnte mir vorstellen das es einfach auch noch keine DirectoryListBox gibt, aber es sie geben wird.

Bis dahin müsst ihr also entweder darauf Versichten oder einfach meine fileListbox nutzen, die kann sowas *G*

Schöner währe es Natürlich wenn es die von Lazarus auch könnte. Aber das wird wohl noch eine weile dauern. Bis es soweit ist !
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Nein das erwartest höchstens du.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6771
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Christian hat geschrieben:@af füg mal zu FileType ftDirectory hinzu...
Keine Änderung, nur die Verzeichnisse werden angezeigt.

Verhalten gleich mit Delphi = folglich per Definiton kein Bug.

Somit willst du Pluto ein Feature, was aber nicht kompatibel mit Delphi ist
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

na, gut lassen wir es. Ich habe ja jetzt meine eigene FileListbox die nach meinen Vorstellungen Funktioniert !
MFG
Michael Springwald

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Beitrag von ralli »

Ich habe mal ein kleines Beispielprojekt erstellt, das eine neue dbase Datei adress.dbf erstellt. Die soll dann automatisch in der FileListbox1 angezeigt werden. Unter Delphi ging das mit FileListBox1.update. Könnte das mal jemand runterladen und verifizieren. Eventuell muss der Pfad des Dir in der Kompo FileListBox1 angepasst werden. Wenn ich nämlich einen Fehler gemacht habe, würde ich mich bis auf die Knochen blamieren, wenn ich das als Bug melden würde. Schon mal im voraus vielen Dank.
ralli
Dateianhänge
neudbf.zip
(76.63 KiB) 62-mal heruntergeladen

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6771
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

ralli hat geschrieben:Ich habe mal ein kleines Beispielprojekt erstellt, das eine neue dbase Datei adress.dbf erstellt.
Ändere mal bitte mal folgendes:

Code: Alles auswählen

CreateTable;
    FileListBox1.Directory := Datenbank.FilePathFull;
Und probiere es mal dann. Wenns dann geht, so sollten man darauf achten, das alle Komponenten DASSELBE Verzeichnis verwenden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Beitrag von ralli »

Danke, das wars, es funktioniert.
ralli

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Beitrag von ralli »

So, ein bisschen klarer sehe ich jetzt schon. Es funktioniert bei diesem fiktiven Beispiel von gestern mit der Neuerstellung einer dBase Datei. Aber es gibt ja auch Situationen, wo einfach nach der Ausführung einer Prozedur der Inhalt einer FileLIstBox neu angezeigt werden soll.
Hier noch ein Beispiel:

Code: Alles auswählen

procedure TForm1.ToolButton3Click(Sender: TObject);
 
var ausgabe : string;
 
begin
 
Savedialog1.FileName := '';
 
If SaveDialog1.Execute then
 
begin
 
ausgabe := 'mplayer' + ' ' + '-dumpaudio' + ' ' + '"' + OpenDialog1.Filename + '"' + ' ' + '-dumpfile' + ' ' + '"' + SaveDialog1.Filename + '"' ;
 
Process1.CommandLine := ausgabe ;
 
Process1.Execute;
 
end;
 
ShowMessage('Datei erfolgreich umgewandelt');
 
FileListBox2.UpdateFileList;
 
end;
FileListBox2.UpdateFileList funktioniert nur, wenn ich ein ShowMessage voran stelle. Wenn ich die Zeile auskommentierte, wird die neu erstellt mp3 Datei nicht in der FileListBox angezeigt. Das darf doch nicht sein.
Das Programm extrahiert mit Hilfe des mplayers den Audiostream aus einer flash Datei und konvertiert ihn in eine mp3 Datei.
ralli

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6771
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

ralli hat geschrieben:.... FileListBox2.UpdateFileList funktioniert nur, wenn ich ein ShowMessage voran stelle. Wenn ich die Zeile auskommentierte, wird die neu erstellt mp3 Datei nicht in der FileListBox angezeigt. Das darf doch nicht sein.
Wenn du willst, so schicke ein Beispiel per PN oder poste es und ich sehe mir es an.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

ralli
Beiträge: 374
Registriert: Mi 13. Sep 2006, 15:57
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Hagen a.T.W.
Kontaktdaten:

Beitrag von ralli »

Hier entsteht einen 'Race' Effekt. Prozess1.Execute startet ja gewisserweise einen weiteren Prozess und dieser ist nicht mit dem Vordergrund synchron.Das Einlesen ist schneller fertig als der externe Prozess, der die Datei umwandelt. Hierzu im Projektinspektor in der Komponente Process1.Options poWaiton Exit auf true einstellen und schon funktioniert es. Diese Lösung stammt nicht von mir, sondern von Andi, der sich mein Projekt anschaute. Vermutet hatte ich das indessen schon, obwohl ich keine Idee zum Abstellen hatte. Danke Andi.
ralli

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6771
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

ralli hat geschrieben:Hierzu im Projektinspektor in der Komponente Process1.Options poWaiton Exit auf true einstellen und schon funktioniert es.
Anmerkung: Die Frage die sich hier nur stellt ist, wieviel Kontrolle willst über den externen Prozess. Die Lösung ist IMHO nur dann suber, wenn der externe Prozess dir auf keinen Fall stehen bleiben kann. Ansosnsten scheint dein Programm tot.
Eine Lösung wäre, die Ausgaben des externen Prozesses zu überwachen und auszuwerten und das Refresh der Listen dann vorzunehmen. Der Vorteil äre, das du dem User ein Fenster/Memo anzeigen kann, wo er sieht wieweit der externe Prozeß ist (oder wo das Problem liegt).
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten