Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Einer FileListBox mehrere FileEdits zuweisen (https://www.delphipraxis.net/89822-einer-filelistbox-mehrere-fileedits-zuweisen.html)

moperswings 6. Apr 2007 10:03


Einer FileListBox mehrere FileEdits zuweisen
 
Hallo,

ich möchte Bilder in einer html-Tabelle speichern. Mit einer FileListbox wähle ich die Bilder aus, die ich in das jeweilige <td></td>-Tag einfügen möchte. Um den Dateinamen des ausgesuchten Bildes zu bekommen, benutze ich ja das FileEdit. Wenn ich jetzt vier Bilder in meine Tabelle einfügen möchte, kann ich mich damit anfreunden, vier Edit-Komponenten zur Verfügung zu stellen - aber ich möchte nur eine FileListBox benutzen. Ich schreibe also:
Delphi-Quellcode:
// für das 1.Bild
procedure button 1
begin
   Image1.picture.loadfromfile(FileListBox1.Filename);
   FileListBox1.FileEdit.Text := Edit1.Text;
end;

// für das 2.Bild
procedure button 2 
begin
   Image1.picture.loadfromfile(FileListBox1.Filename);
   FileListBox1.FileEdit.Text := Edit2.Text;
end;

// usw.
Das funktioniert aber nicht. Hat jemand einen Vorschlag, wie ich das Problem lösen könnte und weiss jemand, warum mein Lösungsversuch nicht geht?

Viele Grüsse, moperswings

marabu 6. Apr 2007 11:02

Re: Einer FileListBox mehrere FileEdits zuweisen
 
Hallo,

ich verstehe nicht welche Funktion bei dir die Eigenschaft FileEdit übernehmen soll. Um eine Reihe von Bildern zusammenzustellen, die dann in einer HTML-Tabelle verbaut werden sollen, würde mir eher eine ListBox vorschweben. In der würde ich FileListBox.FileName sammeln, arrangieren (Reihenfolge) und dann nach einer wählbaren Regel (ColumnFirst, RowFirst) eine Tabelle mit definierter Maximalzahl an Spalten erzeugen.

Grüße vom marabu

moperswings 6. Apr 2007 11:11

Re: Einer FileListBox mehrere FileEdits zuweisen
 
Wenn ich dem FileEdit eine Editkomponente zuordne, bekomme ich den Dateinamen. Dem Dateinamen kann ich einen Pfad oder eine Variable zuweisen, mit denen ich dann weiterarbeiten kann und weiss, was ich zu tun habe. Bei Deinem Vorschlag weiss ich noch nicht, wie ich das machen soll - leider!

moperswings

marabu 6. Apr 2007 16:53

Re: Einer FileListBox mehrere FileEdits zuweisen
 
Aber dazu brauchst du doch nicht mehrere Edit-Komponenten. Wenn du eine ListBox auf deiner Form hast und eine FileListBox, welche zweckmäßigerweise MultiSelect-fähig sein sollten, dann kannst du in der FileListBox die gewünschten Dateien selektieren und dann mit einem ButtonClick in die ListBox übernehmen:

Delphi-Quellcode:
procedure TDemoForm.AddButtonClick(Sender: TObject);
begin
  with FileListBox do
  begin
    CopySelection(ListBox);
    ClearSelection;
  end;
end;
Das lässt sich noch verfeinern - Stichworte: Directory, OwnerDraw

Wenn du dir dann noch ein paar Buttons (oder ein Kontextmenü) für das Verschieben der Einträge schaffst, dann hast du abschließend eine geordnete Liste mit Dateinamen, welche du dann in deutscher (oder japanischer oder arabischer oder ...) Schreibrichtung in eine HTML-Tabelle einbauen kannst.

Frohe Ostern

moperswings 6. Apr 2007 17:16

Re: Einer FileListBox mehrere FileEdits zuweisen
 
Danke Marabu,

werde mir Dein Beispiel über Ostern antun. Melde mich dann wieder!

Schöne Feiertage wünsche ich Dir auch, bis dann...
(für heute habe ich die Schnauze voll)

moperswings

moperswings 9. Apr 2007 11:01

Re: Einer FileListBox mehrere FileEdits zuweisen
 
Meine (vorerst primitive) Beispiellösung:
Was ich noch nicht weiss:
Wie könnte ich mir die Buttons ersparen und die Bilder direkt übergeben?
Delphi-Quellcode:
var
        Form1: TForm1;
        pic_a, pic_b, pic_c, pic_d: string;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
        WebBrowser1.Navigate('d:\image9\daten.html');
        WebBrowser1.Update;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
        a1, a2: string;
begin
        Image1.Picture.LoadFromFile(FileListBox1.FileName);
        a1 := 'images\';
        a2 := Edit1.Text;
        pic_a := a1 + a2;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
        b1, b2: string;
begin
        Image2.Picture.LoadFromFile(FileListBox1.FileName);
        b1 := 'images\';
        b2 := Edit1.Text;
        pic_b := b1 + b2;
end;

procedure TForm1.Button3Click(Sender: TObject);
var
        c1, c2: string;
begin
        Image3.Picture.LoadFromFile(FileListBox1.FileName);
        c1 := 'images\';
        c2 := Edit1.Text;
        pic_c := c1 + c2;
end;

procedure TForm1.Button4Click(Sender: TObject);
var
        d1, d2: string;
begin
        Image4.Picture.LoadFromFile(FileListBox1.FileName);
        d1 := 'images\';
        d2 := Edit1.Text;
        pic_d := d1 + d2;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
        f: textfile;
        dateiname: string;
        table, table_start, td, table_end: string;
        img_start, img_end: string;
begin
        dateiname := 'd:\image9\daten.html';
        AssignFile(f, dateiname);
        {$i-}
        rewrite(f);
        {$i+}
        If IOResult <> 0 then begin ShowMessage('Fehler');
        Exit;
        end;

        table_start := '<table><tr><td>';
        td := '</td><td>';
        table_end := '</td></tr></table>';
        img_start := '<img src="';
        img_end := '" />';

        table := table_start +
                   img_start + pic_a + img_end + td +
                   img_start + pic_b + img_end + td +
                   img_start + pic_c + img_end + td +
                   img_start + pic_d + img_end +
                 table_end;

        Writeln(f, table);
        closefile(f);
        WebBrowser1.Update;
end;
end.

mkinzler 9. Apr 2007 12:07

Re: Einer FileListBox mehrere FileEdits zuweisen
 
Delphi-Quellcode:
procedure TForm1.LadeBild(Img: TImage; fname: String; Text: String; var pic: String);
var
        d1, d2: string;
begin
        Img.Picture.LoadFromFile(fname);
        pic :='images\ + text;
end;
Obwohl mir der Sinn des Ganzen noch nicht erschließt

moperswings 9. Apr 2007 12:31

Re: Einer FileListBox mehrere FileEdits zuweisen
 
@mkinzler
Ich möchte, dass ein Benutzer bis zu 4 Bilder auswählen kann, die in einer Table gespeichert werden!
Danke, für Deinen Code-Verkürzungstipp!


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:37 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 by Thomas Breitkreuz