Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi cxGrid und DropMaster (https://www.delphipraxis.net/45643-cxgrid-und-dropmaster.html)

beber 9. Mai 2005 23:57


cxGrid und DropMaster
 
Hallo zusammen,

ich versuche aus einem cxGrid (von DevExpress) einen Record mittels der DropMaster Komponenten rauszuziehen. Klappt soweit einwandfrei. Allerdings das problem was ich habe ist, das sobald ich auf einen record klicke, den nodrop mauszeiger bekomme. D.h. ich habe nicht den kleinen freiraum, wie wenn ich BeginDrag benutze.
Es klappt allerdings einwandfrei, wenn ich die IF-Schleifen in anderer Reihenfolge aufrufe, allerdings zerschiesst sich dann das grid, wenn ich auf einen Column Header klick. (Bedeutet, das ich den Header sofort an dem Zeiger heften habe, wie wenn ich ihn drag'n wuerde)

Wuerde mich sehr freuen, wenn mir einer helfen wurde, das kleine aber nervige problem zu loesen.


Delphi-Quellcode:
// sobald ich die reihenfolge aendere, reagiert das grid im header falsch
if AHitTest.HitTestCode = htCell then // Record is being dragged
begin
 if Windows.DragDetect(Handle, ClientToScreen(POINT(X, Y))) then
 begin


Delphi-Quellcode:
// das ist der drag versuch, an dem ich verzweifel.
procedure TForm1.cxGrid1DBTableView1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  AHitTest: TcxCustomGridHitTest;
  tempwinctrl:TWinControl;
begin
ClickPoint := Point(X, Y);
AHitTest := (Sender as TcxGridSite).GridView.ViewInfo.GetHitTest(ClickPoint);

if AHitTest.HitTestCode = htCell then // Record is being dragged
begin
 if Windows.DragDetect(Handle, ClientToScreen(POINT(X, Y))) then
 begin
          // hier bereite ich die drag compo vor
          tempwinctrl := DMTextTarget1.AcceptorControl;
          DMTextTarget1.AcceptorControl := nil;
          curtitle := DM1.DSLinks.DataSet.FieldByName('LinkName').AsString;
          curlink := DM1.DSLinks.DataSet.FieldByName('LinkAdr').AsString;
          DMTextSource1.CustomFormatData.Clear;
          DMTextSource1.CustomFormatData.AddFormat(IntToStr(CF_TEXT), curlink);
          DMTextSource1.CustomFormatData.AddFormat('FileGroupDescriptor', makeFGDFromURLTitle(curtitle+'.URL'));
          DMTextSource1.CustomFormatData.AddFormat('FileContents', GetFileContents);
          DMTextSource1.CustomFormatData.Items[DMTextSource1.CustomFormatData.Count-1].AllowTrailingNull := false;
          DMTextSource1.CustomFormatData.AddFormat('UniformResourceLocator', curlink);
          //if Windows.DragDetect(Handle, ClientToScreen(POINT(X, Y))) then
           DMTextSource1.Execute;
          DMTextTarget1.AcceptorControl := tempwinctrl;
  end;
 end;  
end;


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