Announcement

Collapse
No announcement yet.

Taskbar von Win95 in den Hintergrund setzen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Taskbar von Win95 in den Hintergrund setzen

    Hallo zusammen,

    wer kann mir sagen, wie man aus einem Delphiprogramm herraus die Taskleiste von Win95 in den Hintergrund setzen kann und wie ich es verhindere das ein Delphiprogramm gestartet wird wenn die Bildschirmauflösung nicht 640 x 480 ist?

  • #2
    Hallo,

    über die Variable <b>Screen</b> kann eine <b>TScreen</b>-Instanz, die den Bildschirm repräsentiert, direkt ausgewertet werden. Die Eigenschaft <b>DesktopHeight</b> gibt die Höhe des Desktops relativ zur linken oberen Ecke des Hauptbildschirms an. Die Eigenschaft <b>DesktopWidth</b> gibt die Breite des Desktops relativ zur linken oberen Ecke des Hauptbildschirms an. Somit kann man beim Programmstart die Werte nachprüfen und ggf. abbrechen.

    Falls die eigene Anwendung im "Vollbild" laufen soll (und auch die Taskleiste verdeckt), ist folgendes notwendig:

    <pre>
    { ************************************************** **************
    Typ : Hauptformular
    Autor : Andreas Kosch
    Compiler : Delphi 5 Enterprise
    Betriebssystem : Windows 98
    Begonnen am : 07.11.1999
    Beschreibung : Formular nimmt den vollständigen Bildschirm-
    bereich ein.
    ************************************************** ************** }
    unit FullScreenFrm;

    interface

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

    type
    TFormMain = class(TForm)
    BitBtnClose: TBitBtn;
    CheckBoxFullScreen: TCheckBox;
    procedure CheckBoxFullScreenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    private
    { Private-Deklarationen }
    FRect : TRect;
    procedure WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo);
    message WM_GETMINMAXINFO;
    public
    { Public-Deklarationen }
    end;

    var
    FormMain: TFormMain;

    implementation

    {$R *.DFM}

    procedure TFormMain.FormCreate(Sender: TObject);
    begin
    FRect := BoundsRect;
    end;

    { Immer dann, wenn auch der Bereich der Windows-Taskleiste ausgeblendet
    werden soll, muß die Botschaft WM_GETMINMAXINFO ausgewertet und der
    Botschafts-Parameter dabei durch die neue Größe modifiziert werden. }

    procedure TFormMain.WMGetMinMaxInfo(var Msg: TWMGetMinMaxInfo);
    begin
    inherited;
    with Msg.MinMaxInfo^.ptMaxTrackSize do
    begin
    X := Screen.Width + (Width - ClientWidth);
    Y := Screen.Height + (Height - ClientHeight);
    end;
    end;

    procedure TFormMain.CheckBoxFullScreenClick(Sender: TObject);
    begin
    if CheckBoxFullScreen.Checked then
    SetBounds(Left - ClientOrigin.X, Top - ClientOrigin.Y,
    Screen.Width + (Width - ClientWidth),
    Screen.Height + (Height - ClientHeight))
    else
    BoundsRect := FRect;
    end;

    end.
    </pre>

    Das Beispiel stammt aus meinem demnächst erscheinenden Buch <b>Delphi Win32-Lösungen</b>

    Comment


    • #3
      Hallo Andreas,

      vielen Dank für die Hinweise.
      Du hast uns sehr geholfen.
      Somit hast Du zumindest 1 Käufer für Deine Bücher
      Delphi WIN 32 Lösungen und COM/DCO

      Comment


      • #4
        Hallo Herr Kosch,

        ich habe Ihr Beispiel versucht, doch leider funktioniert es nicht.
        Die Taskleiste überdeckt immer den unteren Rand.
        Erst ein umstellen auf "Taskleiste automatisch in den Hintergrund"
        bringt abhilfe.
        Automatisch bei Programmstart funktioniert so nicht.

        Vielen Dank

        A.Weile

        Comment


        • #5
          Hallo,

          bei welchem Betriebssystem mit welcher Konfiguration tritt dieser Effekt auf? Was passiert beim Umschalten über die Checkbox

          Comment


          • #6
            Hallo Herr Kosch,

            es tritt auf bei:
            WIN 95C mit I-Explorer 5.0
            Bildschirmauflösung 640*480. Dabei sollte es funktionieren.

            Beim Start meines Programmes, also in 640*480, wird das programm
            schon komplett dargestellt. Egal wie die Checkbox steht.

            Doch wenn die Checkbox " Immer im Vordergrund" markiert ist und/oder
            Checkbox " Automatisch im Hintergrund" markiert ist, überdeckt die Taskleiste den unteren Bereich des Programmes.

            Wird die Checkbox " Immer im Vordergrund" deaktiviert, verschwindet die Taskleiste sofort und der komplette Bildschirm ist sichtbar.
            Somit auch das Programm.

            viele Grüße

            A.Weiler
            [email protected]

            Comment

            Working...
            X