![]() |
Fensterposition falsch
Hallöle...:P
Ich habe eine Form die einen eigenen Message Dialog darstellt. Diesem Dialog übergebe ich den Parent (TForm). Über diesen Parent setze ich den Dialog positionstechnisch mittig auf den Parent. Soweit so gut. Funktioniert eigentlich schmerzfrei. Nur ein Fenster, auf dem der Dialog aufpoppen soll, will nicht als Parent funktionieren. :evil: Der Dialog geht immer auf dem ersten Monitor auf. Prüfungen: 1. Positionen des Dialoges...ok. (sollte auf dem 2. Monitor aufgehen) 2. Eigenschaften der Parent Form geprüft...ok (identisch mit den anderen wo es funktioniert)
Delphi-Quellcode:
class function MessageDlg(MessageText: string; MessageHeader: string; MsgType: TMsgDlgType; Buttons: TMsgDlgButtons; MessageColor: Integer = clBlack; Parent: TForm = nil): Integer; overload;
... function TfoBaseDialog.ShowDialog(MessageCaption: string; MsgType: TMsgDlgType; Buttons: TMsgDlgButtons; MessageLines: TStrings; Help: LongInt = 0; MessageColor: Integer = clBlack; Parent: TForm = nil): Integer; var I: Integer; begin FMessageHeader := MessageCaption; FMessageLines := MessageLines; Self.PopupParent := Parent; // vor der Positionierung! pngil32.GetIcon(Ord(MsgType), imgTop.Picture.Icon); if MessageCaption > '' then begin lblTop.Caption := MessageCaption; end else begin case MsgType of vmtAlert: lblTop.Caption := 'Warnung'; vmtInformation: lblTop.Caption := 'Information'; vmtError: lblTop.Caption := 'Fehler'; vmtQuestion: lblTop.Caption := 'Frage'; vmtOpen: lblTop.Caption := 'Öffnen'; vmtSave: lblTop.Caption := 'Speichern'; end; end; CreateButtons(Buttons); for I := 0 to FButtonList.Count - 1 do begin TButton(FButtonList[0]).Left := ClientWidth - 5 - (FButtonList.Count * 75) - ((FButtonList.Count - 1) * 5); if I > 0 then begin TButton(FButtonList[I]).Left := TButton(FButtonList[0]).Left + ((I * 75) + (I * 5)); end; end; // Position bezogen auf Parent if Assigned(Parent) then begin Self.Top := Parent.Top + Floor(Parent.Height / 2) - Floor(Self.Height / 2); // mittig Self.Left := Parent.Left + Floor(Parent.Width / 2) - Floor(Self.Width / 2); // mittig end else begin Self.Position := poScreenCenter; end; Self.ShowModal; Result := FDialogResult; end;
Delphi-Quellcode:
Was übersehe ich?
procedure TfoPreferences.DoOnLoadError(Sender: TObject; ErrorType: TBlubbErrorType; FileName: string); // Parent Form
begin case ErrorType of etLoadFile: begin TBlubbMessageDialog.MessageDlg(Format(conErrorLoadFile, [QuotedStr(FileName)]), conTextOpen, vmtError, [buOk], clBlack, Self); end; end; end; Danke... :wink: |
AW: Fensterposition falsch
Vielleicht solltest du bei
Delphi-Quellcode:
auch noch
if Assigned(Parent) then
Delphi-Quellcode:
setzen.
Self.Position := poDesigned
|
AW: Fensterposition falsch
Liste der Anhänge anzeigen (Anzahl: 2)
Danke...:P
schau ich mal... Test: ...egal ob im OI oder als Zuweisung...ohne Effekt. :cry: |
AW: Fensterposition falsch
:cry: ...ihr habt mich vergessen.
|
AW: Fensterposition falsch
Zitat:
Lt. Deinem Screenshot ist der Parent nil :gruebel: |
AW: Fensterposition falsch
Danke für deine Unterstützung...8-)
Delphi-Quellcode:
...der Parameter der function kann sowohl nil als auch ein object sein. In diesem Falle übergebe ich die Form (Self).
function TfoBaseDialog.ShowDialog(MessageCaption: string; MsgType: TMsgDlgType; Buttons: TMsgDlgButtons; MessageLines: TStrings; Help: LongInt = 0; MessageColor: Integer = clBlack; Parent: TForm = nil): Integer;
Delphi-Quellcode:
TBlubbMessageDialog.MessageDlg(Format(conErrorLoadFile, [QuotedStr(FileName)]), conTextOpen, vmtError, [buOk], clBlack, Self);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz