AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Panels (alTop) nach oben/unten verschieben

Ein Thema von torud · begonnen am 20. Dez 2005
Antwort Antwort
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Panels (alTop) nach oben/unten verschieben

  Alt 20. Dez 2005, 16:33
Hallo Wissende


Also nehmen wir an es sind 4 oder mehr Panels, die alle alTop ausgerichtet sind. Wie kann ich es nun realisieren, dass ich den 2. Panel per Drag & Drop an die 3. Stelle bekomme? Mit folgendem SourceCode kann ich die Panels nur von ganz oben nach ganz unten und umgekejrt ziehen, aber ich kann nicht ein panel zwischen 2 andere Panel ziehen. Wahrscheinlich, weil da FormDragOver nicht zum Einsatz kommt. Wie kann ich das aber realisieren, ohne mich auf eine bestimmte Anzahl von Panels begrenzen zu müssen, also dynamisch?

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Panel1EndDrag(Sender, Target: TObject; X, Y: Integer);
    procedure FormDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then { Nur ziehen, wenn linke Maustaste gedrückt ist }
    with Sender as TPanel do { Sender als TFileListBox behandeln }
sou BeginDrag(False); { Wenn ja, dann ziehen }
end;

procedure TForm1.Panel1EndDrag(Sender, Target: TObject; X, Y: Integer);
begin
  if Target <> nil then
  begin
    (sender as TPanel).Top:=y;
    (sender as TPanel).Left:=x;
    (sender as TPanel).Update;
  end;
end;

procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  if Source is TPanel then
    Accept := True
  else
    Accept := False;
end;

end.
Danke
Tom
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:32 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