Autor Beitrag
Peter18
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Mo 29.01.18 12:06 
Ein freundliches Hallo an alle,

nachdem die Scalierung des Hauptformulars ganz gut funktioniert wollte ich das Prinzip auf die Modal-Formulare übertragen: Banane!!!

Die Modal-Formulare werden mit Rollbalken gezeigt. Sie haben die Größe, wie zur Entwicklungszeit, auch bei den Werten "Height" und "Width". In den Rollbalken sind unter "Range" die gleichen Werte zu finden. Ich kann nun das Formular mit der Maus auf die richtige Größe ziehen, würde es aber lieber gleich in der richtigen Größe zeigen.

Muß ich mir die Größe selbst ausrechnen, oder sind sie irgendwo versteckt (hab sie noch nicht gefunden)??

Grüße von der regnerischen Nordsee

Peter
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 29.01.18 18:22 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Mo 29.01.18 18:58 
Hallo Frühlingsrolle,

Dank Dir für Deine Antwort, aber so weit war ich mit meiner Frage auch. Ich möchte das Formular in der Größe anzeigen, dass die Rollbalken verschwinden wenn Windows alles umscaliert.

Grüße von der noch immer regnerischen Nordsee

Peter
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 29.01.18 21:59 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Di 30.01.18 15:50 
Hallo Frühlingsrolle,

Dank Dir nochmals! Ich hatte gehofft, es gäbe eine einfachere Lösung. Aber dann könnt es ja jeder.

Zur Scalierung hat sich eine weitere Frage ergeben. Dafür mach ich aber eine neue Frage auf.

Grüße von der sonnigen Nordsee

Peter
Peter18 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 489
Erhaltene Danke: 2


Delphi4
BeitragVerfasst: Di 30.01.18 18:20 
Hallo Frühlingsrolle und alle,

hier eine Lösung die schneller geht und unsichtbar machen erübrigt vor allem, wenn sie In OnShow verwendet wird:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function TDatEdit.FormHeight( I : Integer ): Integer;
begin
  if I > 0 then while GetWindowLong(Handle, GWL_STYLE) and WS_HSCROLL <> 0 do Width := Width + I
           else while GetWindowLong(Handle, GWL_STYLE) and WS_HSCROLL  = 0 do Width := Width + I;
  if I <> 1 then FormHeight( -(I div 2) );
end;

function TDatEdit.FormWidth ( I : Integer ): Integer;
begin
  if I > 0 then while GetWindowLong(Handle, GWL_STYLE) and WS_VSCROLL <> 0 do Height := Height + I
           else while GetWindowLong(Handle, GWL_STYLE) and WS_VSCROLL  = 0 do Height := Height + I;
  if I <> 1 then FormWidth( -(I div 2) );
end;

Die Routinen werden rekursiv durchlaufen und arbeiten nach dem Verfahren der binären Suche. Der Wert "I" muß beim ersten Aufruf also eine X-Fache Verdoppelung von 1 sein z.B. 20.

Die Routine macht 20-ger Sprünge, bis der Rollbalken weg ist, dann 10-er Sprünge, bis err wieder da ist und so weiter. Die Routine terminiert, wenn "I=1" ist.

Hinweis: Anker werfen ist nur oben und links gut, sonst droht eine Endlosschleife!!!

Grüße von der Nordsee

Peter