Avatar billede anold Nybegynder
03. december 1999 - 10:57 Der er 6 kommentarer og
1 løsning

Drag & Drop

Er der en der kan vise mig koden for hvordan jeg kan flytte en label rundt i
en shape med musen under runtime
Avatar billede sjensen Nybegynder
03. december 1999 - 12:15 #1
Hej,

Se det afsnit i Delphi 3,4 og 5) hjælp der hedder
"Implementing drag-and-drop in controls"

Du finder ved at finde "drag operation starting" og i hjælpen til denne klikke på "Topic Group".

Der er flere eksempler at kigge på i de hjælpe tekster der tilbydes. Ingen af dem handler dog om at flytte en label, men dette gøres på samme måde som de eksempler der vises.

I Delphi 3 er der desuden et helt program under DEMOS der viser hvordan det gøres.


sjensen
Avatar billede anold Nybegynder
03. december 1999 - 12:34 #2
Hej sjensen
Jeg  har kigget i hjælpen
men når jeg vil prøve det program der er vist under " starting a drag operation "får jeg en fejl der hedder
" underclared identifier : ItemAtPos "
Hvad skal jeg gøre ved den??

Jeg har ændret TFileListBox til TLable

Avatar billede stone Forsker
03. december 1999 - 13:07 #3
med denne kode kan du flytte label, men ikke indenfor shape - også udenfor!

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Shape1: TShape;
    Label1: TLabel;
    procedure Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Label1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}
const
traekker:Boolean=False;
var
sidste_X,Sidste_Y:Integer;

procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
mx,my:Integer;
begin
if (traekker)and( ssleft in shift) then
begin
mx:=Label1.Left;
Label1.Left:=Label1.Left-(sidste_x-x);
mx:=Label1.Left-mx;
my:=Label1.Top;
Label1.top:=Label1.top-(Sidste_y-y);
my:=Label1.Top-my;
sidste_y:=Y-my;
sidste_x:=x-mx;
end
else
traekker:= false;
end;
procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if
(SSLeft in shift) then begin
Traekker:=True;
sidste_X:=X;
sidste_Y:=Y;
end;
end;

end.
eksemplet er et som jeg har fået tidligere her.
Avatar billede anold Nybegynder
03. december 1999 - 13:22 #4
Hej Stone
Det ser godt ud
men der sker ikke det helt vilde når jeg prøver at flytte min label

kan du ikke fortælle mig lidt om hvordan jeg skal sætte min label og min shape op for når jeg forsøger at trække i labelen så får jeg et "Parkering forbudt skilt"
Avatar billede anold Nybegynder
03. december 1999 - 13:26 #5
Hej Stone
Nu har jeg fundet fejlen
Avatar billede stone Forsker
03. december 1999 - 14:41 #6
ja, du har nok glemt at sætte den manuel!?
Avatar billede anold Nybegynder
06. december 1999 - 05:58 #7
Det er nemlig rigtigt!!

Men hvad, man skal jo lære sålænge man lever.

Her er dine velfortjente point.
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