/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Messagebox position
Fra : Harald


Dato : 15-06-03 19:18

Hej

Kan man sætte position på Application.MessageBox? Jeg har en MDI app. og vil
egentlig gerne have at MessageBox´en bliver centreret i forhold til det
aktuelle MDI vindue.

Mvh
HK



 
 
Klaus Petersen (15-06-2003)
Kommentar
Fra : Klaus Petersen


Dato : 15-06-03 19:35

> Kan man sætte position på Application.MessageBox?

Umiddelbart nej.

MessageBox benytter sig af windows api kommandoen, MessageBox, der ikke har
parametrer som kan styre positionen på den.

Selvfølgelig ville man nok kunne lave et hack, der gør det muligt.



Ove Kjeldgaard (15-06-2003)
Kommentar
Fra : Ove Kjeldgaard


Dato : 15-06-03 21:41

"Harald" <news@kroning.dk> wrote:

>Hej
>
>Kan man sætte position på Application.MessageBox? Jeg har en MDI app. og vil
>egentlig gerne have at MessageBox´en bliver centreret i forhold til det
>aktuelle MDI vindue.
>

Som der er skrevet i denne tråd så gør man det ikke bare lige med MessageBox.

Men check om MessageDlg eller MessageDlgPos ikke kan bruges.


--
Med venlig hilsen, Ove Kjeldgaard
Natur og Friluftsliv: <http://hiker.dk>

Harald (15-06-2003)
Kommentar
Fra : Harald


Dato : 15-06-03 22:18

"Ove Kjeldgaard" <ok@newmail.dk> skrev i en meddelelse
news:t7mpevoc29hlhd8ffba8go5a12hi57dgh0@4ax.com...
> "Harald" <news@kroning.dk> wrote:
>
> >Hej
> >
> >Kan man sætte position på Application.MessageBox? Jeg har en MDI app. og
vil
> >egentlig gerne have at MessageBox´en bliver centreret i forhold til det
> >aktuelle MDI vindue.
> >
>
> Som der er skrevet i denne tråd så gør man det ikke bare lige med
MessageBox.
>
> Men check om MessageDlg eller MessageDlgPos ikke kan bruges.

Der er 2 problemer med MessageDlg, Ja, Nej osv. knapper vises ikke på dansk
og den understøtter ikke XP Manifest.

Mvh
HK



Harald (17-06-2003)
Kommentar
Fra : Harald


Dato : 17-06-03 06:53

"Harald" <news@kroning.dk> skrev i en meddelelse
news:3eecb86f$0$76166$edfadb0f@dread11.news.tele.dk...
> Hej
>
> Kan man sætte position på Application.MessageBox? Jeg har en MDI app. og
vil
> egentlig gerne have at MessageBox´en bliver centreret i forhold til det
> aktuelle MDI vindue.

I behøver ikke ligge søvnløs mere over det, har fundet en løsning.

/HK



Ove Kjeldgaard (17-06-2003)
Kommentar
Fra : Ove Kjeldgaard


Dato : 17-06-03 16:53

"Harald" <news@kroning.dk> wrote:
>
>I behøver ikke ligge søvnløs mere over det, har fundet en løsning.
>

Må vi ikke høre lidt om løsningen?

--
Med venlig hilsen, Ove Kjeldgaard
Natur og Friluftsliv: <http://hiker.dk>

Harald (18-06-2003)
Kommentar
Fra : Harald


Dato : 18-06-03 12:26

"Ove Kjeldgaard" <ok@newmail.dk> skrev i en meddelelse
news:49euev82k3f5a5rhckvn9c3f0s7kd72tbo@4ax.com...
> "Harald" <news@kroning.dk> wrote:
> >
> >I behøver ikke ligge søvnløs mere over det, har fundet en løsning.
> >
>
> Må vi ikke høre lidt om løsningen?

Jo, alle mine MDI forme er baseret på en MDIGrundForm og i denne har jeg
følgende:

const
mbMessage = WM_USER+10;
-----------

p_msgCaption: PChar;
procedure ChangeMessageBoxPosition(var Msg: TMessage); message
mbMessage;

function MDIMessageBox(const Text, Caption: PChar; Flags: Longint =
MB_OK): Integer;
--------------

og de 2 funktioner:

function TMDIGrundForm.MDIMessageBox(const Text, Caption: PChar; Flags:
Longint = MB_OK): Integer;
begin
PostMessage(Handle, mbMessage, 0, 0);
p_msgCaption:=Caption;
result:=Application.MessageBox(Text, p_msgCaption, Flags);
end;

procedure TMDIGrundForm.ChangeMessageBoxPosition(var Msg: TMessage);
var
MbHwnd: longword;
MbRect: TRect;
x, y, w, h: integer;
Point : TPoint;
begin
MbHwnd:=FindWindow(MAKEINTRESOURCE(WC_DIALOG), p_msgCaption);
if (MbHwnd<>0) then
begin
Point.X:=0;Point.Y:=0;
Point:=ClientToScreen(Point);

GetWindowRect(MBHWnd, MBRect);
w:=MbRect.Right-MbRect.Left;
h:=MbRect.Bottom-MbRect.Top;

// center horzontal
x:=Point.X+((Width-w) div 2);
// keep on screen
if x<0 then
x:=0
else
if x+w>Screen.Width then
x:=Screen.Width-w;

//center vertical
y:=Point.Y+((Height-h) div 2);
// keep on screen
if y<0 then
y:=0
else
if y+h>Screen.Height then
y:=Screen.Height-h;
// set new windows position
SetWindowPos(MBHWnd, 0, x, y, 0, 0, SWP_NOACTIVATE or SWP_NOSIZE or
SWP_NOZORDER);
end;
end;

og så er det bare at skrive f.eks.

if MDIMessageBox('Ønsker du at slette aktuelle kunde?','Spørgsmål',MB_YESNO
or MB_ICONQUESTION or MB_DEFBUTTON2)=IDYes then
.. gør ting

Mvh
HK



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409084
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste