AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid: TitleClick Problem

Ein Thema von dinosaur · begonnen am 2. Dez 2010 · letzter Beitrag vom 31. Jan 2011
Antwort Antwort
dinosaur

Registriert seit: 6. Dez 2004
16 Beiträge
 
#1

DBGrid: TitleClick Problem

  Alt 2. Dez 2010, 13:36
Delphi-Version: 2010
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?
Angehängte Dateien
Dateityp: zip test.zip (5,0 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.387 Beiträge
 
Delphi 12 Athens
 
#2

AW: DBGrid: TitleClick Problem

  Alt 2. Dez 2010, 16:35
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
  Mit Zitat antworten Zitat
dinosaur

Registriert seit: 6. Dez 2004
16 Beiträge
 
#3

AW: DBGrid: TitleClick Problem

  Alt 31. Jan 2011, 15:25
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;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:36 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