events für elemente



  • Hi,
    1. WO? [kommt der Fehler]

    2. Speicherplatz muss reserviert werden mit new!

    MFG

    Alexander Sulfrian

    PS: Liegt das Image in dem Panel welches die Farbe ändern soll? Soll das vielleicht irgend so ein Spiel werden?
    ala:
    Image wird gedrückt
    -> Panel wird makiert
    -> 2. Image wird gedrückt
    -> Zug wird ausgeführt

    Nur so'ne Frage?



  • ja das soll ein "schach-brett" werden, was heist eigentlich werden (?!), das ist schon eins :).
    die figuren werden wie auf [url] www.jippii.de [/url] (in java) erst markiert und dann ans zieg geschoben.



  • dasobjekt->Picture->LoadFromFile("G:\\AktueLL\\Schach\\pferd-weis.jpg");

    da kommt der fehler.

    ich möchte das "dasobjekt" wie "Image1" verwenden.



  • dasobjekt ist bei dir ein AnsiString, und der hat nun mal keine Picture-Eigenschaft.



  • wie weise ich ihm die denn zu?



  • Gar nicht, denn AnsiString hat nun mal keine Picture-Eigenschaft. 😉

    Wenn du ein TImage-Objekt benötigst dann musst du halt ein solches deklarieren und ihm zB. per dynamic_cast den Sender zuweisen. Benutz endlich mal die Suchfunktion hier, zu dynamic_cast findest du sicher zig Beispiele.



  • ich habe alle beispiele mit dynamic_cast durchgelesen, ich glaube du verstehst mich falsch:

    ich möchte NICHT ein neues TImage erstellen!
    ich möchte einen pointer oder soetwas ähnliches auf
    dynamic_cast<TImage*>(Sender)->Name;
    setzen, da ich eine große anzahl von TImages habe nicht für jedes ein event schreiben kann!
    beispielsweise:
    dasobjekt = dynamic_cast<TImage*>(Sender)->Name;
    //und später
    dasobjekt->Picture->LoadFromFile("G:\\bild.jpg");

    ich werde aus den bispielen echt nicht schlau, und bei dem o.g. bekomme ich einen compiler error. könnte mir irgendjemand ein codesnippet geben, dass einen pointer auf dynamic_cast<TImage>(Sender)->Name; anlegt !?*



  • Stell dich doch nicht so bescheuert an (sorry ;)). Was willst du immerzu mit Zeigern auf den Namen? Den sollst du nur benutzen, um festzustellen, welches Image geklickt wurde

    TImage *tmp = dynamic_cast<TImage*>(Sender);
    tmp->Picture->LoadFromFile...
    // oder
    dynamic_cast<TImage*>(Sender)->Picture->LoadFromFile...
    


  • Hi,
    ich will mal nicht so sein! Hier ein kleines BSP:

    void __fastcall TForm1::Image1Click(TObject *Sender)
    {
      // den Sender (TObject) zu TImage casten und temp zuweisen
      TImage *temp = dynamic_cast<TImage*>(Sender);
      // wenn erfolgreich
      if(temp != NULL)
      {
       // wenn noch nicht geklickt
       if (temp->Tag == 0)
       {
        // geklickt setzen
        temp->Tag = 1;
    
        // Panel auf welchem des Image liegt ermitteln und nach TPanel casten
        TPanel *panel = dynamic_cast<TPanel*>(temp->Parent)
        // wenn erfolgreich -> Farbe ändern
        if (panel != NULL) 
         panel->Color = clTeal;
    
        // Bild laden
        temp->Picture->LoadFromFile("G:\\AktueLL\\Schach\\pferd-weis.jpg");
       }
       // wenn schon mal geklickt
       else
       {
        // selber machen, ist ja fast das gleiche
       }
      }
    }
    

    MFG

    Alexander Sulfrian

    [ Dieser Beitrag wurde am 04.06.2003 um 20:59 Uhr von Alexander Sulfrian editiert. ]



  • DANKE 😉


Anmelden zum Antworten