Einzelnen Beitrag anzeigen

Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.095 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

TMS AdvStringGrid Ole DragDrop von Zelle zu Zelle geht nicht

  Alt 20. Jan 2010, 10:01
Hallo Zusammen,

ich habe nach Handbuch versucht OleDragDrop zu implementieren, doch leider ohne Erfolg.
Ich vermute das ich irgend eine Eigenschaft im Eigenschafteninspektor verstellt habe
und es deshalb nicht funktioniert.

Wenn ich die Doku richtig gelesen habe, funktioniert DragDrop indem:
Unter Eigenschaften DragDropSettings eingestellt ist:
OleAcceptFiles, OleAcceptText, OleAcceptURLs, OleDropSource und OleDropTarget.
ShowCells kann nicht gesetzt werden. Weis der Geier warum nicht.

-OnOleDrag Allow wird auf true gesetzt wenn DragDrop erlaubt ist.
-OnDragStart zwischenspeichern der Quellkomponente aus dieser DragDrop initiiert wurde.
-OnDragOver wird gefeuert wenn die Zielkomponente das Grid ist und gibt die Ziel-Zelle an fürs Drop
-OnDragStop löscht die gemerkte Quellkomponente nach dem Drop
-OnOleDropCol wird gefeuert wenn das Drop durchgeführt werden soll und liefert die Zelle

Bei mir wird OnOleDrag und OleDragStart gefuert, jedoch alle anderen Events nicht.

Delphi-Quellcode:

procedure Tfr1.tg1OleDrag(Sender: TObject;
  ARow, ACol: Integer; data: String; var Allow: Boolean);
begin
  inherited;
  Allow := ((ARow>0) and (ACol>0) and IsControlKeyPressed);
end;

procedure Tfr1.tg1OleDragStart(Sender: TObject;
  ARow, ACol: Integer);
begin
  inherited;
  ddsource := Sender;
end;

procedure Tfr1.tg1OleDragOver(Sender: TObject;
  ARow, ACol: Integer; var Allow: Boolean);
begin
  inherited;
  Allow := true; //(ddsource = Sender);
  if Allow then
  begin
    sb1.Panels[3].caption := Format('Row%d Col%d',[ARow, ACol]);
  end;{if}

end;

procedure Tfr1.tg1OleDragStop(Sender: TObject;
  OLEEffect: Integer);
begin
  inherited;
  ddsource := nil;
end;

procedure Tfr1.tg1OleDropCol(Sender: TObject;
  ARow, ACol, DropCol: Integer);
begin
  inherited;
  sb1.Panels[4].caption := Format('Row%d Col%d',[ARow, ACol]);
end;
hat jemand eine Idee?

Gruß Kostas
  Mit Zitat antworten Zitat