AGB  ·  Datenschutz  ·  Impressum  







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

Eingabefenster automatisch anzeigen lassen

Ein Thema von zeras · begonnen am 19. Nov 2021 · letzter Beitrag vom 22. Nov 2021
Antwort Antwort
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.653 Beiträge
 
Delphi 12 Athens
 
#1

AW: Eingabefenster automatisch anzeigen lassen

  Alt 19. Nov 2021, 17:48
Danke für die Erklärung. Dann habe ich etwas fürs Wochenende zum Testen.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Eingabefenster automatisch anzeigen lassen

  Alt 20. Nov 2021, 03:26
Zitat:
Weil du dann keine Kontrolle darüber hast zu welchen Zeitpunkt diese angezeigt werden soll..
Doch, hat man.

Visible im FormDesigner: False = nicht sofort anzeigen
das erste Fenster wird immer die MainForm und die wird auch immer sofort sichtbar, egal wie Visible eingestellt war

und anschließend kann man mit Show+Hide oder ShowModal das Fenster anzeigen.


Wenn man das Fenster aus der Liste entfernt, dann kann muß man später dieses Fenster manuell erstellen und es anzeigen (falls nicht schon Visible=True).
Das "Selbsterstellen" ist aber kein Nachteil, da man so das Fenster erst erstellen kann, wenn man es wirklich braucht.

Für ShowModal darf das Fenster (vorher) nicht sichtbar sein (Visible=False).
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Eingabefenster automatisch anzeigen lassen

  Alt 20. Nov 2021, 08:02
Moin...
Zitat:
Das Hauptfenster sollte schon zu sehen sein und wenn das fertig aufgebaut ist, sollte das Eingabefenster aufpoppen.
1. OnActivate ist das gaaanz falsche Event. Lies dir mal die Hilfe dazu durch.
2. OnShow ist fast das richtige Event. Das Problem ist, wenn du das Popup Form hier erzeugst ist das Hauptfenster noch nicht sichtbar weil durch den Dialog das OnShow nicht durchlaufen.

Lösung:
Im OnShow eine Message absetzen und eine "AfterShow" procedure erstellen und aufrufen.
Delphi-Quellcode:
const
  MessageAfterShow = WM_USER + 1;
...
private
procedure AfterShow(Sender: TObject);
procedure AfterShowMessage(var Msg: TMessage); message MessageAfterShow;
...
procedure TMyForm.FormShow(Sender: TObject);
begin
  PostMessage(Self.Handle, MessageAfterShow, 0, 0);
end;
...
procedure TMyForm.AfterShowMessage(var Msg: TMessage);
begin
  AfterShow(Self);
end;
...
procedure TMyForm.AfterShow(Sender: TObject);
begin
  Dialog.Execute; // sinngemäß
end;

Geändert von haentschman (20. Nov 2021 um 08:04 Uhr)
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
497 Beiträge
 
Delphi 12 Athens
 
#4

AW: Eingabefenster automatisch anzeigen lassen

  Alt 20. Nov 2021, 09:39
Ich öffne das erste Fenster zur Anmeldung über Applikation.OnIdle und setze es dann Applikation.OnIdle auf Nil,bevor der Dialog dann aufgerufen wird.
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.192 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Eingabefenster automatisch anzeigen lassen

  Alt 20. Nov 2021, 23:45
Hi zusammen

Ich werfe da mal das Property Popupmode in den Raum...

In der Createprozedure eines Datenmoduls rufe ich folgende Prozedur auf:
Delphi-Quellcode:
function TDMLSQLiteOfficerFE.DedectBiggestFreeSpace: Char;
  var i :integer; PopupWindow: TPopupWindow;
begin
  PopupWindow := TPopupWindow.Create(Self);
  PopupWindow.PopupMode := pmExplicit;
  PopupWindow.PopupParent := HomeOfficerFeMain;
  PopupWindow.RzPageControl1.ActivePage := PopupWindow.RzPageControl1.Pages[0];
  PopUpWindow.Position := poMainFormCenter;
end;
Natürlich könnte das Popupfenster auch automatisch erzeugt werden. Aber dann existiert es auch dann, wenn es gar nicht gebraucht wird.

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
venice2
(Gast)

n/a Beiträge
 
#6

AW: Eingabefenster automatisch anzeigen lassen

  Alt 21. Nov 2021, 02:26
ok.. Scheint nicht erwünscht daher spare ich mir die vielen bit und bytes

Geändert von venice2 (21. Nov 2021 um 17:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Eingabefenster automatisch anzeigen lassen

  Alt 21. Nov 2021, 05:58
Moin...
Zitat:
Und man kann die 2 Form ganz normal in Create erstellen nachdem das Hauptfenster Sichtbar ist. Warum sollte das nicht gehen?
Klar kannst du die Form im Create oder Show erzeugen. Du kannst die 2. Form aber im OnShow nicht über die Mainform Modal anzeigen! Im OnShow ist die Form zwar Visible=True aber menschlich noch nicht sichtbar. Erst wenn OnShow durchlaufen ist!
Zitat:
Das Hauptfenster sollte schon zu sehen sein und wenn das fertig aufgebaut ist, sollte das Eingabefenster aufpoppen
Zitat:
if fEntermanu.ShowModal = mrOK then begin
...ließ das nochmal...
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    lblBlubb: TLabel;
    procedure FormShow(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
var
  Form: TForm;
begin
  Form := Tform2.Create(nil);
  try
    Form.ShowModal; // das ist der Knackpunkt!
  finally
    Form.Free;
  end;
end;

end.
PS:
Zitat:
Ich schicke euch gerne noch die Kompilierte Exe wenn ihr das Projekt nicht zusammenbauen könnt.
...das grenzt an Beleidigung!
Angehängte Dateien
Dateityp: zip Test.zip (6,6 KB, 1x aufgerufen)

Geändert von haentschman (21. Nov 2021 um 06:08 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:14 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