AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Verhindern, das über eine Form "drüber-resized" wird
Thema durchsuchen
Ansicht
Themen-Optionen

Verhindern, das über eine Form "drüber-resized" wird

Ein Thema von S.Langhammer · begonnen am 13. Mai 2014 · letzter Beitrag vom 14. Mai 2014
 
S.Langhammer

Registriert seit: 28. Mai 2013
23 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: Verhindern, das über eine Form "drüber-resized" wird

  Alt 14. Mai 2014, 08:23
Die Appbars habe ich probiert. Dabei entstünde leider das Problem, das ja auch andere Anwendungrn nicht mehr über die Mainform kämen.

Im Falle der TMessage krieg ich auf die Schnelle nicht ganz rausgefitzt, wie ich den lParam sauber zu nem TRect bzw Pointer auf ein TRect umgewandelt bekomme.

Also fuhrwerke ich jetzt im OnCanResize herum.
Bislang habe ich das hier:

Delphi-Quellcode:
var
  workArea : TRect;
  I: Integer;
begin
  Resize := True;
  if (FormMain.WindowState = wsMaximized) and
     (Self.Monitor = FormMain.Monitor) then
  begin
    workArea := Screen.WorkAreaRect;
    workArea.Top := workArea.Top + FormMain.Height - 8;
    workArea.Left := 0;
    if Screen.MonitorCount >1 then
    begin
      workArea.Width := 0;
      for I := 0 to screen.MonitorCount -1 do
        workArea.Width := workArea.Width + Screen.Monitors[I].Width;
    end;
    Resize := (Mouse.CursorPos.Y >= workArea.Top) or (Self.WindowState = wsMaximized);
  end;
Die Definition der workArea liegt nur zu Demozwecken in der Funktion. Wenn ich das Ok für das Gesammtverhalten der Oberfläche bekomme will ich die workArea auslagern.

Wenn ich jetzt versuche über die Mainform drünber zu resizen wird die Form stattdessen darübergeschoben. Auch kein erwünschtes Verhalten.
Auch noch problematisch (zumindest aus meiner Sicht) ist, dass wenn man nun auf einem sekundären Monitor unter Windows 7 die Form an die Oberkante zu resizen, kein automatisches Resize über die gesammte Monitorhöhe erfolgt. Ich kann mir nicht vorstellen, dass das beim Endanwender besonders gut ankommt.

Wenn ich's noch zusätzlich damit versuche:
Delphi-Quellcode:
    if Mouse.CursorPos.Y <= workArea.Top then
      Self.Top := workArea.Top;
Flackert das ganze nur und wird trotzdem weiter gezogen.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 Uhr.
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