AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi prozedur in Data Module auf andere Form anwenden
Thema durchsuchen
Ansicht
Themen-Optionen

prozedur in Data Module auf andere Form anwenden

Ein Thema von danieleh · begonnen am 10. Mär 2010 · letzter Beitrag vom 12. Mär 2010
Antwort Antwort
Seite 1 von 3  1 23      
danieleh

Registriert seit: 1. Dez 2005
54 Beiträge
 
#1

prozedur in Data Module auf andere Form anwenden

  Alt 10. Mär 2010, 08:38
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;
  Mit Zitat antworten Zitat
GHorn

Registriert seit: 24. Mär 2009
Ort: NRW
124 Beiträge
 
#2

Re: prozedur in Data Module auf andere Form anwenden

  Alt 10. Mär 2010, 09:16
Versuch mal folgendes:

Delphi-Quellcode:
TPCchrt.cxTextEdit2.Text := PCdmod.Q_TIME['Min'];
Application.ProcessMessages;
Gruß
Gerald
  Mit Zitat antworten Zitat
danieleh

Registriert seit: 1. Dez 2005
54 Beiträge
 
#3

Re: prozedur in Data Module auf andere Form anwenden

  Alt 10. Mär 2010, 09:38
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
  Mit Zitat antworten Zitat
GHorn

Registriert seit: 24. Mär 2009
Ort: NRW
124 Beiträge
 
#4

Re: prozedur in Data Module auf andere Form anwenden

  Alt 10. Mär 2010, 11:19
Zitat:
geht leider nicht.
habe "Forms" in uses list für ProcessMessages getan


Du musst PCchrt (Name Deiner Hauptform) in Deine uses-clause
des datamoduls packen.
  Mit Zitat antworten Zitat
danieleh

Registriert seit: 1. Dez 2005
54 Beiträge
 
#5

Re: prozedur in Data Module auf andere Form anwenden

  Alt 10. Mär 2010, 11:25
Das hatte ich natürlich auch schon drin...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: prozedur in Data Module auf andere Form anwenden

  Alt 10. Mär 2010, 11:28
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
danieleh

Registriert seit: 1. Dez 2005
54 Beiträge
 
#7

Re: prozedur in Data Module auf andere Form anwenden

  Alt 10. Mär 2010, 12:36
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;
  Mit Zitat antworten Zitat
fatalerror
(Gast)

n/a Beiträge
 
#8

Re: prozedur in Data Module auf andere Form anwenden

  Alt 10. Mär 2010, 12:53
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;
  Mit Zitat antworten Zitat
danieleh

Registriert seit: 1. Dez 2005
54 Beiträge
 
#9

Re: prozedur in Data Module auf andere Form anwenden

  Alt 10. Mär 2010, 13:30
Zitat:
Wird evtl cxTextEdit2.text zwar korrekt gesetzt aber anschliessend sofort durch einen andern Event überschrieben?
wird es nicht. klappt auch nicht wenn etwas bereits im edit steht und dies zu löschen versuchen(zb PCchrt.Edit1.Text:=''). ps. hab nun auch mit standardkomponenten versucht

Zitat:
Hast du mal einen Breakpoint gesetzt und geschaut was passiert?
hab ich, bin zwar kein spezialist im debugging, aber mir ist nichts besonderes aufgefallen, ausser das der Wert korrekt übergeben wurde
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
...
  Mit Zitat antworten Zitat
GHorn

Registriert seit: 24. Mär 2009
Ort: NRW
124 Beiträge
 
#10

Re: prozedur in Data Module auf andere Form anwenden

  Alt 11. Mär 2010, 08:37
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 08:36 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