Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi (TDBGrid) - Klick auf den indicator abfangen? (https://www.delphipraxis.net/36598-tdbgrid-klick-auf-den-indicator-abfangen.html)

100nF 22. Dez 2004 13:09


(TDBGrid) - Klick auf den indicator abfangen?
 
hallo zusammen,

ich habe eine kleine aber wichtige frage: wie kann ich einen klick auf den indicator eines DBGrids abfangen, das heillt, sobald ich auf den indicator klicke, muss eine procedure ausgeführt werden. wichtig ist auch, dass die zeile, bei der auf den indicator geklickt wurde, zur aktuellen zeile wird, und auch der datensatz.

ich denke das ist nicht sehr schwierig, aber ich habe noch nichts darüber gefunden.

schon mal danke im voraus, ich hoffe ihr könnt mir helfen

Albi 22. Dez 2004 13:59

Re: (TDBGrid) - Klick auf den indicator abfangen?
 
Hallo,

wenn ich das richtig verstanden habe, dann soll der aktuelle DS makiert und eine Aktion ausgeführt werden.

Dann setze im OP einfach die Option alwayShowSelection auf true, so wird die gesamte Zeile makiert und im onClick- o.onDBClick-Ereignis kannst du die gewünschte Aktion ausführen.

Durch den Click auf den Datensatz im DBGrid wird der Datensatzzeiger automatisch auf den aktuellen DS gesetzt. Darum brauchst Du dich also nicht kümmern.

100nF 22. Dez 2004 14:03

Re: (TDBGrid) - Klick auf den indicator abfangen?
 
ok, das hab ich
aber wie kann ich jetzt einen klick auf den indicator abfangen?

eddy 22. Dez 2004 14:11

Re: (TDBGrid) - Klick auf den indicator abfangen?
 
Hallo urbanbruhin,

ich nehme an, daß Du die linke graue Spalte als "indicator" bezeichnest.

Auf "OnMouseDown" reagiert - wie's aussieht - das Standard-TDBGrid nicht. Im TRxDBGrid hingegen kann man eine Auswertung vornehmen.

Code:
procedure TFAllgUP2.dbg201MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if x < 20 then begin
    // gezielte Reaktion auf die Position des Mauszeigers
  end;
end;
mfg
eddy

100nF 22. Dez 2004 14:25

Re: (TDBGrid) - Klick auf den indicator abfangen?
 
also das fuktioniert nicht

eddy 22. Dez 2004 14:49

Re: (TDBGrid) - Klick auf den indicator abfangen?
 
Hallo urbanbruhin,

Du mußt Dir schon die Mühe machen und zuvor einer Version von "RX Library 2.75" zu installieren.

Getestet und funktionsfähig mit TRxDBGrid

Code:
procedure TForm1.dbg1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  BotStat00.Caption := 'X/Y=' + IntToStr(x) + '/' + IntToStr(y);
end;

procedure TForm1.dbg1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  if x < 11 then begin
    if Button = mbLeft then begin  //, mbRight, mbMiddle
      ShowMessage('Linke Maustaste am linken Rand gedrückt');
    end;
  end;
end;
mfg
eddy

100nF 22. Dez 2004 15:04

Re: (TDBGrid) - Klick auf den indicator abfangen?
 
aber das ist ja das selbe wie das von vorher: wenn der cursor soviel x hat, passierts

gibt es keine andere möglichkeit?

Zitat:

Du mußt Dir schon die Mühe machen und zuvor einer Version von "RX Library 2.75" zu installieren.
was ist gut an diesem teil?

eddy 22. Dez 2004 15:27

Re: (TDBGrid) - Klick auf den indicator abfangen?
 
Hallo urbanbruhin,

ganz einfach: damit funktioniert es!!!

Habe ich aber oben schon geschrieben:
Zitat:

Auf "OnMouseDown" reagiert - wie's aussieht - das Standard-TDBGrid nicht. Im TRxDBGrid hingegen kann man eine Auswertung vornehmen.
Du kannst natürlich auch eine eigene DBGrid-Komponente aus der Standard-Version herleiten und entsprechend verbessern, zumindest theoretisch.


mfg
eddy

100nF 22. Dez 2004 15:30

Re: (TDBGrid) - Klick auf den indicator abfangen?
 
und dieser neue dbgrid kann ich auch einfach mit einem TDataSource verbinden?

wenn ja: wüsstest du gerade, wo man dieses "teil" downloaden kann?
wenn nein: dann nützt es mir nichts

Sharky 22. Dez 2004 15:46

Re: (TDBGrid) - Klick auf den indicator abfangen?
 
Zitat:

Zitat von urbanbruhin
...wenn ja: wüsstest du gerade, wo man dieses "teil" downloaden kann?....

Hai urbanbruhin,

TRxDBGrid ist bestandteil der RxTools. Da diese jedoch nicht weiterentwickelt werden empfehle ich dir eher die JVCL. Meines wissens wurden dort die Komponenten der RxTools eingebaut.

100nF 22. Dez 2004 15:50

Re: (TDBGrid) - Klick auf den indicator abfangen?
 
ok, ich werde es mal herunterladen

vielen dank schon mal

grayfox 23. Dez 2004 16:07

Re: (TDBGrid) - Klick auf den indicator abfangen?
 
hallo urbanruhin!

so ganz kann ich dein problem nicht verstehen...
sobald du auf den indicator klickst, machst du diesen datensatz zum aktuellen.

und die procedure, welche du starten willst, rufst du entweder im 'BeforeScrollEvent'
oder im 'AfterScrollEvent' des hinter dem DBGrid liegenden DataSets auf, je nachdem,
ob sie vor oder nach dem datensatzwechsel ausgeführt werden soll.

mfg, stefan

100nF 23. Dez 2004 16:58

Re: (TDBGrid) - Klick auf den indicator abfangen?
 
alsooo...

ich bastele ein mp3player. das archiv ist ein tdbgrid, dort sind alle tracks aufgelistet. wenn ich ein doppelklick auf ein track mache, wandert die datei in die abspielliste.
soweit sogut

um aber die datei anzuhören (preview), ohne dass sie in die abspielliste wandert, müsste man auf den indicator dieses tracks klicken.

ich hoffe du hast es verstanden...

grayfox 23. Dez 2004 19:19

Re: (TDBGrid) - Klick auf den indicator abfangen?
 
klar hab ich dich verstanden, nur kann ich mir nicht gut vorstellen, dass du deine daten in einem DBGrid archiviert hast. ich denke, sie befinden sich eher in einer tabelle :wink:

dein 'pre-listen' startest du durch wechseln des datensatzes (im AfterScrollEvent des zugehörigen DataSets) und durch doppelklick wählst du den datensatz aus und übernimmst ihn, wohin du ihn auch immer haben willst.

in meinem vorigen beitrag habe ich auch nichts gegenteiliges behauptet, oder?

mfg, stefan

100nF 24. Dez 2004 15:17

Re: (TDBGrid) - Klick auf den indicator abfangen?
 
Zitat:

nur kann ich mir nicht gut vorstellen, dass du deine daten in einem DBGrid archiviert hast. ich denke, sie befinden sich eher in einer tabelle
naja, dann sind sie halt in einer tabelle, aber sehen tut man sie ja im tdbgrid...

Zitat:

dein 'pre-listen' startest du durch wechseln des datensatzes (im AfterScrollEvent des zugehörigen DataSets) und durch doppelklick wählst du den datensatz aus und übernimmst ihn, wohin du ihn auch immer haben willst.
also mit dem AfterScrollEvent würde das Preview ja schon starten, wenn man im Tdbgrid herumscrollt oder einfach einen datensatz anklickt, was aber keinen sinn machen würde.
^die procedure soll ja erst ausgelöst werden wenn man auf den Indicator klickt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:24 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