AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Probleme beim Starten einer Form bzw. Anzeigen von Daten

Probleme beim Starten einer Form bzw. Anzeigen von Daten

Ein Thema von AndreasB · begonnen am 21. Jan 2019 · letzter Beitrag vom 23. Jan 2019
Antwort Antwort
Seite 1 von 2  1 2   
AndreasB

Registriert seit: 21. Dez 2009
Ort: Heidelberg
32 Beiträge
 
#1

Probleme beim Starten einer Form bzw. Anzeigen von Daten

  Alt 21. Jan 2019, 09:12
Hallo, ich hoffe mir kann jemand von Euch helfen. Es geht um eine Windows Anwendung / VCL die ich mit der Community Edition 10.3 programmiere. Ich starte eine Form, in dieser neu erstellten Form wird eine Tabelle ausgelesen. In einem der ausgelesenen Felder ist ein Pfad zu einer Imagedatei.
Wenn ich nun per Button das Bild anzeigen lasse, funktioniert das prima. Siehe angehängtes .pas File - button3 am Ende.
Nun habe ich mit den verschiedensten Möglichkeiten TForm.OnCreate, TForm.FormCreate, TForm.FormShow versucht den gleichen Inhalt zu nutzen, um beim erstmaligen Erscheinen der Datenbankinhalte gleich das Bild mit anzuzeigen, aber es scheint, dass dieser Programmschritt nie benutzt wird.
Wie kann ich bei Anzeige/Aufruf der neuen Form auch gleich das Bild anzeigen lassen? Ich hoffe ich habe mich verständlich ausgedrückt
Vielen lieben Dank im Vorraus und viele Grüße
Andreas
Angehängte Dateien
Dateityp: pas Unit3.pas (2,7 KB, 6x aufgerufen)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#2

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten

  Alt 21. Jan 2019, 09:21
Hmm..

Nicht über die Form.Onxxx sondern nach dem Öffnen der Datenmenge:

Delphi-Quellcode:
procedure TForm1.ADOTable1AfterOpen(DataSet: TDataSet);
begin
  if not (ADOTable1.Bof and ADOTable1.Eof) then begin
    // Datenmenge geöffent und auch Daten vorhanden
    // LoadImage ist eine eigenen Procedure, welche dann das Image öffnet.
    LoadImage(ADOTable1.FieldByName('T_bild_pfad_1').AsString);
  end
  else
    // Ansonsten (in eigener Procedure) ein eventuell vorheriges Bild ausblenden
    HideImage;
end;

procedure TForm1.ADOTable1AfterScroll(DataSet: TDataSet);
begin
  if not (ADOTable1.Bof and ADOTable1.Eof) then begin
    // Datenmenge geöffent und auch Daten vorhanden
    // LoadImage ist eine eigenen Procedure, welche dann das Image öffnet.
    LoadImage(ADOTable1.FieldByName('T_bild_pfad_1').AsString);
  end
  else
    // Ansonsten (in eigener Procedure) ein eventuell vorheriges Bild ausblenden
    HideImage;
end;

Mit AfterOpen wird nach dem Öffnen der Datenmenge das erste Bild geholt, mit AfterScroll beim Wechsel des Datensatzes...
  Mit Zitat antworten Zitat
AndreasB

Registriert seit: 21. Dez 2009
Ort: Heidelberg
32 Beiträge
 
#3

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten

  Alt 21. Jan 2019, 09:41
Super. Vielen Dank, werde ich heute abend gleich versuchen.

Viele Grüße

Andreas
  Mit Zitat antworten Zitat
21. Jan 2019, 10:39
Dieses Thema wurde am "21. Jan 2019, 10:39 Uhr" von "Luckie" aus dem Forum "Programmieren allgemein" in das Forum "Datenbanken" verschoben.
AndreasB

Registriert seit: 21. Dez 2009
Ort: Heidelberg
32 Beiträge
 
#5

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten

  Alt 22. Jan 2019, 09:14
Hallo, habe den Vorschlag mit AfterOpen und AfterScroll mal probiert - und hoffentlich richtig umgesetzt, aber es funktioniert nicht.
das Problem ist dabei nicht die Procedure LoadImage, sondern dass er die Prozeduren AfterOpen und AfterScroll überhaupt nicht durchläuft?

Das Fenster wird durch eine vorgelagerte Datei aufgerufen (unit1). In der Unit3 werden die genannten Prozeduren gar nicht durchlaufen. Ich habe einfach mal ein Label erstellt und lasse mir Text anzeigen um zu sehen, was durchlaufen wird. Wenn ich eine Taste drücke, wird mir das entsprechende Label angezeigt. Mit button3 kommt auch das Bild.
Ich habe die Datei unit1 , die unit3 aufruft, ebenfalls angehängt. Die unit3 ist die von mir nach dem Tip gestern geänderte Datei inkl. der Labelanzeige.
p.s. Hideimage habe ich mal weggelassen - also nicht wundern.

Die Frage bleibt, wie kann ich erreichen, dass nach dem Aufruf des neuen Fensters (unit3) bestimmter Programmcode abgearbeitet wird, ohne dass ich eine Taste drücken muss.
FormCreate, FormShow, OnCreate und FormPaint habe ich schon ausprobiert - alles ohne Erfolg.

Vielen lieben Dank im Voraus - bin für jeden Tipp dankbar.

Andreas
p.s. wenn gewünscht kann ich gerne die Access Datei und eine Bilddatei noch senden.
Angehängte Dateien
Dateityp: pas Unit1.pas (1,1 KB, 1x aufgerufen)
Dateityp: pas Unit3.pas (5,9 KB, 2x aufgerufen)

Geändert von AndreasB (22. Jan 2019 um 09:17 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.268 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten

  Alt 22. Jan 2019, 09:22
Hallo,
ich werfe mal OnActivate nach.

Aber:
Es reicht nicht, in der Pas in Form1OnActivate zu schreiben,
das muss auch in der DFM stehen.
Bei deinen angehängten Dateien fehlen also die DFM-Dateien.
So können wir z.B. nicht erkennen, ob die Connection und die ADOTable bereits offen sind.

Das geht am einfachsten über den Objekt-Inspector.
Dort einen Doppelklick auf das entsprechende Event und die Pas-Methode wird erzeugt in in der DFM auch zugeordnet.

Benutze doch einfach mal den Debugger (F5, F7, F8).
Heiko

Geändert von hoika (22. Jan 2019 um 09:24 Uhr)
  Mit Zitat antworten Zitat
AndreasB

Registriert seit: 21. Dez 2009
Ort: Heidelberg
32 Beiträge
 
#7

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten

  Alt 22. Jan 2019, 09:34
Ok, das werde ich gleich mal versuchen. Die Verbindungen sind alle aktiv. Wenn ich button3 drücke, geht es ohne Probleme . nur eben nicht ohne dass ich irgendetwas drücke

Vielen Dank und viele Grüße

Andreas
p-s- die dfm Dateien sind als Zip angehängt
Angehängte Dateien
Dateityp: zip dfm.zip (2,3 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.268 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten

  Alt 22. Jan 2019, 09:41
Hallo,
in der Unit3 gibt es kein Ereignis, wie z.B. FormCreate.
Wie hast Du das FormCreate in der Pas-Datei denn erzeugt?

Das OnCreate ist die falsche Stelle, weil dort das Form-Object noch nicht vollständig geladen wurde.

Benutze einfach OnActivate und packe dort deine ganzen Sachen rein.
Danach F5 auf die erste Zeile im Form3OnActivate und debuggen.
Heiko
  Mit Zitat antworten Zitat
AndreasB

Registriert seit: 21. Dez 2009
Ort: Heidelberg
32 Beiträge
 
#9

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten

  Alt 22. Jan 2019, 10:05
Hallo Hoika,

so, habe den ersten Vorschlag probiert, aber funktioniert nicht. Allerdings finde ich keine der Tform3. Prozeduren außer den Buttons 1-3 im Objektinspektor, auch nicht das OnActivate? Wie bekomme ich die denn in die dfm Datei? Ich werde jetzt mal den zweiten Vorschlag versuchen.

Bzgl. FormCreate etc - die habe ich alle wieder rausgeworfen, da sie nicht funktioniert haben. Vielleicht liegt es aber auch daran, dass diese nicht in der dfm standen?

Ich habe verstanden, dass ich alles in die TForm3.OnActivate reinpacken soll? Hier gibt mein Geist auf - wenn ich die Prozeduren alle in eine reinpacke, bekomme ich massenweise Fehler?

Viele Grüße

Andreas

Geändert von AndreasB (22. Jan 2019 um 10:11 Uhr)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.268 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten

  Alt 22. Jan 2019, 10:29
Hallo,
klick auf das Formular selbst.
Dann im Object-Inspector vom Reiter Eigenschaften auf den Reiter Ereignisse.
Dort suche nach OnActivate. Dort einen Doppelklick drauf.
Delphi erzeugt jetzt eine FormActivate-Methode und verknüpft die auch mit der DFM.

Delphi-Quellcode:
implementation

procedure TForm3.FormActivate(Sender: TObject);
var
  i: Integer;
begin
  // ev. steht hier noch inherited ;

  OnActivate:= nil; // Mehrfachaufruf der Methode verhindern.

  i:= 0; <<-- hier F5 drücken für Breakpoint.
end;
PS:
Das i steht erst mal so drin, dass Du den Breakpoint setzen kannst zum Testen, dass es geklappt hat.


Zitat:
wenn ich die Prozeduren alle in eine reinpacke
Dann rufe die einzelnen Methoden im FormActivate nacheinander auf.
Heiko
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:30 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