AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FileListBox

Ein Thema von SaFu · begonnen am 7. Feb 2007 · letzter Beitrag vom 8. Feb 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#1

FileListBox

  Alt 7. Feb 2007, 15:43
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:
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;
würde eure Hilfe sehr schätzen find dieses problem einfach nicht
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: FileListBox

  Alt 7. Feb 2007, 15:54
Sollte es nicht ähnlich gehen, wie bei den RichEdits die Du lädst?

Nur dann so:

Form9.Image1.Picture.LoadFromFile(FileName); Wenn Du jpg laden willst, mußt Du die Unit jpeg in die uses einbinden.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: FileListBox

  Alt 7. Feb 2007, 15:55
Habe ich schon getan steht in den Uses drin
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#4

Re: FileListBox

  Alt 7. Feb 2007, 16:07
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:
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
Gibt es vielleicht eine einfachere lösung mit der ich dieses realiesieren kann??????????
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: FileListBox

  Alt 7. Feb 2007, 18:49
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
Angehängte Dateien
Dateityp: zip picshow_916.zip (2,8 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#6

Re: FileListBox

  Alt 8. Feb 2007, 11:31
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

Klasse EInOutError 'datei nicht gefunden' und das an dieser stelle im Programm

Delphi-Quellcode:
Form4.FileListBox1.Filename:= i;// hier
         bild:= ExtractFileExt(Form4.FileListBox1.Filename);
aber einzeln läuft alles wunderbar??
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: FileListBox

  Alt 8. Feb 2007, 11:37
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
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.771 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: FileListBox

  Alt 8. Feb 2007, 11:44
Zitat von fuknersascha:
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

Klasse EInOutError 'datei nicht gefunden'
Hallo Sascha,

vielleicht solltest Du, wenn du die Bilder oder Dokumente lädtst, den Pfad mit einbauen
wo die Bilder und Dokumente liegen.

Image1.Picture.LoadFromFile(FileListBox1.FileName); Wenn Du die Dokumente startest wird das current working directory auf das gelegt wo die Dokumente liegen.
Startest Du nun die Anzeige der Bilder, werden die Bilder bei den Dokumenten gesucht.

Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Bilderverzeichnis\'+FileListBox1.FileName); und ähnlich auch bei den RTF dokumenten.

Und wenn Du die Bilder nicht zweimal laden willst, sollte auch das gehen:

Delphi-Quellcode:
if (bild = '.jpg') then
  begin
    Image1.Picture.RegisterFileFormat('jpg', 'Jpeg', TjpegImage);
    Image1.Picture.LoadFromFile(FileListBox1.Filename);
    Form3.Image1.Picture.Assign(Image1.Picture)
  end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von SaFu
SaFu

Registriert seit: 8. Nov 2006
1.360 Beiträge
 
Delphi 10.3 Rio
 
#9

Re: FileListBox

  Alt 8. Feb 2007, 14:10
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:

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\';

  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;
Es ist eigenlich immer noch der gleiche Fehler binn am verzweif eln
"... Wie gesagt, die Nutzer von 10, 12, 14 Zoll Display's werden deine Seite nicht in voller Pracht sehen können, ...

Surft Ihr mit dem Taschenrechner?"
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#10

Re: FileListBox

  Alt 8. Feb 2007, 14:29
Zitat von Klaus01:
Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Bilderverzeichnis\'+FileListBox1.FileName);
Ob dieser Rat so gut ist? Der Wert der Eigenschaft Delphi-Referenz durchsuchenTFileListBox.FileName enthält bereits eine Pfadangabe.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz