![]() |
FileListBox
Wie kann man in einer FileListBox die Einträge z.B. jpg zeitlich durchlaufen lassen und in einem Image anzeigen lassen
habe es so aber bekomme Fehler wenn ich das gleich auf einem anderen FormBlatt mache:
Delphi-Quellcode:
würde eure Hilfe sehr schätzen find dieses problem einfach nicht
procedure TForm5.Button1Click(Sender: TObject);
begin Timer1.Enabled:= True; end; procedure TForm5.Timer1Timer(Sender: TObject); var a,dokus,test :string; begin if FileListBox2.Items.Count > 0 then begin if FileListBox2.ItemIndex+1 <> FileListBox2.Items.Count then begin a:= FileListBox2.Items[FileListBox2.ItemIndex+1]; // hochzählen der datein FileListBox2.Filename:= a; dokus:= Lowercase(ExtractFileExt(FileListBox2.Filename)); if (dokus = '.rtf') then begin Richedit1.PlainText:= False; Richedit1.Lines.LoadFromFile(FileListBox2.Filename); test:= Richedit1.Text end; end else begin a:= FileListBox2.Items[0]; FileListBox2.Filename:= a; end; end; end; procedure TForm5.FileListBox2Change(Sender: TObject); var dokus :string; begin dokus:= LowerCase(ExtractFileExt(FileListBox2.Filename)); if (dokus = '.rtf') then begin RichEdit1.PlainText := False; RichEdit1.Lines.LoadFromFile(FileListBox2.FileName); end; if (dokus = '.rtf') then begin Form9.RichEdit1.PlainText := False; Form9.Richedit1.Lines.LoadFromFile(FileListBox2.FileName); end; end; procedure TForm5.Button3Click(Sender: TObject); begin Timer1.Enabled:= False; end; |
Re: FileListBox
Sollte es nicht ähnlich gehen, wie bei den RichEdits die Du lädst?
Nur dann so:
Delphi-Quellcode:
Wenn Du jpg laden willst, mußt Du die Unit jpeg in die uses einbinden.
Form9.Image1.Picture.LoadFromFile(FileName);
Grüße Klaus |
Re: FileListBox
Habe ich schon getan steht in den Uses drin
|
Re: FileListBox
Ja habe ich gemacht läuft auch solange nicht alle beide Anzeigen laufen
hier nochmal alle beide Formblätter. Bilder Durchlauf und anzeige
Delphi-Quellcode:
unit Unit4; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus, JPEG,ShellAPI, GifImage, FileCtrl, ExtDlgs; type TForm4 = class(TForm) Panel1: TPanel; Button4: TButton; FileListBox1: TFileListBox; Timer1: TTimer; GroupBox1: TGroupBox; Button2: TButton; Button3: TButton; Button5: TButton; GroupBox2: TGroupBox; Button6: TButton; Button1: TButton; Button7: TButton; OpenDialog1: TOpenDialog; Button10: TButton; Button9: TButton; Label1: TLabel; Image1: TImage; Label2: TLabel; Label3: TLabel; Label4: TLabel; CheckBox1: TCheckBox; Label5: TLabel; Panel3: TPanel; Panel4: TPanel; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure FormPaint(Sender: TObject); procedure FileListBox1Change(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormShow(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure CheckBox1Click(Sender: TObject); private n :integer; { Private-Deklarationen } public { Public-Deklarationen } end; var Form4: TForm4; implementation uses Unit2, Unit8, Unit3, Unit9; {$R *.dfm} {Schließen} procedure TForm4.Button4Click(Sender: TObject); begin Form4.Close; Form2.Visible:= True; end; procedure TForm4.FormShow(Sender: TObject); var i :integer; begin n:= 2000; // Strart interval des Timers for i:=0 to ComponentCount-1 do // XP Anzeige if Components[i] is TPanel then (Components[i] as TPanel).ParentBackground:= False; FileListBox1.Directory:= ExtractFilePath(ParamStr(0))+'\Bilder\'; end; {Ordner Anzeige} procedure TForm4.FileListBox1Change(Sender: TObject); var bild : string; begin bild:= LowerCase(ExtractFileExt(FileListBox1.Filename)); if (bild = '.jpg') then // Laden von JPG begin Image1.Picture.RegisterFileFormat('jpg', 'Jpeg', TjpegImage); Image1.Picture.LoadFromFile(FileListBox1.FileName); end; end; {Zeit des Durchlaufs} procedure TForm4.Timer1Timer(Sender: TObject); var bild,i : string; begin if FileListBox1.Items.Count > 0 then begin if FileListBox1.ItemIndex+1 <> FileListBox1.Items.Count then begin i:= FileListBox1.Items[FileListBox1.Itemindex+1]; // hochzählen der datein FileListBox1.Filename:= i; bild:= Lowercase(ExtractFileExt(FileListBox1.Filename)); if (bild = '.jpg') then begin Image1.Picture.RegisterFileFormat('jpg', 'Jpeg', TjpegImage); Image1.Picture.LoadFromFile(FileListBox1.Filename); end; if (bild = '.jpg') then begin Form3.Image1.Picture.RegisterFileFormat('jpg', 'Jpeg', TjpegImage); Form3.Image1.Picture.LoadFromFile(FileListBox1.Filename); end; end else begin i:= FileListBox1.Items[0]; FileListBox1.Filename:= i; end; end; end; {Durchlaufs anhalten} procedure TForm4.Button3Click(Sender: TObject); begin Timer1.Enabled:= False; end; {Durschlaufstarten} procedure TForm4.Button2Click(Sender: TObject); begin Timer1.Enabled:= True; end; Dokumenten Durchlauf und Anzeige
Delphi-Quellcode:
Gibt es vielleicht eine einfachere lösung mit der ich dieses realiesieren kann??????????
unit Unit5;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,ShellApi, ExtCtrls, Printers, Menus, FileCtrl, ComCtrls; type TForm5 = class(TForm) Panel1: TPanel; Button4: TButton; FileListBox2: TFileListBox; RichEdit1: TRichEdit; OpenDialog1: TOpenDialog; Timer1: TTimer; GroupBox1: TGroupBox; Button1: TButton; Button3: TButton; Button6: TButton; GroupBox2: TGroupBox; Button7: TButton; Button5: TButton; Button8: TButton; Button2: TButton; Label1: TLabel; Button9: TButton; Button10: TButton; Label2: TLabel; Label3: TLabel; Label4: TLabel; CheckBox1: TCheckBox; Label5: TLabel; Panel3: TPanel; Panel2: TPanel; procedure Button4Click(Sender: TObject); procedure FormPaint(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FileListBox2Change(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure Button10Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); private n :integer; { Private-Deklarationen } public { Public-Deklarationen } end; var Form5: TForm5; implementation uses Unit2, Unit9, Unit3, Unit8; {$R *.dfm} {Schließen} procedure TForm5.Button4Click(Sender: TObject); begin Form5.Close; Form2.Visible:= True; end; procedure TForm5.FormCreate(Sender: TObject); var i :integer; begin n:= 2000; // Strart interval des Timers for i:=0 to ComponentCount-1 do // XP Anzeige if Components[i] is TPanel then (Components[i] as TPanel).ParentBackground:= False; FileListBox2.Directory:= ExtractFilePath(ParamStr(0))+'\Dokumente nur RTF\'; Label5.Caption:= 'LCD Anzeige der Dokumente'+#10+'Ein oder Ausschalten'; end; procedure TForm5.Timer1Timer(Sender: TObject); var a,dokus,test :string; begin if FileListBox2.Items.Count > 0 then begin if FileListBox2.ItemIndex+1 <> FileListBox2.Items.Count then begin a:= FileListBox2.Items[FileListBox2.ItemIndex+1]; // hochzählen der datein FileListBox2.Filename:= a; dokus:= ExtractFileExt(FileListBox2.Filename); if (dokus = '.rtf') then begin Richedit1.PlainText:= False; Richedit1.Lines.LoadFromFile(FileListBox2.Filename); test:= Richedit1.Text end; end else begin a:= FileListBox2.Items[0]; FileListBox2.Filename:= a; end; end; end; procedure TForm5.FileListBox2Change(Sender: TObject); var dokus :string; begin dokus:= LowerCase(ExtractFileExt(FileListBox2.Filename)); if (dokus = '.rtf') then begin RichEdit1.PlainText := False; RichEdit1.Lines.LoadFromFile(FileListBox2.FileName); end; if (dokus = '.rtf') then begin Form9.RichEdit1.PlainText := False; Form9.Richedit1.Lines.LoadFromFile(FileListBox2.FileName); end; end; procedure TForm5.Button1Click(Sender: TObject); begin Timer1.Enabled:= True; end; procedure TForm5.Button3Click(Sender: TObject); begin Timer1.Enabled:= False; end |
Re: FileListBox
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Sascha,
ich bewundere das, wie du ohne sprechende Namen für deine zahlreichen Komponenten den Überblick behältst. Ich muss da immer bereits nach zehn Zeilen kapitulieren. Wo jetzt genau dein Fehler liegt habe ich nicht sehen können - du weißt schon, die zehn Zeilen... Ein paar Dinge sind mir aber doch aufgefallen: (1) Du musst das JPEG-Format nur einmal registrieren, nachdem die Image-Komponente erzeugt wurde, also im OnCreate() der Form. (2) Wenn du eine Zahl i von 0 bis n-1 laufen lassen willst, dann geht das am einfachsten so: i := Succ(i) mod n Ich hatte übrigens keine Probleme mehrere Forms parallel laufen zu lassen. Mein Testprojekt habe ich angehängt. Vielleicht musst du mal die Fehler genauer beschreiben. Freundliche Grüße |
Re: FileListBox
Also wenn ich auf der ersten Form die FileListBox durschlaufen lasse, läuft sie ohne Probleme durch und die Bilder werden nacheinander in das Image geladen.
Wenn ich jetzt auf die andere Form wechsel auf der die ander FilelistBox ist bekomme ich einen Fehler und zwar
Delphi-Quellcode:
und das an dieser stelle im Programm
Klasse EInOutError 'datei nicht gefunden'
Delphi-Quellcode:
aber einzeln läuft alles wunderbar??
Form4.FileListBox1.Filename:= i;// hier
bild:= ExtractFileExt(Form4.FileListBox1.Filename); |
Re: FileListBox
Hallo Sascha,
du solltest dein Programm mal an der Fehlerstelle anhalten (Haltepunkt mit F5) und dir den Inhalt von i (schöner Variablen-Name für einen Dateinamen) anschauen. Vielleicht hat das Programm ja recht und die Datei existiert wirklich nicht? Freundliche Grüße |
Re: FileListBox
Zitat:
vielleicht solltest Du, wenn du die Bilder oder Dokumente lädtst, den Pfad mit einbauen wo die Bilder und Dokumente liegen.
Delphi-Quellcode:
Wenn Du die Dokumente startest wird das current working directory auf das gelegt wo die Dokumente liegen.
Image1.Picture.LoadFromFile(FileListBox1.FileName);
Startest Du nun die Anzeige der Bilder, werden die Bilder bei den Dokumenten gesucht.
Delphi-Quellcode:
und ähnlich auch bei den RTF dokumenten.
Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Bilderverzeichnis\'+FileListBox1.FileName);
Und wenn Du die Bilder nicht zweimal laden willst, sollte auch das gehen:
Delphi-Quellcode:
Grüße
if (bild = '.jpg') then
begin Image1.Picture.RegisterFileFormat('jpg', 'Jpeg', TjpegImage); Image1.Picture.LoadFromFile(FileListBox1.Filename); Form3.Image1.Picture.Assign(Image1.Picture) end; Klaus |
Re: FileListBox
Habe denn Code soweit angepasst bekomme aber Trotzdem noch Fehler
Delphi-Quellcode:
procedure TForm5.FormCreate(Sender: TObject);
var i :integer; begin n:= 2000; // Strart interval des Timers for i:=0 to ComponentCount-1 do // XP Anzeige if Components[i] is TPanel then (Components[i] as TPanel).ParentBackground:= False; FileListBox2.Directory:= ExtractFilePath(ParamStr(0))+'\Dokumente nur RTF\'; Label5.Caption:= 'LCD Anzeige der Dokumente'+#10+'Ein oder Ausschalten'; end; {Drucker auswählen} procedure TForm5.Timer1Timer(Sender: TObject); var a,dokus :string; begin if FileListBox2.ItemIndex+1 <> FileListBox2.Items.Count then begin a:= FileListBox2.Items[FileListBox2.ItemIndex+1]; // hochzählen der datein FileListBox2.Filename:= a; if (dokus = '.rtf') then begin Richedit1.PlainText:= False; Richedit1.Lines.LoadFromFile(ExtractFilePath(ParamStr(0))+'Dokumente nur RTF\'+FileListBox2.FileName); end; end else begin a:= FileListBox2.Items[0]; FileListBox2.Filename:= a; end; end; procedure TForm5.FileListBox2Change(Sender: TObject); var dokus :string; begin dokus:= LowerCase(ExtractFileExt(FileListBox2.Filename)); if (dokus = '.rtf') then begin RichEdit1.PlainText := False; RichEdit1.Lines.LoadFromFile(FileListBox2.FileName); end; if (dokus = '.rtf') then begin Form9.RichEdit1.PlainText := False; Form9.Richedit1.Lines.LoadFromFile(FileListBox2.FileName); end; end; procedure TForm5.Button1Click(Sender: TObject); begin Timer1.Enabled:= True; end; procedure TForm5.Button3Click(Sender: TObject); begin Timer1.Enabled:= False; end;
Delphi-Quellcode:
Es ist eigenlich immer noch der gleiche Fehler binn am verzweif :pale: elnprocedure TForm4.FormShow(Sender: TObject); var i :integer; begin n:= 2000; // Strart interval des Timers for i:=0 to ComponentCount-1 do // XP Anzeige if Components[i] is TPanel then (Components[i] as TPanel).ParentBackground:= False; FileListBox1.Directory:= ExtractFilePath(ParamStr(0))+'\Bilder\'; Label5.Caption:= 'LCD Anzeige der Bilder'+#10+'Ein oder Ausschalten'; Image1.Picture.RegisterFileFormat('jpg', 'Jpeg', TjpegImage); end; {Ordner Anzeige} procedure TForm4.FileListBox1Change(Sender: TObject); var bild : string; begin bild:= LowerCase(ExtractFileExt(FileListBox1.Filename)); if (bild = '.jpg') then // Laden von JPG begin Image1.Picture.LoadFromFile(FileListBox1.FileName); Form3.Image1.Picture.Assign(Image1.Picture); end; end; {Zeit des Durchlaufs} procedure TForm4.Timer1Timer(Sender: TObject); var bild,i : string; begin if FileListBox1.ItemIndex+1 <> FileListBox1.Items.Count then begin i:= FileListBox1.Items[FileListBox1.Itemindex+1]; // hochzählen des Index FileListBox1.Filename:= i; if (bild = '.jpg') then begin Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Bilder\'+FileListBox1.FileName); Form3.Image1.Picture.Assign(Image1.Picture); end; end else begin i:= FileListBox1.Items[0]; FileListBox1.Filename:= i; end; end; {Durchlaufs anhalten} procedure TForm4.Button3Click(Sender: TObject); begin Timer1.Enabled:= False; end; {Durschlaufstarten} procedure TForm4.Button2Click(Sender: TObject); begin Timer1.Enabled:= True; end; |
Re: FileListBox
Zitat:
![]() Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz