BorderStyle Icons



  • Guten Tag,

    ich hab da ein kleines Problem, irgendwie komme ich nicht dahinter wie ich das maximieren Symbol aus der Leiste entfernen kann (es soll nurnoch das minimieren- und das schließen Symbol erscheinen) _ X

    vielen dank schonmal!



  • hi,

    willst du das icon ganz weg haben oder nur deaktivieren?

    falls du es nur deaktivieren willst kannst du im Obejct Inspector das Formular anwählen und unter BorderIcons biMaximize auf false stellen.

    mfg



  • Hallo
    Zumindest deaktivieren kannst du ihn so:

    Im Objectinspector

    BorderIcons:
    biSystemMenu=true
    biMinimize=true
    biMaximize=false
    biHelp=false

    und

    BorderStyle=bsSingle

    setzen.
    Mir hat das gereicht...

    wNw



  • Zu spät



  • passiert ^^



  • ja genau, aber kann mir jemand sagen wie ich den Button ganz entfernen kann ? bei Visual Studio ist es ja möglich



  • Hallo,

    biSystemMenu=false
    biMinimize=false
    biMaximize=false
    biHelp=false

    mfg, Micha



  • @RandomAccess85:

    Deine erste Zeile biSystemMenue=false im Objekt-Inspektor würde da reichen, weil dann alle Button ausgeblendet werden.
    Die Frage war aber:

    ...es soll nur noch das minimieren- und das schließen Symbol erscheinen

    und die Möglichkeit besteht so eigentlich nicht, bin ich der Meinung.

    @Stelfer:
    Wie machst Du das im VisualStudio???



  • Hallo,

    sorry, da hab ich mich wohl verlesen!

    @arnedrews:
    Im VS scheint es wohl mit SetWindowLong zu funktionieren. Tuts im BCB nicht.

    Das hat auch nur wieder den Erfolg dass der Maximierenbutton zwar deaktiviert aber noch sichtbar ist:

    SetWindowLong(Handle, GWL_STYLE, WS_POPUP | WS_SYSMENU | WS_MINIMIZEBOX | WS_CAPTION | WS_SIZEBOX);
    

    Damit kann man zumindest die Menüeinträge zu "Maximieren", "Größe ändern", "Verschieben" und "Wiederherstellen" entfernen:

    hMenu = GetSystemMenu(Handle, 0);
    
    RemoveMenu (hMenu, SC_MAXIMIZE, MF_REMOVE || MF_BYCOMMAND);
    RemoveMenu (hMenu, SC_SIZE, MF_REMOVE || MF_BYCOMMAND);
    RemoveMenu (hMenu, SC_MOVE, MF_REMOVE || MF_BYCOMMAND);
    RemoveMenu (hMenu, SC_RESTORE, MF_REMOVE || MF_BYCOMMAND);
    
    DrawMenuBar (Handle);
    

    mfg, Micha



  • Immerhin... 🙂

    Warum will man den Button "Maximieren" überhaupt ausblenden?
    So schlimm finde ich den nicht, wenn der deaktiviert ist.

    Aber wenn man da so gesteigerten Wert drauf legt, kann man ja die Systemleiste
    mit biSystemMenue=false ausblenden und sich am oberen Rand ne eigene Leiste
    mit angepaßten Buttons entwerfen.

    Button "Minimieren" ruft das WindowEvent WM_MINIMIZE auf und
    Button "Schließen" löst ein Form1->Close(); aus.

    Is' vielleicht nicht sehr elegant, aber sicher leichter zu bewrkstelligen.
    Nur wenn man das wirklich inbedingt möchte...
    🕶



  • RandomAccess85 schrieb:

    hMenu = GetSystemMenu(Handle, 0);
    
    RemoveMenu (hMenu, SC_MAXIMIZE, MF_REMOVE || MF_BYCOMMAND);
    

    Der boolesche ||-Operator ist hier unangebracht; benutze |.


Anmelden zum Antworten