10
votes

Dialogue générique avec des légendes personnalisées pour les boutons

Je sais que ce problème a eu lieu depuis avant (ex. meilleure façon de montrer des dialogues de message personnalisés ), mais je ne trouve toujours pas ce que je veux.

J'ai commencé comme ceci: p>

if (MessageDlg('Really quit application ?', mtWarning, 
       [mbNo, mbCancel, mbYes], {'No save', 'Cancel', 'Save'}) = mrYes) then


6 commentaires

Peut-être que vous pouvez utiliser Ttaskdialog ou l'une des émulations capables de Pre-Vista.


+1 Je suis d'accord que la boîte de dialogue de la tâche Vista est la voie à suivre lorsqu'il est disponible.


Mon application est exécutée uniquement sur XP et Server 2003 R2, donc je ne peux pas utiliser ttaskdialog.


@Roland: Il y a des émulations, par exemple JSDialog , un de TMS, SyntaSkdialog


inofficial ttaskdialog Documentation


@Andreas: Vous pouvez définir des ancrages HTML dans votre docu inofficial, puis lier directement, disons, "boutons personnalisés"


3 Réponses :


6
votes

Que diriez-vous de quelque chose comme ceci: xxx

Entrez la description de l'image ici


17 commentaires

Pourquoi pas? Est-ce parce que j'ai utilisé des touches d'accélérateur peut-être? En outre, "cela ne fonctionne pas" n'est pas un très bon rapport d'erreur ..... ;-)


@David - c'est le message d'erreur La plupart de nos utilisateurs rapportent! MDR


Je pense que vous ne voudrez peut-être pas que FindComponent (boutons [i] .caption) . Il est peu probable que la boîte de dialogue non modifiée ait un contrôle nommé 'do & nt' 'Save' '.


C'est un peu intéressant que vous obteniez des upvotes même si votre code ne fonctionne pas! Clairement, les gens n'essayent pas réellement le code avant de prospérer! Néanmoins, votre code est magnifique et mérite beaucoup de upvotes dès que le bogue est corrigé.


@Andreas @Roland Code fonctionne maintenant !! Jolie hacky, mais là tu vas. Serait assez facile de faire rouler votre formulaire de type de boîte de dialogue de tâche.


@Andreas merci! Je ne sais pas que je dirais belle mais !!


@David: intéressant, votre solution est identique à celle que je viens d'écrire, c'est-à-dire en utilisant un réseau de conversion entre les boutons et les résultats modaux.


@Andreas C'est drôle, j'ai vu toutes les autres problèmes avec le code, mais supposé que les trucs de FindComponent étaient bien depuis que je ne fais jamais de choses comme ça de toute façon!


David j'ai essayé le code et cela ne fonctionne pas à cause de la raison et de la raison. FindComponent (boutons [i] .caption) peut être faux. Mais je pense que le problème est résolu de toute façon même si ce n'est pas exactement comme je le veux. Et la uppote est juste pour un bon essai pour toi David ... :)


@Roland Le code fonctionne parfaitement. Vous exécutez probablement la version originale. Je l'ai édité hier et maintenant ça marche. Comme vous pouvez le voir ci-dessus, il n'y a pas d'appel à la FindComponce. Ceci est votre réponse.


@Shahrambanazadeh Que voulez-vous dire?


@DavidHeffernan Je ne peux pas voir la routine qui définit le bouton par défaut (sélectionné) transmis par le dernier paramètre (Adfault) .not Mise en œuvre?


@Shahram comment il est défini? Encore une fois je ne sais pas ce que tu veux dire. Pourquoi ne lisez-vous pas le code et voyez-vous comment le paramètre est utilisé?


@Davidheffernan parce que ce n'est pas utilisé. Je me demandais si on me manque quelque chose. Adfault: TMSGDLGBTN n'est pas utilisé dans le corps.


Je vois. Je l'ai réparé maintenant.


(Publié pour [ Stackoverflow.com/users/6227080/nervouz](nervouz) qui ne peut pas commenter Lui-même.) Nice Code @DavidHeffernan! C'est du travail pour moi. Je ne peux pas anwer sur votre message. Il y a un moyen de faire la longueur des boutons "personnalisés" ou "justifiés"? Merci!


@computer la question concerne Delphi



15
votes

Vous pouvez utiliser ce code: xxx

par exemple: xxx


5 commentaires

Travailler parfaitement mais dans l'exemple doit utiliser et non; Pour diviser les paramètres et vous pouvez le vérifier avec des résultats normaux MessageDLG. Alors, utilisez-le comme ça: Si MyMessageDlg ('Hello World!', MTInformation, [MBYES, MBNO], ['YESSS', 'NOOOO'], 'Nouvelle boîte MessageDLLG') = Marry Begne alors commence .... fin


@Holmes pour une solution avec FireMonkey, consultez Cette réponse .


Malheureusement, cela ne fonctionne pas à Lazare 1.8.0. La légende personnalisée n'affecte pas la légende du bouton réelle, est juste "oui" et "non".


Pourquoi la définir sur BdrightOneft ? Il finit par détruire le texte.


@ Jérrydodge Parce qu'il était censé courir pour avoir droit à gauche des langues comme Persian;) Pour les langues gauche aux bonnes langues, vous n'avez pas besoin.



2
votes

J'écris ce code: (Je viens de la Croatie, de sorte que les textes sont en croate) xxx

exemple d'utilisation: xxx


0 commentaires