Autor Beitrag
arcardia
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Do 07.08.03 12:08 
Wieder mal nen Problem mit StayOnTop

Meine Form1 erzeugt in OnCreate eine Array[1..4] von weiteren Formen
(in diesen Formen sollen später Kamerabilder gezeigt werden)

Diese neu erzeugten Formen sollen am besten per Option im eigenen PopUpMenu wahlweise StayonTop oder eben nicht StayonTop sein.

Die Form1 geht anschliessend per CoolTray Komonente ins Systemtray
während die anderen Formen weiterhin sichtbar sind.

Allerdings war es mir bislang nicht möglich die Biester absolut StayonTop zu kriegen

egal ob ich dynamisch den FormStyle setze / per
SetWindowPos(Self.Handle,HWND_TOPMOST,.... das ganze Aufzwänge
oder nen CreateParams mit EX_TOPMOST mache

nach wenigen rumgeklicke im Windows bzw. Hintergrund verschwinden die Dinger und das wars dann


Was kann ich tun ?
TimonWorld
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 397



BeitragVerfasst: Sa 09.08.03 16:15 
Bei mir gehts! Hier ein Beispiel (ich habe zwei RadioButtons verwendet und eine Form!!!)
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ImVordergrRdiBtnClick(Sender: TObject);
begin
 form1.FormStyle:=fsStayOnTop
end;

procedure TForm1.NormalRdiBtnClick(Sender: TObject);
begin
 form1.FormStyle:=fsNormal
end;

end.


Und es klapt bei mir!?
arcardia Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Sa 09.08.03 21:30 
Keine Chance

Mal ist das eine Fenster StayOnTop und die anderen verschwinden
oder es sind gleich alle weg sobald ich ein x-beliebiges anderes Programm starte

Mit nur einer Form wie in deinem Beispiel ist das auch kein Problem
aber wenn ein Programm aus mehreren Formen besteht , die wiederrum
alle StayOnTop sein sollen dann gibts nen problem
recall
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: So 10.08.03 23:25 
Stimmt, habs auch probiert, ab 3 Forms klappts nicht mehr :(

Holzhammermethode:
ausblenden Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Interval := 1;
  Application.BringToFront;
end;

Du musst nur den Timer ein/aus schalten, dann werden aber alle Forms nach vorne geholt.
StayOnTop gilt nur innerhalb der Anwendung.

Ich glaube es geht gar nicht, dass zwischen 2 Fenstern einer Anwendung eine anderes Programm hockt.

Wenn die Fenster alle dasselbe können, dann schreib doch ein Extra-Prg und starte dieses dann 10mal (ShellExecute, oder sonstwas) aus dem Hauptprg heraus.

Dann musst du die Daten übergeben (unelegant per File, elegant per DDE, SendMessage/WMCopyData o.ä.).

Viele Grüsse.
arcardia Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 48



BeitragVerfasst: Mo 11.08.03 06:58 
Mit dem Timern würde es zwar gehen
da aber in dem Fenster auch ein popUp menu geöffnet werden kann , so kommt es früher oder später dazu das ein anderes fenster durch den timeraufruf "stayonTop..." das popup menu überlagert