AGB  ·  Datenschutz  ·  Impressum  







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

OpenDialog, Multiselect, Listbox

Ein Thema von synex · begonnen am 15. Okt 2003 · letzter Beitrag vom 19. Apr 2004
Antwort Antwort
synex

Registriert seit: 14. Apr 2003
147 Beiträge
 
Delphi 6 Personal
 
#1

OpenDialog, Multiselect, Listbox

  Alt 15. Okt 2003, 19:28
Hi Leute!

Ich hab ein Problem:

Ich habe einen OpenDialog, bei dem Multiselect eingeschaltet ist.
Dann habe ich noch 2 Listboxen. In die eine kommt der Dateiname ohne Pfad (Listbox1) und in die andere (Listbox2) kommt der Pfad noch dazu, also Pfad+Dateiname.

Das klappt auch wunderbar, ich kann mehrere Dateien im OpenDialog auswählen und sie werden wunderbar in die Listboxen eingefügt. Aber wenn ich jetzt nur eine Datei auswähle, dann wird sie nicht eingefügt.
Ich habe ncoh eine Funktion eingebaut, dass kein doppelter Eintrag vorkommt.

Hier ist der Code:
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var i,ii:Integer;
begin
opendialog1.Options:=[ofAllowMultiSelect,ofEnableSizing]; //multiselect erlauben
if opendialog1.Execute then
begin
if opendialog1.Files.Count>1 then //falls multiselect
begin
for ii:= 0 to opendialog1.Files.Count-1 do
begin
i:=listbox1.items.IndexOf(extractfilename(opendialog1.Files.Strings[ii]));
if i<0 then //falls der Eintrag noch nicht existiert
begin
listbox1.Items.Append(extractfilename(opendialog1.Files.Strings[ii]));
listbox2.Items.Append(opendialog1.Files.Strings[ii]);
end;
end;
end;
end
//----------ende von multiselect
else
begin
i:=listbox1.items.IndexOf(extractfilename(opendialog1.Files[0]));
if i<0 then //falls der Eintrag noch nicht existiert
begin
listbox1.Items.Append(extractfilename(opendialog1.Files[0]));
listbox2.Items.Append(opendialog1.Files[0]);
end;
end;
end;
Mir scheint als würde er garnichterst zum else-Abschnitt kommen sondern sich schon vorher aus der Schleife verabschieden.

Wäre nett wenn mir einer weiterhelfen könnte

mfg synex
  Mit Zitat antworten Zitat
OLLI_T

Registriert seit: 13. Okt 2003
Ort: Nähe Wetzlar / Hessen
143 Beiträge
 
Delphi 5 Enterprise
 
#2

Re: OpenDialog, Multiselect, Listbox

  Alt 15. Okt 2003, 19:37
HY Synex!

Ab und an mag es kein Fehler sein, die eine oder andere Zeile ein wenig einzurücken:

Delphi-Quellcode:
  opendialog1.Options:=[ofAllowMultiSelect,ofEnableSizing]; //multiselect erlauben
  if opendialog1.Execute then
  begin
    listbox1.Clear; listbox2.Clear;
    if opendialog1.Files.Count>1 then begin
      for ii:= 0 to opendialog1.Files.Count-1 do begin
        i:=listbox1.items.IndexOf(extractfilename(opendialog1.Files.Strings[ii]));
        if i<0 then begin
          listbox1.Items.Append(extractfilename(opendialog1.Files.Strings[ii]));
          listbox2.Items.Append(opendialog1.Files.Strings[ii]);
        end;
      end;
    end else begin
      i:=listbox1.items.IndexOf(extractfilename(opendialog1.Files[0]));
      if i<0 then begin
        listbox1.Items.Add(extractfilename(opendialog1.Files[0]));
        listbox2.Items.Add(opendialog1.Files[0]);
      end;
    end;
  end;
Prost denn

OLLI
No Pain No Gain!
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#3

Re: OpenDialog, Multiselect, Listbox

  Alt 15. Okt 2003, 20:15
Probier mal:
if opendialog1.Files.Count >= 1 then
Alexander
  Mit Zitat antworten Zitat
synex

Registriert seit: 14. Apr 2003
147 Beiträge
 
Delphi 6 Personal
 
#4

Re: OpenDialog, Multiselect, Listbox

  Alt 15. Okt 2003, 21:06
@OLLI_T: Ich hab sowas von keinen Schimmer wieso, aber irgendwie scheint er deinen Code mehr zu mögen als meinen, denn dein Code klappt. Hab ihn bissel angepasst und jetzt läuft es wunderbar.

Danke!

mfg synex
  Mit Zitat antworten Zitat
OLLI_T

Registriert seit: 13. Okt 2003
Ort: Nähe Wetzlar / Hessen
143 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: OpenDialog, Multiselect, Listbox

  Alt 15. Okt 2003, 21:14
Du hattest ein "End;" zuviel des Guten!!! Wenn Du die Schachtelungsebenen konsequent - um wieviel Leerzeichen auch immer - einrückst, springt Dir sowas sofort ins Auge. 8)

Viele Grüsse

OLLI
No Pain No Gain!
  Mit Zitat antworten Zitat
michel22419

Registriert seit: 30. Okt 2003
Ort: Hamburg
1 Beiträge
 
Delphi 4 Standard
 
#6

Re: OpenDialog, Multiselect, Listbox

  Alt 19. Apr 2004, 12:13
Die Lösung, um ALLE (FARBIG) MARKIERTEN Einträge (und nicht nur den Fokus-Eintrag) nacheinander abzuarbeiten ist:

Delphi-Quellcode:
procedure Tform_kunden.listbox_prodcount1Click(Sender: TObject);
var
  counter: Integer;
begin
  for counter := 0 to listbox_prodcount1.Items.Count - 1 do
    begin
      // markiert ?
      if (listbox_prodcount1.Selected[counter] = True) then
        begin
          // hier die Einträge nacheinander verarbeiten
          ShowMessage(listbox_prodcount1.Items[counter]);
        end;
    end;
end;
Have a nice day ...
Michel
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:49 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