AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Zugriff auf GroupBox im MDI child von Datenmodul aus
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf GroupBox im MDI child von Datenmodul aus

Ein Thema von HCB · begonnen am 24. Feb 2023 · letzter Beitrag vom 3. Mär 2023
Antwort Antwort
HCB

Registriert seit: 12. Feb 2020
136 Beiträge
 
Delphi 12 Athens
 
#1

Zugriff auf GroupBox im MDI child von Datenmodul aus

  Alt 24. Feb 2023, 14:49
Delphi-Version: 5
Hallo, wieder hab ich ein Problem:
Ich möchte, wenn ein Datensatz gefunden wurde das zugehörige dbGrid1 das auf einem MDI Fenster liegt, sichtbar machen, ansonsten soll es unsichtbar bleiben.
Die Prozedur bringt eine Zugriffsverletzung wenn ein Datensatz gefunden wurde, ansonsten nicht.

procedure TDataMod.ds_BestelltDataChange(Sender: TObject; Field: TField); //im dataset onChange
begin
if isFormActive('Auftragsbearbeitung') then //prüft ob Fenster geöffnet ist
if datamod.qry_bestellt.RecordCount > 0 then //wenn Datensatz gefunden soll dbGrid1 sichtbar werden
frm_orders.dbGrid1.Visible:=true else frm_orders.dbGrid1.Visible:=false;
end;

Hat jemand schon einmal das gleiche Problem gehabt und kann mir helfen.
Das wäre super nett.

LG Harry
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#2

AW: Zugriff auf GroupBox im MDI child von Datenmodul aus

  Alt 24. Feb 2023, 15:02
Man nehme den Debugger,
setze einen Haltepunkt in diese Methode
und schaue sich erstmal an was z.B. frm_orders oder frm_orders.dbGrid1 für Werte haben.

Und mindestens kann man im Debugger auch mal nachehen, in welcher Zeile es knallt.


Ansonsten seh ich hier erstmal keinen schlimmen Fehler,
jedenfalls Keinen, der nur bei >0 knallen sollte.



Was isFormActive macht, wurde nicht gesagt,
aber OK, angeblich soll dort kein Fehler drin sein.

Unnötig viele Quellcodes sind kontraproduktiv.
* Alles doppelt zu sagen, was man auch so im Code sieht, lenkt nutzlos ab
* und wenn man "einfachen" Code erklären muß, dann sollte man mal drüber nachdenken, warum der Code sich nicht selbst erklärt.

Zitat:
if irgendwas then etwas:=True else etwas:=False;
Ahhhhhh, ja.
Delphi-Quellcode:
if isFormActive('Auftragsbearbeitung') then
  frm_orders.dbGrid1.Visible := datamod.qry_bestellt.RecordCount <> 0;
Den Knopf mit dem Delphi-Helm hast du im Editor gesehen?
[delphi] dein Code [/delphi]
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (24. Feb 2023 um 15:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.021 Beiträge
 
Delphi 12 Athens
 
#3

AW: Zugriff auf GroupBox im MDI child von Datenmodul aus

  Alt 24. Feb 2023, 15:07
Wenn frm_orders schon das Form "Auftragsbearbeitung" darstellt, warum dann die Funktion isFormActive('Auftragsbearbeitung') und nicht die direkte Abfrage in frm_orders? Oder stimmt meine Prämisse vielleicht gar nicht?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
136 Beiträge
 
Delphi 12 Athens
 
#4

AW: Zugriff auf GroupBox im MDI child von Datenmodul aus

  Alt 24. Feb 2023, 15:21
Es wird im OnChange Ereignis im Dataset beim Wechseln des Datensatzes geprüft ob recCount > 0 ist. OnChange wird schon vorm Erstellen des Fensters "Auftragsbearbeitung" aufgerufen und bringt gleich die Zugriffsverletzung. Deshalb soll nur beim aktiven Fenster die Procedur ausgeführt werden.

Mit dem Debugger erkenne ich nur, dass beim Zugriff auf das dbGrid.visible die Zugriffsverletzung ausgerufen wird. Die Form ist aber schon erstellt und sichtbar.
Das ist das Problem was ich nicht verstehe (naja bin ja auch Anfänger).

LG Harry
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#5

AW: Zugriff auf GroupBox im MDI child von Datenmodul aus

  Alt 24. Feb 2023, 15:49
Mit dem Debugger erkenne ich nur, dass beim Zugriff auf das dbGrid.visible die Zugriffsverletzung ausgerufen wird. Die Form ist aber schon erstellt und sichtbar.
Steht auch DIESE gewünschte Form in der Variable "frm_orders" drin?

Aber wenn "frm_orders" ungültig ist, dann sollte es auch beim Visible:=False knallen und nicht nur beim :=True.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
136 Beiträge
 
Delphi 12 Athens
 
#6

AW: Zugriff auf GroupBox im MDI child von Datenmodul aus

  Alt 24. Feb 2023, 16:10
Ja, frm_orders steht drin. Ich habe das mit einer modalen Form probiert, da gibt es keine Schwierigkeiten, außer dass die Form jetzt außerhalb der Anwendung angezeigt wird. Es scheint also mit dem MDI child zusammenzuhängen, da funktioniert aus irgendwelchen Gründen nicht der Zugriff um das DBGrid unsichtbar zu machen.

Weiß jemand, wie ich die modale Form in die MDIForm unterbringe? Parent funktioniert insoweit, dass das Fenster links oben in der Anwedung platziert wird und sich nicht mehr verschieben lässt.

Es ist alles sehr, sehr mühselig wenn man nur eine geringe Ahnung von der Materia hat
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Zugriff auf GroupBox im MDI child von Datenmodul aus

  Alt 25. Feb 2023, 16:57
Hallo, wieder hab ich ein Problem:
Ich möchte, wenn ein Datensatz gefunden wurde das zugehörige dbGrid1 das auf einem MDI Fenster liegt, sichtbar machen, ansonsten soll es unsichtbar bleiben.
Die Prozedur bringt eine Zugriffsverletzung wenn ein Datensatz gefunden wurde, ansonsten nicht.

procedure TDataMod.ds_BestelltDataChange(Sender: TObject; Field: TField); //im dataset onChange
begin
if isFormActive('Auftragsbearbeitung') then //prüft ob Fenster geöffnet ist
if datamod.qry_bestellt.RecordCount > 0 then //wenn Datensatz gefunden soll dbGrid1 sichtbar werden
frm_orders.dbGrid1.Visible:=true else frm_orders.dbGrid1.Visible:=false;
end;

Hat jemand schon einmal das gleiche Problem gehabt und kann mir helfen.
Das wäre super nett.

LG Harry
Ist frm_orders ein MDI Childwindow (Formstyle fsMDIChild)? Du solltest da erstmal sicherstellen, dass das Form selbst sichtbar und nicht minimiert ist bevor Du den Sichtbarkeitsstatus des Grids änderst.

Übrigens:
frm_orders.dbGrid1.Visible:= datamod.qry_bestellt.RecordCount > 0; tuts auch, kein If-Konstrukt nötig.
Peter Below
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
136 Beiträge
 
Delphi 12 Athens
 
#8

AW: Zugriff auf GroupBox im MDI child von Datenmodul aus

  Alt 3. Mär 2023, 10:06
Danke Peter für den Tipp:

Übrigens:
frm_orders.dbGrid1.Visible:= datamod.qry_bestellt.RecordCount > 0; tuts auch, kein If-Konstrukt nötig.

Wusste ich bisher gar nicht.

LG Harry

P.S. Hast du vielleicht noch mehr Beispiele wie man mit kürzerem Code die gleiche Wirkung erzielt?
  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 02:52 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