Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi MessageBox Postion (https://www.delphipraxis.net/109185-messagebox-postion.html)

SaFu 25. Feb 2008 20:33


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:
if MessageDlgPos('Wollen Sie wirklich das Programm beenden?',mtWarning,[mbyes,mbno],0,Form1.Top,Form1.left) = mryes then
Etwa irgendwie so??

Danke sascha

[edit=MrSpock]Gemäß Wunsch des Erstellers geändert. Mfg, MrSpock[/edit]

Blackheart 25. Feb 2008 20:42

Re: MessageBox Postion
 
Was soll die Frage ! (etwas rechnen)

SaFu 25. Feb 2008 20:46

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:
,mtWarning,[mbyes,mbno],0,Form1.Top + 20,Form1.left+ 20;
aber irgendwie will es nicht in die Mitte

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

Blackheart 25. Feb 2008 20:51

Re: MessageBox Postion
 
div

Crazy Ivan 25. Feb 2008 21:01

Re: MessageBox Postion
 
was Blachheart da meint ist folgendes:

1. du berechnest die mitte der form, etwa so:

Delphi-Quellcode:
var mitte : tpoint;

// *****

mitte.Y := (form1.top + (form1.top+form1.heigth)) div 2;
mitte.x := (form1.left + (form1.left+form1.width)) div 2;
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

dann sollte es etwa die mitte sein ;)

SaFu 25. Feb 2008 21:09

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

Crazy Ivan 25. Feb 2008 21:20

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

SaFu 25. Feb 2008 21:30

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

Dani 25. Feb 2008 22:03

Re: MessageBox Postion
 
Delphi-Quellcode:
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;
Wäre vielleicht noch ganz gut zu prüfen, ob der Dialog überhaupt auf einem Bildschirm sichtbar ist und ihn dann ggf zu verschieben.

pilic 25. Feb 2008 22:05

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 07:46 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz