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 ...