AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XE5 Firemonkey MessageBox/MessageDlg

Ein Thema von Nils S. · begonnen am 12. Apr 2014 · letzter Beitrag vom 11. Jul 2019
Antwort Antwort
Nils S.

Registriert seit: 10. Apr 2014
36 Beiträge
 
Delphi XE5 Professional
 
#1

AW: XE5 Firemonkey MessageBox/MessageDlg

  Alt 27. Mai 2014, 21:51
Hallo zusammen,

nach einiger Zeit habe ich nun zu dem MessageDlg nochmal ein Problemchen.
Dieses sieht wie folgt aus:
Delphi-Quellcode:
  case MessageDlg('Text.',
    mtWarning,
    [mbYes, mbNo, mbHelp],
    0,
    mbNo) of
    idYes:
    begin
      {Mach was.
       Funktioniert ohne Probleme.}

    end;
    idHelp:
    begin
      {Mach was.
       Funktioniert nicht...}

    end;
  end;
Wenn ich den mbHelp zum Beispiel gegen mbIgnore oder mbCancel oder irgendeinen beliebigen anderen Button tausche und die idHelp dementsprechend natürlich auch,
fuktioniert auch dieser Fall.

Muss man bei einem mb/idHelp etwas besonderes machen oder berücksichtigen?

Geändert von Nils S. (27. Mai 2014 um 21:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#2

AW: XE5 Firemonkey MessageBox/MessageDlg

  Alt 27. Mai 2014, 21:53
Ich sehn da kein Problem.

[edit]
Selbst da nicht, als vorhin noch ein Code zu sehen war.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Nils S.

Registriert seit: 10. Apr 2014
36 Beiträge
 
Delphi XE5 Professional
 
#3

AW: XE5 Firemonkey MessageBox/MessageDlg

  Alt 27. Mai 2014, 22:01
Da hat die Tasenkombination Tab-->Enter den Beitrag etwas zu früh abgeschickt...
jetzt habe ich das Problem oben vernünftig gepostet.

  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#4

AW: XE5 Firemonkey MessageBox/MessageDlg

  Alt 27. Mai 2014, 22:16
Ja, mußt du X'D

Du gibst dem Parameter "HelpIndex" einen Wert mit und wenn du in deinem Programm eine Hilfedatei registriert hast, dann wird der entsprechende Hilfeindex geladen, so als wenn du F1 drücken würdest.


Alternativ kann man via Applicatopn.OnHelp oder TApplicationEvents auf deinen HelpIndex reagieren.


PS: Leider ist noch keiner auf die saublöde Idee gekommen und hat endlich mal die Dialog-Parameter überladen, vorallem da es seit massig Jahren auch noch den HelpContext gibt und keiner mehr eine index-, sondern eine kontextbasierende Hilfe aufbaut.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Nils S.

Registriert seit: 10. Apr 2014
36 Beiträge
 
Delphi XE5 Professional
 
#5

AW: XE5 Firemonkey MessageBox/MessageDlg

  Alt 27. Mai 2014, 22:22
Kann ich nicht einfach ein weiteres Dialogfeld anzeigen lassen?
Mehr will ich doch gar nicht...:/
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.326 Beiträge
 
Delphi 12 Athens
 
#6

AW: XE5 Firemonkey MessageBox/MessageDlg

  Alt 27. Mai 2014, 22:36
NeinJaVielleicht.

Ich weiß jetzt nicht wie das im FireMonkey aussieht, aber in der VCL ist MessageDlg nur ein Wrapper und wenn man da genügend Ebenen rein geht, dann kommt man irgendwann zu einer Funktion, welche einem den VCL-Dialog zusammenbastelt und dann die TForm-Instanz zurückgibt.

Dort könnte man dann z.B. via FindComponent den Hilfe-Button suchen, sein OnClick-Ereignis dranhängen und dann zeigt man nun nur noch mit ShowModal den Dialog an.


Oder du nimmst einen anderen Button (der wie gewünscht funktioniert) und tauscht bei Diesem die Caption.




Der Grund: Der Hilfebutton beendet den Dialog nicht.
Er zeigt die Hilfe an, damit man sich besser enscheiden kann, was man nun für einen Button eigentlich klicken will.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (27. Mai 2014 um 22:39 Uhr)
  Mit Zitat antworten Zitat
Nils S.

Registriert seit: 10. Apr 2014
36 Beiträge
 
Delphi XE5 Professional
 
#7

AW: XE5 Firemonkey MessageBox/MessageDlg

  Alt 28. Mai 2014, 20:51
Na das ist ja alles eine Bastelei...

Also da ich ungern halbe Sachen mache habe ich mich nun stundenlang belesen und ausprobiert und bin mitlerweile soweit,
dass ich eine Hilfe mit dem HTML Help Workshop erstellt habe und mit einiger bastelarbeit und vorgefertigten Units das ganze in mein Projekt implementieren kann.
Ich kann nun sogar mit einer Procedure
Application.HelpContext(0);
Die Hilfe aufrufen, nur leider ist sie leer.
Wenn ich die gleiche Hilfe aber per Doppelklick starte, hat diese einen Inhalt.

F1 hat keune Funktion und auch über das Attribut "HelpCtx" des MessageDlg wird die Hilfe nicht aufgerufen.
Was ist das für ein merkwürdiges Phänomen? Woran könnte das liegen?

[edit]
Also ich habe jetzt festgestellt, dass
Application.HelpContext(0);
in jedem Fall zu dem Aufruf einer Hilfe führt, egal ob die angegebene .chm-Datei gefunden wurde oder nicht.

Aber das Programm findet die Datei, die ich angebe.
Deswegen verstehe ich nicht, warum nicht darauf zugegriffen wird.

Geändert von Nils S. (28. Mai 2014 um 21:14 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz