AGB  ·  Datenschutz  ·  Impressum  







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

Drag'n'Drop

Ein Thema von mikegu · begonnen am 18. Okt 2006 · letzter Beitrag vom 20. Okt 2006
Antwort Antwort
Seite 1 von 2  1 2      
mikegu

Registriert seit: 11. Okt 2006
Ort: Babenhausen
8 Beiträge
 
Delphi 5 Standard
 
#1

Drag'n'Drop

  Alt 18. Okt 2006, 20:42
Hallöle,

Ich bin ganz neu in die Delphi- Programmierung eingestiegen, und habe da so einige Probleme.
Ich muß für meine Technikerschule ein kleine Programm entwerfen und brauche dazu das "Drag and Drop" verfahren.
Ich habe es schon geschafft einen TButton zu verschieben aber sobald ich es mit einem zweite versuche, springt immer derjenige, der an seinem Ort sitzen bleiben soll, zu dem Anderen . Kann mir da vieleicht jemand helfen?

Ich wäre Euch sehr Dankbar!!
Michael Franz
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Drag'n'Drop

  Alt 18. Okt 2006, 20:47
du musst schon genau sagen wann was wohin per drag&drop verschoben oder kopiert werden soll.....
und ein bissl quellcode wäre auch nicht schlecht
  Mit Zitat antworten Zitat
mikegu

Registriert seit: 11. Okt 2006
Ort: Babenhausen
8 Beiträge
 
Delphi 5 Standard
 
#3

Re: Drag'n'Drop

  Alt 18. Okt 2006, 21:12
Meine Panels Sollen auf meinem Formular an eine X-Beliebige Stelle Verschoben werden
Delphi-Quellcode:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
     If Button=mbleft Then
     Panel1.BeginDrag(false) ;
end;

procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
accept := (Source is TPanel);

end;

procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
Panel1.Left := x;
Panel1.Top := y;
Panel1.Parent := TWinControl(Sender);

end;

procedure TForm1.Panel2MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
If Button=mbleft then
Panel2.BeginDrag(false);
end;

procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
If button=mbleft then
Label1.BeginDrag(True)
end;
Hier ist jetzt nur einer drinnen. Aber sobald ein zweiter kommt, Setzt er sich auf den gleichen wie der erste

[edit=Phoenix]Nal die Code-Tags eingefügt. Mfg, Phoenix[/edit]
Michael Franz
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#4

Re: Drag'n'Drop

  Alt 18. Okt 2006, 21:40
Falls du die Jedis hast, kannst du TJvDesignSurface und TJvDesignPanel/Scollbox benutzen, die findest du unter RuntimeDesign
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Drag'n'Drop

  Alt 18. Okt 2006, 22:56
@jfheins: warum immer gleich Fremdkomponenten verwenden?

@mikegu: als erstes kann man den Quellcode, den man hier postet per "Delphi-Code"-Button formatieren, so das dieser dann für die Leser schön lesbar ist.

Delphi-Quellcode:
procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
  If Button=mbleft Then
    Panel1.BeginDrag(false) ;
end;

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  If Button=mbleft Then
    Button1.BeginDrag(false) ;
end;

procedure TForm1.Panel2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
  If Button=mbleft then
    Panel2.BeginDrag(false);
end;

procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
  If button=mbleft then
    Label1.BeginDrag(True)
end;


procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  // beim Droppen müssen wir wie beim Ziehen der Komponenten
  // den Typ der Komponente beachten
  // (Typ TPanel, TButton und TLabel)
  if Source is TPanel then
  begin
    TPanel(Source).Left := x;
    TPanel(Source).Top := y;
    TPanel(Source).Parent := TWinControl(Sender);
  end else if Source is TButton then
  begin
    TButton(Source).Left := x;
    TButton(Source).Top := y;
    TButton(Source).Parent := TWinControl(Sender);
  end else if Source is TLabel then
  begin
    TLabel(Source).Left := x;
    TLabel(Source).Top := y;
    TLabel(Source).Parent := TWinControl(Sender);
  end;
end;

procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
  // wir erlauben das Ziehen von Komponenten
  // vom Typ TPanel, TButton und TLabel
  accept := (Source is TPanel) or
            (Source is TLabel) or
            (Source is TButton);
end;
So sollte das ganze funktionieren,
die wesentlichen Änderungen kannst du den Kommentaren im Quellcode entnehmen
  Mit Zitat antworten Zitat
mikegu

Registriert seit: 11. Okt 2006
Ort: Babenhausen
8 Beiträge
 
Delphi 5 Standard
 
#6

Re: Drag'n'Drop

  Alt 19. Okt 2006, 19:30
@ computer-glssar.de

Vielen herzlichen Dank

Ich hoffe, ich komme jetzt weiter. Das mit dem "Delphi-Code"-Button habe ich nicht gewusst, aber ich werde es mir merken.

@jfheins

Auch bei dir vielen Dank. Auch wenn ich nicht weis was "TJvDesignSurface" ist. Aber es hört sich so an, als ob ich mich mal damit befassen sollte.

Wie gesagt, ich habe erst mit der Delphi- Programmierung angefangen und bin für jede Hilfe froh die ich bekomme!

Danke!!
Michael Franz
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Drag'n'Drop

  Alt 19. Okt 2006, 19:36
das isn Units/Komponenten die dir Hilfe abnehmen sollen.

Es ist aber besser dies mal alles zu Fuß zu erledigen, denn du willst ja lernen.
  Mit Zitat antworten Zitat
mikegu

Registriert seit: 11. Okt 2006
Ort: Babenhausen
8 Beiträge
 
Delphi 5 Standard
 
#8

Re: Drag'n'Drop

  Alt 19. Okt 2006, 19:53
Danke für diesen Tipp!!!

das Drag`n`Drop funktioniert sogar.
Jetzt muß ich erst einmel gucken was ich da für einen Mist gebaut habe
Michael Franz
  Mit Zitat antworten Zitat
mikegu

Registriert seit: 11. Okt 2006
Ort: Babenhausen
8 Beiträge
 
Delphi 5 Standard
 
#9

Re: Drag'n'Drop

  Alt 19. Okt 2006, 20:58
@ computer-glossar.de
Kannst du mir vieleicht noch erklären warum mein Drag'n'Drop mit diesem Quellcode funktioniert,
Delphi-Quellcode:
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin

TPanel(Source).left := x;
TPanel(Source).top := y;
TPanel(source).parent := TWinControl(Sender);

end;
aber nicht mit dem aus meinen Büchern?

Bsp.:
Delphi-Quellcode:
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin

Panel1.left := x;
Panel1.top := y;
Panel1.parent := TWinControl(Sender);

end;
Würde mich echt mal interessieren was das "source" hier zu bedeuten hat.

Im übrigen, danke nochmal für die Hilfe. Ich bin echt begeistert
Michael Franz
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Drag'n'Drop

  Alt 19. Okt 2006, 22:11
erst einmal: schön dass du das nun auch mit dem quellcode formatieren hier im forum gefunden hast

Delphi-Quellcode:
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  TPanel(Source).left := x;
  TPanel(Source).top := y;
  TPanel(source).parent := TWinControl(Sender);
end;
bedeutet dass alle Nachfahren von TPanel auf deinem Formular gedroppt werden dürfen.
Wenn du jedoch
Delphi-Quellcode:
procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  Panel1.left := x;
  Panel1.top := y;
  Panel1.parent := TWinControl(Sender);
end;
verwendest, erlaubst du nur dem Panel1 auf dem Form gedroppt zu werden.
  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 22:45 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