![]() |
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; |
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. |
AW: Drag&Drop mit TcxListBox und TcxTreeList
bei cx geht das etwas um die Ecke ala
TcxDragControlObject(Source).Control |
AW: Drag&Drop mit TcxListBox und TcxTreeList
Soweit so gut. nun bekomme ich in der Zeile darunter eine Fehlermeldung
Zitat:
Delphi-Quellcode:
ok, hab im Code jetzt Statt
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
Delphi-Quellcode:
das hier daraud gemacht
lSource := string(Source.ClassName);
if (Source is TcxDragControlObject) and (TcxDragControlObject(Source).Control is TcxListBox) then //hier geändert
Delphi-Quellcode:
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 ;)
lSource := string(Source.ClassName);
if (Source is TcxDragControlObject) and (TcxDragControlObject(Source).Control is TcxTreeView) then //hier geändert |
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; |
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 |
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* } |
AW: Drag&Drop mit TcxListBox und TcxTreeList
Ich geh jetzt sterben...
|
AW: Drag&Drop mit TcxListBox und TcxTreeList
Sei nicht so theatralisch. Das hier reicht fürs erste:
:wall: |
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 21:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz