Informationsweitergabe von dynamischen Objekten

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
klausi1305
Beiträge: 35
Registriert: Mo 1. Jul 2013, 21:30
OS, Lazarus, FPC: Win 7 Laz 1.0.10
CPU-Target: 32 Bit
Wohnort: Leipzig

Informationsweitergabe von dynamischen Objekten

Beitrag von klausi1305 »

Hallo,

ich habe folgendes Problem,
ich klicke auf ein dynamisch erzeugtes Image, das OnMouseEvent wird innerhalb der Klasse TSpielfeld verarbeitet. Dabei wird ein Index eines Objekts aus einer Objektliste ermittelt, welche ebenfalls in der Klasse TSpielfeld wohnt.

Wie kann ich auf der Main Form auswerten, ob auf dem dynamischen Image was passiert ist?
Ich will nach dem Klick auf ein Kartenfeld die entsprechenden Werte in einem Panel, welches Comboboxen etc. beinhaltet, verändern wollen. Ich möchte ungern dieses auch noch dynamisch erstellen.
Wie realisiere ich den Input / Output?

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Informationsweitergabe von dynamischen Objekten

Beitrag von Michl »

Da keiner anwortet, versuch ich mal Anregungen zu geben (müsstest mal deine Frage anders formulieren, als Außenstehender weiss man nicht unbedingt wovon du redest):

Falls es darum geht, ein Image, was in "TSpielfeld" erzeugt wurde, in der "Main Form" zu nutzen, kannst du ganz einfach mit dem Zugriff auf TSpielfeld.Image realisieren.
Achtung beim Löschen! Wird das Image in deiner TSpielfeld-Klasse auch wieder gelöscht, musst du sicherstellen, dass dies erst dann passiert, wenn das Image auch von keiner anderen Klasse mehr benötigt wird bzw. darauf zugegriffen wird.

Um zu sehen, ob eine Änderung, bei einem kopierten Image, vorgenommen wurde, könntest du eine Variable oder ein Property TSpielFeld.Imagechanged (boolean) erstellen. Beim Kopieren des Images von einer Quelle setzt du TSpielFeld.Imagechanged auf false (es ist aktuell noch nichts geändert), sobald du eine Änderung am Image vornimmst auf true (Änderung!!!). Dies könntest du dann in deiner Main Form auswerten.

Geht es darum: Hast du mehrere Images (Array of TImage, TImageList) kannst du eine Property TSpielfeld.AktuellesImage vom Typ integer erstellen, die dir die Stelle des zuletzt genutzten Images zurückgibt.

Willst du jedoch mit deiner "Kind"-Klasse (TSpielfeld) die "Elternklasse" (Main Form) steuern, halte ich das nicht für einen guten Programmierstil und ist nur mit Verbiegungen zu realisieren. Diese Abhängikeiten würden dir in einem neuen Projekt/neuen Klasse, wo du die Klasse TSpielfeld wieder einsetzen willst, auf die Füße fallen.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Palme
Beiträge: 1
Registriert: So 4. Aug 2013, 12:27

Re: Informationsweitergabe von dynamischen Objekten

Beitrag von Palme »

Hallo,

wie kann ich denn ein Edit Feld als array in einer memo komponente speichern?, ich bekomme das irgendwie nicht so ganz hin,

Beispielsweise:

Code: Alles auswählen

procedure TForm1.Edt_NameChange(Sender: TObject);
var EingabeName : string;
begin
// Eingabe Name
 
EingabeName:= Edt_Name.text;
 

danke schon mal im vorraus
Zuletzt geändert von Lori am Fr 9. Aug 2013, 21:15, insgesamt 1-mal geändert.
Grund: Highlighter

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Informationsweitergabe von dynamischen Objekten

Beitrag von Michl »

Für Code bitte Highlighter verwenden! Post hat aber mit dem Eingangsthema nichts gemein, daher eigentlich einen neuen Thread öffnen!

Edit.Text in Memo.Lines einfügen:

Code: Alles auswählen

procedure TForm1.Edit1EditingDone(Sender: TObject);
begin
  Memo1.Lines.Add(Edit1.Text);
end;

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Antworten