AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi erst 2.Fenster sichtbar machen, und dann aktion ausführen?

erst 2.Fenster sichtbar machen, und dann aktion ausführen?

Ein Thema von Thorben86 · begonnen am 19. Apr 2004 · letzter Beitrag vom 19. Apr 2004
Antwort Antwort
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#1

erst 2.Fenster sichtbar machen, und dann aktion ausführen?

  Alt 19. Apr 2004, 14:53
Hi, ich hab das problem, dass ich aus nem hauptfenster nen 2. Fenster aufrufen will. Das Fenster lasse ich schon beim starten erzeugen, jedoch unsichtbar und nicht enabled.

Das Fenster wird mit
Delphi-Quellcode:
f_strasse.enabled:=false;
f_credits.show;
aufgerufen. Mein Problem ist nun, das ich etwas auslösen lassen will, was erst passieren soll, wenn das fenster geladen ist. Darum hab ich das in den OnActivate Teil reingeschoben, nur weis ich nit, wie ich dem klarmache, das das jetzt aktiviert ist, da der die umstellung auf enabled anscheinend nicht als aktivierung sieht(siehe code unten).

Wenn ich jedoch auf nen button klick(leer), führt der dass aus, wie kann ich dem das anders vermitteln?

Außerdem würd ich gern wissen, wie ich den code unten so abändern könnt, dass ich den timer rauslassen kann, und der trotzdem erst die form sichtbar macht, und dann das unten beschriebene ausführt.

Delphi-Quellcode:
procedure Tf_credits.FormShow(Sender: TObject);
begin
.
.
.
{f_credits.Enabled:=true;
f_credits.Visible:=true;
wenn ich das anstatt dem timer nehme, klappt es theoretisch auch´, nur führt der die aktion erst aus(soll die farbe von nen label faden, was man auch sieht), so dass man das faden sieht, und die Leiste oben, der rest aber erst sichtbar wird, wnn er fertig ist.)

timer2.Enabled:=true;
end;


procedure Tf_credits.Timer2Timer(Sender: TObject);
begin
f_credits.Enabled:=true;
f_credits.Visible:=true;
timer2.Enabled:=false;
end;


€dit: Sry für die merkwürdige ausdrucksweise
  Mit Zitat antworten Zitat
Funky-Sepp

Registriert seit: 14. Okt 2003
Ort: Freudenricht/Velburg
56 Beiträge
 
#2

Re: erst 2.Fenster sichtbar machen, und dann aktion ausführe

  Alt 19. Apr 2004, 14:58
Hi Thorben86

Ich habe das Problem immer so gelöst.

Delphi-Quellcode:
type
  TForm1 = class(TForm)
  private
    fPainted : Boolean;
    { Private-Deklarationen }
  public
    procedure Paint; override;
    procedure AfterShow;
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.AfterShow;
begin

end;

procedure TForm1.Paint;
begin
  inherited Paint;
  if not fPainted then begin
    fPainted := True;
    AfterShow;
  end;
end;
Wolfgang
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: erst 2.Fenster sichtbar machen, und dann aktion ausführe

  Alt 19. Apr 2004, 15:08
Du musst deinem Formular selbst eine benutzerdefinierte Message schicken:
Delphi-Quellcode:
  const
     UM_INIT = WM_USER + 100;

  TForm1 = class(TForm)
     protected
        procedure UM_INIT(var msg: TMessage); message UM_INIT;
  end;
Im Event OnShow schickst du deinem Formular selbst eine Message:
Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
begin
   // zuerst eigen Dinge erledigen
   ....
 
   // schicke Message an eigenes Formular
   PostMessage(Self.Handle, UM_PSS_INIT, 0, 0);
end;
Sobald das Formular angezeigt wurde, wird die Message empfangen und verarbeitet:
Delphi-Quellcode:
procedure TForm1.UM_INIT(var msg: TMessage);
begin
   // hier deinen Programmcode einfügen
   // evtl. prüfen, ob die Arbeit schon getan wurde
   if init_done then
      Exit;
   ...
end;
Andreas
  Mit Zitat antworten Zitat
Nicolai1234

Registriert seit: 21. Feb 2004
1.008 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: erst 2.Fenster sichtbar machen, und dann aktion ausführe

  Alt 19. Apr 2004, 15:14
füge doch hier
Code:
f_strasse.enabled:=false;
f_credits.show;
noch
Code:
f_credits.activate;
hinzu!
  Mit Zitat antworten Zitat
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#5

Re: erst 2.Fenster sichtbar machen, und dann aktion ausführe

  Alt 19. Apr 2004, 15:14
Das mit der message kann ich leider nicht machen, weil meine info lehrerin nen fetten tick hat, alles was wir noch nicht im untericht besprochen haben, z.B repeat-until(nach nem 3/4 jahr delphi) dürfen wir nicht benutzen, auch wenn wir es uns selber beigebracht haben, und diese sachen sind "BÖSE" . Und ich glaub wenn ich der damit ankomme, reißt die mir den kopf ab, weil se keine ahnung hat, was das sein soll (die weis nicht mal wo die netzwerkumgebung/Ordnerfreigabe ist)
  Mit Zitat antworten Zitat
Thorben86

Registriert seit: 20. Nov 2003
Ort: Brühl
365 Beiträge
 
Delphi 2005 Personal
 
#6

Re: erst 2.Fenster sichtbar machen, und dann aktion ausführe

  Alt 19. Apr 2004, 15:21
Das mit dem activate klappt, wenn ichs innen Timer setze, hab zwar eben nach sowas in der liste gesucht, habs aber anscheinend übersehen . Aber kennt denn keiner noch ne möglichkeit ohne den Timer, was meine Info-Lehrerin nicht umbringen würde(s.o.)

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