Autor Beitrag
Chatfix
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 307

Win XP Prof, Linux, Win 7
D5 Prof, D7 Architect, D2005 Architect, D2007 Architect
BeitragVerfasst: Do 04.07.02 19:01 
Hi,
da hab' ich ein Stück Code für Dich:
ausblenden volle Höhe Delphi-Quelltext
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 user profile iconKlabautermann: Code- durch Delphi-Tags ersetzt

_________________
Alfons Grünewald
Chatfix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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
BeitragVerfasst: 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:

ausblenden 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 user profile iconKlabautermann: 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



BeitragVerfasst: Mi 04.07.07 14:32 
Titel: weiterer Lösungsansatz
Man kann auch ohne Drag & Drop einfach die Zeilen tauschen...

ausblenden volle Höhe Delphi-Quelltext
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:
//global 
var HoldIndex : Integer;

procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  //hold index
  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

      //move up or down
      TListBox((Sender).Items.Move(
          HoldIndex,
          TListBox((Sender).ItemAtPos(point(x,y),true)
      );

      //set new index
      HoldIndex := TListBox((Sender).ItemAtPos(point(x,y),true);

      //control flickering
      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 user profile iconKlabautermann: Code- durch Delphi-Tags ersetzt
Chatfix Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
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
BeitragVerfasst: Mi 04.07.07 14:35 
Auch wenn die Frage schon 5 Jahre alt ist ;) Danke :P

_________________
Gehirn: ein Organ, mit dem wir denken, daß wir denken. - Ambrose Bierce
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 04.07.07 15:13 
user profile iconChatfix hat folgendes geschrieben:
Auch wenn die Frage schon 5 Jahre alt ist ;) Danke :P

So kommt sie dann wenigstens noch zu der Ehre eingebuntet zu werden ;).
xcellent
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Fr 06.07.07 13:49 
:wink: 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 :wink:

Und vielleicht hilft es ja noch anderen! :!: