| Autor |
Beitrag |
crystelane
Hält's aus hier
Beiträge: 1
|
Verfasst: Mo 05.06.06 18:19
Keine ahnung ob das hier die richtige abteilung ist  :Ich bin grad dabei bzw. fast fertig Monolpoly zu programmieren, nun will ich es natürlich noch verbessern und deswegen wollte ich fragen ob jemand mir sagen kann ob es möglkich ist wenn ich einzelne Panels mit tag durchnummeriere ob ich dann über diese tagzahlen auf den panel zugreifen kann und wenn ja wie? kurz meine Spielfigur soll sich fortbewegen :if ap:=i then spielfigur(ist ein image).parent:=p_.tag[i]? ist das irgendwie zu realisieren, falls es nciht sogar schon richtig ist??? Wäre nett wenn jemand helfen könnte..^^ Moderiert von Christian S.: Topic aus Dateizugriff verschoben am Mo 05.06.2006 um 19:21
|
|
alzaimar
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: Mo 05.06.06 21:34
Ja, kann man so machen. Wieso malst Du nicht einfach ein Bitmap, mit einem hübschen Spielbrett und zeichnest da einfach die aktuellen Spielfiguren, Hotels etc. rein. Zum Schluss kopierst Du das auf die Form und fertig.
_________________ Na denn, dann. Bis dann, denn.
|
|
Böser Borstel
      
Beiträge: 154
|
Verfasst: Mi 07.06.06 12:00
Ich würde den Tag einer Komponente nie mißbrauchen, den ein weiterer Programmierer, kann meistens nichts mit dieser Eigenschaft anfangen.
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mi 07.06.06 12:10
Was heißt denn da mißbrauchen? Die Eigenschaft Tag ist dafür da, dass man einen Integer-Wert darin speichert. Diesen kann man dann für irgendwas verwenden. Wenn z.B. mehrere Buttons/MenuItems/etc. (fast) dasselbe machen sollen, dann nutze ich dafür regelmäßig den Tag. Dann muss man nicht mit if Sender = ..else if Sender = ... else if Sender = arbeiten, sondern kann das übersichtlicher mit Case Sender.Tag of machen (Kommentare sollten dann aber schon hin).
In diesem Fall hier fände ich es aber auch sinniger, wenn man im Create der Form die Panels in ein Array packen würde, und dann die Panels nur über den Array-Index anzusprechen.
_________________ We are, we were and will not be.
|
|
Böser Borstel
      
Beiträge: 154
|
Verfasst: Mi 07.06.06 12:17
wenn sie die selben events haben, verwendet man eine actionlist.
klar kann man dort einen integerwert hinterlegen, aber bei mehreren programmierern, darf nur einer so denken. sonst zerhaut man sich den tag immer wieder gegenseitig. wie wars mit komponente ableiten und eigenschaft hinzufügen.
|
|
Gausi
      
Beiträge: 8554
Erhaltene Danke: 481
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Mi 07.06.06 12:26
Mal ein Beispiel, wo ich den Tag benutze: Ich habe 10 Trackbars für einen Equalizer in einem mp3-Player. Jede davon steuert einen Frequenzbereich. Diese Werte sind in einem Array gespeichert, die ich im bei Onchange so verändere:
Delphi-Quelltext 1:
| EQWert[(Sender as TTrackbar).Tag] := (Sender as TTrackbar).Position; |
Dafür eine eigene Komponente abzuleiten, halte ich für albern.
_________________ We are, we were and will not be.
|
|
leoschabel
Hält's aus hier
Beiträge: 10
WIN 2000
Delphi 2007 Prof.
|
Verfasst: Mi 07.06.06 12:53
Titel: Komponenten in der Tag-Eigenschaft speichern
Vielleicht hilft dieser Artikel aus dem EasyDelphiHelper:
| Zitat: | Viele haben sich wahrscheinlich schon oft die Frage gestellt, welchen Sinn die Tag-Eigenschaft hat. Die Tag-Eigenschaft wurde im Typ TComponent implementiert, folglich besitzt jede Komponente diese Eigenschaft.
In ihr kann man nur Integer-Werte angeben. Auf den ersten Blick scheint dies nicht so sinnvoll zu sein. Besser wäre es, wenn man dort Zeichenketten, also Strings speichern könnte. Aber weit gefehlt. Dieser Artikel soll erklären, wie man mit der Tag-Eigenschaft richtig umgehen kann.
Wie schon erwähnt, lassen sich in der Eigenschaft nur Integer-Werte speichern. Wenn man bedenkt, dass Speicheradressen im Prinzip Integer-Werte sind, eröffnen sich ganz neue Möglichkeiten. Man kann nämlich nicht nur die Speicheradressen von Strings dort angeben, sondern von kompletten Objekten.
Folgendermaßen kann man Strings in der Tag-Eigenschaft speichern. Es wird ein Zeiger auf einen dynamisch erzeugten String dort abgelegt.
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.Button1Click(Sender: TObject); begin Button1.Tag:=Integer(NewStr('Hallo')); end; |
NewStr weist Speicherplatz für einen String zu. Als Result gibt die Funktion die Adresse zurück, die wir in der Tag-Eigenschaft speichern.
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.Button2Click(Sender: TObject); begin Edit1.Text:=PString(Button1.Tag)^; end; |
In Edit1.Text steht dann der String drin.
Delphi-Quelltext 1: 2: 3: 4:
| procedure TForm1.FormDestroy(Sender: TObject); begin DisposeStr(PString(Button1.Tag)); end; |
Da wir Speicher reserviert haben, müssen wir diesen auch wieder freigeben. Dies geschieht Beispielsweise im Ereignis OnDestroy. |
Moderiert von jasocul: Beitragsformatierung überarbeitet.
|
|