Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Problem bei Editcontrols von JvDBGrid / JvDBUltimGrid (https://www.delphipraxis.net/208181-problem-bei-editcontrols-von-jvdbgrid-jvdbultimgrid.html)

Ancaron 22. Jun 2021 10:49

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 : https://github.com/Ancaron/JVCL_DBGRID_EDITCONTROLS

Bodenseematze 5. Dez 2023 10:30

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...

Ancaron 6. Dez 2023 20:49

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:
procedure TJvDBGrid.MouseUp(Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
Das Ganze gibt es natürlich ohne Gewähr und Anspruch auf Richtigkeit, behob aber so weit ich weiß, bis heute mein Problem.

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;

Bodenseematze 7. Dez 2023 08:17

AW: Problem bei Editcontrols von JvDBGrid / JvDBUltimGrid
 
Zitat:

Zitat von Ancaron (Beitrag 1530506)
Sorry für die späte Antwort, bewege mich nicht jeden Tag im Forum.

Also die Frage habe ich am 05.12. gestellt, Deine Antwort kam am 06.12. - also viel schneller geht's eigentlich nicht :wink:

Zitat:

Zitat von Ancaron (Beitrag 1530506)
Ich hatte damals einen Fix für das Verhalten in die JVDbgrid.pas eingebaut

Den habe ich jetzt (ein wenig angepasst an die aktuelle Version) auch bei mir eingebaut - funktioniert auch bei mir :thumb:

So sieht's bei mir aus:
Delphi-Quellcode:
    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;
Das sollte man m.E. eigentlich als Bugfix / Code-Änderung bei JVCL selber einkippen, oder nicht?

Ancaron 7. Dez 2023 08:54

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 12:39 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