![]() |
DevExpress Grid: Selection
Hallöle...:P
Ich habe ein Grid mit MultiSelect. Ich möchte die Datensätze mit CTRL und/oder SHIFT markieren... soweit so gut. :P Einschränkung: Manche Datensätze dürfen nicht markiert werden! Im OnCanSelectRecord wird AAllow entsprechend der Bedingung auf False gesetzt. Auch gut... Aber: Mit SHIFT werden, trotz AAllow = False, alle Datensätze markiert? :gruebel: Hat jemand eine Idee? Danke...8-) |
AW: DevExpress Grid: Selection
Hallo,
ich mache erst seit ein paar Tagen etwas mit TcxGrid, daher nur ein paar Fragen, mit denen du dein Problem evtl. einkreisen könntest:
|
AW: DevExpress Grid: Selection
Danke...:P
Zitat:
Zitat:
Zitat:
|
AW: DevExpress Grid: Selection
Na ja, so ganz ohne Testprojekt wirst nicht davonkommen: hab mir mal ein sehr einfaches gebaut und siehe da: Auch bei Markierung mit Shift ist der spezielle Record nicht selektiert.
Was hab ich gemacht: TableView mit OptionsSelection.CellSelect = False OptionsSelection.MultiSelect = True Selektierst Du über irgendwelche Gruppierungen hinweg? Wenn ja, könnte der OnCanSelectRecord dann eventuell mit dem falschen Datensatz arbeiten? |
AW: DevExpress Grid: Selection
Moin zusammen,
ich habe gerade das selbe Problem wie der Threadersteller und habe einmal gedebuggt, aber erst einmal kurz der Aufbau des Testprojekts: Ich habe ein TcxGrid und eine TcxGridDBTableView. Die Daten kommen über ein TADODataSet. Meine Options der TableView sind die gleichen wie von ULIK. Problembeschreibung: Im Grid stehen drei Datensätze, einer davon müsste nach dem OnCanSelectRecord herausfallen, auf Grund folgender Bedingung...
Delphi-Quellcode:
... und folgender Datenbasis
if qTest.FieldByName('TEST_ANZAHL').AsInteger < 1 then
begin AAllow := False; end;
Wird jetzt der oberste Satz angeklickt, funktioniert die Selektion. Ebenso bei Datensatz 2 und beim letzten nicht, da die Bedingung das ausschließt. Wählst du aber über STRG + SHIFT + Klick eine Datenmenge aus, dann gehst du so oft durch das OnCanSelectRecord-Event wie du Datensätze zusätzlich zum aktuellen Fokus ausgewählt hast. Soll heißen, wenn Datensatz 1 den Fokus hat und du wählst alle aus, dann läufst du für ID 2 und 3 nochmal durch das Event. Jetzt kommt aber der Gag an dem Ganzen: In meinem Fall ändert sich natürlich nicht der Satz im DataSet, sondern der steht in beiden Durchläufen auf ID 3. Würde es also einen Datensatz 4 geben, der die If-Bedingung erfüllt, dann würde Datensatz 3 selektiert werden. Ich hoffe das war so erstmal verständlich. Wenn du keine DB-Anbindung hast, musst du sonst nochmal genauer schildern was du alles hast. Bin relativ fit mit DevExpress, nutze ich nämlich täglich, da lernt man dann das ein oder andere. ;-) LG Jan PS.: Ich habe keine Ahnung wie ich die Tabelle hübsch gestalten kann. Verzeiht mir. |
AW: DevExpress Grid: Selection
Liste der Anhänge anzeigen (Anzahl: 1)
Moin...:P
Das ist die Lösung. :P Aber verstehen muß ich das nicht... Zitat DevExpress:
Delphi-Quellcode:
Bild: Selection mit SHIFT
procedure <AForm>.<AcxGridDBTableView>CanSelectRecord(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; var AAllow: Boolean);
var AView: TcxGridDBTableView; AColumn: TcxGridDBColumn; begin AView := TcxGridDBTableView(Sender); AColumn := AView.GetColumnByFieldName(<AFieldName>); AAllow := ARecord.Values[AColumn.Index] < 0; // Werteermittlung für den Vergleich aus dem Record end; |
AW: DevExpress Grid: Selection
Moin.
Die Frage ist ja jetzt was du genau stehen hattest, dass es nicht funktioniert. In deinem Sample ist es so, dass der Record anders als zum DataSet sich in den Durchläufen ändert. Über den Index deiner Spalte kannst du dann auf den jeweiligen Wert innerhalb des Records zugreifen und diesen prüfen. LG Jan |
AW: DevExpress Grid: Selection
Hallo zusammen,
aus der Ticket-Beschreibung bei DevExpress würde ich tippen, dass die Abfrage auf "EditValue" nicht korrekt ist. Nur so aus dem Kopf, da ich gerade kein cxGrid vor mir habe. :stupid: |
AW: DevExpress Grid: Selection
Moin...:P
Der Ursprungscode:
Delphi-Quellcode:
procedure TfoAssignment.GridDBTableViewCanSelectRecord(Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; var AAllow: Boolean);
var View: TcxGridDBTableView; begin View := TcxGridDBTableView(Sender); AAllow := ContainsText(View.GetColumnByFieldName('ixBELArt').EditValue, conAllowedDocumentType); // nicht bei SHIFT!!!! end; |
AW: DevExpress Grid: Selection
Also die View ist jedes Mal wo du da reinkommst identisch, ebenso die Spalte. Den Wert liest du dann aber eben nicht aus dem aktuellen Record, sondern dieser wird immer den Wert der in dem angeklickten Datensatz steht. Somit läufst du x-Mal dadurch und schaust jedoch immer auf den selben Wert.
So würde ich mir das ohne es gedebuggt zu haben mal erschließen. ^^ LG Jan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:58 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-2025 by Thomas Breitkreuz