OpenDialog Sprache



  • BCB6/WinXP hier, da hilft wohl im Ernstfall nur der Praxistest.

    Auf jeden Fall ist es doch beruhigend, zu wissen, dass für den Fall der Fälle bereits ein entsprechender Beitrag in der FAQ bereitsteht. 🙂



  • Hallo Jansen,

    Du meinst bestimmt den hier
    Dialoge - Button-Caption der Standarddialoge ändern

    Ich will ja nicht meckern, aber hast du mal versucht im Save Dialog den Speicher-Button umzubenennen. Das geht nähmlich nicht. OpenDialog - kein Problem. Andere Dialoge (Save, Print etc.) - einige Beschriftungen sind nicht zu erreichen (keine ID).
    Das war jetzt nur als Hinweis gedacht, und soll nicht zu einer weiteren Diskussion führen. Falls das vom Thread zu weit weg führt, Entschuldigung!

    Ciao



  • Original erstellt von Braunstein:
    einige Beschriftungen sind nicht zu erreichen (keine ID)

    Du kennst die IDs nicht oder es gibt keine? Wenn letzteres, wo kann man das nachlesen?



  • Hab mal eben rumprobiert. Der Speichern-Button hat sehr wohl eine ID (ID_OK, wie zu erwarten), und der Button-Text wird mit dem in der FAQ gezeigten Code auch tatsächlich geändert, nur wird diese Änderung offensichtlich gleich wieder überschrieben.

    void __fastcall TForm1::SaveDialog1Show(TObject *Sender)
    {
      HWND hDialog = GetParent(SaveDialog1->Handle);
      HWND button  = GetDlgItem(hDialog, ID_CANCEL); //Speichern-Button
    
      char ch[64];
      GetWindowText(button, ch, 64); // aktuellen Text holen ("&Speichern")
      SetWindowText(button, "XYZ");
      *ch = NULL;
      GetWindowText(button, ch, 64); // neuen Text holen ("XYZ")
      Caption = ch;
    }
    


  • Im Code wird ersichtlich, dass du's auch beim Cancel-Button versucht und dich sicher gefreut hast, dass es da geklappt hat. 😉



  • Da ich sowas als Herausforderung ansehe, hab ich's mal schnell gemacht. Kann evtl. als Ergänzung in die FAQ.

    FARPROC OldSaveButProc;
    //---------------------------------------------------------------------------
    
    LRESULT CALLBACK NewSaveButProc(HWND hwnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
    {
       switch(uiMsg)
       {
          case WM_SETTEXT:
             lstrcpy((LPTSTR)lParam, TEXT("HALLO"));
             break;
       }
    
       return CallWindowProc(OldSaveButProc, hwnd, uiMsg, wParam, lParam);
    }
    //---------------------------------------------------------------------------
    
    void __fastcall TForm1::SaveDialog1Show(TObject *Sender)
    {
       HWND hDialog = GetParent(SaveDialog1->Handle);
       HWND hButton  = GetDlgItem(hDialog, ID_OK); //Speichern-Button
    
       SetWindowText(hButton, TEXT("HALLO"));
       OldSaveButProc = (FARPROC)GetWindowLong(hButton, GWL_WNDPROC);
       SetWindowLong(hButton, GWL_WNDPROC, (LONG)NewSaveButProc);
    }
    


  • Original erstellt von WebFritzi:
    auch beim Cancel-Button versucht

    Jo, das war die Gegenprobe. Posten wollte ich aber eigentlich die ID_OK-Variante. 🙂

    Hast du denn eine Erklärung, warum ausgerechnet beim Speicherbutton die erste Variante nicht funktioniert, also wer/was da den Text wieder überschreibt?



  • Naja, öffne mal so nen SaveDaialog und klicke dann auf einen Ordner darin... 😉



  • Das ist doch auch nur ein Symptom, ich hätte gern die Ursache. Theoretisch sollte es ja sonst auch ausreichen, den Buttontext zB. im OnSelectionChange zu setzen.

    Muss ich wirklich noch selbst in den Quellen nachsehen!? 😉



  • Original erstellt von Jansen:
    Muss ich wirklich noch selbst in den Quellen nachsehen!? 😉

    Ja, frag mal Bill. Der hat bestimmt einen Codeschnipsel für dich parat. 😉


Anmelden zum Antworten