![]() |
Problem bei Editcontrols von JvDBGrid / JvDBUltimGrid
Hallo,
Bei der aktuellen Delphi Version 10.4.2 und der JVCL tritt bei mir momentan ein seltsames Problem auf. Versuche ich, die Editcontrol property zu benutzen, um das Bearbeiten in einem JvDBUltimGrid mit Hilfe eines DBEdits zu ermöglichen, gibt es Probleme beim aktivieren des Edits per Maus. Stehe ich auf der aktuellen Zelle und gehe mit "Enter" oder einer beliebigen Taste in den Editmodus ist alles OK. Versuche ich allerdings per Mausklick den Editmodus zu aktivieren, was in früheren Delphi Versionen immer funktioniert hat, so wird das DBEdit kurz in den Focus genommen, und es ist editierbar. Sobald allerdings die Maus losgelassen wird (meiner Fehlersuche nach sogar nach dem MouseUP erst), springt das Grid wieder aus dem Editmodus heraus und die Zelle ist wieder nur fokusiert, aber der Editor wird nicht angezeigt. Anbei ein kleines Beispiel mit dem Verhalten ohne Editcontrol in dem oberen Grid und mit Editcontrol im unteren. Eigentlich sollten sich doch beide gleich verhalten, oder? Beispiel unter : ![]() |
AW: Problem bei Editcontrols von JvDBGrid / JvDBUltimGrid
ich bin gerade über Deinen Beitrag gestolpert...
ich habe aktuell gerade das gleiche Problem - aber mit Delphi 7 (ich bin mir aber sicher, dass das schon funktioniert hatte)! Ich habe nur bei einer Spalte/Field ein EditControl gesetzt - die anderen stehen auf "Standard". Sobald ich in die entsprechende Grid-Spalte mit der Maus klicke, wird an dieser Stelle das EditControl (ein TDBMemo) angezeigt - aber nur so lange, wie ich den Mausbutton gedrückt halte; sobald ich die Taste loslasse, schließt sich das EditControl wieder. Komischerweise kann ich aktuell auch nicht per TAB-Taste innerhalb einer Zeile von Spalten-Edit zu Spalten-Edit springen - bei einem Tab schließt sich auch immer die Editierung der letzten Spalte, aber die neue öffnet sich nicht... Hast Du damals die Ursache / eine Lösung für das Problem gefunden? Ich vermute, dass es entweder eine Einstellung am TJvDBGrid ist oder in einem der Event-Methoden etwas "schädliches" gemacht wird... |
AW: Problem bei Editcontrols von JvDBGrid / JvDBUltimGrid
Sorry für die späte Antwort, bewege mich nicht jeden Tag im Forum.
Ich hatte damals einen Fix für das Verhalten in die JVDbgrid.pas eingebaut innerhalb der
Code:
Das Ganze gibt es natürlich ohne Gewähr und Anspruch auf Richtigkeit, behob aber so weit ich weiß, bis heute mein Problem.
procedure TJvDBGrid.MouseUp(Button: TMouseButton; Shift: TShiftState;
X, Y: Integer); Hier mal die von mir geänderten Zeilen mit dem herumliegenden Code
Code:
if (Button = mbLeft) and (FGridState = gsColSizing) then
begin ALeftCol := LeftCol; inherited MouseUp(Button, Shift, X, Y); if (dgRowSelect in Options) then LeftCol := ALeftCol; if Assigned(OnColumnResized) then OnColumnResized(Self, FSizingIndex + Byte(not (dgIndicator in Options)) - 1, ColWidths[FSizingIndex]); end else begin inherited MouseUp(Button, Shift, X, Y); // JM 12.08.2021 // Nur bei dgRowSelect das HSCROLL absetzen, da ansonsten das aktive EditControl ein Exit-Ereigniss bekommt, // und direkt wieder verschwindet, wenn man das Grid mit der Maus in den EditModus versetzt. if (dgRowSelect in Options) then begin // JM 12.08.2021 ende OriginalScrollInfo.cbSize := SizeOf(OriginalScrollInfo); OriginalScrollInfo.fMask := SIF_POS; // Store scrollbar position GetScrollInfo(Handle, SB_HORZ, OriginalScrollInfo); // LockWindowUpdate(Handle); try Perform(WM_HSCROLL, MakeWParam(SB_THUMBPOSITION, OriginalScrollInfo.nPos), 0); //Repos finally LockWindowUpdate(0); end; end; // JM 12.08.2021 end; |
AW: Problem bei Editcontrols von JvDBGrid / JvDBUltimGrid
Zitat:
Zitat:
So sieht's bei mir aus:
Delphi-Quellcode:
Das sollte man m.E. eigentlich als Bugfix / Code-Änderung bei JVCL selber einkippen, oder nicht?
if ( dgRowSelect in Options ) then begin //ADDED
OriginalScrollInfo.cbSize := SizeOf(OriginalScrollInfo); OriginalScrollInfo.fMask := SIF_POS; // Store scrollbar position GetScrollInfo(Handle, SB_HORZ, OriginalScrollInfo); // end; //ADDED LockWindowUpdate(Handle); try inherited MouseUp(Button, Shift, X, Y); if ( dgRowSelect in Options ) then begin //ADDED Perform(WM_HSCROLL, MakeWParam(SB_THUMBPOSITION, OriginalScrollInfo.nPos), 0); //Repos end; //ADDED finally LockWindowUpdate(0); end; |
AW: Problem bei Editcontrols von JvDBGrid / JvDBUltimGrid
Bin in dieser Geschichte nicht so aktiv. Wenn du weißt wie, gerne machen von mir aus :D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 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