Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Form unschliessbar und onTop machen? (https://www.delphipraxis.net/119180-form-unschliessbar-und-ontop-machen.html)

turboPASCAL 25. Aug 2008 05:36

Re: Form unschliessbar udn onTop machen?
 
Zitat:

Zitat von Novo
Schaut euch doch mal das Video an, siehe da geht es!

Habe ich, ist ein normales "FormXYZ.FormStyle := fsStayOnTop;"

Zitat:

Zitat von Novo
Ihr wollt mich irgendwie veräppeln oder sowas, ka.

Nö, aber wass soll man dir sagen wenn du erfahrenen Programierern nicht glaubst ...?

Zitat:

Zitat von Novo
Weil diese Option haben so viele Programme, ihr müsst das doch kennen!
Die Option: Im Vordergrund bleiben

Klar, siehe oben.

Die Windows-API sieht solch einen Fall nicht vor.
Ja, man kann auch tricksen mit unsauberen Mitteln was ich dir aber nicht zeige, da so etwas Murx ist.
Man kann ermitteln welches Fenster in oberster Ebene sitzt und seines darübersetzen.
Das kann bei Fullscreenanwendungen zu unschöhnen Effeckten wie flackern etc. führen.

Also, mache es so wie die meisten (guten) Programierer und nutze einfach "fsStayOnTop".

Gruss...

Novo 25. Aug 2008 14:54

Re: Form unschliessbar udn onTop machen?
 
Zitat:

Zitat von dominikkv
so, Novo, probiers mal so:
Delphi-Quellcode:
if chk1.Checked then
  FormStyle := fsStayOnTop else
  FormStyle := fsNormal;
Und damit wir uns nicht missverstehen hab ich mal nen Beispiel angehäng wie sowas aussieht

Eben das geht ja nicht, weil fsStayOnTop nur bei der MainForm geht!
Aber frmAnzeige bzw. Form2
da funktioniert es nicht, auch wenn man

Delphi-Quellcode:
procedure TfrmAnzeige.chkBoxTopClick(Sender: TObject);
begin
if chkBoxTop.Checked then
  frmAnzeige.FormStyle := fsStayOnTop else
  frmAnzeige.FormStyle := fsNormal;
end;
macht!

Das ist es ja was ich die ganze zeit versuche, eine 2.Form, die nicht die MainForm ist, onTop zu bringen!

Deep-Sea 25. Aug 2008 15:19

Re: Form unschliessbar udn onTop machen?
 
Vlt. mal ein ganz trivialer Ansatz, bevor ihr euch noch gegenseitig die Köpfe einschlagt:

Novo, wäre es für dich vlt. möglich, das Fenster was oben bleiben soll, als MainForm zu machen? So musst du zwar ein paar andere Probleme umgehen (zB. das deine Applikation beim schließen der eigentlichen Hauptform jetzt nicht mehr ausgeht), aber das hier wäre gelöst :-D
(Weiß ya nicht, wie groß und wichtig das Projekt ist)


[edit]

Oder wo wir schon dabei sind: Je nachdem könnte man aus der "kleinen Form" eine eigene Applikation machen. Ich weiß ya nicht woher sie ihre Daten bezieht. Sollte sie diese vom Hauptprogramm bekommen, so müssten diese natürlich noch über einen der vielen Wege übergeben werden. Aber das Problem, dass fsStayOnTop nur bei der Hauptform funktioniert, wäre somit erledigt - und das auch noch auf eine recht elegante Weise.

[/edit]

Novo 25. Aug 2008 16:59

Re: Form unschliessbar udn onTop machen?
 
Zitat:

Zitat von Deep-Sea
Novo, wäre es für dich vlt. möglich, das Fenster was oben bleiben soll, als MainForm zu machen? ...

Hm wäre möglich, weil es sit ja ein Trayprogramm dsass die MainForm einblendet, wenn man auf Options klickt,
sollte bei 2Forms möglich sein xD

Damit wäre das Problem nicht wirklich gelöst, sondern umgangen.
Es kann doch nicht wahr sein, dass man nicht eine x beliebige Form onTop machen kann!



Mfg novo

littleDave 25. Aug 2008 17:49

Re: Form unschliessbar udn onTop machen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
@Novo:

möchtest du sowas machen? Siehe Anhang: (nicht mit WIN + D minimierbar, jedenfalls bei mir, WinXP)

Novo 25. Aug 2008 19:13

Re: Form unschliessbar udn onTop machen?
 
Zitat:

Zitat von littleDave
@Novo:
möchtest du sowas machen? Siehe Anhang: (nicht mit WIN + D minimierbar, jedenfalls bei mir, WinXP)

YAAAAAAAH GENAU DAS !!!!
nu erzähl mal, wie du das angestellt hast!!!
:cheers:

littleDave 25. Aug 2008 19:29

Re: Form unschliessbar udn onTop machen?
 
Das ist nicht schwer:

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    { ... }
    procedure FormCreate(Sender: TObject);
  private
    { Private-Declarations }
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  end;

implementation

{ ... }

var
  MitRand : boolean = True;

procedure TForm1.FormCreate(Sender: TObject);
begin
  if MitRand then
     // Wenn du nen Fensterrahmen haben willst, dann musst du "Minimieren" deaktivieren
     BorderIcons     := BorderIcons - [biMinimize]
  else
     // Oder gleich "Keinen Fensterrahmen" setzen
     BorderStyle     := bsNone;

  // Nun noch nach ganz oben
  FormStyle       := fsStayOnTop;
end;

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited;
  // Flags setzen
  Params.Style    := Params.Style or WS_OVERLAPPED;

  // Parent auf "Desktop" setzen
  Params.WndParent := GetDesktopWindow;            
end;
Durch das Setzen von Params.WndParent auf "Desktop" erscheint für eine Form ein neuer Eintrag in der Taskleiste. Das kannst du auch verhinden, jedoch möcht ich dir das nicht vorkauen.

Grüße

Novo 25. Aug 2008 21:58

Re: Form unschliessbar udn onTop machen?
 
Danke danke danke!
Es funktioniert!

Hat sich die mühe doch gelohnt, 3 Seiten lang drauf zu beharren, dass sowas geht!



PS:
habe hier nützliche Codeschnipsel zum mannipulieren von Windows, Fenster und co gepostet!
http://www.delphipraxis.net/internal...t.php?p=931533



Mfg novo



//Thema beantwortet!

SirThornberry 26. Aug 2008 06:05

Re: Form unschliessbar und onTop machen?
 
das so etwas geht hat niemand abgetrtitten. Es ging immer nur um die Behauptung das es möglich ist das ein Fenster IMMER ganz oben bleibt.

PinKing2 26. Jan 2009 18:14

Re: Form unschliessbar und onTop machen?
 
Hallo,

Entschuldigung, dass ich diesen alten, emotionalen Thread wieder aufgreife,
aber ich habe da mal eine Frage zu:

Kann man zur Laufzeit des Programmes diese Einstellung (Form immer im Vordergrund)
auch wieder rückgängig machen, wenn man z.B. möchte, dass der Benutzer
dies auswählen kann (immer Vordergund ja oder nein)?

CreateParams wird ja nur bei Erstellung der Form aufgerufen, und da ich eher
Hobbyprogrammierer bin habe ich keinen Ahnung wie man es anstellt die
Parameter neu einzulesen.

Wäre für einen Tipp sehr dankbar.

Mit freundlichen Grüssen,

PinKing2.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:43 Uhr.
Seite 4 von 5   « Erste     234 5      

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