Checkboxen Font ändern wenn sie auf enabled stehen



  • Hallo,

    ich hab in meiner Abfrage Checkboxen eingebaut. Trifft eine der Entscheidungen zu soll die jeweilige Checkbox auf Enabled gesetzt werden. Meine Frage, wenn ich die Checkboxen enabled habe, wie kann ich die Schriftfarbe der deaktivierten Checkboxen auf Schwarz ändern? Geht das?

    if(FILINGSYSTEM->Query1->FieldValues["Disabled"] == 1)
                        {
                            Checkbox[i]->Enabled = false;
                            if (Checkbox[i]->Enabled == false)
                            {
                             Checkbox[i]->Font->Name = "Lucida Handwriting";
    
                            }
                        }
                        else
                        {
                            Checkbox[i]->Enabled = true;
    
                        }
    


  • eigentlich nicht, sie sind farblos(nur rand)

    corvin

    PS wieso willst du das???



  • schau in der BCB-Hife bei TFont und dessen Eigenschaften, dort stehen alle Eigenschaften drin, die man an jedem Font ändern kann, also Name, Farbe, Größe usw...

    alternativ hilft ein Blick in den Objektinspektor -> Font, mit dem + aufklappen und die Eigenschaften werden aufgelistet und heissen dann zur Laufzeit auch so



  • @linnea

    schau in der BCB-Hife ...

    _____________________________________
    DAS WORT LINNEAS: Und es stand geschrieben in der Hilfe zum BCB soll er suchen, bis er fündig ward, oder dem Greisentum anheim fiel."

    AHA ⚠ ⚠

    😉

    corvin



  • Es wird dann trotzdem ausgeführt nur man kann sich in diesem Fall nicht dagegen entscheiden. Aber wenn sie farblos sind sieht es so aus als wäre es nicht aktiv´, deshalb will ich das sie in schwarz dargestellt werden. In der Hilfe hab ich nichts gefunden.



  • Entweder du änderts (wie schon erwähnt) die Fontfarbe selber auf schwarz oder du setzt deine Checkboxen auf Panels und deaktivierst die.



  • Probier einfach:

    void __fastcall TForm1::Check1Click(TObject *Sender)
    {
    Form1->CheckBox1->Checked = false;
    }
    

    [EDIT] falscher code korrigiert
    [EDIT2] oder true
    (wenn ich's richtig verstanden habe)

    corvin



  • Sorry die Frage erscheint dir wahrscheinlich unwissend, aber ich hab noch nicht soviel Programmiererfahrung: Was sit ein Panel und wie setze ich meine Checkboxen darauf?



  • Schau mal in die Komponentenpalette deines Builders (Reiter Standard). Da findest du das Panel.
    Gib im Index der BCB-Hilfe mal TPanel ein. Hier findest du Informationen dazu.



  • ok, ich hab es jetzt so gemacht, dass ich einen StaticText über den Checkboxen liegen lasse und da kann ich die Farbe einstellen.

    Meint ihr das ist ok oder könnten dann irgendwann probleme auftreten mit denen ich jetzt noch nicht rechnen kann.

    if(FILINGSYSTEM->Query1->FieldValues["Disabled"] == 1)
                        {   //Checkbox[i]->Color = clWindowText;
                            Checkbox[i]->Enabled = false;
                            if (Checkbox[i]->Enabled == false)
                            {
                             //Checkbox[i]->Font->Name = "Lucida Handwriting";
                             FILINGSYSTEM->StaticText[i]->Left = Checkbox[i]->Left+18;
                             FILINGSYSTEM->StaticText[i]->Top = Checkbox[i]->Top+6;
                             FILINGSYSTEM->StaticText[i]->Caption = Checkbox[i]->Caption;
                             FILINGSYSTEM->StaticText[i]->BringToFront();
                             FILINGSYSTEM->StaticText[i]->Visible = true;
                            }
                        }
                        else
                        {
                            /*FILINGSYSTEM->StaticText[i]->Left = Checkbox[i]->Left+18;
                             FILINGSYSTEM->StaticText[i]->Top = Checkbox[i]->Top+6;
                             FILINGSYSTEM->StaticText[i]->Caption = Checkbox[i]->Caption;
                             FILINGSYSTEM->StaticText[i]->BringToFront();
                             FILINGSYSTEM->StaticText[i]->Font->Color = clRed;
                             FILINGSYSTEM->StaticText[i]->Visible = true;   */
                            Checkbox[i]->Enabled = true;
                        }
    


  • Hallo

    der ordentliche Weg wäre, eine Komponente von TCheckBox abzuleiten oder komplett neu erstellen (also von TControl ableiten). Und dann das Zeichenverhalten komplett selber übernehmen.

    bis bald
    akari



  • warum funktioniert

    CheckBox[i]->Font->Color = clRed;
    

    nicht? schließlich willst du ja nur die Schriftfarbe der Boxen ändern, die Enabled, also anklickbar sind

    und noch etwas:

    Checkbox[i]->Enabled = false;
         if (Checkbox[i]->Enabled == false)
    

    ist etwas eigenartig. Du setzt die Box erst auf false und fragst danach gleich ab ob sie auch wirklich false ist?



  • Linnea schrieb:

    warum funktioniert

    CheckBox[i]->Font->Color = clRed;
    

    nicht? schließlich willst du ja nur die Schriftfarbe der Boxen ändern, die Enabled, also anklickbar sind

    http://www.c-plusplus.net/forum/viewtopic-var-t-is-154639-and-highlight-is-.html


Anmelden zum Antworten