AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Drag&Drop mit TcxListBox und TcxTreeList

Ein Thema von Blubbel · begonnen am 3. Jul 2012 · letzter Beitrag vom 5. Jul 2012
Antwort Antwort
Seite 1 von 2  1 2      
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#1

Drag&Drop mit TcxListBox und TcxTreeList

  Alt 3. Jul 2012, 17:17
Delphi-Version: 5
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;
Miniaturansicht angehängter Grafiken
oberflaeche.png  

Geändert von Blubbel ( 3. Jul 2012 um 17:29 Uhr)
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Drag&Drop mit TcxListBox und TcxTreeList

  Alt 3. Jul 2012, 17:34
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.

Geändert von Blubbel ( 3. Jul 2012 um 17:38 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: Drag&Drop mit TcxListBox und TcxTreeList

  Alt 3. Jul 2012, 23:28
bei cx geht das etwas um die Ecke ala

TcxDragControlObject(Source).Control
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Drag&Drop mit TcxListBox und TcxTreeList

  Alt 4. Jul 2012, 09:33
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

Geändert von Blubbel ( 4. Jul 2012 um 09:36 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: Drag&Drop mit TcxListBox und TcxTreeList

  Alt 4. Jul 2012, 09:35
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;
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Drag&Drop mit TcxListBox und TcxTreeList

  Alt 4. Jul 2012, 09:40
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

Geändert von Blubbel ( 4. Jul 2012 um 09:47 Uhr)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#7

AW: Drag&Drop mit TcxListBox und TcxTreeList

  Alt 4. Jul 2012, 09:53
Blubbel: Der Wald. Die Bäume.

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* }
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#8

AW: Drag&Drop mit TcxListBox und TcxTreeList

  Alt 4. Jul 2012, 10:05
Ich geh jetzt sterben...
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#9

AW: Drag&Drop mit TcxListBox und TcxTreeList

  Alt 4. Jul 2012, 10:09
Sei nicht so theatralisch. Das hier reicht fürs erste:
  Mit Zitat antworten Zitat
Blubbel

Registriert seit: 6. Okt 2011
125 Beiträge
 
Delphi 2010 Professional
 
#10

AW: Drag&Drop mit TcxListBox und TcxTreeList

  Alt 4. Jul 2012, 10:53
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.

Geändert von Blubbel ( 4. Jul 2012 um 11:09 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 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