Ereignis Programmieren
-
Hi ich möchte gerne ein Ereignis OnClick für mein Button bereitstellen.
void __fastcall GLButton(int ImageNr, double BAddHelligkeit, double BLRed, double BLGreen, double BLBlue, double BLAlpha, double BRRed, double BRGreen, double BRBlue, double BRAlpha, bool Splitt, double PosX, double PosY, double breite, double hoehe, bool Rahmen, double RRed, double RGreen, double RBlue, double RAlpha, double GCD, AnsiString CDText,//Alle angaben ab hier sind nur Relewant wenn CDText != "" double CDX, double CDY, double CDRed, double CDGreen, double CDBlue, double CDAlpha, double CDHight, double CDWidth);
Könnte mir da bei bitte einer helfen ich habe schon 2Stunden lang das INet durchsucht aber ich finde irgend wie nichts was mir weiter hilft und alle Buttons im Ereignis OnClick von der Form zu verwalten währe irgendwie doch zimlich unschöhn.
-
Wow ... selten einen so ... langen ... Konstruktor gesehen. Und auch noch alles ohne Defaults - wow. Also ich würde den nicht benutzen!
-
Also der Button Funktioniert doch schon sehr gut. Die ganzen angaben sind nun mal wichtig für diesen speziellen Button der Bild, Text, Bildeinfärbung, Splitten, cooldown anzeige rahmen u.s.w. bietet.
Nun zurück zum Thema es scheint nicht möglich zu sein direkt ein Event da für zu machen da her habe ich das nun gelöst in dem ich in Form1->OnClick() die einzelnen Buttons (Die ich nun als Klasse definiert habe) mit hilfe eines Arrays durchlaufe und bei übereinstimmung der X/Y Coordinaten die neue Methode OnClick des GLButtons aufrufe.
Im übrigen habe ich nun auch ein Konstruktor eingefügt für die Defaultwerte:)
Falls doch noch jemand weis wie man ein Event einbauen kann oder ne bessere möglichkeit als meine kennt were ich sehr dankbar.
Edit:
Ich benutze übrigens den C++Builder6 falls das von bedeutung sein sollte.
-
GenialerIdiot schrieb:
Ich benutze übrigens den C++Builder6 falls das von bedeutung sein sollte.
Nein, sollte nicht von Bedeutung sein. Sollte nur der einzige Hinweis sein, womit man dir eine halbwegs brauchbare Hilfe hätte geben können.
Man soll zwar auch nicht zu viel schreiben, aber zu wenig ist auch nicht hilfreich.
Übrigens gehört das in VCL-Forum.
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum VCL (C++ Builder) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo
Deine Beschreibung ist immer noch nicht ausreichend, um dir einen konkreten Rat geben zu können. Allgemein must du in der VCL eine neue Klasse von TWinControl ableiten, damit die Instanzen der Klasse automatisch an die Message-Verwaltung von Windows und der VCL angeschlossen werden. Dann kannst du von TWinControl ausgehend die OnClick-Methode verwenden.
Dein Konstrukt sieht mir aber sehr selbstgebastet aus. Da wird dir das auch nicht weiterhelfen. Du könntest noch mit den entsprechenden WinAPI-Funktion selber ein Windows-Handle für deinen Button generieren und dann die Windows-Messages verarbeiten.
bis bald
akari
-
Also danke für die Antwort als komponente der VCL wird zu Kompliziert da müsste ich ja erst mal OpenGL in eine Komponente Packen und den GLButton dann da von ableiten.
Aber das mit WinApi hört sich gut an werde gleich mal da nach Surfen, wenn ich ne lösung habe werde ich sie natürlich Posten:)
-
Hallo
Hat den OpenGL nicht eine eigene Verwaltung für soetwas? Und da damit deine Frage nichts mit der VCL zu tun hat, verschiebe ich dich noch einmal.
Bitte achte beim nächsten Mal darauf, welches Framework deine Frage betrifft.bis bald
akari
-
Dieser Thread wurde von Moderator/in akari aus dem Forum VCL (C++ Builder) in das Forum Spiele-/Grafikprogrammierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ich verwende für Events libsigc++ vom GTK Toolkit. Es ist standalone und du musst nicht den ganzen Overhead mitnehmen. Ausserdem ist es pures C++ und damit x-platform.
http://libsigc.sourceforge.net/Hat den OpenGL nicht eine eigene Verwaltung für soetwas?
Nein, OpenGL stellt nur Dinge auf deinem Monitor da :p.
Von Events weiss OpenGL nix.edit:
typedef sigc::signal<void, const int> OnClickEvent; typedef sigc::slot<void, const int> OnClickSlot; class Button { public: sigc::connection connectSignal(OnClickSlot slot) { return m_event.connect(slot); } void foobar() { int id = 0; m_event.emit(id); } private: OnClickEvent m_event; };
Kurzes Beispiel