Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Fenster maximieren


Hazel - Do 12.04.12 15:09
Titel: Fenster maximieren
Hallo^^
ich möchte gerner das wenn ich den Taschenrechner starte und ihn maximiere sich der komplette Taschenrechner maximiert also die Buttons usw.
hab schon im Internet gesucht aber nichts passendes gefunden :(
Danke schon mal im vorraus :)

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 12.04.2012 um 17:00


bummi - Do 12.04.12 16:00

Der Code funktioniert nur wenn man davon ausgeht dass die Seitenverhältnisse des Fensters gewahrt bleiben, daher nicht 100% aber hoffentlich nahe genug dran


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, ADODB;

type
  TForm2 = class(TForm)
    ADOConnection1: TADOConnection;
    Button1: TButton;
    Button2: TButton;
    procedure FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean);
    procedure FormCreate(Sender: TObject);
  private
    VH:Double;
    FIsInResize:Boolean;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormCanResize(Sender: TObject; var NewWidth, NewHeight: Integer; var Resize: Boolean);
var
 w,h:Integer;
begin
  if FIsInResize then exit;
  try
    FIsInResize := true;
    w := width;
    h := Height;
    ScaleBy(NewWidth,w);
    NewHeight := Round(NewWidth / vh);
  finally
    FIsInResize := false;
  end;

end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  vh := Width/Height;
end;

end.


Hazel - Do 12.04.12 16:11

Vielen vielen Dank Bummi bist echt ein Schatz :)

Moderiert von user profile iconNarses: Beiträge zusammengefasst

Funktioniert leider nicht :(


bummi - Do 12.04.12 16:36

Bei einer derart umfassenden Fehlerbeschreibung ,,,,, :nixweiss:


guinnes - Do 12.04.12 17:39

10 €-Cent, daß er den Event nicht zugewiesen hat


Delphi-Laie - Do 12.04.12 17:44

user profile iconHazel hat folgendes geschrieben Zum zitierten Posting springen:
Hallo^^
ich möchte gerner das wenn ich den Taschenrechner starte und ihn maximiere sich der komplette Taschenrechner maximiert also die Buttons usw.
hab schon im Internet gesucht aber nichts passendes gefunden :(
Danke schon mal im vorraus :)


In der Delphi-Fundgrube gibt es etwas, das ich schon mal selbst ausprobierte und als funktionierend einstufte. Es ist allerdings dort ziemlich versteckt.

Unter http://www.delphi-fundgrube.de/faq07.htm ist es der Code unter dem Thema "Applications running in different resolutions".


Hazel - Do 12.04.12 18:15

wollte nur klar stellen ich bin eine SIE :D kein er :P


guinnes - Do 12.04.12 18:20

Dann hat Sie eben den Event nicht zugewiesen :wink:


bummi - Do 12.04.12 18:24

@Hazel
dafür gibt es die Möglichkeit ein Profil anzulegen...
aber nett dass sich hier auch Mädels rumtreiben


Hazel - Do 12.04.12 18:52

Danke für die Antworten ;) Werde aber heut nichts mehr machen :D Morgen wieder^^ hab Delphi eh nur auf dem Arbeitsrechner.. Und jep gibt inzwischen einige Mädels die Programmieren :D


Delete - Do 12.04.12 19:34

user profile iconHazel hat folgendes geschrieben Zum zitierten Posting springen:
Vielen vielen Dank Bummi bist echt ein Schatz :)


user profile iconHazel hat folgendes geschrieben Zum zitierten Posting springen:
wollte nur klar stellen ich bin eine SIE :D kein er :P


Sieht ein richtiger Mann schon an der Ausdrucksweise...


bummi - Do 12.04.12 20:00

vermuten kann man so etwas ... wissen ?
Aber es gibt weibliche Schreiber deren Umgangsformen weniger auf ihr Geschlecht schließen lassen.


FinnO - Do 12.04.12 22:34

Moin,

ich brauche kurze einen Moment um über meine Verlegenheit hinwegzukommen... :oops: Aber man könnte sich sonst auch mal die Eigenschaften Anchors und Align der einzelnen Komponenten anschauen. Damit kann man einzelne Komponenten an beliebige Ränder des Formulars kleben.

Ciaoiii :wink:


bummi - Do 12.04.12 22:47

@FinnO

nur wie schaffst Du es damit, lass es 16 Buttons und ein Edit sein, beim Skalieren des Fensters mitzunehmen?


Hazel - Fr 13.04.12 09:27

So^^ ich hoffe doch alle über ihre "verlegenheit" hinweg gekommen :D ich bekomm das einfach nicht hin :(


bummi - Fr 13.04.12 09:33

Im Objektinspektor die Ereignisse OnCreate und OnCanResize versorgen ...

sonst wird der Code nie aufgerufen


Hazel - Fr 13.04.12 09:38

ok jetzt werden mich alle für absolut blöd halten aber: wie geht das? *unschuldig schau*


Delphi-Laie - Fr 13.04.12 09:57

user profile iconHazel hat folgendes geschrieben Zum zitierten Posting springen:
ok jetzt werden mich alle für absolut blöd halten aber: wie geht das? *unschuldig schau*


Den Objektinspektor wirst Du hoffentlich noch finden. Dort das entsprechende visuelle Element auswählen (oder auf dem Formular). Dann im Reiter "Ereignisse" im Editfeld des entsprechenden Ereignisses doppelklicken - und schon wird die Ereignisbehandlungsroutine automatisch in den Quelltext übernommen. Was Du dort hineinschreibst, ist ein anderes Thema.


FinnO - Fr 13.04.12 09:59

user profile iconbummi hat folgendes geschrieben Zum zitierten Posting springen:
nur wie schaffst Du es damit, lass es 16 Buttons und ein Edit sein, beim Skalieren des Fensters mitzunehmen?


Indem ich sie gleichzeitig auswähle und die Anchors sinnig setze. Der Fall, dass sich 16 Buttons unabhängig voneinander bewegen sollen, passiert selten.


bummi - Fr 13.04.12 10:08

@FinnO
Wenn ich mir ein Form 320*200 vorstelle mit o.g. Buttons/Edit und diese zur Laufzeit 'mitwachsen' sollen sehe ich nicht wohin mich Anchors und Alignments führen sollen.


Nersgatt - Fr 13.04.12 10:09

Wenn Du ein Form hast, mit 3 Button nebeneinander gleichmäßig verteilt:

Quelltext
1:
2:
3:
4:
5:
 
 _____
|     |
|X X X|
|_____|


Wie würdest Du dann die Anchors dieser 3 Buttons setzen, damit sie bei breiter ziehen den Formulars gleichmäßig mitwachsen?

(mit Firemonkey wäre es übrigens gar kein Problem...)


Hazel - Fr 13.04.12 10:10

Danke Bummi :) funktioniert jetzt so halb... Also maximiert aber man sieht dann nur die hälfte :D Hättest du da noch eine Lösung für?


bummi - Fr 13.04.12 10:15

Hallo Hazel,
nur so halb heißt dass dass ein Teil der Eingabeelement unsichtbar ist, oder dass das Form beim Maximieren seine Seitenverhältnisse behält und daher nicht bildschirmfüllend dargestellt wird. Im ersten Fall würde ich Dich bitten den Source als Zip hochzuladen, im 2. Fall ... einen Tod muss man sterben


Hazel - Fr 13.04.12 10:34

So hoffe du kannst helfen :)


bummi - Fr 13.04.12 10:48

Hilfreicher wäre es das Projekt ??.dpr + Taschenrechner.pas + Taschenrechner.dfm in das Zip zu packen ;-)


Hazel - Fr 13.04.12 10:53

:D :D :D sorry^^


Hazel - Fr 13.04.12 10:56

ach und nicht wundern die Pi Funktion geht noch nicht :D ist aber in arbeit^^


bummi - Fr 13.04.12 11:19

Fehler meinerseits :oops:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
procedure TForm1.FormCanResize(Sender: TObject; var NewWidth,
  NewHeight: Integer; var Resize: Boolean);
  var
  w,h:Integer;
begin
 if FIsInResize then exit;
  try
    FIsInResize := true;
    w := width;
    h := Height;
    if vh<1 then
        begin
          ScaleBy(NewHeight,h);
          NewWidth := Round(NewHeight * vh);
        end
    else
        begin
          ScaleBy(NewWidth,w);
          NewHeight := Round(NewWidth / vh);
        end;

  finally
    FIsInResize := false;
  end;
end;


Hazel - Fr 13.04.12 11:24

Vielen vielen Dank :) das ist echt ein tollen Forum :D