Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TCRDBGrid den Suchtext abfragen (https://www.delphipraxis.net/200810-tcrdbgrid-den-suchtext-abfragen.html)

Aromanaut 28. Mai 2019 11:44

TCRDBGrid den Suchtext abfragen
 
Hallo!

Ich hätte gern im Objektinspektor ein Ereignis auf Änderung der Such- und/ oder Filtereingabe im TCRDBGrid.
Folgendes habe ich schon gefunden und implementiert:

https://de.switch-case.com/51889805

Die Eventdeklarationen werden aber nicht im Objektinspektor angezeigt.
Oder besser gesagt, was muss ich machen, damit diese dort veröffentlicht werden um sie dann in meiner Anwendung verwenden zu können?

Vielen Dank für eure Hilfe!

peterbelow 28. Mai 2019 12:46

AW: TCRDBGrid den Suchtext abfragen
 
Zitat:

Zitat von Aromanaut (Beitrag 1433254)
Hallo!

Ich hätte gern im Objektinspektor ein Ereignis auf Änderung der Such- und/ oder Filtereingabe im TCRDBGrid.
Folgendes habe ich schon gefunden und implementiert:

https://de.switch-case.com/51889805

Die Eventdeklarationen werden aber nicht im Objektinspektor angezeigt.
Oder besser gesagt, was muss ich machen, damit diese dort veröffentlicht werden um sie dann in meiner Anwendung verwenden zu können?

Vielen Dank für eure Hilfe!

Damit eine Property oder ein Event im OI auftaucht muss es im published-Abschnitt der Komponentenklasse deklariert werden.

Aromanaut 28. Mai 2019 14:04

AW: TCRDBGrid den Suchtext abfragen
 
Habe ich ja gemacht, dachte ich eigentlich?!

Habe in der TCRDBGrid-Klasse im published Bereich folgendes integriert:
...
published
property OnFilterChanged: TOnTextChanged read GetOnFilterChanged write SetOnFilterChanged;
property OnSearchChanged: TOnTextChanged read GetOnSearchChanged write SetOnSearchChanged;

Muss man da im nachhinein noch irgendwas neu laden oder neu registrieren oder sowas?

Vielen dank!

peterbelow 28. Mai 2019 21:08

AW: TCRDBGrid den Suchtext abfragen
 
Zitat:

Zitat von Aromanaut (Beitrag 1433271)
Habe ich ja gemacht, dachte ich eigentlich?!

Habe in der TCRDBGrid-Klasse im published Bereich folgendes integriert:
...
published
property OnFilterChanged: TOnTextChanged read GetOnFilterChanged write SetOnFilterChanged;
property OnSearchChanged: TOnTextChanged read GetOnSearchChanged write SetOnSearchChanged;

Muss man da im nachhinein noch irgendwas neu laden oder neu registrieren oder sowas?

Vielen dank!

Die Komponente muss über eine Designtime-package in der IDE registriert werden und wenn Du die Unit geändert hast muss diese Package auch neu kompiliert werden, eventuell auch eine dazugehörige runtime-package. Ich kenne diese Komponente nicht, aber Du mußt ja wohl die Source dafür haben.

Wenn Du nur die Unit änderst ist diese Änderung nur zur Laufzeit verfügbar, d.h. Du könntest durchaus einen Eventhandler im Kode setzen (macht man oft zum Testen, bevor die Komponente in die IDE installiert wird). Der OI holt sich seine Daten aber nur aus der installierten Package.

Aromanaut 29. Mai 2019 07:25

AW: TCRDBGrid den Suchtext abfragen
 
Hallo!

Vielen Dank für die Antwort. Ich dachte mir sowas schon.
Würdest du mir verraten wie ich das denn im Code implementiere diesen Eventhandler?
Da ich wirklich noch blutender Anfänger bin, bin ich für jede Hilfe dankbar.

Vielen Dank!

peterbelow 29. Mai 2019 11:50

AW: TCRDBGrid den Suchtext abfragen
 
Zitat:

Zitat von Aromanaut (Beitrag 1433332)
Hallo!

Vielen Dank für die Antwort. Ich dachte mir sowas schon.
Würdest du mir verraten wie ich das denn im Code implementiere diesen Eventhandler?
Da ich wirklich noch blutender Anfänger bin, bin ich für jede Hilfe dankbar.

Vielen Dank!

Füge deinem Form zwei Methoden hinzu, deren Parameterliste dem TOnTextChanged Prototyp entsprechen. Die können durchaus in der private-Sektion stehen:

Delphi-Quellcode:
 // TOnTextChanged = procedure (Sender: TObject; Text: string) of object;

  private
    procedure FilterChanged(Sender: TObject; Text: string);
    procedure SearchChanged(Sender: TObject; Text: string);
Drück Strg+Shift+C und die IDE erzeugt für diese beiden Methoden leere Implementierungen.
Falls dein Form noch keinen Handler für den OnCreate-Event hat, füge einen hinzu. In dem erfolgt dann die Zuweisung der beiden Handler an die Events des Grids.

Delphi-Quellcode:
  CRDBGrid1.OnFilterChanged := FilterChanged;
  CRDBGrid1.OnSearchChanged := SearchChanged;

Aromanaut 29. Mai 2019 12:59

AW: TCRDBGrid den Suchtext abfragen
 
Erst mal vielen Dank!
Ich habe die zwei Methoden im privat hinzugefügt und im OnCreate Event die Zuweisung gemacht.
Allerdings findet er die Deklarationen nicht obwohl sie im published Bereich der TCRDBGrid klasse sind????
Diese ist wiederum aber in einer eigen Unit die ich aber über uses drin habe.
Was mache ich denn falsch oder muss ich mit der Unit wo die TCRDBGrid drin ist noch was veranstalten?

Danke!

peterbelow 29. Mai 2019 15:49

AW: TCRDBGrid den Suchtext abfragen
 
Zitat:

Zitat von Aromanaut (Beitrag 1433382)
Erst mal vielen Dank!
Ich habe die zwei Methoden im privat hinzugefügt und im OnCreate Event die Zuweisung gemacht.
Allerdings findet er die Deklarationen nicht obwohl sie im published Bereich der TCRDBGrid klasse sind????
Diese ist wiederum aber in einer eigen Unit die ich aber über uses drin habe.
Was mache ich denn falsch oder muss ich mit der Unit wo die TCRDBGrid drin ist noch was veranstalten?

Danke!

Du hast vermutlich jetzt 2 Versionen der Unit für das Grid in deinem Filesystem und das Projekt scheint noch die unveränderte Orginalversion zu enthalten, bzw. der Compiler findet sie vor deiner geändeten Version. Sieh mal im Project Manager view nach, ob die Grid-Unit explizit zum Projekt hinzugefügt wurde (sie wird dann unter dem Projekt-Knoten gelistet. Falls das so ist, entferne die Unit zunächst aus dem Projekt. Dann fügst Du deine veränderte Unit zum Projekt hinzu (einfach aus dem Windows Explorer auf den Projektknoten ziehen, oder über das Projekt-Menu im main menu). Für so hinzugefügte Units wird der vollständige Pfad im Projektfile abgelegt, da muss der Compiler dann nicht mehr suchen gehen. Mach dann ein Build des Projektes und sieh mal wie das funktioniert.

Falls Du den Namen der Unit geändert hast, stell sicher, dass der alte Name nicht noch in einer Uses-Klausel auftaucht.


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