| Autor |
Beitrag |
cyberax
      
Beiträge: 247
Win XP Pro
Delphi 5 Enterprise
|
Verfasst: Mi 02.04.08 20:58
hallo,
ich erstelle in einer Form während der Laufzeit Komponenten (Images). Ich bin schon so weit, dass diese selektiert und verschoben werden können. Wenn ich so ein erstelltes Image selektiere werden in einer anderen Form dessen Koordinaten angezeigt. Wie kann ich nun von dem zweiten Form aus, die Eigenschaften einer während der Laufzeit erstellten Kompo ändern?
Ich hatte schon einiges wie
Delphi-Quelltext 1:
| bild_fenster.Image1.FindComponent(edit7.Text) as timage).left:=0; |
probiert, aber das bringt immer nur Fehlermeldungen. Edit7 befindet sich auf dem zweiten form und hat den name der selektierten Komponente als Text.
So werden die Komponenten bei mir erzeugt:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| if maus then begin felder:=felder+1; feld:=Timage.create(image1); feld.Parent:= bild_fenster; feld.Name:='test_'+inttostr(felder); feld.Hint:=feld.Name; feld.Left:=xv;feld.Top:=yv; feld.Width:=xb-xv;feld.Height:=yb-yv; feld.Picture.loadfromfile(extractfilepath(paramstr(0))+'rahmen.bmp'); feld.center:=true; feld.Stretch:=true; feld.Transparent:=true; feld.Cursor:=crHandPoint; feld.OnMousemove:=Image2.OnMousemove; feld.OnMousedown:=Image2.OnMousedown; feld.OnMouseup:=Image2.OnMouseup; maus:=false; end; |
und wenn eines davon selektiert wird :
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| daten.edit1.Text:=inttostr((Sender as timage).left); daten.edit2.Text:=inttostr((Sender as timage).top); daten.edit3.Text:=inttostr((Sender as timage).left+((Sender as timage).width)); daten.edit4.Text:=inttostr(((Sender as timage).top)+((Sender as timage).height)); daten.edit7.text:=TComponent(Sender as timage).Name; daten.edit5.Text:=(Sender as timage).hint; |
werden die Infos an das zweite form ("daten") übermittelt.
Ich hoffe ihr versteht, was ich will....
Mfg cyberax
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Mi 02.04.08 22:03
Hi,
Wenn du die Komponenten in einem Array of TComponent anlegst, kannst du bei Form2 "Form1" im implementation-Teil unter den Uses angeben.
Ansonsten beschreib mal die Fehlermeldungen genauer(aber das bringt immer nur Fehlermeldungen.), "Geht nicht" ist keine Fehlerbeschriebung!
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
cyberax 
      
Beiträge: 247
Win XP Pro
Delphi 5 Enterprise
|
Verfasst: Do 03.04.08 18:56
Hätte dir gern eine genauere Fehlermeldung gegeben, aber die die ich bekomme ist wenig aussagend (Zumindest für mich):
"Im Projekt xyz ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00438CC8 im Modul 'xyz.exe'. Lesen von Adresse 00000048'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen."
Wegen dem Einbinden der Unit -> wenn ich richtig verstehe, was du meinst, dann habe ich das (Einbinden der Unit unter uses ....) natürlich schon gemacht. Ich weiß nur nicht, wie ich auf eine Komponente zugreife, die ich während der Laufzeit erstellt habe und die sich in einem anderen Fenster befindet.
Mfg
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Do 03.04.08 19:00
Hi,
was ich meine ist:
Delphi-Quelltext 1: 2:
| implementation uses Unit1; |
Zum deinem Problem: Wie speicherst du die Komponenten denn ab? in einem Array of TComponent oder wie?
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
Zuletzt bearbeitet von Hidden am Do 03.04.08 19:06, insgesamt 1-mal bearbeitet
|
|
cyberax 
      
Beiträge: 247
Win XP Pro
Delphi 5 Enterprise
|
Verfasst: Do 03.04.08 19:05
ja, so habe ich sie auch eingebunden.
| Zitat: |
Wie speicherst du die Komponenten denn ab? |
??
Wie oben beschrieben erzeuge ich sie nur und mehr mache ich nicht. Wie müsste ich die denn speichern? Sie bekommen doch von mir einen festen Namen und weitere Eigenschaften...
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Do 03.04.08 19:12
Okay, du nutzt also die Freigabe von Form1 und verzichtest auf Objektvariablen. Spontan würde mir da TStringlist einfallen, du kannst auch Objekte abspeichern. über diese StringList kannst du dann darauf zugreifen(habe ich selber noch nie gemacht).
Edit: Der Vorteil gegenüber Objektvariablen wäre vor allem, dass du die Objekte praktisch direkt über den Namen, den du ihnen gegeben hast, ansprechen kannst.
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
cyberax 
      
Beiträge: 247
Win XP Pro
Delphi 5 Enterprise
|
Verfasst: Do 03.04.08 19:20
Aha. Hättest du da evtl. ein kleines Beispiel? Kann mir das grad nicht vorstellen??
Wie speichere ich ein neues Objekt in dieser Stringlist und wie greife ich darauf zu?
Wäre echt nett. Danke schonmal!!!
|
|
cyberax 
      
Beiträge: 247
Win XP Pro
Delphi 5 Enterprise
|
Verfasst: Do 03.04.08 19:27
Okay, mit dem Speichern in der Liste, dass habe ich soweit - denke ich mal.
Delphi-Quelltext 1:
| liste.AddObject('test_'+inttostr(felder),feld); |
Aber wie frage ich das dann ab??
Wenn ich zum Beispiel test_1 in der Liste habe und nun
Delphi-Quelltext
setzen will ...??
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Do 03.04.08 19:43
Hi,
schau dir mal die Eigenschaft Objects von TStringlist an. Wenn du sie über den Namen ansprechen willst, brauchst du zusätzlich noch Find, glaube ich. Aber das willst du ja scheinbar nicht, da du sie Feld_i nennst, da kannst du direkt über den Index gehen.
mfG,
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
cyberax 
      
Beiträge: 247
Win XP Pro
Delphi 5 Enterprise
|
Verfasst: Do 03.04.08 20:44
okay, vielen Dank. Nun hab ich's.
So...
Delphi-Quelltext 1:
| (FindComponent(variable_name) as timage).hint:=der_neue_link; |
kann man die Eigenschaften (in diesem Fall hint) einfach ändern. Vermutlich hatte ich in meinem Wirrwar
 paar Fehler drinn. Nun funktionierts.
Vielen Dank für die Unterstützung!!
|
|