![]() |
AW: DBGrid Zeilen Wechsel
Zitat:
Wie funktioniert die Event zuweisung? |
AW: DBGrid Zeilen Wechsel
ADataset.AfterScroll := xxprocedure
|
AW: DBGrid Zeilen Wechsel
Ergänzung zu Bauminas Hinweis: Die Zuweisung verhält sich analog zum Objektinspektor: Das Property AfterScroll erhält die Adresse deiner Procedure, indem du diese Procedure dem Property zuweist. Danach wird deine Procedure auch aufgerufen, wenn gescrollt wird. Wenn du im OI auf AfterScroll doppelt klickst, passiert genau dasselbe: Es wird ein Procedur-Rumpf erstellt und im OI eingetragen.
Einfach mal ausprobieren ... Übrigens hatte Baumina diesen ![]() |
AW: DBGrid Zeilen Wechsel
Ja den Hinweis von Baumina hab ich gelesen, aber ich hab sowas noch nie gemacht ;-) Deshalb meine Frage...
|
AW: DBGrid Zeilen Wechsel
Es muss aber eine Methode sein, eine reguläre Prozedur lässt sich nicht zuweisen.
|
AW: DBGrid Zeilen Wechsel
Also das folgende habe ich gemacht:
Delphi-Quellcode:
Mit diesem Source wird das AfterScroll nicht ausgelöst da das Event noch nicht zugewiesen ist, und da häng ich grad da ich nicht weiß wie sowas geht...unit view; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, AdvGlowButton, Uni, StdCtrls, ShlObj, Grids, DBGrids, DB, MemDS, DBAccess; type Tform = class(TForm) timerstart: TTimer; pnl_insertedit: TPanel; lbl_materialdescription: TLabel; lbl_tablecontent: TLabel; advglowbtn_search: TAdvGlowButton; advglowbtn_showall: TAdvGlowButton; edt_materialdescription: TEdit; dbgrid_data: TDBGrid; datsrc_data: TDataSource; procedure FormDestroy(Sender: TObject); procedure timerstartTimer(Sender: TObject); procedure SQLiteFile_DisplayAfterScroll(DataSet: TDataSet); private procedure prButtonandFieldControl(blLocked : Boolean); procedure prDisplayDESADVCommissionData(sCommissionNo, sDescription, sDSMin, sDSMax : String; blSearch : Boolean); procedure prDisplayDESADVCommissionDetails(sCommissionNo, sDSMin, sDSMax : String); procedure prGetDESADVCommissionMinMaxDS(sDESADVModule : String); public end; . . . procedure Tform.SQLiteFile_DisplayAfterScroll(DataSet: TDataSet); begin If (gblViewCommissions) Then ShowMessage('New Record Selected'); end; |
AW: DBGrid Zeilen Wechsel
Wo weist du denn dem Property OnAfterScroll deines Datasets die Methode
Delphi-Quellcode:
zu?
Tform.SQLiteFile_DisplayAfterScroll(DataSet: TDataSet);
|
AW: DBGrid Zeilen Wechsel
Also dann mal ausführlich zum Abschreiben:
Delphi-Quellcode:
procedure ErstelleDataset;
var aDataset : TDataset; begin aDataSet := TDataset.Create; ... aDataset.AfterScroll := DoAferScroll; ... end; procedure DoAfterScroll(Sender : TDataset); begin ... end; |
AW: DBGrid Zeilen Wechsel
Das ist keine Methode, daher wird das so nicht funktionieren.
|
AW: DBGrid Zeilen Wechsel
Schon mal vielen Dank Baumina! :thumb:
Ich weiß es wird hier im Forum nicht gern gesehen wenn man sich die Lösung vorkauen lässt ohne eigen Initiative. Aber Ihr könnt mir glauben das ich gerade nicht vor meinem PC hocke und die ganze Zeit F5 drücke um auf Antworten zu warten... Habe nebenher auch Hr. Google bemüht aber irgendwie steh ich aufm Schlauch... Nochmal von vorn... Ich hab mir ein simples Programm zum Anzeigen von Daten gemacht. Dort verwende ich das AfterScroll Ereignis der TUniQuery um den Wechsel von Daten Zeilen mitzubekommen und meine gewünschten Aktionen durchzuführen... Funktioniert wunderbar... In meiner DLL ist die vorgehensweise wie folgt... Ich erstelle meine TUniQuery Komponente mit der ich die Daten von der DB abhole. Mittlerweile habe ich mir die folgende Procedure angelegt die den Source beinhalten soll für das AfterScroll:
Delphi-Quellcode:
Nun versuche ich beim Laden der DLL der dynamisch erstellen TUniQuery im AfterScroll Ereignis meine Procedure zu zuweisen:
procedure Tform.prAfterScroll(Sender: TDataSet);
begin If (gblView) Then ShowMessage('New Record Selected'); end; Versuch 1
Delphi-Quellcode:
SQLiteFile_DisplayCommissions.DataSource.DataSet.AfterScroll := prAfterScroll(SQLiteFile_DisplayCommissions);
Versuch 2
Delphi-Quellcode:
SQLiteFile_DisplayCommissions.AfterScroll := prAfterScroll(SQLiteFile_DisplayCommissions);
Beides mal kommt beim kompilieren die Fehlermeldung: E2010 Inkompatible Typen: 'TDataSetNotifyEvent' und 'procedure, untyped pointer or untyped parameter' Ich will niemand ärgern oder nerven, aber was das betrifft ist mein Wissen jungfräulich, ich hab noch nie eigene Events einer Komponente zugewiesen! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:18 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