Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Appbar überdeckt StandartTaskleiste (https://www.delphipraxis.net/186170-appbar-ueberdeckt-standarttaskleiste.html)

GroZ 10. Aug 2015 10:20

Delphi-Version: 7

Appbar überdeckt StandartTaskleiste
 
Hey habe jetzt eine Appbar erstellt geht auch an die Rechte seite aber überdeckt die Normale Windowsleiste. Was halt nicht sein soll.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters,
  cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxCalc,
  Buttons, Menus, dxTaskbarProgress, StdCtrls, cxButtons, cxCalendar, ShellApi;

type
  TForm1 = class(TForm)
    Uhr: TcxClock;
    MailBtn: TcxButton;
    Googlesuche: TEdit;
    WordBtn: TcxButton;
    CalcBtn: TcxButton;
    FaceBtn: TcxButton;
    AmazonBtn: TcxButton;
    procedure GooglesucheKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private-Deklarationen }
    fAppBarData: _AppBarData;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.GooglesucheKeyDown(Sender: TObject;
var Key: Word;
    Shift: TShiftState);
var X : string;
begin
  X := GoogleSuche.Text;
  if key = VK_Return then
  begin
  ShellExecute(handle, nil, Pchar('https://www.' + X + '.de'), nil, nil, SW_SHOW)
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
const WM_APPBARMSG = WM_USER + 1;
var iResult: integer;
begin
  fAppBarData.cbSize := SizeOf(TAppBarData);
  fAppBarData.hWnd := Self.Handle;
  fAppBarData.uCallbackMessage := WM_APPBARMSG;
  fAppBarData.uEdge := ABE_RIGHT;
  fAppBarData.rc.Left := Screen.Width - Self.Width;
  fAppBarData.rc.Right := Screen.Width;
  fAppBarData.rc.Top := 0;
  fAppBarData.rc.Bottom := Screen.Height; //Denke das es hier dran liegt jedoch welchen wert muss ich eingeben?

  iResult := SHAppBarMessage(ABM_NEW, fAppBarData);
  if iResult = 0 then
  begin
    ShowMessage('Die TaskBar konnte nicht erstellt werden. Möglicherweise existiert bereits eine TaskBar an dieser Position');
    Exit;
  end;
  self.Width := screen.Width;
  SHAppBarMessage(ABM_QUERYPOS, fAppBarData);
  SHAppBarMessage(ABM_SETPOS, fAppBarData);
  Application.ProcessMessages;
  MoveWindow(fAppBarData.hWnd, fAppBarData.rc.left, fAppBarData.rc.top,
  GetSystemMetrics(SM_CXSCREEN), fAppBarData.rc.Bottom, true);

  end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  SHAppBarMessage(ABM_REMOVE, fAppBarData);
end;

end.

Daniel 10. Aug 2015 12:38

AW: Appbar überdeckt StandartTaskleiste
 
Ich habe hier mal die Offtopic-Beiträge gelöscht.

Eine Sache möchte ich an dieser Stelle ganz deutlich machen:
Sich nicht an einer Diskussion beteiligen zu wollen, ist völlig in Ordnung. Einem Anfänger ans Bein zu pinkeln, weil sein Ansatz möglicherweise arg unbeholfen ist, geht gar nicht. Helfen oder bleiben lassen - aber nicht nur rummosern. Solche Verhaltensweisen sind auch im echten leben im Allgemeinen unbeliebt - ich weiß gar nicht, warum sich das einige immer wieder in der Online-Welt rausnehmen müssen.

rapante 10. Aug 2015 12:49

AW: Appbar überdeckt StandartTaskleiste
 
Hy,
probiere es mit Screen.WorkAreaHeight (WorkAreaTop, WorkAreaLeft, WorkAreaWidth).

GroZ 10. Aug 2015 13:10

AW: Appbar überdeckt StandartTaskleiste
 
Hey rapante hab es hinbekommen hatte lediglich die Höhe zu groß eingestellt :)
trotzdem danke!

Sherlock 10. Aug 2015 14:59

AW: Appbar überdeckt StandartTaskleiste
 
Funktioniert das dann jetzt mit jeder Auflösung, oder nur mit dem, was Du ausgemessen hast? Rapantes Vorschlag müsste eigentlich ziemlich genau das sein, was Du brauchst, um es allgemeingültig hinzubekommen.

Sherlock

GroZ 10. Aug 2015 15:37

AW: Appbar überdeckt StandartTaskleiste
 
Ich denke es ist nur für die Auflösung die ich habe.. Weiß aber nicht genau wie ich rapantes Vorschlag einbinden soll.

BadenPower 10. Aug 2015 15:48

AW: Appbar überdeckt StandartTaskleiste
 
Zitat:

Zitat von Sherlock (Beitrag 1311698)
Funktioniert das dann jetzt mit jeder Auflösung, oder nur mit dem, was Du ausgemessen hast? Rapantes Vorschlag müsste eigentlich ziemlich genau das sein, was Du brauchst, um es allgemeingültig hinzubekommen.

Darauf hatte ich bereits heute Morgen hingewiesen und auch die Verwendung von Screen.WorkAreaXYZ nahegelegt.

Leider wurden die Beiträge durch Daniel mit diesem Hinweis gelöscht:
Zitat:

Zitat von Daniel (Beitrag 1311689)
Ich habe hier mal die Offtopic-Beiträge gelöscht.



Zitat:

Zitat von GroZ (Beitrag 1311701)
Ich denke es ist nur für die Auflösung die ich habe.. Weiß aber nicht genau wie ich rapantes Vorschlag einbinden soll.

Die Höhe des Formulars stellst Du auf Screen.WorkAreaHeight.
Forular.Top auf Screen.WorkAreaTop. Und Left auf Screen.WorkAreaLeft + Screen.WorkAreaWidth - Self.Width.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz