AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wann wird eine Form angezeigt ?

Ein Thema von H.Bothur · begonnen am 24. Mär 2018 · letzter Beitrag vom 26. Mär 2018
Antwort Antwort
Seite 1 von 2  1 2      
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
267 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Wann wird eine Form angezeigt ?

  Alt 24. Mär 2018, 16:04
Weil Form.Show vor dem Anzeigen ausgeführt wird.
Aber ... welches Ereignis kommt den wenn die Form wirklich zum ersten Mal sichtbar ist ?

Zitat:
Und auch wenn die Form sichtbar wäre, wäre ja wenig sichtbar
In dem Beispiel nicht viel - das stimmt

Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.598 Beiträge
 
Delphi 7 Professional
 
#2

AW: Wann wird eine Form angezeigt ?

  Alt 24. Mär 2018, 16:15
Gehen wir davon aus, dass das Formular momentan so aufgerufen wird:
Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
begin
  Form1.Show;
end;
Dann könnte man den Aufruf dahingehend ändern:
Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
begin
  Form1.Show;
  Form1.DoSomething; // Diese Methode enthält den Inhalt des jetzigen OnShow-Ereignisses.
  Close;
end;
Delphi-Quellcode:
procedure TForm1.DoSomething;
var
  ArtikelString: TStringList;
  Zeile: String;
  i, j: Integer;
begin
  ArtikelString := TStringList.Create;
  ArtikelString.LoadFromFile('d:\temp\test\artikelliste.csv');
  for j := 1 to 10 do
  begin
    for i := 0 to ArtikelString.Count -1 do
    begin
      Zeile := ArtikelString.Strings[i];
      Form1.Label1.Caption := Copy(Zeile, 1, 12);
      Form1.Label1.Refresh;
    end;
  end;
  ArtikelString.Free;
  Close;
end;
Eventuell könntest Du uns aber auch mal die Stelle in Deinem Quelltext zeigen, an der Form1 angezeigt werden soll. Was passiert da vorher noch so alles?
  Mit Zitat antworten Zitat
H.Bothur

Registriert seit: 25. Jun 2012
Ort: Seevetal & Lagos
267 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Wann wird eine Form angezeigt ?

  Alt 24. Mär 2018, 16:31
Gehen wir davon aus, dass das Formular momentan so aufgerufen wird:
Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
begin
  Form1.Show;
end;
Eventuell könntest Du uns aber auch mal die Stelle in Deinem Quelltext zeigen, an der Form1 angezeigt werden soll. Was passiert da vorher noch so alles?
nein - die Form ist ja die Mainform des Programmes - sprich das Programm soll vollautomatisch ablaufen und nur eben während die Daten verarbeitet werden einen Status anzeigen - und sich dann eben auch selber wieder beenden.

Das ist übrigens (fast) der komplette Code, der Rest ist der Delphi-Standard:

Delphi-Quellcode:
unit TestUnit;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
var
  ArtikelString: TStringList;
  Zeile: String;
  i, j: Integer;
begin
  ArtikelString := TStringList.Create;
  ArtikelString.LoadFromFile('d:\temp\test\artikelliste.csv');
  for j := 1 to 10 do
  begin
    for i := 0 to ArtikelString.Count -1 do
    begin
      Zeile := ArtikelString.Strings[i];
      Form1.Label1.Caption := Copy(Zeile, 1, 9);
      Form1.Label1.Refresh;
    end;
  end;
  ArtikelString.Free;
  Application.Terminate;
end;

end.
Hans
Hans-Georg Bothur
www.hermann-juergensen.de
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Wann wird eine Form angezeigt ?

  Alt 25. Mär 2018, 15:02
Warum überhaupt GUI?

Wenn ich mir den ersten Post anseh, dann wäre Konsole doch genau die passende Lösung.

Bzw. die Hauptform ist keine Hauptform, von der aus alles abläuft, sondern stattdessen gehört da eine eine Statusform hin, welche von dem Arbeitscode aus angesteuert wird.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Wann wird eine Form angezeigt ?

  Alt 25. Mär 2018, 15:42
Verarbeitet wird da ja nicht wirklich was, sieht mir eher nach einer CPU-Beschäftigung aus die (noch) keinen Sinn ergibt.
Starte Programm -> Lade Liste -> Zeige Liste -> Schließe Programm, alles ohne Interaktion.
Irgend etwas fehlt da
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.598 Beiträge
 
Delphi 7 Professional
 
#6

AW: Wann wird eine Form angezeigt ?

  Alt 25. Mär 2018, 16:36
Nein, das ist der Versuch ein Batchprogramm mit Oberfläche (zur Fortschrittsanzeige) zu realisieren.

Sowas musste ich auch schon häufiger machen.

'ne Konsole ist bei manchen halt verpönt, die können den Fortschritt einer Aufgabe nur in 'ner Windowsoberfläche erkennen, aber nicht an der Ausgabe auf der Konsole

Und mit sowas kann man ein Programm mit Oberfläche auch "mal eben" zu 'nem "bedienungslosen" Batchprogramm umfunktionieren:
Delphi-Quellcode:
// in der DPR
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  ... // halt da hier gewöhnliche
  if ParamCount > 1 then begin
    Form1.Show;
    Form1.DoSomething;
    Form1.Close;
  end else begin
    Application.Run;
  end;
end;
Und wenn's in erster Linie um "sichtbare Funktionalität" geht, dann kann das ausreichen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Wann wird eine Form angezeigt ?

  Alt 26. Mär 2018, 00:38
Hier im Forum suchenfilesplitter himitsu
Konsolenanwendung, wenn in Konsole gestartet, und ansonsten GUI-Anwendung.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.598 Beiträge
 
Delphi 7 Professional
 
#8

AW: Wann wird eine Form angezeigt ?

  Alt 26. Mär 2018, 12:14
Geht im Prinzip ja und ist auch durchaus sinnvoll, dass man Konsolenanwendungen als ebensolche implementiert und GUI-Anwendung als GUI-Anwendungen.

Aber es gibt halt im realen Leben durchaus schonmal die Anforderung, dass eine Anwendung, die sinnvoll als Konmsolenanwendung realisiert werden kann, vom "Kunden" als GUI-Anwendung verlangt wird, weil er da so schön was sehen kann. Die Anforderungen sind halt manchmal "gegen alle Vernunft"

Letztlich kann man alle Formen von Konsolenanwendungen und GUI-Anwendungen quasi beliebig mischen. Ob man's als sinnvoll erachtet, steht auf 'nem anderen Blatt

Geändert von Delphi.Narium (26. Mär 2018 um 13:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: Wann wird eine Form angezeigt ?

  Alt 24. Mär 2018, 16:18
Man könnte das auch mit einer eigenen Message lösen, die man sich selbst schickt (aber nicht SendMessage, sondern PostMessage benutzen). Die wird dann abgearbeitet, wenn alle anderen Messages davor durch sind.
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
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.458 Beiträge
 
Delphi 12 Athens
 
#10

AW: Wann wird eine Form angezeigt ?

  Alt 24. Mär 2018, 16:35
Moin...
Zitat:
Man könnte das auch mit einer eigenen Message lösen
...genau.
Delphi-Quellcode:
const
  WM_AFTERSHOW = WM_USER + 100;
...
procedure FormAfterShow(var Msg: TMessage); message WM_AFTERSHOW;
...
procedure TfoMain.FormAfterShow(var Msg: TMessage);
begin
  // das ist dann sichtbar...
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:31 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