TFileListBox refresht nicht
-
- 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)
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 !
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
Michael Springwald
- 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:
Keine Änderung, nur die Verzeichnisse werden angezeigt.Christian hat geschrieben:@af füg mal zu FileType ftDirectory hinzu...
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).
-
- 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:
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
ralli
- Dateianhänge
-
neudbf.zip
- (76.63 KiB) 62-mal heruntergeladen
- 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:
Ändere mal bitte mal folgendes:ralli hat geschrieben:Ich habe mal ein kleines Beispielprojekt erstellt, das eine neue dbase Datei adress.dbf erstellt.
Code: Alles auswählen
CreateTable;
FileListBox1.Directory := Datenbank.FilePathFull;
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- 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:
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:
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
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;
Das Programm extrahiert mit Hilfe des mplayers den Audiostream aus einer flash Datei und konvertiert ihn in eine mp3 Datei.
ralli
- 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:
Wenn du willst, so schicke ein Beispiel per PN oder poste es und ich sehe mir es an.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.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- 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:
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
ralli
- 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:
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.ralli hat geschrieben:Hierzu im Projektinspektor in der Komponente Process1.Options poWaiton Exit auf true einstellen und schon funktioniert es.
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).