AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

DBGrid Zeilen Wechsel

Ein Thema von Andidreas · begonnen am 6. Dez 2013 · letzter Beitrag vom 9. Dez 2013
Antwort Antwort
Seite 1 von 3  1 23   
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

DBGrid Zeilen Wechsel

  Alt 6. Dez 2013, 12:56
Datenbank: SQLite • Version: ... • Zugriff über: UniDac
Hallo,

in meinem DBGrid bekomm ich ja über die Ereignisse OnCellClick, OnKeyUp, OnMouseWheel mit ob sich die Zeile gewechselt hat...

Wenn jetzt aber ein User auf die ganz Linke Spalte klickt (wo keine Daten drin stehn [siehe Bild]) bekomm ich es nicht mit das sich die Zeile geändert hat...
Kann man das irgendwie abfangen, geht das über das TDBGrid oder muss ich von dem hinterlegtn Datasource oder Query ein Ereignis nehmen?
Miniaturansicht angehängter Grafiken
linkespalte.jpg  
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
664 Beiträge
 
Delphi 12 Athens
 
#2

AW: DBGrid Zeilen Wechsel

  Alt 6. Dez 2013, 13:04
oder muss ich von dem hinterlegtn Datasource oder Query ein Ereignis nehmen?
Ja, das wäre besser. Dafür nimmt man das OnAfterScroll des Query bzw. Table.

Dann ist es auch egal, wie der Benutzer die Zeile wechselt (Mausklick, Mauswheel, Tastatur).
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: DBGrid Zeilen Wechsel

  Alt 6. Dez 2013, 13:09
Ok, den Klick auf den linken Rand des DBGrids bekomm ich dann auch mit?
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: DBGrid Zeilen Wechsel

  Alt 6. Dez 2013, 13:33
Ok, den Klick auf den linken Rand des DBGrids bekomm ich dann auch mit?
AfterScroll bedeutet "nach dem Scrollen", Scroll bedeutet Bildlauf und rührt vom früher gebräuchlichen Drehen der Buchrolle bei antiken Büchern, die aufgerollt waren, her. Das Wechseln des Datensatzes (Scrolling, auch bekannt als Ändern des Datensatz-Zeigers) löst das Ereignis AfterScroll aus. Dabei ist es völlig egal, wie der Scrollvorgang ausgelöst wurde. Wenn der genannte Klick also zu einem Scrolling führt, dann wird AfterScroll ausgelöst.
  Mit Zitat antworten Zitat
PMM

Registriert seit: 17. Feb 2005
101 Beiträge
 
#5

AW: DBGrid Zeilen Wechsel

  Alt 6. Dez 2013, 14:14
Aber Vorsicht, bei OnScroll ist es, wie Perlsau sagte "völlig egal, wie der Scrollvorgang ausgelöst wurde". Die müssen somit gar nicht vom DBGrid kommen und das war eigentlich das was Andidreas wollte....
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#6

AW: DBGrid Zeilen Wechsel

  Alt 6. Dez 2013, 16:05
1. Da beim Klick auf die linke äußere Spalte, die gewöhnlich als Indikator für den Datensatzzeiger dient, offenbar kein OnClick-Ereignis auslöst, muß man zwangsläufig mit der Datenquelle arbeiten. @Andidreas: Überprüfe doch mal, ob nicht vielleicht ein OnChange oder was Ähnliches ausgelöst wird. Wäre meiner Ansicht aber dennoch der falsche Weg.

2. Wenn irgend eine andere Komponente einen Wechsel des Datensatz-Zeigers auslöst, wird das auch im DBGrid zu sehen sein, denn das reagiert ja darauf. Es ist Sache des Entwicklers, zu verhindern, daß andere Komponenten einen Datensatzwechsel durchführen, wenn das nicht gewünscht ist.

3. Will man dafür sorgen, daß bestimmte Befehle nur dann abgearbeitet werden, wenn der Datensatzwechsel vom DBGrid ausgelöst wurde, prüft man in der Ereignisbehandlung – was ich für richtiger halte – einfach auf DBGrid.Focused.
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#7

AW: DBGrid Zeilen Wechsel

  Alt 9. Dez 2013, 10:47
Das Problem habe ich gerade in einer DLL...
Die Query Komponente habe ich hier nicht auf der Form liegen, sondern die Komponente wird beim Start der DLL erstellt...

Code:
Delphi-Quellcode:
    If SQLiteFileConnection.Connected Then
    Begin
      SQLiteFile_Query1 := TUniQuery.Create(nil);
      SQLiteFile_Query1.Connection := SQLiteFileConnection;
      SQLiteFile_DisplayCommissions := TUniQuery.Create(nil);
      SQLiteFile_DisplayCommissions.Connection := SQLiteFileConnection;
    End;
Wie kann ich hier auf dieses Ereignis Abfragen?
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

AW: DBGrid Zeilen Wechsel

  Alt 9. Dez 2013, 11:19
Das Problem habe ich gerade in einer DLL...
Die Query Komponente habe ich hier nicht auf der Form liegen, sondern die Komponente wird beim Start der DLL erstellt...
Du weisst aber dass eine normale DLL keine objektorientierte Schnittstelle hat?!
Deshalb kann man Delphi-Events nicht über eine DLL-Grenze transportieren.
(Man kan evtl. schon, aber mit so hohem Aufwand und hässlichem Rumgemache dass es keinen Sinn ergibt)

Eine Anwendung besteht aus Code der sich häufig ändert (die Businesslogik) und Code der sich fast nie ändert (z.B. irgendwelche Bibliotheken).
Einer der größten Fehler den man in Delphi machen kann ist die Businesslogik aufzutrennen und in Exe und DLLs zu splitten.
In C# sieht das ganz anderst aus, aber in Delphi wird man damit nicht glücklich.

Ich versuch das mal mit einer Analogie zu verdeutlichen:
Stell dir vor du hast eine Elektronikplatine mit vielen Bauteilen und sägst sie mitten auseinander.
Die beiden Teilplatinen werden nun durch einzelne dünne Kabel mit 1 Meter Länge verbunden.
Ok, die Gesamtelektronik funktioniert noch ist aber viel teurer geworden.
Jetzt soll die elektronische Schaltung erweitert werden und so werden die vielen Leitungsverbindungen zur echten Falle.

Und jetzt vergleiche das mal mit einem PC-Motherboard und ihren PCI-Steckplätzen.
Die PCI-Schnittstelle ist genormt und nur deshalb funktioniert das Stecksystem.

Und daher: niemals die Businesslogik auseinandereisen wenn es nicht von der Programmiersprache perfekt unterstützt wird oder grundsätzlich eine Multi-Tier-Anwendung entstehen soll.
fork me on Github

Geändert von sx2008 ( 9. Dez 2013 um 11:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Andidreas
Andidreas

Registriert seit: 27. Okt 2005
1.110 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: DBGrid Zeilen Wechsel

  Alt 9. Dez 2013, 11:30
Ich weiß nicht ob ich das richtig rübergebracht habe...

Ich möchte nicht das Event von einer Exe in eine DLL transportieren!
Ich habe eine DLL die eine komplette eigenständige Funktion abdeckt... nehmen wir als Beispiel eine User Verwaltung für eine Software...
D.h. Ich hole mir in der DLL die Daten, zeige sie an und möchte sie dort auch verändern können...

Damit ich jetzt genau weiß auf welchem User ich sitze möchte ich das AfterScroll Ereigniss verwenden...

Die Query Komponente erstelle ich deshalb dynamisch, da die diversen DB Verbindungen von der Exe an die DLL mit übergeben werden!
Ein Programmierer Programmiert durchschnittlich 15 Code Zeilen pro Tag
Wir sind hier doch nicht bei SAP!!!

Aber wir habens bald
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: DBGrid Zeilen Wechsel

  Alt 9. Dez 2013, 11:34
Du musst das Event einfach nur zuweisen ADataset.AfterScroll := xxprocedure und die Procedure dann schreiben xxprocedure(Sender : TDataset)
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:37 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