Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Drag and Drop (https://www.delphipraxis.net/131262-drag-drop.html)

Anonymos 21. Mär 2009 17:47


Drag and Drop
 
Abend DP

Also ich habe theoretisch ein ganz einfaches Problem.
Ich will in einem Programm von mir per Drag & Drop StringgridZellen in Listboxen überschreiben.

Soweit kein Problem.

Aber jetz wollte ich dass ganze kenntlich machen.
D.h. ich wollte bei MouseDown den Cursor auf crDrag setzen und ei MouseUp wieder auf Normal.

Delphi mag dass aber nicht. Der verändert den Cursor erst bei MouseUp, auch wenn es in MouseDown steht.

Schonmal Danke im Voraus

Keldorn 21. Mär 2009 17:51

Re: Drag and Drop
 
Hallo,

wie sieht dein vorgehen genau aus?

hast du Dragmode auf automatic?

Gruß Frank

Anonymos 21. Mär 2009 18:50

Re: Drag and Drop
 
Nein ich hab Dragmode auf Manuel

Also ich hab ein Stringgrid, in dem Stehen in einer Zeile, erst ein Name und dann noch diverse Zellen mit Anderen Daten.
Das heißt, ich hab Rowselect auf true, falls das was ändert

Wie das mit dem Dragmode funktionieren soll, hab ich nun leider überhaupt keine Ahnung, des hab ich bisher noch nie benutzt, sorry.

Hab des jetz allerdings mal ausprobiert und:
Der Cursor ändert sich beim Drücken,
Aber iwie egal was ich mach immer zu diesem Fehler/Geht-nicht Kreis

Wenn Delphi des iwie automatisch könnte, wär mir auch recht, aber ich will ja nur den Inhalt einer einzelnen Zelle in einer ausgewählten Reihe in RichEdits einfügen.
(Nicht wie oben geschrieben Listboxen, ich hab da was geändert).

mfg

jaenicke 21. Mär 2009 18:59

Re: Drag and Drop
 
Zitat:

Zitat von Anonymos
Aber iwie egal was ich mach immer zu diesem Fehler/Geht-nicht Kreis

Der bedeutet, dass du bei der Komponente, über die du gerade ziehst, nicht in OnDragOver sagst, dass an der Stelle der aktuelle Dragvorgang akzeptiert würde.

Wenn du bei der Komponente in OnDragOver Accept auf True setzt, dann signalisiert Delphi mit dem entsprechenden Cursor, dass man dort das Gezogene fallen lassen könnte.

Keldorn 21. Mär 2009 19:15

Re: Drag and Drop
 
probier mal folgendes:

Ereignis dragover im richedit, damit wird das drag von einem Grid akzeptiert
Delphi-Quellcode:
procedure TForm1.RichEdit2DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  accept:=source is TStringGrid;
end;
und

und im Dragdrop beim richeidt
Delphi-Quellcode:
procedure TForm1.RichEdit2DragDrop(Sender, Source: TObject; X, Y: Integer);
Var grid:TStringGrid;
    Richedit:TRichEdit;
begin
  if Source is TStringGrid then
    begin
      grid:=source as TStringGrid;
      Richedit:=sender as TRichEdit;

      Richedit.SelText := grid.Cells[grid.col,grid.row]; //mußt du selber anpassen
    end;
end;
im grid reicht ein (bei dragmode=dmmanual):
Delphi-Quellcode:
procedure TForm1.StringGrid3MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  TStringGrid(Sender).BeginDrag(false,10);
end;
mit dmautomatic könntest du nix selektieren, sorry, war auf eine Listbox aus. beim Grid macht dmautomatic nich viel Sinn.

Gruß Frank

Anonymos 22. Mär 2009 12:54

Re: Drag and Drop
 
Hey, Danke

Funzt wunderschön. :thumb:

(Und wieder einmal das Geheimnis um 2 weitere ominöse Funktionen im Objektinspektor gelüftet)

Dann mmach ich mich mal an die Arbeit :coder:

mfg
Anonymos


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 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