Eigenes Design für Controls, insbesondere Buttons



  • hi

    sorry für die fragerei, aber es ist mir wichtig 🙂

    • wie kann ich mit der VCL bzw. mit dem GUI Designer die GUI stylen, also erstmal die Titelleiste wegmachen und dann irgendwie ein Design zeichnen, also so wie bei TuneUp der Rahmen und das Innere? Die haben doch eigene Steuerelemente, halt nen normalen Cmdbutton, aber anders gemacht
    • und da mir die Windows Standard Steuerelemente nicht gefallen, würd ich gerne meine "eigenen" Buttons verwenden, also zbsp so: ich mach ne gif datei oder bmp und zeichne was rein, zbsp. einen kreis mit farbe.

    ich würde das gerne irgendwie in die steuerelementeliste einbinden, aber wie es geht, weiß ich nicht 😞
    -> Es kann natürlich ein normaler Commandbutton sein, er sollt jedenfalls meinen eigenen gezeichneten style haben(bmp oder gif,..)

    Das würde ich gerne realisieren, nur steht nichts im borland darüber 😞

    P.s. es ist borland c++ 6

    Mit freundlichen Grüßen



  • MFG 🙂 schrieb:

    wie kann ich mit der VCL bzw. mit dem GUI Designer die GUI stylen, also erstmal die Titelleiste wegmachen und dann irgendwie ein Design zeichnen, also so wie bei TuneUp der Rahmen und das Innere? Die haben doch eigene Steuerelemente, halt nen normalen Cmdbutton, aber anders gemacht

    Steht in der FAQ hier im Forum, Abschnitt Forms.

    [*]und da mir die Windows Standard Steuerelemente nicht gefallen, würd ich gerne meine "eigenen" Buttons verwenden, also zbsp so: ich mach ne gif datei oder bmp und zeichne was rein, zbsp. einen kreis mit farbe.

    ich würde das gerne irgendwie in die steuerelementeliste einbinden, aber wie es geht, weiß ich nicht 😞
    -> Es kann natürlich ein normaler Commandbutton sein, er sollt jedenfalls meinen eigenen gezeichneten style haben(bmp oder gif,..)

    Du kannst dur entweder aus dem Netz eine entsprechende existierende Bibliothek suchen und einbinden (bei den meisten ist eine Installationsanleitung dabei), oder du erstellst dir selber eine Komponente. Dazu findest du hier eine Anleitung.

    bis bald
    akari



  • akari schrieb:

    [*]und da mir die Windows Standard Steuerelemente nicht gefallen, würd ich gerne meine "eigenen" Buttons verwenden, also zbsp so: ich mach ne gif datei oder bmp und zeichne was rein, zbsp. einen kreis mit farbe.

    ich würde das gerne irgendwie in die steuerelementeliste einbinden, aber wie es geht, weiß ich nicht 😞
    -> Es kann natürlich ein normaler Commandbutton sein, er sollt jedenfalls meinen eigenen gezeichneten style haben(bmp oder gif,..)

    Du kannst dur entweder aus dem Netz eine entsprechende existierende Bibliothek suchen und einbinden (bei den meisten ist eine Installationsanleitung dabei), oder du erstellst dir selber eine Komponente. Dazu findest du hier eine Anleitung.

    bis bald
    akari

    hi akari 😉

    aber ich meinte keine eigenen Buttons in dieser Art, sondern, dass sie nur ein anderes aussehen haben, also keine windows buttons, oder andere steuerelemente.

    Mit freundlichen Grüßen



  • Hallo

    Die Windows-Buttons und damit die Buttons die standardmäßig von der VCL benutzt werden haben nur genau dieses von Windows aus festgelegtes Aussehen. Du kannst noch TBitBtn benutzen der aber auch nur zusätzlich noch ein Icon darstellt.
    Willst du ein komplett anderes Aussehen must du eine eigene oder externe Komponente nehmen.

    bis bald
    akari



  • hallo akari 😉

    sorry, dass ich nochmal frage, aber ich weiß nicht genau, was ich da weiter machen muss:

    ich hab unter neue komponente eine neue vom Vorfahrtyp "Button" genommen.

    Nun sehe ich folgendes:

    Button1.cpp

    //---------------------------------------------------------------------------
    
    #include <vcl.h>
    
    #pragma hdrstop
    
    #include "Button1.h"
    #pragma package(smart_init)
    //---------------------------------------------------------------------------
    // Mit ValidCtrCheck wird sichergestellt, dass die erzeugten Komponenten
    // keine rein virtuellen Funktionen besitzen.
    //
    
    static inline void ValidCtrCheck(TButton1 *)
    {
    	new TButton1(NULL);
    }
    //---------------------------------------------------------------------------
    __fastcall TButton1::TButton1(TComponent* Owner)
    	: TButton(Owner)
    {
    }
    //---------------------------------------------------------------------------
    namespace Button1
    {
    	void __fastcall PACKAGE Register()
    	{
    		TComponentClass classes[1] = {__classid(TButton1)};
    		RegisterComponents("Samples", classes, 0);
    	}
    }
    //---------------------------------------------------------------------------
    

    Button1.h

    //---------------------------------------------------------------------------
    
    #ifndef Button1H
    #define Button1H
    //---------------------------------------------------------------------------
    #include <SysUtils.hpp>
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <StdCtrls.hpp>
    //---------------------------------------------------------------------------
    class PACKAGE TButton1 : public TButton
    {
    private:
    protected:
    public:
    	__fastcall TButton1(TComponent* Owner);
    __published:
    };
    //---------------------------------------------------------------------------
    #endif
    

    Aber wie tu ich nun den Button zeichnen?

    Mit freundlichen Grüßen



  • Hallo

    So gar nicht. TButton beinhaltet bereits den Windows-Button. Du kannst das Aussehen hier nicht mehr verändern. Du must schon von TControl ableiten und sowohl das Zeichnen als auch das Reagieren auf Benutzeraktionen selber implementieren.

    bis bald
    akari



  • akari schrieb:

    Hallo

    So gar nicht. TButton beinhaltet bereits den Windows-Button. Du kannst das Aussehen hier nicht mehr verändern. Du must schon von TControl ableiten und sowohl das Zeichnen als auch das Reagieren auf Benutzeraktionen selber implementieren.

    bis bald
    akari

    hallo akari

    Das hab ich mir schon so gedacht, dass das schon definiert war 😞

    Aber kann man das nicht einfacher machen, nicht einfach irgendwie in den Eigenschaften vom Button dann unter Durchsuchen ein Bild auswählen,das den CommandButton ersetzt?

    mir ist das nämlich noch zu kompiliziert mit dem selber implementieren :S

    Mit freundlichen Grüßen

    ps: es soll doch nicht die ganze funktion vom cmdbutton ersetzt werden, sondern nur das aussehen, das muss man doch irgendwie ersetzen können, aber nur wie? 😞



  • Hallo

    Nocheinmal : Nein. Windows zeichnet seine Buttons selber.

    bis bald
    akari



  • akari schrieb:

    Nocheinmal : Nein. Windows zeichnet seine Buttons selber.

    hmmm ich hab was neues gefunden: Timage. aber zwei fragen hätte ich da:

    1. wie setz ich da ein Bild rein? Ich find da nichts mit "Durchsuchen" Unter Eigenschaften 😞
    2. Wenn man draufklickt, wie kann ich das bild auswechseln? Also soll sowas wie ein button werden 😉

    mfg



  • ok das bild hab ich schon.

    mir fehlt nur noch eine animation.

    Also WENN man draufklickt, dann soll das Bild kurzzeitig durch das andere ersetzt werden.



  • ich habs schon mit allem möglichen versucht. es funktioniert nicht, weil ja char * konstant ist. Es muss doch irgendwie noch gehen 😞



  • Hallo

    MFG 😞 schrieb:

    ich habs schon mit allem möglichen versucht. es funktioniert nicht, weil ja char * konstant ist. Es muss doch irgendwie noch gehen 😞

    😕 Was hat denn eine Animation mit const char* zu tun?

    Im allgemeinen must du eben das Bild während der Animation austauschen bzw. verändern. Eine einfache Art ist einen 3D-Rahmen um das eigentliche Bild zu zeichnen. Beispiel (B = Bild, H = Heller Rand, D = Dunkler Rand)

    H
    H B D
      D
    

    Wenn der Button nun gedrückt dargestellt werden soll, must du nur die Ränder austauschen

    D
    D B H
      H
    

    Diese Veränderung zeigst du zwischen MouseDown und MouseUp an.

    bis bald
    akari



  • hallo akari.

    also ich habs immer nur per Zuweisung versucht. ich kenne keine dementsprechende Funktion für soetwas 😕

    hab schon über google danach gesucht - nichts 😞

    Das mit dem Rahmen hab ich eigentlich erst später vor, aber ich kanns ja mal probieren, nur was soll ich da hinschreiben, zbsp. wenn ich mit der Maus anklicke? (wo ich es reinschreiben soll, weiss ich ja)

    mit freundlichen grüßen



  • Hallo

    Also zu den ersten beiden Sätzen kann ich nichts sagen da ich nicht weiß worauf du dich konkret beziehst.

    Und auch der dritte Satz ist schwammig, das ich nicht weiß was was du wohin schreiben willst.

    bis bald
    akari



  • akari schrieb:

    Hallo

    Also zu den ersten beiden Sätzen kann ich nichts sagen da ich nicht weiß worauf du dich konkret beziehst.

    Und auch der dritte Satz ist schwammig, das ich nicht weiß was was du wohin schreiben willst.

    bis bald
    akari

    hallo akari.

    ich will einfach nur einen code sehen, also wie ich das releasieren kann.
    sowas wie

    Image1->ErsetzeDurchAnderesBild("xyz.bmp");
    

    nur halt das richtige 😉

    mit freundlichen grüßen



  • Zum Zeichnen schau dir mal die Methoden von TImage::Canvas (TCanvas) an (z.B. MoveTo, LineTo, FrameRect).
    Eine schöne Funktion ist auch Extctrls::Frame3D(...)



  • Th schrieb:

    Zum Zeichnen schau dir mal die Methoden von TImage::Canvas (TCanvas) an (z.B. MoveTo, LineTo, FrameRect).
    Eine schöne Funktion ist auch Extctrls::Frame3D(...)

    ich will wirklich noch nichts zeichnen, ich will einfach nur das bild durch ein anderes ersetzen 😞

    aber danke trodzdem werd ich mir bald anschauen



  • hi

    weiss keiner was?

    mit freundlichen grüßen



  • Image->Picture->LoadFromFile("xyz.bmp");
    


  • Hallo

    Oder du bindest alles verschiedenen Bilder zur Entwurfszeit in eine TImageList und lädst die Bilder zur Laufzeit aus der List in das Image. Das geht schneller als zur Laufzeit Dateien zu öffnen.
    Siehe die Methoden von TImageList in der BCB-Hilfe.

    bis bald
    akari


Anmelden zum Antworten