AGB  ·  Datenschutz  ·  Impressum  







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

Panels (alTop) per Drag and Drop neu anordnen

Offene Frage von "torud"
Ein Thema von torud · begonnen am 3. Aug 2005 · letzter Beitrag vom 5. Aug 2005
Antwort Antwort
torud

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

Panels (alTop) per Drag and Drop neu anordnen

  Alt 3. Aug 2005, 09:43
Hallo Wissende!

Ich habe mehrere Panels auf einem Panel liegen. Diese Panels werden dynamisch erzeugt. Nehmen wir an, dass auf dem Hauptpanel (pan_main) 3 Panels liegen, die alle mit alTop ausgerichtet sind. Die Panels heissen von mir aus pan_1, pan_2,pan_3.

Ich möchte/muss nun realisieren, das der User z.b. pan_3 von unten nach oben bewegen kann. Das heisst er müsste es höhentechnisch über pan_1 ziehem imd loslassen. Richtig? Und das alles müsste in einer globalen Prozedur stehen, die ich jedem Panel, welches dynamisch erzeugt wird zuweise. Richtig?

Wie kann ich als dieses Drag ´n Drop realisieren?
Danke
Tom
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#2

Re: Panels (alTop) per Drag and Drop neu anordnen

  Alt 3. Aug 2005, 13:49
Prinzipiell so:
Delphi-Quellcode:
  TForm1 = class(TForm)
    pan_main: TPanel;
    Pan_1: TPanel;
    Pan_2: TPanel;
    Pan_3: TPanel;
    procedure PanelMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private-Deklarationen }
    FY: Integer;
  public
    { Public-Deklarationen }
  end;
Implementation
procedure TForm1.PanelMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  If ssLeft in Shift
  Then Begin
    If Y<>FY
    Then begin
      (Sender As TPanel).Top:=Y;
      pan_main.Refresh;
      FY:=Y;
    End;
  End;
end;
Die Methode PanelMouseMove den drei Panels als OnMouseMove zuweisen.
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
torud

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

Re: Panels (alTop) per Drag and Drop neu anordnen

  Alt 3. Aug 2005, 14:04
Danke für Deinen Tipp. Ich habe aber festgestellt, dass die Panels während des movens ziemlich stark flackern und flimmern. Ich habe mich noch mal mit Delphi-Hilfe beschäftigt und daraus folgenden eigenen Lösungsvorschlag gebaut:

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;
    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.
Das funktioniert auch einwandfrei, ohne Flicker und Flacker und ich habe dabei auch wieder was gelernt.
Danke
Tom
  Mit Zitat antworten Zitat
torud

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

Re: Panels (alTop) per Drag and Drop neu anordnen

  Alt 5. Aug 2005, 17:12
Also ich muss diesen Thread doch nochmal bedienen, um die Frage vollends beantwortet zu bekommen. Auch wenn ich mir da schon selbst sehr helfen konnte, ist wieder eine Frage zu diesem Thema aufgetaucht.

Also nehmen wir an es sind nun 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? In meinem Beispiel hatte ich nur 3 Panels und diese von oben nach ganz unten bewegt. Hatte ich mal wieder nicht zu ende gedacht, denn die User sollen doch alles machen dürfen.

Nur wie???
Danke
Tom
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:04 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