Dynamisches Laden vom Bilder bei Drag&Drop
-
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::imgAblagefeld1DragDrop(TObject *Sender, TObject *Source, int X, int Y) { // imgAblagefeld1->Picture->LoadFromFile("Image1.bmp"); /*Hier liegt das Problem: Ich würde jetzt gerne z.B. den roten Stein auf das imgAblagefeld1 laden, da ich diesen über das Feld gezogen und losgelassen habe. Um dies zu bewerkstelligen versuche ich derzeit die Eigenschaften des Senders auf eben diese Ablagefläche zu kopieren. Dabei kassiere ich allerdings immer Konvertierungsfehler wie: "TImage kann nicht zu TPicture zugewiesen werden". Dafür benötige ich jetz Hilfe. Wie kann ich also die Eigenschaften von meinem imgSpielstein1 (vom Typ Image) auf imgAblagefeld1 (vom Typ Image) übertragen?*/ imgAblagefeld1->Picture->Assign((TImage *)Sender); } //---------------------------------------------------------------------------
Ist die Situation jetzt klarer?!
[ Dieser Beitrag wurde am 24.04.2003 um 11:07 Uhr von Jansen editiert. ]
-
soweit ich das weiss musst du wenn du das dynamisch machst auch deine eigenen methoden schreiben ! Es heißt nunmal auch programmieren und nicht Zusammenklicken !
Du brauchst Variablen mit den pfäden zu den einzelnen *.bmp und mußt dir speichern was nen spielstein für nen img hat und wo die spielsteine stehen ..
-
Tut mir leid für die ewig lange Zeile oben, ich dachte das Forum bricht die Zeilen automatisch um!
Ich bin wieder ein Stück weiter gekommen, aber das Hauptproblem besteht leider immer noch
Vorher habe ich versucht ein Picture-Objekt einem TImage-Objekt zuzuweisen... (siehe obiger Code).
Jetzt hab ich das korrigiert (sieh Code unten)
Ich erhalte trotzdem die Fehlermeldung: "TImage kann nicht zu TImage zugewiesen werden"
Wo liegt das Problem? In der Hilfe finde ich nicht mehr zu diesem Thema[code type="C++" tabs="4"]
//---------------------------------------------------------------------------
void __fastcall TForm1::imgAblagefeld1DragDrop(TObject *Sender, TObject *Source,
int X, int Y)
{
// Statisch, also nicht zu gebrauchen:
// imgAblagefeld1->Picture->LoadFromFile("Image1.bmp");imgAblagefeld1->Assign((TImage *)Sender);
}
//---------------------------------------------------------------------------
-
Hi,
du darft nicht Sender nehmen. Nimm Source, dann gehts:
Image1->Picture->Bitmap = ((TImage*)Source)->Picture->Bitmap;
BM
-
Versuchs mal mit
ImgAblagefeld1 = dynamic_cast <TImage*> (Sender);
Eigentlich müsste es so gehen
-
hmm dynamic_cast is unterster stil ! imho
-
Super! Danke für den Hinweis
-
Afaik find ichs lustig das du erst die grafik machst und dann die Engine hinter das Spiel bringst hättest du das nach nem modernen OOP Pattern durchgeplant und hättest dir was überlegt müßtest du nu nicht nem Ding nen Wert mit nem Holzhammer zuweisen .. !
Aber eins kann ich dir im Vorraus sagen
du wirst Probleme bei der Berechnung kriegen
-
Hast schon Recht mit der Reihenfolge, aber ich bin unter Zeitdruck!
Ich komme aus der Konsolenwelt und müsste jetzt erstmal alle möglichen
Komponenten anschauen um herauszufinden was die so alles draufhaben.Da mach ich's lieber so das ich erst das Frontend erstelle und dann das Backend
angleiche, dass wird für mich als Konsolengewohnter einfacher.Ich denk Du beziehst den Holzhammer auf den dynamic_cast, aber keine Angst, ich
nehm das Beispiel von <BM>. Da ist nix ungewöhnliches dabei.
Berechnen brauch ich außerdem nix...
-
Original erstellt von 1ntrud0r:
hmm dynamic_cast is unterster stil ! imhoC-Cast ist unterster Stil. Siehe FAQ.
-
Bitte beim Thema bleiben. Eine (neuerliche) Grundsatzdiskussion über dynamic_cast gehört nach "C++".