[Delphi] Knop 'Sluiten' (het kruisje) disabelen

Pagina: 1
Acties:

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23:22

Tomatoman

Fulltime prutser

Topicstarter
Een korte vraag: Hoe disable ik in Delphi de knop 'Sluiten' (het kruisje rechtsboven in de programmabalk)? Ik ben het ooit tegengekomen, maar ik heb geen idee meer waar dat was :D. Volgens mij was het een simpele API call.

Aanvullende vraag: vangt dit ook Alt+F4 af?

Een goede grap mag vrienden kosten.


Verwijderd

Weet geen ene reet van Delphi, maar hier de Google oplossing:

http://www.planet-source-...sp?txtCodeId=128&lngWId=7

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Deze vraag in combinatie met je sig wekt enige terughoudendheid in het beantwoorden bij mij op :o

Kun je het niet af met een zgn. 'modal' window?

Who is John Galt?


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23:22

Tomatoman

Fulltime prutser

Topicstarter
Thanks Keesje, die oplossing werkt. Hij vangt alleen F4 niet af. Ik zal CloseQuery overriden om hier wat aan te doen.
Deze vraag in combinatie met je sig wekt enige terughoudendheid in het beantwoorden bij mij op :o
Antwoord: >:)
Kun je het niet af met een zgn. 'modal' window?
Het ís een modal window, maar ik vind het een beetje onlogisch dat je op Sluiten kunt drukken in een dialoog met bijvoorbeeld alleen de knoppen Yes en No. Sluiten betekent immers ModalResult = mrCancel en ik bewust geen Cancel button in mijn dialoog.

Een goede grap mag vrienden kosten.


  • Tom-my
  • Registratie: November 2000
  • Laatst online: 19-06 09:25

Tom-my

w03iz0rz

mja je kan hem ook weglaten toch? of da kruushke juist weer niet? aaffijn je moet niet gaan toornen aan de metaforen van windows, komt je programma niet tegen goede

"Then there was the man who drowned crossing a stream with an average depth of six inches."


  • beany
  • Registratie: Juni 2001
  • Laatst online: 24-08 10:04

beany

Meeheheheheh

Event OnCloseQuery van het form

Die geeft een parameter CanClose mee. Zet die op False en je schermpie sluit niet, ook niet met een ALT-F4


edit: event van wat?

[ Voor 24% gewijzigd door beany op 02-02-2003 01:44 ]

Dagelijkse stats bronnen: https://x.com/GeneralStaffUA en https://www.facebook.com/GeneralStaff.ua


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23:22

Tomatoman

Fulltime prutser

Topicstarter
FanToom schreef op 02 February 2003 @ 01:03:
mja je kan hem ook weglaten toch? of da kruushke juist weer niet? aaffijn je moet niet gaan toornen aan de metaforen van windows, komt je programma niet tegen goede
Mee eens. De Windows-standaard is dat het kruisje alleen enabled is als er een Cancel button in een dialoogvenster is. Proberen? Test dan maar eens hoe Windows de volgende messagebox toont.
Delphi:
1
2
3
4
5
6
7
// geen cancel button, dus kruisje uitgeschakeld
Windows.MessageBox(0, 'Zomaar een bericht', 'Titel',
  MB_ICONINFORMATION or MB_YESNO or MB_SETFOREGROUND or MB_TASKMODAL);

// wel een cancel button, dus kruisje ingeschakeld
Windows.MessageBox(0, 'Zomaar een bericht', 'Titel',
  MB_ICONINFORMATION or MB_YESNOCANCEL or MB_SETFOREGROUND or MB_TASKMODAL);

[ Voor 5% gewijzigd door Tomatoman op 02-02-2003 17:36 ]

Een goede grap mag vrienden kosten.


Verwijderd

Het kruisje weglaten doe je heel eenvoudig in de Object Inspector. Bij de property "BorderIcos" van het form moet je "biSystemMenu" op false zetten. Dit vangt alleen niet alt+F4 af.

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23:22

Tomatoman

Fulltime prutser

Topicstarter
Daarmee kun je hem weglaten, maar niet uitschakelen. Geen nood, het is allemaal gelukt.

Een goede grap mag vrienden kosten.


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

tomatoman, misschien is het prettig als je even aangeeft HOE het gelukt is, zodat eventuele zoekers straks niet bij een topic uitkomen waar alleen staat dat het 'allemaal gelukt' is.

My personal website


Verwijderd

OZ-Gump schreef op 03 February 2003 @ 13:14:
tomatoman, misschien is het prettig als je even aangeeft HOE het gelukt is, zodat eventuele zoekers straks niet bij een topic uitkomen waar alleen staat dat het 'allemaal gelukt' is.
Zie de 2e post van de TS, daar staat in zekere zin hoe hij het heeft opgelost :D

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 23:22

Tomatoman

Fulltime prutser

Topicstarter
Lieve vriendjes en vriendinnetjes,*

Na een lange dag in een groot, druk kantoor is tomatoman weer veilig thuis. Dat geeft hem de gelegenheid om het Geheim van het Uitgeschakelde Kruisje met jullie te delen. Hier is de oplossing.
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
type
  TMijnForm = class(TCustomForm)
  public
    function CloseQuery: Boolean; override;
    constructor CreateNew(AOwner: TComponent); override;
  end;

implementation

function TMijnForm.CloseQuery: Boolean;
begin
  if { kruisje disabled } then
    Result := ModalResult <> mrCancel
  else
    Result := inherited CloseQuery;
end;

constructor TMijnForm.CreateNew(AOwner: TComponent);
var
  SysMenuHandle: THandle;
begin
  inherited CreateNew(AOwner);
  if { kruisje disabled } then
  begin
    { disable the Close button in the title bar }
    SysMenuHandle := GetSystemMenu(Handle, False);
    if SysMenuHandle <> 0 then
      DeleteMenu(SysMenuHandle, SC_CLOSE, MF_BYCOMMAND);
  end;
end;


*) Liever vriendinnetjes :)

[ Voor 10% gewijzigd door Tomatoman op 03-02-2003 22:44 ]

Een goede grap mag vrienden kosten.

Pagina: 1