![]() |
Delphi-Version: 2010
DBGrid: TitleClick Problem
Liste der Anhänge anzeigen (Anzahl: 1)
In unseren DBGrids gibt es in bestimmten spalten eine Auswahlmöglichkeit: Durch Doppelklick auf das Feld wird ein modales Fenster geöffnet in welchem der gewünschte Eintrag gesucht und ausgewählt werden kann. Mit einem Doppelklick auf dem gewünschten Eintrag wird das Fenster geschlossen. nun Haben wird aber ein interessantes Phänomen festgestellt: Wenn beim Doppelklick im PopupFenster der Cursor per zufall genau an der Position der Spaltenheader des darunterliegenden DBGrids ist, so wird der EventTitleClick ausgelöst..
Was ich genau meine sieht man wenn man das demoprojekt im Anhang ausführt (Auf Button klicken und auf der erscheinenden Form Doppelklicken) Hat einer eine Idee wie man dieses Verhalten unterbinden könnte? |
AW: DBGrid: TitleClick Problem
Hallo...
eine Lösung dafür gibt es nicht. Das Problem ist bekannt. Der Effekt tritt auch bei modalen Fenstern auf, nicht nur bei PopUp´s. Workaround: das Popup immer relativ zum darunter liegendem Fenster öffen so daß es immer aus der Schußweite des Titels liegt. Wenn ein User dann das Popupn / Fenster über den Titel verfrachtet ist das einfach Pech :zwinker: |
AW: DBGrid: TitleClick Problem
noch ne kurze Rückmeldung mit der Lösung.. evtl. stört dieses Problem ja noch jemanden anderen :)
Delphi-Quellcode:
TMyGrid = class(TDBGrid)
private FMouseWasDown: Boolean; FColumnMoved: Boolean; protected procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; procedure ColumnMoved(FromIndex, ToIndex: Longint); override; procedure TitleClick(Column: TColumn); override; end; procedure TMyGrid.ColumnMoved(FromIndex, ToIndex: Integer); begin FColumnMoved := True; inherited; end; procedure TMyGrid.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin FMouseWasDown := true; FColumnMoved := false; inherited; end; procedure TMyGrid.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin try inherited; finally FMouseWasDown := false; end; end; procedure TMyGrid.TitleClick(Column: TColumn); begin if FMouseWasDown and (not FColumnMoved) then begin inherited; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 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