Autor Beitrag
Indeterminatus
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 47



BeitragVerfasst: Fr 13.09.02 21:21 
Hallo!

Ich habe folgendes Problem: Ich habe ein Mistkübel-Symbol gezeichnet und auf meinem Formular zusammen mit einem TDBGrid-Element positioniert.

Wenn der Benutzer eine markierte Spalte auf den Mistkübel zieht, soll dieser Tabelleneintrag gelöscht werden.

Das ist soweit auch gar kein Problem ... nur ... wie fange ich Drag & Drop-bei einem DBGrid ab? Mit onMouseOver funktioniert das nicht so gut, weil er dafür nur den Tabellenhintergrund (also alles, was nicht Zelle und nicht Bildlaufleiste ist ... ) vorsieht, jedoch nicht die Spalte selber ...

Schalte ich DragMode auf dmAutomatic um, habe ich das Problem, dass bei jedem kleinsten Klick auf eine Spalte Drag&Drop gestartet wird ... ich weiß, dass mit BeginDrag( False ) eine Mausbewegung von ca. 5 Pixeln vorausgesetzt wird, damit der Drag-Vorgang gestartet wird, nur wie bekomme ich ein Ereignis beim Betreten einer Spalte ?

Mit onCellClick funktioniert das auch nicht, weil der Benutzer nur einmal darauf klicken braucht und damit sofort (trotz Immediate-Flag auf False bei BeginDrag) in den Drag-Modus wechselt ...

Für Ratschläge bin ich jederzeit offen *gg* ...

Indeterminatus.

_________________
_______________________________________
Indeterminatus

---=si tacuisses, philosophus mansisses=---
löschi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Mo 06.01.03 20:01 
Titel: Draggen
HI Habe dein Beitrag erst jetzt gelesen. War selber auf suche nach lösung. Habe da was gefunden was dir vielecht weiterhelfen könnte.
In den Interfaceabschnitt:
ausblenden Quelltext
1:
2:
var
 StartX, StartY: Integer;

im ereignis:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  StartX := X;
  StartY := Y;
end;

und im ereignis:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ssLeft in Shift then { prüfen, ob Maustaste gedrückt ist }
  begin
    if Y > StartY then
      begin
       dbgrid1.BeginDrag(false)
      end
end;
end;


(07.01. 09:54 Tino) Code-Tags hinzugefügt.