Avatar billede anold Nybegynder
18. september 2001 - 13:20 Der er 15 kommentarer og
1 løsning

Flytning af string i listbox

hvordan kan jeg lave det således at jeg via drag / drop kan bytte rundt på linjerne i listboxen
Avatar billede borrisholt Novice
18. september 2001 - 13:39 #1
prøv der her :

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
    procedure ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure ListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  i : INteger;
begin
  Randomize;
  for i:= 0 to 10 do
  ListBox1.Items.Add(IntToStr(Random(5000)));
end;

procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept := Sender is TListBox;
end;

procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  DragPos : Integer;
  Point  : TPoint;
  ListBox : TListBox;
  s : String;
begin
  if not (Sender is TListBox) then
    exit;
  Point.X := x;
  Point.Y := y;
  ListBox := (Sender as TListBox);
  DragPos := ListBox.ItemAtPos(Point, true);
  s := ListBox.Items[ListBox.ItemIndex];
  ListBox.Items.Delete(ListBox.ItemIndex);
  ListBox.Items.Insert(DragPos, s);

end;

procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  DragItem: Integer;
  Point  : TPoint;
  ListBox : TListBox;
begin
if Button <> mbLeft then
  exit;
  Point.Y := y;
  ListBox := (Sender as TListBox);
  DragItem := ListBox.ItemIndex;
  if (DragItem > -1) and (DragItem < ListBox.Items.Count) then
      ListBox.BeginDrag(False);
end;

end.


Jens B
Avatar billede morten_s Nybegynder
18. september 2001 - 14:42 #2
kigger lige med
Avatar billede jhald Nybegynder
18. september 2001 - 18:56 #3
me too...
Avatar billede zardic Nybegynder
18. september 2001 - 20:55 #4
me too.
Avatar billede borrisholt Novice
18. september 2001 - 20:58 #5
Lige for en god ordens skyld vil jeg lige fortælle at hvis man bare ønsker at kigge med så kan man bare poste en tom kommentar. Så er man med, og der kommer iike mails til alle de andere der Deltager.

Jens B
Avatar billede borrisholt Novice
18. september 2001 - 20:58 #6
Iøvrigt er der ikke så meget  at kigge med på .... Opgaven er jo læst.

´Jens B
Avatar billede anold Nybegynder
19. september 2001 - 08:51 #7
Hej Jens B
Dit eks. virker fint men der er lige en lille hage ved det.

Jeg har 2 listboxe hvor jeg drag\'er fra listBox1 til ListBox2 , når jeg så er færdig med at drage så er det, at jeg ønsker at kunne flytte rundt på linjerne i ListBox2 via drag/drop

det vil sige at når programmet starter så er ListBox2 tom derfor får jeg en fejl i linjen

ListBox.Items.Delete(ListBox.ItemIndex);
Håber at du kan hjælpe med en løsning på problemet !!
Avatar billede borrisholt Novice
19. september 2001 - 08:53 #8
Jeg er sq nok ligt fat vag, kunne du ikke lige sende mig programmet. Så fixer jeg det lige ...

Jens B
Avatar billede anold Nybegynder
19. september 2001 - 08:55 #9
Ok hvad er din E-Mail

Obs det er D4
Avatar billede borrisholt Novice
19. september 2001 - 08:56 #10
Jens@Borrisholt.com
Avatar billede zephyrus Nybegynder
20. september 2001 - 22:56 #11
Kan evt. løses med

Try
ListBox.Items.Delete(ListBox.ItemIndex);
except
end;

Avatar billede borrisholt Novice
25. september 2001 - 12:47 #12
Husk at lukke efter dig :-)

Jens B
Avatar billede zephyrus Nybegynder
25. september 2001 - 13:12 #13
Hvorfor kunne mit eks. med try, except, end; ikke bruges anold ????

Du skal jo huske at slå \"break on exceptions\" fra

/Zep
Avatar billede anold Nybegynder
25. september 2001 - 13:14 #14
Zep, Jeg fatter ikke en sk.. af hvad du mener,
Jeg tror at det du vil er på et for højt plan til mig
Avatar billede zephyrus Nybegynder
25. september 2001 - 16:05 #15
Du skriver at du får en fejl i linjen \"ListBox.Items.Delete(ListBox.ItemIndex)\"

Dette kan løses ved at du udskifter den linje med

Try
ListBox.Items.Delete(ListBox.ItemIndex);
except
end;

Så får du ikke længere nogen fejl. D.v.s. du får stadig fejlen når du afvikler programmet inde fra delphi, men ikke hvis du afhvikler det ude fra.

Du kan også undgå at få fejlen inde fra Delphi, ved at du i menuen Tools, finder den menu hvår du sætter punktet \"break on exceptions\" eller \"stop on exception\", og slår dette fra.

jeg kan ikke huske hvilken undermenu til \"Tools\" det er i Delphi 4.

Dette virker kun hvis du husker den øverste ændring med:

Try
Except
End;

Dette burde du kunne bruge.

/Zep
Avatar billede zephyrus Nybegynder
25. september 2001 - 16:06 #16
Beklager, kan ikke stave idag..... :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester