![]() |
prozedur in Data Module auf andere Form anwenden
Hallo Alle,
mit einer Prozedur die von der Data Module Form, aufgrund eines Events ausgelöst wird, möchte ich ein Objekt (zb. ein TextEdit) in einer anderen Form füllen lassen. Das Problem ist mir schon länger ein Rätsel, konnte es aber bislang immer umgehen. Folgendes ist der Fall: In der Hauptform steht ein TextEdit. Über eine Modal-Form verbinde mit einer Datanbank (dessen Komponenten in der Data Module stehen), und öffne eine Query. Als after-open Event der Query sollte ein Wert in ein TextEdit der Haupform geschrieben werden. Obwohl es nirgends Fehlermeldungen gibt - wird das TextEdit nicht gefüllt
Delphi-Quellcode:
procedure TPCdmod.Q_TIMEAfterOpen(DataSet: TDataSet);
begin with PCchrt do // Hauptform begin cxTextEdit2.Text := PCdmod.Q_TIME['Min']; // geht nicht, aber keine Fehler end; end;
Delphi-Quellcode:
procedure TPCdmod.Q_TIMEAfterOpen(DataSet: TDataSet);
begin with PCchrt do // Hauptform begin Opentime; // Opentime ist in Public eingetragen end; end; //und in Hauptform: procedure TPCchrt.Opentime; begin showmessage(PCdmod.Q_TIME['Min']); // geht ! cxTextEdit2.Text := PCdmod.Q_TIME['Min']; // geht nicht und immer noch keine Fehler end;
Delphi-Quellcode:
// natürlich gehts mit einem button in der Hautform: procedure TPCchrt.cxButton4Click(Sender: TObject); // connect DB begin cxTextEdit2.Text := PCdmod.Q_TIME['Min']; end; |
Re: prozedur in Data Module auf andere Form anwenden
Versuch mal folgendes:
Delphi-Quellcode:
Gruß
TPCchrt.cxTextEdit2.Text := PCdmod.Q_TIME['Min'];
Application.ProcessMessages; Gerald |
Re: prozedur in Data Module auf andere Form anwenden
Hallo Gerald,
geht leider nicht. habe "Forms" in uses list für ProcessMessages getan, aber das TPCchrt akzeptiert er nicht (und ohne T geht's auch nicht) Daniele |
Re: prozedur in Data Module auf andere Form anwenden
Zitat:
Du musst PCchrt (Name Deiner Hauptform) in Deine uses-clause des datamoduls packen. |
Re: prozedur in Data Module auf andere Form anwenden
Das hatte ich natürlich auch schon drin...
|
Re: prozedur in Data Module auf andere Form anwenden
Wie sieht es so aus?
Delphi-Quellcode:
procedure TPCdmod.Q_TIMEAfterOpen(DataSet: TDataSet);
begin PCchrt.Opentime(PCdmod.Q_TIME['Min']); // Opentime ist in Public eingetragen end; //und in Hauptform: procedure TPCchrt.Opentime(const TimeStr: string); begin cxTextEdit2.Text := TimeStr; end; |
Re: prozedur in Data Module auf andere Form anwenden
Hallo Detlef,
leider nicht. macht mich wahnsinnig! zumal die showmessage tut und auch sonst keine Fehler
Delphi-Quellcode:
procedure TPCchrt.Opentime(const TimeStr: string);
begin cxTextEdit2.Text := TimeStr; // nok showmessage(TimeStr); // ok end; |
Re: prozedur in Data Module auf andere Form anwenden
Wird evtl cxTextEdit2.text zwar korrekt gesetzt aber anschliessend sofort durch einen andern Event überschrieben?
Hast du mal einen Breakpoint gesetzt und geschaut was passiert?
Delphi-Quellcode:
procedure TPCchrt.Opentime(const TimeStr: string);
begin cxTextEdit2.Text := TimeStr; showmessage(cxTextEdit2.Text); end; |
Re: prozedur in Data Module auf andere Form anwenden
Zitat:
Zitat:
log wie folgt: ... Breakpoint Call Stack: Log all stack frames Process DataPlotter.exe (2392) aPCchrt.TPCchrt.Opentime('08.08.2009 05:46:08') aPCdmod.TPCdmod.Q_TIMEAfterOpen(???) :004eee87 TDataSet.DoAfterOpen + $1B ... |
Re: prozedur in Data Module auf andere Form anwenden
Was zeigt das "showmessage" von Posting #8??
Setze einen Breakpoint VOR dem Aufruf des Datamoduls und füge "cxTextEdit2.Text" in die Liste der überwachten Ausdrücke ein. Dann geh mit F7 oder F8 in EINZEL-Schritten (ganz wichtig) durch das Programm und beobachte den Eintrag in der Liste. Poste mal Deine Initialisierung, d.h. den Teil, wo das Datamodul aufgerufen wird. Kann es sein, dass Du das Editfeld im Nachhinein nochmal anpackst? Gruß Gerald |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 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