Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Form wird nicht korrekt positioniert

  Alt 1. Mai 2014, 12:05
Zitat:
Die Verwendung von der globalen Variablen Form1 ist schon mal ganz übel.
Wieso sollte man denn nicht Form1. , Form2. usw. verwenden?
Weil du dir damit Abhängigkeiten in den Code holst, die dir irgendwann auf die Füße fallen. Benenne deine Form doch mal vernünftig und schon funktioniert nichts mehr.

Ansonsten ist dieses Thema hier schon mehrfach durchgekaut worden und bedarf keiner weiteren Diskussion, da es keine neueren Erkenntnisse geben würde (nur ein schales Echo bereits geführter Diskussionen)
siehe dazu auch http://www.delphipraxis.net/179859-u...ree-tform.html
Zitat:
Wenn es irgendeine Form sein soll, dann übergibt man diese als Parameter.
Wie genau ist das gemeint? Davon habe ich noch nie etwas gelesen und dachte, Form1. , Form2. usw wäre normal.
Hmmm, wie man eine Methode/Prozedur mit Parametern erstellt weißt du aber schon?
Zu der "Normalität" siehe Link oben ...
Zitat:
Instanzen erzeugen ohne Ressource-Schutzblock ist auch sträfliches Unterlassen.
Es war nur ein Test

Ich habe deinen Rat mal umgesetzt und deinen Code zum Testen übernommen.
Selbst damit wird mein erzeugtes Fenster seltsamerweise an Position 0;0 angezeigt.

Dazu sei eventuell noch gesagt, dass das Form, aus dem ich diesen Code aufrufe, Modal ist. Daran könnte es liegen denke ich.
Hat sich erledigt. Selbst, wenn ich den Code aus dem MainForm aufrufe passiet dasselbe.
Mein Code funktioniert einwandfrei in einem VCL-Projekt. Hast du ein FMX-Projekt? (Wäre manchmal hilfreich, dieses gleich im ersten Beitrag zu erwähnen)
Delphi-Quellcode:
unit UI_Form_Main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TUIMain_Form = class( TForm )
    Button1 : TButton;
    procedure Button1Click( Sender : TObject );
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  UIMain_Form : TUIMain_Form;

implementation

{$R *.dfm}

procedure DarkenForm( AForm : TForm );
var
  LForm : TForm;
begin
  if not Assigned( AForm ) then
    raise EArgumentNilException.Create('AForm darf nicht NIL sein!');
  LForm := TForm.Create(AForm);
  try
    LForm.Position := poOwnerFormCenter;
    LForm.Width := AForm.Width;
    LForm.Height := AForm.Height;
    LForm.Color := clBlack;
    LForm.AlphaBlend := True;
    LForm.AlphaBlendValue := 182;
    LForm.ShowModal;
  finally
    LForm.Free;
  end;
end;

procedure TUIMain_Form.Button1Click( Sender : TObject );
begin
  DarkenForm(Self);
end;

end.
UPDATE
Die Angabe deiner Delphi-Version (auch im Profil) wäre durchaus hilfreich ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 1. Mai 2014 um 12:11 Uhr)
  Mit Zitat antworten Zitat