[delphi] Sluitknop van mainform actief bij modaal dialoog?

Pagina: 1
Acties:

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Ik ben een gevorderde delphi programmeur, maar ik zit nu met een probleempje waar ik ff geen raad mee weet. Ik heb een applicatie gebouwd, waarin op een gegeven moment een borderless modaal dialoogje in weergegeven wordt. Op het moment dat een modaal dialoog wordt weergegeven is het main form dus disabled.

Wat ik dus wil is dat tenminste de sluitknop van het main form klikbaar is. Is dit mogelijk? En hoe dan? Ik zou dat dialoogje in ieder geval het liefst gewoon modaal houden, zonder gekneiter met stayontop windows enzo...

日本!🎌


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Nee, modal is modal. Je kunt dit alleen bereiken door 'semi-modal' te gaan werken en alle componenten op de mainform te disablen en de modal dialog fsStayOnTop te maken.

Professionele website nodig?


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
mja, das dus een smerige oplossing die ik liever niet heb. Bovendien moet ik daarvoor het nodige aanpassen aan de aanroep en de werking van het dialoog in kwestie...

Ik hoopte eigenlijk dat het met windows messages/hooks/whatever wel op te lossen was.

Is er ook niet een manier om die "ping" af te vangen die je hoort als je buit het modale dialoog klikt? Dat is iig iets dat programmatisch op een event lijkt... Dan kan ik de gebruiker tenminste duidelijk maken dat er nog iets openstaat.

日本!🎌


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Wat je probeert te doen is een native mechanisme van Windows te omzeilen. Modal dialogs blokkeren per definitie de rest van de applicatie, en geven een ping als je buiten de dialoog in je eigen app klikt. Dit is omdat modal dialogs bedoeld zijn om kritieke informatie 'transactional' af te handelen (zoals veel options-dialogen) en om 'blokkende' messages te tonen (errors).

Als je modal gedrag wil omzeilen heb je per definitie dus ranzige hacks nodig. Ik denk dat je je meer af moet vragen of het gebruik van een modal dialog in jouw situatie wel voldoet aan bovenstaande eisen en dus niet als geheel fout is.

Professionele website nodig?


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 17:51

Tomatoman

Fulltime prutser

Eerlijk gezegd vind ik het niet zo'n best idee om een sluitknop in een ander venster te enablen als een modal dialog actief is. Dat is onlogisch een gaat tegen de 'regels' van een Windowsapplicatie in. Ik kan ook geen enkele reden verzinnen waarom je dat zou willen. Misschien moet je dat even toelichten.

Een goede grap mag vrienden kosten.


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Ik heb een main form en een modaal dialoogje dat geen border heeft. Het ziet er zegmaar uit als een knop/panel dmv een drawedge() call in de onpaint handler. Op dat modale dialoogje zit dus geen titelbalk en ook geen sluitknop. Ik kan me daarom voorstellen dat gebruikers niet zo snel zullen begrijpen waarom de applicatie niet afgesloten kan worden, als er zo'n dialoogje openstaat... je krijgt nml helemaal geen melding, alleen maar een ping-geluidje.

Ik weet best dat het tegen de regels van windows in gaat, maar met zo'n soort dialoogje vindt ik het persoonlijk dan een waardeloze regel.

Maargoed, het is me dus duidelijk dat het ding StayOnTop gemaakt moet worden... Jammer.

日本!🎌


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ik zie het nut niet zo in van zo'n soort dialoog. Waarom gebruik je m? Gebruikers vinden het verwarrend als er dingen gebeuren die normaal niet zo zijn, of in jouw geval dingen moeten doen die ze normaal niet kunnen doen. Maarja, je moet het natuurlijk zelf weten :)

We adore chaos because we like to restore order - M.C. Escher


  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 22-06 10:32

_Thanatos_

Ja, en kaal

Topicstarter
Ja, ik kan het dialoogje natuurlijk ook een (mini-)titelbalk geven...

Das misschien beter :)

Magoed, het is duidelijk. Wat ik wilde: does not compute ;)

日本!🎌


  • MerijnB
  • Registratie: Oktober 2000
  • Laatst online: 18:04
dit kan idd gewoon niet,
modal is modal...

als je modal wilt omdat je dan sync kan aanroepen moet je helaas iets anders verzinnen.

anders misschien een oplossing als een TPanel ?

A software developer is someone who looks both left and right when crossing a one-way street.

Dé antenne-innovatie voor de korte golf


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

OZ-Gump

terug van weggeweest

Oplossing die ik nog wel eens wil gebruiken om in ieder geval (andere) code door te laten lopen terwijl een Message van mijzelf nog modal is, is om de message in een aparte thread te zetten. Hiermee los je 't probleem uit de openingspost niet op, maar misschien brengt het je op andere ideeen...

My personal website

Pagina: 1