Newsgroup: it.comp.lang.delphi
Titolo: [D7] Tradurre il "Yes" di MessageDlg

Salve,
forse sono fuso ma per cambiare il "Yes" in "Sě" della funzione
MessageDlg basta cambiarlo in Consts.pas o QConsts.pas,
o perlomeno nelle versioni precedenti ho fatto cosě e funzionava...
ma perchč allora in D7 viene tradotto tutto tranne il maledettissimo
"Yes" del pulsante?
Chi mi sa dire dove lo pesca?
Ho dato uno sguardo ai source ma non ho trovato
Grazie mille

 's  message dated Wed, 22
Jan 2003 15:25:32 +0100:
[...]
Ciao.
Io ho risolto usando direttamente MessageBox: è localizzato.
Cercalo nell'help.
Buon lavoro, ciao!
Peppe
_____
ICQ #9759626
Togli levaccà per contattarmi via email.

Io ho risolto usando direttamente MessageBox: č localizzato.
Sě grazie, hai ragione... :)
pero' mi son dimenticato di dire che č un'applicazione CLX,
la MessageBox di VLC usa l'API di win ed č localizzata, ok
mentre in CLX no!
Non ho idea di deva vada a prendersi la caption del pulsante!
Altre idee?
Grazie mille

 ha scritto nel messaggio
news:96guPkQIRWJ7OX...@4ax.com...


 ha scritto nel messaggio
news:96guPkQIRWJ7OX...@4ax.com...


 Non ho idea di deva vada a prendersi la caption del pulsante!
La chiamata che crea la messageBox qt e'
  MB := QMessageBox_create(PWideString(@Title), PWideString(@Msg),
    QMessageBoxIcon(DlgType), B1, B2, B3, DlgParent, nil, True, 0);
dove B1, B2, B3 sono interi: B1 := Ord(Button1);
e Button1 e' un TMsgDlgBtn.
Quindi sotto questo aspetto ciccia.
Pero' grazie a quanto segue e' possibile vedere come recuperare i
pulsanti:
var ...
  DlgButton: QButtonH;
  DlgObjects: QObjectListH;
  anObj: QObjectH;
  idx, cnt, btnIdx: cardinal;
  btnName, btnCaption: TCaption;
  sl: TStringList;
...
 DlgObjects := QObject_children(MB);
 cnt := QObjectList_count(DlgObjects);
 sl := TStringList.Create;
 try
   for idx := 0 to Pred(cnt) do begin
     anObj := QObjectList_at(DlgObjects, idx);
     btnCaption := SMsgDlgYes;
     sl.Add(StrPas(QObject_name(anObj)) + ' ' +
StrPas(QObject_className(anObj)));
     if (QObject_className(anObj) = 'QPushButton')  then begin
       QButton_text(QButtonH(anObj), PWideString(@btnCaption));
       if Pos('Yes', btnCaption) > 0 then begin
         btnCaption := SMsgDlgYes;  // const SMsgDlgYes = '&Sì';
         QButton_setText(QButtonH(anObj), PWideString(@btnCaption));
       end;
     end;
   end;
     Application.MessageBox(sl.Text);
 finally
   sl.Free;
 end;
...
e quindi
 DlgObjects := QObject_children(MB);
 cnt := QObjectList_count(DlgObjects);
 for idx := 0 to Pred(cnt) do begin
   anObj := QObjectList_at(DlgObjects, idx);
   if (QObject_className(anObj) = 'QPushButton') then begin
     btnName := StrPas(QObject_name(anObj));
     try
       btnIdx := StrToInt(Copy(btnName, Length('Button')+1, 255));
     except
       continue; // not a 'buttonN' name
     end;
     QButton_text(QButtonH(anObj), PWideString(@btnCaption));
     case btnIdx of
       1: ChangeBtnCaption(Button1, btnCaption);
       2: ChangeBtnCaption(Button2, btnCaption);
       3: ChangeBtnCaption(Button3, btnCaption);
     end;
     QButton_setText(QButtonH(anObj), PWideString(@btnCaption));
   end;
 end;
dove
  procedure ChangeBtnCaption(btnKind: TMsgDlgBtn; var Caption:
TCaption);
  const
    dlgBtnCaptions: array[TMsgDlgBtn] of TCaption = ('', SMsgDlgOK,
    SMsgDlgCancel, SMsgDlgYes, SMsgDlgNo, SMsgDlgAbort,
    SMsgDlgRetry, SMsgDlgIgnore);
  begin
    if btnKind in [mbOk..mbIgnore] then
      Caption := dlgBtnCaptions[btnKind];
  end;
Questo quanto riesco a fare con il code-insight e senza manuali delle
Qt. Suppongo esista un modo piu' rapido (ma forse no).
Ovviamente il tutto si puo' girare scrivendo una bella
  FindWidgetByName(Parent: QWidgetH; WidgetName: TCaption): QWidgetH;
Altrimenti, puoi usare una delle funzioni QT che consentono di
specificare il testo dei pulsanti:
ad es:
function QMessageBox_information(parent: QWidgetH; caption: PWideString;
text: PWideString; button0Text: PWideString; button1Text: PWideString;
button2Text: PWideString; defaultButtonNumber: Integer;
escapeButtonNumber: Integer): Integer; external QtShareName name
QtNamePrefix + 'QMessageBox_information2';
Saluti
Paolo Arosio

 ha scritto nel messaggio
news:zIFX9.35909$ZE.10...@twister2.libero.it...

Hai messo la unit Const nella stessa directory dove ci sono i sorgenti del
tuo progetto?