Avatar billede morten_s Nybegynder
23. januar 2002 - 15:28 Der er 19 kommentarer og
1 løsning

Placer i midten af program

Hvordan placeres en ShowMessage i midten af ens program
uafhængigt af tekststrengens længde ?

    ShowMessagePos('Connect to controller', ((Width div 2) + Left),((Height div 2) + Top));
Avatar billede ziron Nybegynder
23. januar 2002 - 15:34 #1
uha størrelsen på boxen?

/ZIRON
Avatar billede morten_s Nybegynder
23. januar 2002 - 15:35 #2
Ziron> Lige bestemt
Avatar billede ziron Nybegynder
23. januar 2002 - 15:36 #3
hmmm kigger lige :(

/ZIRON
Avatar billede ziron Nybegynder
23. januar 2002 - 15:40 #4
hmm måske denne kan bruges til noget, det gik stærkt med at finde den, skal nemlig ud af døren nu:

http://www.cublea.com/delphi/mbxhack/

(håber slasne sidder rigtigt)

/ZIRON
Avatar billede morten_s Nybegynder
23. januar 2002 - 15:42 #5
Hmmmmmmmm, er jeg den eneste som har det problem
Avatar billede ziron Nybegynder
23. januar 2002 - 15:44 #6
hvad med en messagebox, der må man da kunne lave noget, ellers prøver jeg at kigge når jeg kommer jeg i aften/nat...

/ZIRON
Avatar billede morten_s Nybegynder
23. januar 2002 - 15:49 #7
Troede nogen lige havde de rigtige parametre, måske jeg istedet skal lave min egen, som jeg kender målene på, lablen med beskeden er jo nem at placere i midten af den
Avatar billede ziron Nybegynder
23. januar 2002 - 21:47 #8
det kunne man jo også gøre, men der må da være ne måde at gøre det på...

/ZIRON
Avatar billede stoney Nybegynder
24. januar 2002 - 00:45 #9
ShowMessagePos('Connect to controller', ((form1.Left) + (form1.ClientWidth div 2)),((form1.top) + (form1.ClientHeight div 2)));

Dette er vist det nærmeste du kommer.
Det sætter den nogen lunde i midten af formen, i hvert fald aldrig uden for. Problemet er at showmessagepos er øverste venstre hjørne i dialogboxen, men det ved du selvfølgelig.

Stoney
Avatar billede ziron Nybegynder
24. januar 2002 - 00:54 #10
hmmm stoney jeg tror du skal i seng, hvad står der her:

morten skrev:

ShowMessagePos('Connect to controller', ((Width div 2) + Left),((Height div 2) + Top));

og her

du skrev:

ShowMessagePos('Connect to controller', ((form1.Left) + (form1.ClientWidth div 2)),((form1.top) + (form1.ClientHeight div 2)));

det ligner noget af det samme iik, jeg synes du skal gå i seng eller drikke noget mere kaffe :)
Avatar billede stoney Nybegynder
24. januar 2002 - 01:58 #11
ziron>>

Det er ikke det samme.
Prøv begge eksempler, men flyt formen inden du hitter button1

BTW: Der er også coffein i cola

:-)

Stoney
Avatar billede ziron Nybegynder
24. januar 2002 - 02:02 #12
okay stoney undskyld at den kommer de 2 pixels tætter på som ens border er, UNDSKYLD :)

/ZIRON
Avatar billede stoney Nybegynder
24. januar 2002 - 02:05 #13
Nej det er ikke det

Prøv at trække formen helt ud til højre så du kun lige kan se 1 cm af den.
I mit eksempel bliver boxen placeret "MIDT" i formen, det vil sige du ikke
kan se den (hvilket i øvrigt ikke  er hensigtsmæssigt, men morten ville have den midt i formen).
Men Mortens eks. bliver placeret uden for formen.

Stoney
Avatar billede ziron Nybegynder
24. januar 2002 - 02:09 #14
hmmm det kan jeg nu ellers ikke lige se men okay sådan er det jo sådan bare, ingen af dem virker. vi mp finde på noget andet...

ZIRON
Avatar billede stoney Nybegynder
24. januar 2002 - 02:19 #15
sorry, du har ret.
Jeg sku ikke hvad jeg har lavet da jeg lå og legede med det.
Jeg må i seng nu.

En lille snydeløsning:

Da Mortens text fomentlig ikke ændrer sig kan han vil bare

ShowMessagePos('Connect to controller', ((Width div 2) + Left - 70),((Height div 2) + Top - 60));


+- et par stykker måske

Stoney
Avatar billede ziron Nybegynder
24. januar 2002 - 02:26 #16
ja det er jo rigtig nok, mennn lad os nu se om nogle af de andre hoveder ikke kan gøre os lidt klogere?

nat nat...

/ZIRON
Avatar billede ziron Nybegynder
25. januar 2002 - 15:45 #17
så morten nu synes jeg selv at det ligner noget det her, prøv selv lige at kigge. jeg har skrevet en ny funktion til det:

function ShowMessagePos_center_i_midt(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; X, Y: Integer): Integer;
begin
  with CreateMessageDialog(Msg, DlgType, Buttons) do
    try
      if X >= 0 then Left := X - (Width div 2);
      if Y >= 0 then Top := Y - (Height div 2);
      if (Y < 0) and (X < 0) then Position := poScreenCenter;
      Result := ShowModal;
    finally
      Free;
    end;
end;

og den kaldes så med:

ShowMessagePos_Center_i_midt('Her er den så, UUUUUUUUUU', mtWarning, [mbYes, mbNo, mbRetry], ((form1.Left) + (form1.Width div 2)),((form1.top) + (form1.Height div 2)));

Håber du kan bruge det...

/ZIRON
Avatar billede ziron Nybegynder
26. januar 2002 - 19:30 #18
hmmm lidt optimeret:

du kan jo selv lige lege med det og hvordan du vil have den til aat virke..

function ShowMessagePos_center_i_midt(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; X, Y: Integer): Integer;
begin
  with CreateMessageDialog(Msg, DlgType, Buttons) do
    try
      Position := poMainFormCenter;
      Result := ShowModal;
    finally
      Free;
    end;
end;

/ZIRON
Avatar billede morten_s Nybegynder
26. januar 2002 - 19:50 #19
Tak for hjælpen
Avatar billede ziron Nybegynder
26. januar 2002 - 19:52 #20
jamen det var da så lidt...

/ZIRON
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester