MESSAGEDLG DANS N' IMPORTE QUEL LANGUE

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Modérateur Dernière intervention 18 novembre 2010 - 10 janv. 2005 à 15:32
cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021 - 19 janv. 2005 à 19:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/28735-messagedlg-dans-n-importe-quel-langue

cs_ManChesTer Messages postés 374 Date d'inscription vendredi 20 octobre 2000 Statut Modérateur Dernière intervention 15 janvier 2021
19 janv. 2005 à 19:57
lol, merci GrandVizir,

Je sais gérer 12 langues et meme plus....

J'utilise en fait un composant fait maison est accompagné d'un soft de traduction (Semi automatique (pourqoi retraduire ce qui l'a déja été...)) que mes betas tester's/traducteurs possèdent.

Se composant va rechercher les "traductions" dans un stream remplis au choix depuis ressource, fichier externe ou zone data de l'application.

il utilise l'api SetDlgItemTexT qui est prèvue à cet effet et qui marche nikel (pas besoin de GetWindowText ou autres..).

Bon Coding...

ManChesTer.
cs_grandvizir Messages postés 1106 Date d'inscription samedi 8 novembre 2003 Statut Membre Dernière intervention 3 septembre 2006 22
19 janv. 2005 à 17:41
Résumons les dialogues avec des images...

MessageBoxA(0,'Ceci est un ShowMessage','Vide',MB_OK);
MessageBoxA(0,'Ceci est une alerte','Alerte',MB_OK or MB_ICONEXCLAMATION);
MessageBoxA(0,'Ceci est une info','Information',MB_OK or MB_ICONINFORMATION);
MessageBoxA(0,'Ceci est une erreur','Erreur',MB_OK or MB_ICONERROR);

Si vous connaissez le handle du bouton, alors GetWindowText récupère le Caption.

mbYes est un nombre... cf. Windows.pas En revanche, sa valeur est attribué à une chaîne de caractères.

Je ne vois pas beaucoup de ARRAY dans votre prog, histoire d'aider un peu ManchesTer qui veut gérer 12 langues. Je donne donc:

type
TButtonCaption = record
bcOk, bcYes, bcNo [...] : string;
end;

const
mxLanguages = 1; //2 langues en tout bien sûr
lgFrench = 0;
lgDeutsch = 1;
bcCaptions : array[0..mxLanguages] of TButtonCaption = (
(bcOk: 'Ok'; bcYes: 'Oui'; bcNo: 'Non' [...]),
(bcOk: 'Ok'; bcYes: 'Ja'; bcNo: 'Nein' [...])
);

Ensuite, il suffit:
MonBouton.Caption:= bcCaptions[lgDeutsch].bcOk;

Simplissime et pas contraignant.
cs_costello Messages postés 136 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 15 février 2006
13 janv. 2005 à 13:24
bravo, très utile! 10/10 !
DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Modérateur Dernière intervention 10 mars 2009
12 janv. 2005 à 18:38
L'API messageBoxA est dans user32.dll.

avec reshacker tu ouvre la dll
et tu trouveras ton bonheur dans stringtable n°51
et autre
JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Modérateur Dernière intervention 18 novembre 2010 14
12 janv. 2005 à 18:33
mbYes est une constante contenant "&Oui" ?
MessageBoxA est forcement une API windows puisqu'on l'apelle comme ça :
Windows.MessageBoxA(...);
Afficher les 23 commentaires