Entwickler-Ecke

Sonstiges (Delphi) - Minimieren verhindern (Leiste)


<TargeT> - Mi 16.04.08 04:48
Titel: Minimieren verhindern (Leiste)
Moin Moin,

Ich hab ein Problem und zwar möchte das mein Programm nicht minimierbar ist, die minimier Buttons habe ich schon deaktiviert.
Wenn man allerdings oben im Fenster, neben den minimier Button einen doppelklick auf die Leiste macht, minimiert sich das Programm trotzdem.
Weis jemand wie ich das verhindern kann?

Danke schonmal....

mfg Target


zongo-joe - Mi 16.04.08 08:20

http://www.delphi-forum.de/viewtopic.php?t=61067&highlight=minimieren+verhindern
http://www.delphi-forum.de/viewtopic.php?t=25554&highlight=minimieren+verhindern
http://www.delphi-forum.de/viewtopic.php?t=15001&highlight=minimieren+verhindern
http://www.delphi-forum.de/viewtopic.php?t=5612&highlight=minimieren+verhindern
http://www.delphi-forum.de/viewtopic.php?t=18872&highlight=minimieren+verhindern

das könnte Dir helfen :wink:


<TargeT> - Mi 16.04.08 08:51

Erstmal Danke für deine Antwort, allerdings hilft mir das nicht weiter.
Denn die 3 Buttons (schließen, maximieren, minimieren) sind schon erfolgreich deaktiviert worden.
Das Problem ist jetzt wie oben schon beschrieben das wenn man auf die Leiste doppelklick macht das sich das Fenster trotzdem minimiert.

lg Target

EDIT: Hat sich erledigt hab das jetzt einfach mit einen Timer gelöst xD unschöne Methode reicht aber voll und ganz für meine Zwecke^^


zongo-joe - Mi 16.04.08 20:18

Also im ersten Thema hat GAUSI eine schöne Lösung Deines Problems,
im dritten MATTHIASSIMMACK.
Wäre schon eleganter...


<TargeT> - Do 17.04.08 07:12

Der Tipp von Gausi bezieht sicher aber auf den Button den ich schon deaktiviert habe!
Das Problem ist die Leiste


zongo-joe - Do 17.04.08 08:14

nee, der bezieht sich auf OnMinimize, und das wird IMHO auch ausgelöst, wenn man mit der Bidleiste miniert


<TargeT> - Do 17.04.08 11:39

Hast du es getestet? Ich habe es bei mir getestet und es hat nicht funktioniert, nur der Button wurde dadurch deaktiviert, aber über die Leiste konnte ich weiterhin minimieren....


jaenicke - Do 17.04.08 12:17

Ich habe es jetzt mal getestet, bei mir geht das wunderbar, und um zu verhindern, dass die Anwendung danach im Hintergrund ist, setze ich kurz StayOnTop:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm75.ApplicationMinimize(Sender: TObject);
begin
  WindowState := wsMaximized;
  FormStyle := fsStayOnTop;
  Application.ProcessMessages;
  FormStyle := fsNormal;
end;

procedure TForm75.FormResize(Sender: TObject);
begin
  WindowState := wsMaximized;
end;

Am saubersten dürfte aber die weiter unten in dem ersten Thread gepostete Lösung von user profile iconbms sein: ;-)
http://www.delphi-forum.de/viewtopic.php?t=61067&highlight=minimieren+verhindern#365773


<TargeT> - So 20.04.08 22:53

Naja den Tipp von bms hab ich auch getestet, der beseitigt aber nicht mein Problem mit der Leiste^^

Aber dein Tipp jaenicke ist wunderbar.... besten dank :D


Blackheart666 - So 20.04.08 23:17

Vieleicht sollte man auch mal dazu schreiben warum das Prog nicht minimiert werden darf !?


<TargeT> - So 20.04.08 23:48

Wird eine Art Kindersicherung für mein klein Bruder, da er halt nur max 1 Stunde pro Tag an PC darf, das Programm startet sich bei jeden System start und lässt sich halt nicht schließen, minimieren usw, Taskleiste, Taskmanager werden blockiert und das Programm hält sich immer im Vordergrund. Nach eingabe eines Pw´s (was nur immer nur einmal funktioniert) ist der PC für eine Stunde freigegeben und nach 62min fährt der PC herunter.

Und wenn jetzt sowas kommt wie: Ah man kanns ja ausm Autostart usw rausnehmen..... sogut kennt er sich nicht aus, er weis halt wie man den PC einschaltet und ein Spiel startet.....


Target


Asura - Fr 29.12.17 16:31

Moin Moin,

über die Googlesuche bin ich auf diese nahezu Lösung meines Problems gestoßen.
Wie könnte man diesen Code anpassen, dass alle Formen der Application gleich behandelt werden.
Weil in diesem Beispiel würde die Form immer im Vordergrund bleiben und das selbst bei Formen die man darüber aufruft, doch will ich mein komplettes Programm im Vordergrund halten und die Deaktivierung dieser Option ist auf einer anderen Form, die noch mit einem Passwort geschützt ist.
Lange Rede kurzer Sinn: Wie ergänze ich diese Möglichkeit, dass er alle Formen der Application gleich behandelt und sich dadurch nicht gegenseitig behindert?


jaenicke - Fr 29.12.17 22:48

<TargeT> hat folgendes geschrieben Zum zitierten Posting springen:
Wird eine Art Kindersicherung für mein klein Bruder, da er halt nur max 1 Stunde pro Tag an PC darf
Da Windows 10 das von Hause aus unterstützt, frage ich mich wozu du da ein zusätzliches Programm brauchst. Den Schutz von Windows bekommst du auch mit Taskmanager usw. ohne Passwort nicht ausgehebelt, da brauchst du gar nicht groß tricksen...

// EDIT:
Oh, Datum des Beitrags übersehen...

user profile iconAsura hat folgendes geschrieben Zum zitierten Posting springen:
Weil in diesem Beispiel würde die Form immer im Vordergrund bleiben und das selbst bei Formen die man darüber aufruft
Bei aktuellen Delphiversionen sollten andere Fenster trotzdem vorne bleiben, wenn du das meinst. Sprich diese sollten nicht hinter dem Hauptfenster verschwinden.


Symbroson - Sa 30.12.17 14:10

War es nicht so, dass Dialoge von sich aus nicht minimierbar sind?
Dh. du müsstest BorderStyle auf bsDialog oder bsSingle setzen:
http://docwiki.embarcadero.com/Libraries/Tokyo/en/Vcl.Forms.TForm.BorderStyle


Asura - Sa 30.12.17 15:27

Also es funktioniert jetzt nun insoweit.
Leider nicht zu 100%
Wenn ich die Einstellung BorderIcons um [biMaximize] oder [biSystemMenu] ändere kann ich selbst im "gesicherten" Modus auf die Leiste klicken von der Form und schon minimiert sich das. [biMinimize] jedoch funktioniert!
Am liebsten würde ich nicht nur das Verkleinern, Verschieben verbieten sondern oben drauf im gesicherten Modus auch die BorderIcons ausstellen.

Hier meine Sicherungsprozeduren:


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:
{------------------------------ Sicherung -------------------------------------}

procedure TF_main.ApplicationMinimize(Sender: TObject);
begin
  if SafetyStatus = 'True' then
    begin
      WindowState := wsMaximized;
      FormStyle := fsStayOnTop;
      Application.ProcessMessages;
      FormStyle := fsNormal;
    end;
end;

procedure TF_Main.SecureWindow(SafetyStatus: String);
begin

  if SafetyStatus = 'True' then BorderIcons := Bordericons - [biMinimize]
  else  BorderIcons := Bordericons + [biMinimize] ;

end;

procedure TF_Main.FormCreate(Sender: TObject);
begin

  filename := ExtractFilePath(ParamStr(0)) + 'Settings.ini';
  ini := TIniFile.Create(filename);

  Safetystatus := ini.ReadString('Settings','Safety','False');
  Application.OnMinimize := ApplicationMinimize;
  SecureWindow(SafetyStatus);
end;


procedure TF_Main.FormResize(Sender: TObject);
begin
    if SafetyStatus = 'True' then WindowState := wsMaximized;
end;


Sobald ich im Adminbereich die Sicherung anstelle, ruft er die Prozedur "SecureWindow" auf und setzt den SafetyStatus.

Wie könnte ich das in Einklang bringen?


haentschman - So 31.12.17 11:09

Moin... 8)

Delphi-Quelltext
1:
SafetyStatus = 'True'                    

Nur mal so am Rande...wäre SafetyStatus nicht besser ein Boolen statt einem String? :gruebel:


Asura - So 31.12.17 13:46

Oh ja, ich war da beim Erstellen der Ini Datei nur im String drin, ganz vergessen, dass es sowas wie ReadBool existiert


user32 - So 31.12.17 15:33

user profile iconBlackheart666 hat folgendes geschrieben Zum zitierten Posting springen:
Vieleicht sollte man auch mal dazu schreiben warum das Prog nicht minimiert werden darf !?


Ich kann es nicht mehr sehen. Immer muss man sich rechtfertigen. Er hat um Hilfe gebeten, wenn du nichts Konstruktives beizutragen hast, lass es bleiben.

Immer dieser unterschwellige "...aber du programmierst doch hoffentlich keine Schadsoftware!!!" - Ton in Entwicklerforen, regt mich massiv auf.
Wenn ihr nicht helfen wollt, schreibt einfach nichts. Oder löscht den Thread, wenn es in illegale Bereiche geht.

Aber ich denke ein Progrmam zu MINIMIEREN (oder das Unterlassen davon) ist noch nicht illegal. Ich kann mir viele Anwendungsmöglichkeiten vorstellen.
Aber es geht uns nichts an.


Christian S. - So 31.12.17 15:48

Danke, user32! Endlich sagt das nach neun Jahren, die der von Dir zitierte Beitrag alt ist, mal jemand! :lol:

Es ist ja wirklich schrecklich, dass "man" sich rechtfertigen muss, obwohl Du das gar nicht musstest. Aber es ist immer gut, wenn sich jemand stellvertetend für andere aufregt.