Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Multimonitor Problem / Tabsheets werden "verschoben" dargest (https://www.delphipraxis.net/118134-multimonitor-problem-tabsheets-werden-verschoben-dargest.html)

Boppe 1. Aug 2008 08:28


Multimonitor Problem / Tabsheets werden "verschoben&quo
 
Liste der Anhänge anzeigen (Anzahl: 2)
Morgen Zusammen!
Ich entwickle meine Anwendungen im Büro auf einem Laptop mit angeschlossenem externen Monitor. Wobei der Externe, sofern angeschlossen, als primär Monitor läuft.

Im Moment arbeite ich an einem etwas größeren Programm, welches verschiedene Forms aus dll´s einbindet und diese als TabSheet auf einer PageControl darstellt. So ne Art Modulsystem. Die Diskussionen über Sinn oder Unsinn dieser Methode sind mir durchaus bekannt. :wink:

Starte ich nun meine Anwendungen zuhause, ohne zweiten Monitor, werden die eingebundenen Forms total verschoben dargestellt.

Die Zuweisung erfolgt über
Delphi-Quellcode:
function TLoader.ModulToTab(FPageControl: TPageControl; FModul: TModul): integer;  
var
  Tab : TMyTabSheet;
  WinName: Array [0..255] of char;
begin
  Tab:= TMyTabSheet.Create(FPageControl);
  Tab.PageControl := FPageControl;
  Windows.SetParent(FModul._HWND, Tab.handle);
  GetWindowText(FModul._HWND, WinName,255);
  Tab.Caption      := FModul.Name;// WinName;
  Tab.Name         := FModul.Name;
  Tab.TabVisible   := True;
  Tab.Modul        := FModul;
  Windows.ShowWindow(FModul._HWND, SW_SHOWMAXIMIZED);
  FPageControl.ActivePage := Tab;
  result := FPageControl.TabIndex;
end;
Beim ändern der Hauptform bzw. beim anzeigen des jeweiligen Tabs wird eine Methode in der dll aufgerufen welche die Größe und die Position anpassen sollte

Delphi-Quellcode:
procedure FormRefresh;
begin
    if Modul.Control.ClassNameIs('TPageControl') then
    begin
      DLLForm.Constraints.MaxWidth := TPageControl(Modul.Control).Width-10;
      DLLForm.Constraints.MaxHeight:= TPageControl(Modul.Control).Height-10;
      DLLForm.Align  := alClient;
    end;
end;
Jemand ne Ahnung woran das liegen könnte?

Gruß
Boppe

taaktaak 1. Aug 2008 09:59

Re: Multimonitor Problem / Tabsheets werden "verschoben
 
Seltsam, kann mir nicht vorstellen, dass das ein Multi-Monitorproblem ist. Liegt es vielleicht daran, dass die verschiedenen Monitore eine unterschiedliche Pixeldichte haben??

Boppe 1. Aug 2008 10:08

Re: Multimonitor Problem / Tabsheets werden "verschoben
 
Hallo taaktaak

Zitat:

Zitat von taaktaak
Seltsam, kann mir nicht vorstellen, dass das ein Multi-Monitorproblem ist. Liegt es vielleicht daran, dass die verschiedenen Monitore eine unterschiedliche Pixeldichte haben??

Keine Ahnung ehrlich gesagt! :drunken:

Ich könnte mir höchstens noch vorstellen, dass es vielleicht mit der Reihenfolge zusammenhängt, in der die Forms gezeichnet werden.
Allerdings fehlt mir hier komplett ein Ansatz wo denn das Problem liegen könnte.......

RWarnecke 1. Aug 2008 10:16

Re: Multimonitor Problem / Tabsheets werden "verschoben
 
Mal eine Frage, benutzt Du TForm oder TFrame um die Sachen anzuzeigen ? Wenn Du TForm benutzt, versuche es mal mit TFrame, vielleicht funktioniert es ja besser. Ist nur so eine Vermutung.

nahpets 1. Aug 2008 10:28

Re: Multimonitor Problem / Tabsheets werden "verschoben
 
Hallo,

vergleich mal die Werte von

Delphi-Quellcode:
DLLForm.Constraints.MaxWidth := TPageControl(Modul.Control).Width-10;
DLLForm.Constraints.MaxHeight:= TPageControl(Modul.Control).Height-10;
in den beiden Situationen miteinander.

Verschoben sieht mir so aus, als wäre der Bildschirm aus Programmsicht größer, als er tatsächlich ist.
Sind da eventuell einfach nur Einstellungen am Monitor nicht so ganz in Ordnung? Das Bild dort mal soweit verkleinern, dass rundherum ein Rand übrigbleibt.
Sind es TFT-Monitore oder Röhren-Monitore?
Eventuell ist die Einstellung eines TFT's so, dass er die vom Rechner geschickte Auflösung interpolieren muss oder nicht mit der optimalen Frequenz angesteuert wird, eventuell kommt da das Problem her.
Sind aber alles nur Spekulatius ;)

Stephan

Boppe 1. Aug 2008 10:43

Re: Multimonitor Problem / Tabsheets werden "verschoben
 
Hallo Stephan

Zitat:

Zitat von nahpets

vergleich mal die Werte von

Delphi-Quellcode:
DLLForm.Constraints.MaxWidth := TPageControl(Modul.Control).Width-10;
DLLForm.Constraints.MaxHeight:= TPageControl(Modul.Control).Height-10;

---------------2 Moitore--------------------------
[2008-08-01 11:35:18] TickCount:12178810 Width:966
[2008-08-01 11:35:18] TickCount:12178810 Height:330
[2008-08-01 11:35:18] TickCount:12178826 Width:966
[2008-08-01 11:35:18] TickCount:12178826 Height:214
[2008-08-01 11:35:18] TickCount:12178842 Width:845
[2008-08-01 11:35:18] TickCount:12178842 Height:214
[2008-08-01 11:35:18] TickCount:12178842 Width:990
[2008-08-01 11:35:18] TickCount:12178842 Height:214
[2008-08-01 11:35:18] TickCount:12178842 Width:990
[2008-08-01 11:35:18] TickCount:12178842 Height:354
[2008-08-01 11:35:18] TickCount:12178857 Width:990
[2008-08-01 11:35:18] TickCount:12178857 Height:448
[2008-08-01 11:35:18] TickCount:12178857 Width:990
[2008-08-01 11:35:18] TickCount:12178873 Height:468
[2008-08-01 11:35:18] TickCount:12178873 Width:990
[2008-08-01 11:35:18] TickCount:12178873 Height:468
[2008-08-01 11:35:18] TickCount:12178873 Width:990
[2008-08-01 11:35:18] TickCount:12178873 Height:468
[2008-08-01 11:35:18] TickCount:12178873 Width:990
[2008-08-01 11:35:18] TickCount:12178873 Height:468
[2008-08-01 11:35:18] TickCount:12178873 Width:990
[2008-08-01 11:35:18] TickCount:12178873 Height:468
[2008-08-01 11:35:18] TickCount:12178873 Width:990
[2008-08-01 11:35:18] TickCount:12178873 Height:468
[2008-08-01 11:35:18] TickCount:12178873 Width:990
[2008-08-01 11:35:18] TickCount:12178873 Height:468
---------------1 Moitor---------------------------
[2008-08-01 11:38:06] TickCount:12346667 Width:966
[2008-08-01 11:38:06] TickCount:12346667 Height:330
[2008-08-01 11:38:06] TickCount:12346683 Width:966
[2008-08-01 11:38:06] TickCount:12346683 Height:214
[2008-08-01 11:38:06] TickCount:12346699 Width:845
[2008-08-01 11:38:06] TickCount:12346699 Height:214
[2008-08-01 11:38:06] TickCount:12346699 Width:990
[2008-08-01 11:38:06] TickCount:12346699 Height:214
[2008-08-01 11:38:06] TickCount:12346699 Width:990
[2008-08-01 11:38:06] TickCount:12346699 Height:354
[2008-08-01 11:38:06] TickCount:12346699 Width:990
[2008-08-01 11:38:06] TickCount:12346699 Height:448
[2008-08-01 11:38:06] TickCount:12346714 Width:990
[2008-08-01 11:38:06] TickCount:12346714 Height:468
[2008-08-01 11:38:06] TickCount:12346714 Width:990
[2008-08-01 11:38:06] TickCount:12346714 Height:468
[2008-08-01 11:38:06] TickCount:12346714 Width:990
[2008-08-01 11:38:06] TickCount:12346714 Height:468
[2008-08-01 11:38:06] TickCount:12346714 Width:990
[2008-08-01 11:38:06] TickCount:12346730 Height:468
[2008-08-01 11:38:06] TickCount:12346730 Width:990
[2008-08-01 11:38:06] TickCount:12346730 Height:468
[2008-08-01 11:38:06] TickCount:12346730 Width:990
[2008-08-01 11:38:06] TickCount:12346730 Height:468
[2008-08-01 11:38:06] TickCount:12346730 Width:990
[2008-08-01 11:38:06] TickCount:12346730 Height:468


Ich seh da keine Unterschiede.
Sind beides TFT Monitore. Da die Größe und die Position der Tabs abhängig von meiner Hauptform ist, dürfte die Auflösung doch relativ egal sein oder?
Wenn dann müssten beide verzerrt oder verschoben dargestellt werden oder?

Boppe 1. Aug 2008 10:46

Re: Multimonitor Problem / Tabsheets werden "verschoben
 
Hallo
Zitat:

Zitat von RWarnecke
Mal eine Frage, benutzt Du TForm oder TFrame um die Sachen anzuzeigen ? Wenn Du TForm benutzt, versuche es mal mit TFrame, vielleicht funktioniert es ja besser. Ist nur so eine Vermutung.

Sind alles TForms. Das Projekt ist mittlerweile doch schon sehr umfangreich und das alles wieder umzubauen....*puuuh* Naja mal testen und dann seh ich schon. So kann ich das Ding ja nicht ausliefern

nahpets 1. Aug 2008 10:59

Re: Multimonitor Problem / Tabsheets werden "verschoben
 
wenn's der gleiche Hersteller und der gleiche Typ ist ja, sonst nein.

Wir haben in der letzten Zeit die Röhren durch TFT's ausgetauscht. Bei einigen Rechnern taten einige TFT's es erst dann, wenn wir vorher die Auflösung und die Bildwiederholfrequenz auf den für die TFT's optimalen Wert gestellt hatten. Andere TFT's taten es einfach, auch wann die Darstellung nicht berauschend war, da haben wir die Einstellungen dann später geändert.
Es kann ein Zusammenhang mit Deinem Problem bestehen, muss aber nicht. Ist halt nur 'ne Vermutung.

Stephan


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:51 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