AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Komponenten verschiebbar / Größe veränderbar
Thema durchsuchen
Ansicht
Themen-Optionen

Komponenten verschiebbar / Größe veränderbar

Ein Thema von cyborg · begonnen am 23. Sep 2003 · letzter Beitrag vom 24. Sep 2003
Antwort Antwort
cyborg

Registriert seit: 15. Jan 2003
24 Beiträge
 
Delphi 7 Personal
 
#1

Komponenten verschiebbar / Größe veränderbar

  Alt 23. Sep 2003, 19:11
hab jetzt im forum herumgesucht, aber nichts gefunden:

wie schaffe ich es, dass ich zB auf einem panel objekte erstelle die der benutzer dann verschieben und vergrössern kann, wie er will?

Drag and Drop scheint nicht zu gehen und Docking hat das problem, dass man damit das item rausziehen kann...

Was ich will:

ein programm machen, welches verschiedene bilder dynamisch anzeigen und verschieben lassen kann: d.h. image objekte auf einem panel, die man herumschieben oder vergrössern kann bzw. (durch CreateNew) neue hinzufügen kann usw.
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#2

Re: Komponenten verschiebbar / Größe veränderbar

  Alt 23. Sep 2003, 19:45
Das verschieben funktioniert mit Drag & Drop ganz gut. Setze DragMode bei deinen Objekten auf dmAutomatic.
In den OnDragOver-des Objektes und der Panele musst du die Koordinaten des gezogenen Objektes umsetzen. Wichtig ist in diesen Ereignissen ein

Accept := true; Das Vergrössern hab ich so gelöst:

bei Rechtsclick auf das Objekt wird
DragMode := dmManual; damit das Objekt nicht gleich gezogen wird. Du brauchst noch irgendwelche Anker auf deinem Objekt (so wie im Word die kleinen Vierecke). Wenn der Mauszeiger draufsteht und die zu ziehen beginnst, einfach Position und Größe ändern.

hab grad keinen Source dabei deswegen kann ich dir gerade nicht mehr sagen. Hoffe das hilft dir.

grüße, daniel
Daniel
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Komponenten verschiebbar / Größe veränderbar

  Alt 23. Sep 2003, 21:28
Hab als Anhang ne unit mit nem TObject drin mit dem es möglich ist ein TImage zu verschieben bzw die größe zu ändern... Kann ohne Probleme auf Andere Komponenten wie TButton geändert werden..
Angehängte Dateien
Dateityp: pas ubildmove.pas (3,4 KB, 82x aufgerufen)
Jens
  Mit Zitat antworten Zitat
cyborg

Registriert seit: 15. Jan 2003
24 Beiträge
 
Delphi 7 Personal
 
#4

Re: Komponenten verschiebbar / Größe veränderbar

  Alt 23. Sep 2003, 23:29
das mit dem Dragging habe ich so gelöst:

Delphi-Quellcode:
procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
VAR S: TControl;
begin
Accept:=TRUE;
S:=Source as TControl;
S.Left:=X;
S.Top:=Y;
end;
Problem: wenn ich das bild nun verschieben will und es liegt ein anderes objekt auf dem panel, bekommt mein panel nicht die drag anweisung...
kann ich irgendwie die drag anweisung für die anderen objekte (zB das gedraggte bild selbst) verändern, oder muss ich nun bei dem bildobjekt ebenfalls ein OnDrag erstellen, welches es an das panel weiterleitet?

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]
  Mit Zitat antworten Zitat
cyborg

Registriert seit: 15. Jan 2003
24 Beiträge
 
Delphi 7 Personal
 
#5

Re: Komponenten verschiebbar / Größe veränderbar

  Alt 23. Sep 2003, 23:42
habe das nun gelöst indem ich

Delphi-Quellcode:
procedure TForm1.Image1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
VAR S: TControl;
begin
Accept:=TRUE;
S:=Source as TControl;
with Sender as TControl do begin
S.Left:=Left+X;
S.Top:=Top+Y;
end;
end;
bei den objekten verwende. ist sicher nicht hübsch, erfüllt aber den zweck.
wenn wer was besseres hat, gerne!

danke für das resize-ding! echt cool.

[edit=Daniel B]Delphi-Tags korrigiert. Mfg, Daniel B[/edit]
  Mit Zitat antworten Zitat
cyborg

Registriert seit: 15. Jan 2003
24 Beiträge
 
Delphi 7 Personal
 
#6

Re: Komponenten verschiebbar / Größe veränderbar

  Alt 24. Sep 2003, 07:36
Neues Problem, in Relation zu DragOver, ich weiss nicht ob ich da extra ein neues Thread starten soll, womöglich wenn hier keiner antwortet

Bei einem DragOver fängt er meine MouseDown routinen nicht mehr ab. das finde ich aber jammerschade

ich habe versucht in einem mousedown die cursorposition des mauszeigers zu merken um die items "relativ" verschieben zu können. sonst rutscht das bild - wenn ich die bisherigen funktionen verwende sofort mit Left,Top an den Ort des Mauszeigers. Aber das verschieben soll natürlich anders sein!

hmm... muss da noch dran feilen, aber kann man irgendwie bewirken, dass er mousedown wichtiger nimmt?
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#7

Re: Komponenten verschiebbar / Größe veränderbar

  Alt 24. Sep 2003, 07:46
Mein Vorschlag (bin mir nicht sicher ob es funktioniert):

Im DragOver der Objektes fragst du ab:
Delphi-Quellcode:
if Source = self then begin
  if State = dsDragEnter then begin
    altx := x;
    alty := y;
  end else if state = dsDragMove then begin
    self.Left := self.Left + x - altX;
    self.Top := self.Top + y - alty;
  end;
end;
Altx und Alty müssen Membervariablen des Objektes sein.
Sollte so funktionieren, wenn ich mich nicht irre. Schönen Tag noch
Daniel
  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 22:17 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