Dialoge - Button-Caption der Standarddialoge ändern



  • Hallo,
    ich habe in der Hilfe dieses Bsp. gefunden und würde gerne wissen wie ich hierbei den Button von öffnen (erscheint beim Dialog Öffnen) auf löschen umbenenen kann.
    Hat mir jemand einen Tip ?

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
      OpenDialog1->Title = "Datei löschen";
      if (OpenDialog1->Execute())
      {
        if (FileExists(OpenDialog1->FileName))
          DeleteFile(OpenDialog1->FileName);
      }
    }
    

    [ Dieser Beitrag wurde am 06.05.2002 um 20:25 Uhr von Jansen editiert. ]



  • Du könntest dir das Fenster-Handle des Dialogs hernehmen, darüber das Handle des Buttons finden und dann die Caption des Buttons ändern... ich muss mal schauen, ob ich das mal hinbekomme...



  • I hob's:

    void __fastcall TForm1::OpenDialog1Show(TObject *Sender)
    {
       HWND hDialog = GetParent(OpenDialog1->Handle);
       HWND hwnd = FindWindowEx(hDialog, NULL, NULL, "Ö&ffnen");
       SetWindowText(hwnd, TEXT("Löschen"));
    }
    

    Schön, was???



  • WebFritzi, das kannste aber nicht bringen, viel zu einfach :D:D:D



  • @WebFritzi: Sauber, landete gleich in meiner Snippetsammlung! 😃



  • das kannste aber nicht bringen, viel zu einfach

    Genau! Denn was passiert, wenn der User ein nicht-deutsches Windows installiert bzw. entsprechende Spracheinstellungen hat? Dann steht auf dem Button ja 'Open' oder sonstwas, und mit 'Löschen' kann er wahrscheinlich auch nichts anfangen. 😉

    Gibt's da nicht vielleicht einen absoluten Namen?



  • Wobei ich die Lösung ansich schon recht Klasse finde. Es gibt leider Gottes nicht sehr viele, die so kreative Ideen entwickeln ;).
    Soll jedoch ein Programm nicht nur für den eigenen Gebrauch bestimmt sein, lohnt es sich schon über das ein oder andere nachzudenken, wie z.B. Spracheinstellungen etc.



  • also einfacher gehts auf alle fälle so...

    void __fastcall TForm1::OpenDialog1Show(TObject *Sender)
    {
      // der Öffnen-Knopf hat die Kennung eines Okay-Buttons
      HWND hDialog = GetParent(OpenDialog1->Handle);
      HWND button  = GetDlgItem(hDialog, ID_OK); //ok-button
    
      // den text setzen (nach gutdünken)
      SetWindowText(button, "Löschen");
    }
    

    okay... nicht einfacher, aber genauer... 😉

    [ Dieser Beitrag wurde am 06.05.2002 um 20:38 Uhr von Jansen editiert. ]


Anmelden zum Antworten