![]() |
MessageBox Postion
Hi
Hab mal ne simple Frage aber irgenwie kommme ich net drauf Wie kann ich meine MessageBox immer in der Mitte von meinem Formblatt auf gehen lassen.
Delphi-Quellcode:
Etwa irgendwie so??
if MessageDlgPos('Wollen Sie wirklich das Programm beenden?',mtWarning,[mbyes,mbno],0,Form1.Top,Form1.left) = mryes then
Danke sascha [edit=MrSpock]Gemäß Wunsch des Erstellers geändert. Mfg, MrSpock[/edit] |
Re: MessageBox Postion
Was soll die Frage ! (etwas rechnen)
|
Re: MessageBox Postion
Wie gesagt hab ja schon einiges versucht aber irgenwie geht das so net
Habe mir gedacht ich nehme die Position von Form Top und Left und addiere einfach was dazu etwa so
Delphi-Quellcode:
aber irgendwie will es nicht in die Mitte
,mtWarning,[mbyes,mbno],0,Form1.Top + 20,Form1.left+ 20;
Es genügt mir scon wenn du mir einfach sagst ob ich da auf dem richtigen Dampfer bin, ansonsten wäre ein kleiner Tipp net |
Re: MessageBox Postion
div
|
Re: MessageBox Postion
was Blachheart da meint ist folgendes:
1. du berechnest die mitte der form, etwa so:
Delphi-Quellcode:
2. musst du dann wissen, wie groß (in pixeln) die box ist und ziehst jeweils die hälfte davon bei mitte.X und mitte.Y ab
var mitte : tpoint;
// ***** mitte.Y := (form1.top + (form1.top+form1.heigth)) div 2; mitte.x := (form1.left + (form1.left+form1.width)) div 2; dann sollte es etwa die mitte sein ;) |
Re: MessageBox Postion
Mal ganz erlich, ich versteh nur Bahnhof
Wenn ich das so versuch bekomm ich auch nicht die Mitte es plobt teilweise auf wo es bock hat. Ich hab net gedacht das das so ein aufwand ist |
Re: MessageBox Postion
mitte ist ein Tpoint. das heißt mitte.X ist die position auf der x-Achse, mitte.Y dann analog auf der y-Achse. der code berechnet einfach nur die gerundeten mittelwerte aus den maßen der form1
|
Re: MessageBox Postion
Ja das meine ich ja wenn ich das so mache blopt es manschmal in der mitte auf und manschmal nicht kommt darauf an wo die Form steht
Kann es sein das es zu ungenau ist und das es deswegen zu ungenauigkeiten kommt |
Re: MessageBox Postion
Delphi-Quellcode:
Wäre vielleicht noch ganz gut zu prüfen, ob der Dialog überhaupt auf einem Bildschirm sichtbar ist und ihn dann ggf zu verschieben.
function MessageDlgPos2(const Msg: string; DlgType: TMsgDlgType;
Buttons: TMsgDlgButtons; ParentForm: TForm = nil; HelpCtx: Longint = -1; const HelpFileName: string = ''): Integer; begin with CreateMessageDialog(Msg, DlgType, Buttons) do try HelpContext := HelpCtx; HelpFile := HelpFileName; if Assigned(ParentForm) then begin Position := poDesigned; //0 div 2 -> 0, also kein Problem. Left := ParentForm.Left + ((ParentForm.Width - Width) div 2); Top := ParentForm.Top + ((ParentForm.Height - Height) div 2); end else begin Position := poScreenCenter; end; Result := ShowModal; finally Free; end; end; procedure TForm1.Button1Click(Sender: TObject); begin MessageDlgPos2('Dies ist ein Test', mtInformation, [mbOK], Self); end; |
Re: MessageBox Postion
Problem ist, dass man mit den Parametern X und Y der Funktion mitteilt, die Eigenschaften Left und Top vom Dialog zu setzen. Für die wirkliche Mitte müsste man noch die halbe Breite des Dialogs abziehen, bzw. die halbe Höhe.
Delphi-Quellcode:
X := Form1.Left + (Form1.Width-BreiteDialog) div 2;
Y := Form1.Top + (Form1.Height-HoeheDialog) div 2; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 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