TImage - 2 gleiche Bilder anzeigen in 2 Forms
-
Leider funktioniert es immer noch nicht.
Kann mir mal jemand den Unterschied zwischen TImage und TPicture erklären ?
Also so habe ich es versucht: (beide Versuche funktionieren nicht)
1. Versuch mit TPicture
//In Form1 TPicture * TForm1::hole_bild (int ix, int iy) { return Bild[ix][iy]->Picture; } //In Form2 __fastcall TfrstDrucken::TfrstDrucken(TComponent* Owner) : TForm(Owner) { frstDrucken->img00->Picture = Form1->hole_bild(0,0); //tut gar nichts //zeigt Bild nicht an }2. Versuch mit TImage
//IN Form I TImage * TForm1::hole_bild (int ix, int iy) { return Bild[ix][iy]; } __fastcall TfrstDrucken::TfrstDrucken(TComponent* Owner) : TForm(Owner) { //frstDrucken->img00->Assign(Form1->hole_bild(0,0)); //Während der laufzeit kommt immer die Fehlermeldung //TImgae kann nicht Timage zugerordnet werden frstDrucken->img00 = Form1->hole_bild(0,0); //tut ebenfalls gar nichts //zeigt Bild nicht an -> es kommt aber keine Fehlermeldung }Woran leigt es das beide Versuche nicht gehen und das Bild nicht auf der anderen Form angezeigt wird ?
Selbst wenn ich es direkt Versuche ohne Methode wird das Bild nicht angezeigt:
frstDrucken->img00->Picture->Assign(Form1->img00->Picture);Aber es kommt keine Fehlermeldung. Es zeigt das Bild nur nicht an. Das Image bleibt leer.
Danke
-
Woher, um alles in der Welt, nimmst du das Array? Wo und wie ist es deklariert, was hat es zu bedeuten?
-
//in der Header-Datei der Form1 public: // Anwender-Deklarationen TImage *Bild[8][8]; //im konstruktor der Form 1 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { Bild[0][0] = img00; Bild[0][1] = img01; Bild[0][2] = img02; Bild[0][3] = img03; //besser zu arbeiten ->kann über schleifen dann ansprechen //... }Daran dürfte es normal nicht liegen.
Ich hätte auch direkt das Image ansprechen können, macht keinen Unterschied. Ich denke, dass das nicht der Fehler ist.
-
Versuch mal sowas wie:
frstDrucken->img00->Picture->Assign(Form1->img00->Picture->Bitmap);Je nachdem, welches Bildformat du nutzt. Wenn ich mich recht entsinne, habe ich immer die Bitmaps direkt assigned.
-
frstDrucken->img00->Picture->Assign(Form1->img00->Picture->Bitmap);tut leider auch nicht. Wie vorher schon erwähnt führt er auch diesen Code ohne zu meckern aus. Aber es wird kein Bild angezeigt.
Woran kann das liegen ?
-
Zeig mal was genaueres!
1. WO und WIE und WANN erzeugst Du das 'Original'- Bild (welches woanders zu zeigen ist)
2. WO und WIE und WANN holst Du das.
3. Nach Assign kannste mal 'n Refresh zusetzen.
PS: Welcher Typ Graphik ist im Original?
Falls das JPEG ist, kann Dein Code nicht gehen!
-
Also ich verwende Bitmaps.
Ich setze sie im Objektinspektor und Refresh bringt gar nichts.
Die Bilder können sie aber verschieben. Also von z.B.
Bild[0][1]->Picture = Bild[0][2]->Picture;ich habe gerade herausgefunden, wenn ich auf die zweite Form einen Button setze und dann den Quellcode dort hineinkopiere funktioniert es und das Bitmap wird angezeigt.
void __fastcall TfrstDrucken::Button1Click(TObject *Sender) { frstDrucken->img00->Picture->Assign(Form1->img00->Picture); //geht }__fastcall TfrstDrucken::TfrstDrucken(TComponent* Owner) : TForm(Owner) { frstDrucken->img00->Picture->Assign(Form1->img00->Picture); frstDrucken->Refresh(); //tut nicht }Was macht denn das für einen Unterschied ob der Code im Konstruktor ist oder in einer Methode. Wieso funktioniert es beim einen und beim anderen nicht ? Wieso funktionieren die anderen Versuche von mir nicht, sieht dort jemand einen Fehler ? oder hat eine Vermutung.
-
Hi,
mach mal deinen Aufruf zum holen in OnShow oder so...
Der Konstruktor wird aufgerufen, wenn das Forumlar erzeugt wird! Es könnte sein, dass es dann dein Bild noch garnicht gibt....MfG
Alexander Sulfrian
-
Erstmal danke soweit. Ich habe jetzt den Code in die Methode onActivate gepackt und er tut auch.
Aber trotzdem würde mich interresieren warum die anderen Versuche von mir nicht funktionieren. Diese Funktionieren auch nicht wenn ich sie in OnActivate packe.
z. B. bei diesem Versuch kommt immer eine Fehlermeldung "TImage kann nicht TImage" zugerordnet werden. Was ist denn das für eine sinnlose Fehlermeldung ?
Hier der Quellcode:
{ frstDrucken->img00->Assign(Form1->hole_bild(0,0)); //Während der laufzeit kommt immer die Fehlermeldung //TImgae kann nicht Timage zugerordnet werden }Die Methode hole_bild habe ich ja schon gepostet.
Wo liegt hier der Fehler ?
-
Hallo
vermutlich heist die Fehlermeldung
"TImage * kann nicht TImage" zugerordnet werden.
MfG
Klaus