AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Manager

Ein Thema von Peter666 · begonnen am 22. Aug 2011 · letzter Beitrag vom 23. Aug 2011
 
Peter666

Registriert seit: 11. Aug 2007
357 Beiträge
 
#1

Windows Manager

  Alt 22. Aug 2011, 14:55
Hi,

bei einem aktuellen Projekt (das ist im Prinzip nahezu komplett), habe ich folgendes Problem. Das Programm dient zur Überwachung von Daten und kann aufgrund des Designs bzw. der Projektvorgaben aus etlichen Fenstern bestehen. Es gibt insgesamt 5 verschiedene Typen von Anzeigefenstern die wahlweise ein Videosignal, bzw. Graphen und verschiedene Alarme beinhalten. Bei mehr als 10 Fenstern wird das schon arg unübersichtlich.
Meine Frage ist nun, wie man diese möglichst einfach am Monitor anordnen kann? Ich kenne derzeit leider überhaupt keine gute Ansätze. Ein Ansatz den ich derzeit notgedrungen nutzte ist dieser hier:

Code:
var
  i, row, column: integer;
  max, remainder: integer;
  maxwidth, maxheight: integer;
  Children: TList;
begin
  Children := TList.Create;
  try
    CollectWindows(Children);
    if Children.Count = 0 then exit;

    row := -1;
    column := 0;
    max := Children.Count shr 1;
    if max = 0 then max := 1;

    remainder := (max * max) - Children.Count;
    maxwidth := Screen.Width div max;
    for i := 0 to Children.Count - 1 do
    begin
      if (remainder = 0) then
      begin
        maxheight := Screen.Height div max;

        if (row < (max - 1)) then
          inc(row)
        else
        begin
          row := 0;
          inc(column);
        end;
      end else
      begin
        if (row < (max - 1 - remainder div max)) then inc(row)
        else
        begin
          row := 0;
          inc(column);
          dec(remainder);
        end;
        maxheight := Screen.Height div (max - (remainder div max));
      end;

      with TForm(children[i]) do
      begin
        Width := MaxWidth;
        Height := MaxHeight;
        Left := column * maxwidth;
        Top := row * maxheight;
      end;
    end;
  finally
    Children.Free;
  end;
end;
das funktioniert eher leidlich und bei mehreren Monitoren (mit unterschiedlichen Auflösungen) hilft das nicht.
Meine Frage ist nun, kennt jemand eventuell Ansätze für derartige Probleme?

Peter
  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 10:07 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