Autor |
Beitrag |
Chatfix
      
Beiträge: 1583
Erhaltene Danke: 10
Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
|
Verfasst: Mi 03.07.02 15:26
hi
ich hab 2 Probleme, möchte das der User die einträge in der Listbox manuell per maus hoch und runter schieben kann (man kann nur einen eintrag markieren)
und 2. möchte ich wenn man eine datei in die listbox zieht das die listbox dann diese datei lädt (also loadfromfile)
kann mir jmd helfen, hab kein plan wie ich as machen könnte
_________________ Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
|
|
Alfons-G
      
Beiträge: 307
Win XP Prof, Linux, Win 7
D5 Prof, D7 Architect, D2005 Architect, D2007 Architect
|
Verfasst: Do 04.07.02 19:01
Hi, da hab' ich ein Stück Code für Dich: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40:
| procedure TMainForm.LMDListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin if Source is TLMDListBox then Accept := true; end;
procedure TMainForm.LMDListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var i: integer;
begin i := LMDListBox1.ItemAtPos (Point(x,y),true); if i > -1 then begin LMDListBox1.Items.Move (Zeile ,i); end; end;
procedure TMainForm.LMDListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var LPos: integer;
begin LPos := LMDListBox1.ItemAtPos (Point(x,y),true) ; if LPos > -1 then begin try Zeile := LPos; LMDListBox1.BeginDrag (false); imgVorschau.Picture.LoadFromFile (strPixBase + '\' + LMDListBox1.Itempart (LPos, 0)); except end; end; end; | In diesem Programm habe ich lediglich statt der normalen Listbox die LMDListBox aus den LMD-Komponenten verwendet. Diese ist mehrspaltig, man kann mit ItemPart(Zeile,Spalte) auf die einzelnen Spalten zugreifen. Ansonsten geht es mit einer normalen Listbox genauso. Das Programm, ein Tool zum Erstellen von Vorschau-Seiten als HTML-Datei, lädt jeweils das aktuell markierte Bild in sein Vorschaufenster. :idea: Moderiert von Klabautermann: Code- durch Delphi-Tags ersetzt
_________________ Alfons Grünewald
|
|
Chatfix 
      
Beiträge: 1583
Erhaltene Danke: 10
Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
|
Verfasst: Fr 05.07.02 14:14
sorry ich kann damit gar nix anfangen, kann mir nciht irgendjemand mal den code dafür geben, es reicht auch wenn nur eine problem gelöst wird...
ich hatte mal den code dafür und dachte er wäre aus diesem forum, hab aber nichts mehr gefunden...
_________________ Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
|
|
Chatfix 
      
Beiträge: 1583
Erhaltene Danke: 10
Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
|
Verfasst: Sa 06.07.02 11:01
also ich hab mich nochmal hingesetzt, und hab einwas geschaft. Mit folgendem code kann man jetzt einträge in der Listbox beliebig verschieben: Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer); begin ListBox1.Items.Move(ListBox1.ItemIndex,ListBox1.ItemAtPos(point(x,y),true)); end;
procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin if source is TListbox then accept:=true else accept:=false; end; | Dann noch die Eigenschaft DragMode auf DmAutomatic und fertig ist der Spass. Moderiert von Klabautermann: Code- durch Delphi-Tags ersetzt
_________________ Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
|
|
xcellent
Hält's aus hier
Beiträge: 5
|
Verfasst: Mi 04.07.07 14:32
Titel: weiterer Lösungsansatz
Man kann auch ohne Drag & Drop einfach die Zeilen tauschen... 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| var HoldIndex : Integer;
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin HoldIndex := TListBox(Sender).ItemAtPos(point(x,y),true); end;
procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin try if ((Holdindex > -1)and (HoldIndex <> TListBox(Sender).ItemAtPos(point(x,y),true))and (HoldIndex < TListBox(Sender).Items.Count) ) then begin
TListBox((Sender).Items.Move( HoldIndex, TListBox((Sender).ItemAtPos(point(x,y),true) );
HoldIndex := TListBox((Sender).ItemAtPos(point(x,y),true);
TListBox((Sender).Selected[HoldIndex] := true;
end; except end; end;
procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin HoldIndex := -1; end; | Moderiert von Klabautermann: Code- durch Delphi-Tags ersetzt
|
|
Chatfix 
      
Beiträge: 1583
Erhaltene Danke: 10
Win 10, Win 8, Win 7, Win Vista, Win XP
VB.net (VS 2015), MsSQL (T-SQL), HTML, CSS, PHP, MySQL
|
Verfasst: Mi 04.07.07 14:35
Auch wenn die Frage schon 5 Jahre alt ist  Danke 
_________________ Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
|
|
Klabautermann
      

Beiträge: 6366
Erhaltene Danke: 60
Windows 7, Ubuntu
Delphi 7 Prof.
|
Verfasst: Mi 04.07.07 15:13
|
|
xcellent
Hält's aus hier
Beiträge: 5
|
Verfasst: Fr 06.07.07 13:49
 Der Unterschied zwischen beiden Varianten ist das visuelle Ergebnis.
Die Drag & Drop-Variante lässt sich ""blöd"" handhaben, weil man mit der Maus
förmlich zielen muss, um seine Zeile korrekt neu zu platzieren.
Die Tausch-Variante dürfte um Längen einfacher zu bedienen sein
Und vielleicht hilft es ja noch anderen! 
|
|
|