AGB  ·  Datenschutz  ·  Impressum  







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

Drag&Drop einer TImage-Komponente

Ein Thema von semo · begonnen am 6. Mai 2004 · letzter Beitrag vom 2. Aug 2004
Antwort Antwort
Benutzerbild von semo
semo

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

Drag&Drop einer TImage-Komponente

  Alt 6. Mai 2004, 09:23
ich habe ein panel mit einer image-kompnente draufliegen. die image-kompo soll per drag und drop auf eine danebenliegende paintbox gelegt werden (ich muss also auch irgendwie den parent ändern??!!!)


in dieses image lade ich ein bitmap:

Code:
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
  // Bitmap aus Datei in das Image laden und die Höhe und Breite des Image anpassen
  ImageVorschau.Picture.Bitmap.LoadFromFile(ListBox1.Items[ListBox1.ItemIndex]);
  ImageVorschau.Width := ImageVorschau.Picture.Width;
  ImageVorschau.Height := ImageVorschau.Picture.Height;

  // Image1 mittig auf dem Panel1 positionieren
  // x-Position
  if ImageVorschau.Width < PanelVorschau.Width then
    ImageVorschau.Left := Round(PanelVorschau.Width / 2 - ImageVorschau.Width / 2)
  else
    ImageVorschau.Left := 1;

  // y-Position 1. mittig positionieren oder 2. am oberen Rand
  if ImageVorschau.Height < PanelVorschau.Height then
    ImageVorschau.Top := Round(PanelVorschau.Height / 2 - ImageVorschau.Height / 2)
  else
    ImageVorschau.Top := 1;
end;
meine jetzige DragOver-procdure malt nur das Bitmap aus dem Image auf die PaintBox,
ich möchte aber das komplette Image daraufziehen (habe es wie in den geschweiften klammern mal versucht)
.

Code:
procedure TForm1.PaintBoxMenueflaecheDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  if (Source is TImage) and (Sender is TPaintBox) then
  begin
    {
    TImage(Source).Parent.Create(PaintBoxMenueflaeche);
    TImage(Source).Left := X;
    TImage(Source).Top := Y;
    }
    PaintBoxMenueflaeche.Canvas.Draw(X,Y,TImage(Source).Picture.Bitmap);
  end;
end;
wie kann ich das komplette image rüberziehen???
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

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

Re: Drag&Drop einer TImage-Komponente

  Alt 6. Mai 2004, 09:39
habe es gefunden: die paintbox kann ich ja nun weglassen, und die imagekomponente auf die drunterliegende scrollbox packen:

Code:
procedure TForm1.ScrollBox1DragDrop(Sender, Source: TObject; X,
  Y: Integer);
begin
  if (Source is TImage) and (Sender is TScrollBox) then
  begin
    RemoveControl(TImage(Source));
    ScrollBox1.InsertControl(TImage(Source));
    //TImage(Source).Parent.Create(ScrollBox1);
    TImage(Source).Left := X;
    TImage(Source).Top := Y;

    //PaintBoxMenueflaeche.Canvas.Draw(X,Y,TImage(Source).Picture.Bitmap);
  end;
end;
mfg marcus
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

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

Re: Drag&Drop einer TImage-Komponente

  Alt 10. Mai 2004, 12:28
so richtig scheint das doch nicht zu funktionieren....

ich frage die im formualar und im panel enthaltenen komponenten ab und bekomme sowohl vor wie auch nach dem drag&drop die meldung dass das image als parent das panel hat...

Code:
for i:=0 to ComponentCount-1 do
    Memo1.Lines.Add(Components[i].Name);

  for i:=0 to PanelVorschau.ComponentCount-1 do
    Memo2.Lines.Add(PanelVorschau.Components[i].Name);


wie kann ich nach dem drag&rop dem image das neue parent zuweisen?
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#4

Re: Drag&Drop einer TImage-Komponente

  Alt 1. Aug 2004, 21:23
Hallöle! Bin gerade beim Suchen hierüber gestolpert...

Wenn ich dich richtig verstanden habe gibt es auf deinem Formular ein Image, eine ScrollBox, (bis jetzt noch??)eine PaintBox und das Panel, auf dem das Image liegt.

Wenn du das image vom Panel auf die PaintBox drauflegen willst, musst du das manuell machen:
Delphi-Quellcode:
{Das DragOver nicht vergessen! Sonst wird's nicht akzeptiert!}
 Accept := (Source is TImage);

(*********Das DragDrop für die PaintBox*************)
 if not Source is TImage then Exit;

{Das Image vom Panel lösen und auf die übergeordnete Komponente der PaintBox legen}
 TImage(Source).Parent := TPaintBox(Sender).Parent;
{Die manuelle Anpassung der Position}
 TImage(Source).Left := TPaintBox(Sender).Left;
 TImage(Source).Top := TPaintBox(Sender).Top;
{ggf. soll die größe des Images auf die der PaintBox zugeschnitten werden}
 TImage(Source).Width := TPaintBox(Sender).Width;
 TImage(Source).Height := TPaintBox(Sender).Height;

(*********Wenn dus auf die ScrollBox ziehen willst*************)
 if not Source is TImage then Exit;

{Das Image vom Panel lösen und auf die ScollBox legen}
 TImage(Source).Parent := ScrollBox1;
{Die manuelle Anpassung der Position}
 TImage(Source).Left := X;
 TImage(Source).Top := Y;
        {...}
Hoffe es hilft dir noch!
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

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

Re: Drag&Drop einer TImage-Komponente

  Alt 1. Aug 2004, 21:30
habe es mittlerweile mit ner extra drag und drop unit gemacht,
wo ich das dragDropObjekt beerbe.....

aber trotzdem danke

mfg marcus
  Mit Zitat antworten Zitat
Benutzerbild von F.W.
F.W.

Registriert seit: 28. Jul 2003
Ort: Zittau
636 Beiträge
 
#6

Re: Drag&Drop einer TImage-Komponente

  Alt 2. Aug 2004, 10:15
Ok!
  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:22 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