![]() |
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:
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?
// 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. Viele Grüsse, moperswings |
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 |
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 |
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:
Das lässt sich noch verfeinern - Stichworte: Directory, OwnerDraw
procedure TDemoForm.AddButtonClick(Sender: TObject);
begin with FileListBox do begin CopySelection(ListBox); ClearSelection; end; end; 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 |
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 |
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. |
Re: Einer FileListBox mehrere FileEdits zuweisen
Delphi-Quellcode:
Obwohl mir der Sinn des Ganzen noch nicht erschließt
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; |
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