[Delphi] Een aantal forms fsStayOnTop zetten

Pagina: 1
Acties:

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik moet bij het maken van de MainForm (dus starten van de applicatie) een aantal Forms FormStyle := fsStayOnTop zetten. De Forms waar het om gaat hebben Tag = 1, dus wat ik eigenlijk moet hebben is een for lus die door alle forms heen loopt, checkt of Tag = 1, zoja, FormStyle := fsStayOnTop.

Maar helaas is er geen complete lijst (iig niet in Application.Components[]) van de Forms bij het starten van de MainForm. Hoe doe ik dit dan?

Alvast bedankt.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Waarom niet gewoon designtime al op fsStayOnTop zetten dan?

www.fendt.com | Nikon D7100 | PS5


  • ArieProductions
  • Registratie: Januari 2002
  • Laatst online: 27-11-2024
In de project options alle forms auto-createn, en bij 1 beginnen.

procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
TempForm : TForm;
begin
for i := 1 to Application.ComponentCount-1 do
begin
TempForm := Application.Components[i] as TForm;
ShowMessage(TempForm.Caption);
end;
end;

"Quidquid latine dictum sit, altum videtur" (Whatever is said in Latin sounds profound)


  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

code:
1
2
3
4
5
6
7
var
  i: integer;
begin
  for i := 0 to Screen.Forms do
    if Screen.Forms[i].Tag = 1 then
    Screen.Forms[i].FormStyle = fsStayOnTop;
end;

Dit kun je plaatsen onderaan je project source nadat alle schermen gecreate zijn.

www.fendt.com | Nikon D7100 | PS5


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op vrijdag 25 januari 2002 14:30 schreef FendtVario het volgende:
Waarom niet gewoon designtime al op fsStayOnTop zetten dan?
Dat heeft zijn redenen. :P

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op vrijdag 25 januari 2002 14:32 schreef ArieProductions het volgende:
In de project options alle forms auto-createn, en bij 1 beginnen.

[code]
Ze worden al auto-create, het vreemde is dat in de Application.Components[] alleen de MainForm voorkomt, en de rest niet en dan maakt het niet uit of ik dat bij de MainForm.OnCreate of bij de MainForm.OnShow check, is beide hetzelfde.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op vrijdag 25 januari 2002 15:36 schreef FendtVario het volgende:

[code]

Dit kun je plaatsen onderaan je project source nadat alle schermen gecreate zijn.
In Screen.Forms[] zitten alleen de zichtbare forms (toch?), en het gaat mij om alle forms binnen mijn applicatie.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Wie is de owner [Als in AOwner in TForm.Create(AOwner)] van de forms?

edit:

Ow, auto-create, dus is Application de owner; op de OnCreate van de mainform zijn ze nog niet bekend [In Application.Components], op de OnShow wel.

Tenminste met Delphi5, misschien is het weer ander met Delphi6 :)

  • AdLentis
  • Registratie: Mei 2000
  • Laatst online: 27-10-2025

AdLentis

Gadget Inspector

Je mainform wordt als eerste aangemaakt dus de anderen zijn nog niet aanwezig!!! Pas na de OnCreate worden die aangemaakt. Dus voor de Application.Run kan je pas instellen of ze StayOnTop moeten zijn.

Ik ben tenminste niet altijd hypocriet!


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Deze functie geeft mij alleen de titel van de MainForm, rara:
code:
1
2
3
4
5
6
7
8
9
10
procedure TMainForm.FormShow(Sender: TObject);
var
  x: Integer;
begin
  for x := 0 to Application.ComponentCount - 1 do begin
    if Application.Components[x] is TForm then begin
    showmessage((Application.Components[x] as TForm).Caption);
    end;
  end;
end;

Er zijn dus echt wel meer formen, en allemaal op auto-create!

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • ArieProductions
  • Registratie: Januari 2002
  • Laatst online: 27-11-2024
Vreemd, ik had m'n code getest met 2 Formpjes = 2 Titels, gewoon onder een Buttonclick.
Kon ze alle twee vinden en wanneer ik een form niet creerde werd deze ook niet gevonden.

Zal nog eens kijken, of ik dit kan herhalen in het onshow event

"Quidquid latine dictum sit, altum videtur" (Whatever is said in Latin sounds profound)


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ok, ik ben benieuwd.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Iemand???

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Ik installeer morgen wel Delphi6, dan zal ik 's kijken.

In Delphi5 doet hij het gewoon goed bij mij.

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op zaterdag 26 januari 2002 15:18 schreef DiFool het volgende:
Ik installeer morgen wel Delphi6, dan zal ik 's kijken.

In Delphi5 doet hij het gewoon goed bij mij.
Misschien kun je je code online zetten/mailen, test ik hem ook ff in Delphi 6.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • AdLentis
  • Registratie: Mei 2000
  • Laatst online: 27-10-2025

AdLentis

Gadget Inspector

Ik ga morgen ook ff kijken want de pc waar ik Delphi op heb staan is nu een VHS bandje aan het digitizen. ;)

[off-topic]
Heb het eindelijk voor elkaar gekregen DivX goed te configureren, zodat ik geen onleesbare avi's krijg. :)
[/off-topic]

Ik ben tenminste niet altijd hypocriet!


  • ArieProductions
  • Registratie: Januari 2002
  • Laatst online: 27-11-2024
Op zaterdag 26 januari 2002 14:25 schreef jelmervos het volgende:
Iemand???
Sorry, Weekend :Z
Maar,
code:
1
2
3
4
5
6
7
8
9
10
procedure TMainForm.FormShow(Sender: TObject);
var
  x: Integer;
begin
  for x := 0 to Application.ComponentCount - 1 do begin
    if Application.Components[x] is TForm then begin
    showmessage((Application.Components[x] as TForm).Caption);
    end;
  end;
end;

Kweetniet hoor maar doet het bij mij gewoon goed :? StayOnTop kan je overigens niet veranderen in onShow of onHide.
Zal ik het projectje maar opsturen?

"Quidquid latine dictum sit, altum videtur" (Whatever is said in Latin sounds profound)


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Op zondag 27 januari 2002 14:09 schreef ArieProductions het volgende:

[..]


Zal ik het projectje maar opsturen?
Oke, bedankt!

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Bij de OnShow van de MainForm werkt het niet, maar zodra je de procedure aan een knop/timer hangt werkt het wel goed. Vreemd??

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • ArieProductions
  • Registratie: Januari 2002
  • Laatst online: 27-11-2024
Bij de OnShow van de MainForm werkt het niet, maar zodra je de procedure aan een knop/timer hangt werkt het wel goed. Vreemd??
Kreeg zelfs een compiler error toen ik procedure in OnShow zette, maar is misschien wel logisch, omdat voor het uitvoeren van OnShow de Formstyle bekend moet zijn? (OnHide werkt ook niet)

vond dit regeltje nog in de Help:
Note:It is not advisable to change FormStyle at runtime.

"Quidquid latine dictum sit, altum videtur" (Whatever is said in Latin sounds profound)

Pagina: 1