Application Minimieren ?

Rund um die LCL und andere Komponenten
pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Application Minimieren ?

Beitrag von pluto »

Hallo,
ich versuche schon den Ganzen Tag meine Application zu minimieren. Ich habe
dabei verschiedene sachen versucht. Aber nix klappt. Ich möchte einfach über einen Button oder wie auch meine Application/Programm Minimieren und das NICHT über den X Button in der Titeleiste weil der wird nicht angezeigt(habe ich ausgeschaltet aus verschiedenen gründen !).

Ich dachte einfach ein Aufruf von: Application.Minimize; sollte reichen, aber es Passiert nix. Nix was ich versucht habe hat geklappt !

Code: Alles auswählen

if (akompo as TPluto2Dlabel).name = 'BntMini' then begin
//      ShowWindow(Application.MainForm.Handle, SW_MINIMIZE);
      writeln('MiniMieren');
 
  //    showwindow(Application.MainForm.Handle,SW_MINIMIZE);
//      Application.MainForm.Perform(LM_SYSCOMMAND,SW_MINIMIZE, 0);
      PostMessage(Application.MainForm.Handle,LM_SYSCOMMAND,SC_MINIMIZE,0);
//        PostMessage(Application.MainForm.Handle, LM_SYSCOMMAND, SC_MINIMIZE, 0);
 
    end; // if name = BntMini
LM_SYSCOMMAND müsst eigentlich WM_SYSCOMMAND heißen, aber das finde ich nirgendwo und der Komplier anscheind auch nicht. Ich habe nur LM_... gefunden ich hoffe mal das ist das gleiche, aber es klappt Trosdem nicht !

Was muss ich tun um meine Anwendung zu Minimieren ? Es handelt sich nur um ein Fenster was ich in die Startleiste verbannen möchte. Ich bin unter Linux, ubuntu 7.04.

:( :( :( Ich komme einfach nicht weiter :( :( :(
Ich habe auch verschiedene Foren durchsucht daher kommt das WM_SYSCOMMAND und alles was damit in Verbindung steht !

edit: Der Code abschnitt wird auch richtig aufgerufen, durch das Writeln gesehen. Aber es passiert Trotzdem nix !
MFG
Michael Springwald

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Hallo Pluto!

Wenn du eine einfache Form - z.B. Form1 - verwendest, dann reicht ein einfaches

Code: Alles auswählen

Form1.WindowState:=wsMinimized;
Viele Grüße, Euklid

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Geht auch nicht ! hatte ich schon versucht. Keine Reaktion:
Application.MainForm.WindowState:=wsMinimized;

Ich habe keinen direkten zugrieff auf "From 1" nur über Application
MFG
Michael Springwald

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Achso, naja. Dann geht wohl deine Frage über meine Kenntnisse hinaus ;)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Self.WindowState:=wsMinimized;
Application.Minimize;

geht unter Windows beides.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich habe es eben noch mal versucht: Unter Linux Gt1 geht das nicht.

Es geht einfach nicht. Ich frage mich wie das mit der Titel Leiste einen LCL Froms klappt.

Gibt es evlt. eine nachricht die ich senden könnte ? wenn ja welche und bitte mit einem kleinen Beispiel....

Ich denke langsam ist handelt sich um ein BUG in Lazarus.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

man muss nur ein from1.Release; nach einem WindowState:=wsMinimized; machen. Dann geht es anscheind.

Edit01: so geht es zwar, aber leider wird die Application nicht mehr in der Startleiste von Ubuntu angezeigt. Also da wo alle geöffneten Fenster angezeigt wird.

Edit02: Nur wenn die Titeleiste angezeigt wird kann ich minimieren, z.b. so:
ShowWindow(Application.MainForm.Handle,SW_MINIMIZE)
wird sie aber nicht angezeigt geht das Minimieren auch nicht. Sogar die Einträge im System Menu sind deaktiviert habe ich gesehen.

Nun ist die Frage wie kann ich die Titelleiste ausblenden und trotzdem Minimieren ?
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

wahr wieder zu voralling: borderstyle war leider nicht auf bsNone sondern auf was anders... als ich es auf bsNone stellt klappte die Lösung nicht.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Achso, das ist aber ein wichtiges Detail.
Soviel ich weiss, hebelst du mit bsNone den Window-Manager aus.
Was dann passiert ist eher Zufall.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich habe das jetzt über ein kleinen Trick gelöst. Ich habe mir die Klasse TFroms angesehen.
mache jetzt nur noch folgendes:

Code: Alles auswählen

procedure TDumyFrom.ChangeStyle(const aValue: TFormBorderStyle);
begin
//  BorderStyle:=
  FFormBorderStyle:=aValue;
  if HandleAllocated then
    TWSCustomFormClass(WidgetSetClass).SetFormBorderStyle(Self, aValue);
 
end;
TDumyFrom ist direkt von TForm abgeleitet.
Beim Minimieren mache ich das jetzt so:
[/code]
TDumyFrom(Application.MainForm).ChangeStyle(bsSizeable);

Code: Alles auswählen


jetzt habe ich noch das onActivet Evnt von Application mit einer Funktion belegt da mache ich das gleiche wie beim minimieren nur mit bsNone.

Das ist zwar nicht schön. aber ich habe jetzt leider keine andere Lösung gefunden.

in Dieversen Foren lese ich immer wenn BorderStyle auf bsNone steht kann man nicht minimieren. Ich frage mich warum ? bzw. wie soll das sonst gehen ?
ich denke mal mein weg kann man sich sparen.... ich denke auch das es ein BUG ist.
Sogar im System Menu sind die Einträge deaktivert Maximieren und Minimieren.
(Rechte Maustaste auf Taskleisten Eintrag).

ich vermute damit hängt das zusammen.  Naja jetzt geht es ja endlich. zwar etwas umständlich aber es geht... wenn ich wieder nix übersehen habe *G*
der Umweg über eine Dumy Klasse musste ich gehen, weil wenn ich direkt borderstyle verändere wird das from neu gezeichnet. das gibt ein unschönen Effekt....
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Fehl anzeige. Es kommt zu anderen Fehler. Z.b. die Titeleiste wird nicht immer wieder ausgeblendet und ich kann auf keine Komponente mehr klicken.

ich gebe es so langsam auf. es geht doch nicht. Schade. Ich dachte das währe einfach. Da habe ich mich wohl geirrt *schniff*
MFG
Michael Springwald

shokwave
Beiträge: 475
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Beitrag von shokwave »

Sorry, aber kann den Fehler nicht nachvollziehen. Hab grad mal 'ne Form genommen Borderstyle:=bsNone, einen Button rein mit Application.Minimize. Geht wunderbar.
SUSE 10.3 ; Laz 0.9.24 ; FPC 2.2.0

mfg Ingo
mfg Ingo

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

was für eine LCL verwendest du ? GTK1 oder 2 ?
ich verwende 1 und da klappt das bei mir 100%ig nicht. Egal was ich auch versuche. Es geht einfach nicht.
MFG
Michael Springwald

hanibal
Beiträge: 369
Registriert: Sa 3. Mär 2007, 16:03
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bramsche (Emsland)

Beitrag von hanibal »

geht bei mir auch nocht, beim minimieren verschwindent das prog auser taskleiste

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Hab ich oben doch gesagt: Was dann passiert hängt wahrscheinlich vom Windowmanager ab.
Also vergleicht doch mal eure WM's und nicht Laz und FPC und Distro - Versionen.
Ich vermute, es ist mit bsNone nicht allgemeingültig zu lösen.

P.S. bei mir klappts unter kwm KDE.

Antworten