Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Probleme beim Starten einer Form bzw. Anzeigen von Daten (https://www.delphipraxis.net/199400-probleme-beim-starten-einer-form-bzw-anzeigen-von-daten.html)

AndreasB 21. Jan 2019 08:12

Probleme beim Starten einer Form bzw. Anzeigen von Daten
 
Liste der Anhänge anzeigen (Anzahl: 1)
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

HolgerX 21. Jan 2019 08:21

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten
 
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...

AndreasB 21. Jan 2019 08:41

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten
 
Super. Vielen Dank, werde ich heute abend gleich versuchen.

Viele Grüße

Andreas

DP-Maintenance 21. Jan 2019 09:39

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

AndreasB 22. Jan 2019 08:14

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten
 
Liste der Anhänge anzeigen (Anzahl: 2)
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.

hoika 22. Jan 2019 08:22

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten
 
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).

AndreasB 22. Jan 2019 08:34

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten
 
Liste der Anhänge anzeigen (Anzahl: 1)
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

hoika 22. Jan 2019 08:41

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten
 
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.

AndreasB 22. Jan 2019 09:05

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten
 
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

hoika 22. Jan 2019 09:29

AW: Probleme beim Starten einer Form bzw. Anzeigen von Daten
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr.
Seite 1 von 2  1 2      

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