AGB  ·  Datenschutz  ·  Impressum  







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

ListBox Einträge verschieben/kopieren - Progressbar

Ein Thema von Sh4d0w · begonnen am 13. Mai 2007 · letzter Beitrag vom 13. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
Sh4d0w

Registriert seit: 19. Okt 2005
57 Beiträge
 
#1

ListBox Einträge verschieben/kopieren - Progressbar

  Alt 13. Mai 2007, 09:55
Moin,

Ich kann über den OpenDialog Files laden, die anschließend in ListBoxen dann angezeigt werden. In der einen sieht man den Dateinamen und in der anderen den Pfad. Jetzt kann ich in einer ListBox die Einträge mit der Maus verschieben. Wie kann ich das nun programmieren, dass der gleiche Eintrage in der anderen ListBox auch dementsprechend verschoben wird?
Vielen Dank schonmal!

MfG,
Shadow
  Mit Zitat antworten Zitat
Sh4d0w

Registriert seit: 19. Okt 2005
57 Beiträge
 
#2

Re: ListBox Einträge verschieben/kopieren

  Alt 13. Mai 2007, 10:13
Ok, ich habe das jetzt hinbekommen - war doch ganz einfach!
Eine Frage hab ich nun noch: Wenn ich jetzt auf einen Button klicke sollen die ganzen Dateien, nacheinander wie das in der ListBox geordnet ist, in einen gewünschten Ordner kopiert werden (der Pfad steht ja in der ListBox). Kann mir dazu jemand helfen?
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: ListBox Einträge verschieben/kopieren

  Alt 13. Mai 2007, 10:24
Das geht mit einer Schleife und Delphi-Referenz durchsuchenCopyFile:

Delphi-Quellcode:
for i := 0 to Listbox1.Items.Count - 1 do
  CopyFile(IncludeTrailingPathDelimiter(ListBox1.Items[i]) + ListBox2.Items[i]);
Schöner wäre es jedoch, wenn du die Pfade intern speicherst und damit arbeitest (Bsp: TStringList).
Aber bitte erstelle zukünftig pro Frage einen neuen Thread.

Schön wäre es auch, wenn du die Lösung zum ersten Problem noch posten würdest, damit andere, die ähnliche Probleme haben, einen Lösungsansatz finden.
  Mit Zitat antworten Zitat
Sh4d0w

Registriert seit: 19. Okt 2005
57 Beiträge
 
#4

Re: ListBox Einträge verschieben/kopieren

  Alt 13. Mai 2007, 10:31
Danke, hab das nun auch hinbekommen!

Meine Lösung zum ersten Problem:

Delphi-Quellcode:
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
begin
if source is TListbox then
begin
   accept:= true;
   ListBox1.Items.Move(ListBox1.ItemIndex,ListBox1.ItemAtPos(point(x,y),true));
   ListBox1.ItemIndex:= ListBox1.ItemAtPos(point(x,y),true);
   ListBox2.Items.Move(ListBox2.ItemIndex,ListBox2.ItemAtPos(point(x,y),true));
   ListBox2.ItemIndex:= ListBox2.ItemAtPos(point(x,y),true);
end
else
    accept:= false;
end;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var i:integer;
begin
ListBox2.ItemIndex:=-1;
i:=ListBox1.ItemIndex;
ListBox2.Selected[i]:=true
end;
Ich weiß nicht, ob ich jetzt noch einen Thread öffnen soll, aber während das Programm die Dateien kopiert...kann man da eine Fortschrittsanzeigen anzeigen lassen? Evtl. auch das normale von Windows...damit man weiß, wann das fertig kopiert wird.
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: ListBox Einträge verschieben/kopieren

  Alt 13. Mai 2007, 10:39
Denk mal scharf nach: Wenn du sowieso schon eine Schleife hast, ist das mit TProgressbar ein Kinderspiel.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Sh4d0w

Registriert seit: 19. Okt 2005
57 Beiträge
 
#6

Re: ListBox Einträge verschieben/kopieren

  Alt 13. Mai 2007, 10:40
Zitat von Apollonius:
Denk mal scharf nach: Wenn du sowieso schon eine Schleife hast, ist das mit TProgressbar ein Kinderspiel.
Hab nicht soviel programmiert und auch bisher nie was davon gehört.
Auf jeden Fall danke für den Tipp, schau ich mir mal an.
  Mit Zitat antworten Zitat
Sh4d0w

Registriert seit: 19. Okt 2005
57 Beiträge
 
#7

Re: ListBox Einträge verschieben/kopieren

  Alt 13. Mai 2007, 11:50
hmm, ich bekomm das mit der Progressbar irgendwie nicht hin. Kann mir vllt. jemand erklären wie das genau geht?
Wenn das prog. anfängt zu kopieren, dann muss ich die Progressbar doch in einer anderen Form anzeigen lassen oder? Mit welchem befehl geht das denn genau? Danke!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: ListBox Einträge verschieben/kopieren

  Alt 13. Mai 2007, 12:01
Bitte nächstes mal ohne Aufforderung ein neues Thema erstellen, denn das hat mit der Ausgangsfragestellung nicht mehr viel gemeinsam, es sei denn, du passt das erste Thema und den Titel des Themas entsprechend an.

Progressbar initialisieren:

ProgressBar1.Max := ListBox1.Items.Count; Dann in deiner Schleife:

Delphi-Quellcode:
ProgressBar1.Position := i + 1;
Application.ProcessMessages;
Je nach Anzahl der Einträge ist es schneller, dies nur alle paar Schleifendurchgänge aufzurufen:

Delphi-Quellcode:
if i mod 10 = 0 then
begin
  // wird nur jeden 10. Durchgang aufgerufen
end;
Aber nun genug OT!
  Mit Zitat antworten Zitat
Sh4d0w

Registriert seit: 19. Okt 2005
57 Beiträge
 
#9

Re: ListBox Einträge verschieben/kopieren - Progressbar

  Alt 13. Mai 2007, 12:20
Sry, hab Titel angepasst - denke nicht, dass jetzt ein neuer Thread notwendig ist, da es schon fast klappt.
Danke für die schnelle Hilfe, funktioniert bei mir nur soweit, dass sich der Balken nach dem Kopiervorgang vollständig auffüllt, aber nicht schrittweise während des Vorgangs...
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: ListBox Einträge verschieben/kopieren - Progressbar

  Alt 13. Mai 2007, 12:23
Ich habe es nicht getestet, aber es müsste so ungefähr ausschauen. Auf deinen Fehler kann man ohne Code natürlich nicht näher eingehen.

Delphi-Quellcode:
ProgressBar1.Max := ListBox1.Items.Count;

for i := 0 to Listbox1.Items.Count - 1 do
begin
  CopyFile(IncludeTrailingPathDelimiter(ListBox1.Items[i]) + ListBox2.Items[i], ...);

  ProgressBar1.Position := i + 1;
  Application.ProcessMessages; // evtl. hast du das vergessen
end;
  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 04:22 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