Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Drag&Drop mit TcxListBox und TcxTreeList (https://www.delphipraxis.net/169175-drag-drop-mit-tcxlistbox-und-tcxtreelist.html)

Blubbel 3. Jul 2012 16:17

Delphi-Version: 5

Drag&Drop mit TcxListBox und TcxTreeList
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Leute,

nach langer Zeit habe ich wieder ein Problem:

Ich habe eine ListBox, in der Nummern geäddet werden. Im TreeView habe ich Gruppen. Die Nummern sollen den Gruppen mit Drag&Drop zugewiesen werden. Irgendwie geht hier aber mein Code nicht richtig. Also ich kann die Nummern markieren aber mehr auch nicht.

kurz gesagt: Es passiert einfach gar nichts.

Danke schon mal für eure Hilfe/Tipps/Anregungen

Liebe Grüße Blubbel

im anhang ein bild von der oberfläche damti ihrs euch besser vorstellen könnt.

Delphi-Quellcode:
procedure TForm6.cxtrvw1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
var
  lSource: string;
  i: Integer;
  lNumber: TNumber;
  lGroup: TGroup;
  lNode: TTreeNode;
begin
  Accept := false;

  if Assigned(Source) then
  begin
    lSource := string(Source.ClassName);
    if (Source is TcxListBox) then
    begin
      i := TcxListBox(Source).ItemIndex;

      if (i >= 0) then
      begin
        lNumber := TNumber(TcxListBox(Source).Items.Objects[i]);

        if Assigned(lNumber) then
        begin
          lNode := TcxTreeView(Sender).GetNodeAt(x, y);

          if Assigned(lNode) then
          begin

            case State of
              dsDragEnter, dsDragMove:
              begin
                Accept := not Self.IsObjectInGroup(lNode, lNumber);
              end;

              dsDragLeave:
              begin
                if not Self.IsObjectInGroup(lNode, lNumber) then
                begin
                  TcxTreeView(Sender).Items.AddChildObject(lNode, lNumber.UID, lNumber);
                  Accept := True;

                end;
              end;
            end;
          end else
          if (Source is TcxTreeView) then
          begin
             //Hierran liegts nicht... Das Problem muss oberhalb des Else-Falles sein
          end;
        end;
      end;
    end;
  end;
end;

Blubbel 3. Jul 2012 16:34

AW: Drag&Drop mit TcxListBox und TcxTreeList
 
Ok ein Problem gelöst. Habe vergessen DragMode auch Automatisch zu setzen.

Jetzt zeigt er mir ja aber noch an, dass sich die Nummer schon in dieser einen Gruppe befindet, obwohl da noch nichts drin steht.

ich werde mir mal meine Hilfsfunktionen angucken, ggbf euch zur Verfügung stellen.

Wenn cihs nun Durchsteppe geht schon die 2. If-Abfrage schief.

Bummi 3. Jul 2012 22:28

AW: Drag&Drop mit TcxListBox und TcxTreeList
 
bei cx geht das etwas um die Ecke ala

TcxDragControlObject(Source).Control

Blubbel 4. Jul 2012 08:33

AW: Drag&Drop mit TcxListBox und TcxTreeList
 
Soweit so gut. nun bekomme ich in der Zeile darunter eine Fehlermeldung

Zitat:

Im Projekt *.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 0087A5A6 in Modul '*.exe'. Lesen von Adresse 00000000' aufgetreten.
Delphi-Quellcode:
if Assigned(Source) then
  begin
    lSource := string(Source.ClassName);
    if (Source is TcxDragControlObject) and (TcxDragControlObject(Source).Control is TcxListBox) then //hier geändert
    begin
      i := TcxListBox(Source).ItemIndex;  //hier bekomme ich eine Fehler meldung

      if (i >= 0) then
      begin
ok, hab im Code jetzt Statt
Delphi-Quellcode:
 lSource := string(Source.ClassName);
    if (Source is TcxDragControlObject) and (TcxDragControlObject(Source).Control is TcxListBox) then //hier geändert
das hier daraud gemacht
Delphi-Quellcode:
 lSource := string(Source.ClassName);
    if (Source is TcxDragControlObject) and (TcxDragControlObject(Source).Control is TcxTreeView) then //hier geändert
funktioniert soweit, dass es keine fehlermeldung gibt. Er zeigt mir noch immer an, dass die Nummer schon in der Gruppe ist. Ich werd ma gucken was ich selber herausbekommen kann. Freue mich trotzdem auf Vorschläge ;)

Furtbichler 4. Jul 2012 08:35

AW: Drag&Drop mit TcxListBox und TcxTreeList
 
Du siehst den Wald nicht mehr ;-)
Delphi-Quellcode:
if (Source is TcxDragControlObject) and (TcxDragControlObject(Source).Control is TcxListBox) then
    begin
      TheListBox := TcxListBox(TcxDragControlObject(Source).Control);
      i := TheListBox.ItemIndex;

Blubbel 4. Jul 2012 08:40

AW: Drag&Drop mit TcxListBox und TcxTreeList
 
Danke!! Jetzt meckert er weiter ich schau mal was ich tun kann... wenn ich gar nicht mehr weiter weiß schrei ich ganz laut ;)

Hier ist der Schrei!!!
Delphi-Quellcode:
  if Assigned(Source) then
  begin
    lSource := string(Source.ClassName);
    if (Source is TcxDragControlObject) and (TcxDragControlObject(Source).Control is TcxListBox) then //hier geändert
    begin
      lst1 := TcxListBox(TcxDragControlObject(Source).Control); //Hier auch geändert
      i := lst1.ItemIndex;

      if (i >= 0) then
      begin
        lNumber := TphCSNumber(TcxListBox(Source).Items.Objects[i]); //Fehlermeldung
        {Im Projekt *.exe ist eine Exception der Klasse EAccessViolation mit der Meldung
        'Zugriffsverletzung bei Adresse 0087A5DE in Modul '*.exe'. Lesen von Adresse 00000280' aufgetreten}
        if Assigned(lNumber) then
        begin

Furtbichler 4. Jul 2012 08:53

AW: Drag&Drop mit TcxListBox und TcxTreeList
 
Blubbel: Der Wald. Die Bäume. :-D

Delphi-Quellcode:
// So geht also der Zugriff auf die Listbox
lst1 := TcxListBox(TcxDragControlObject(Source).Control);
i := lst1.ItemIndex;
if (i >= 0) then begin
  lNumber := TphCSNumber(TcxListBox(Source).Items.Objects[i]); //Fehlermeldung
{ Wie geht nochmal der Zugriff auf die Listbox? *Mitdenfingernaufdemtischtrommel* }

Blubbel 4. Jul 2012 09:05

AW: Drag&Drop mit TcxListBox und TcxTreeList
 
Ich geh jetzt sterben...

Furtbichler 4. Jul 2012 09:09

AW: Drag&Drop mit TcxListBox und TcxTreeList
 
Sei nicht so theatralisch. Das hier reicht fürs erste:
:wall:

Blubbel 4. Jul 2012 09:53

AW: Drag&Drop mit TcxListBox und TcxTreeList
 
Egal wie ich es hindrehe und verändere es kommt immer an der selben Stelle eine Fehlermeldung...

Ich übersehe mit Sicherheit nur eine klitze kleine Kleinigkeit...?

Sry, dass ich so nerve aber irgendwie will das alles einfach nicht, zumal ich mit den Tcx-Komponenten noch nie gearbeitet hab.

Nun hab ichs... das Assigned(lNumber) gibt mir jetzt ein false zurück. Mal gucken ob ich es hinbekomme.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:52 Uhr.
Seite 1 von 2  1 2      

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