Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TEdit in Klasse ? (https://www.delphipraxis.net/45530-tedit-klasse.html)

richard_boderich 7. Mai 2005 21:28


TEdit in Klasse ?
 
Hallo Leute!

Ich habe mal ne Frage zu Klassen. Ich moechte ein Teditfeld in einer selbsterstellten
Klasse nutzen, und folgendermaßen ansprechen.

Delphi-Quellcode:
Label1.caption:=Klasse.edit1.text;
Ist sowas überhaupt realisierbar oder muss ich dafür eine Komponente erstellen?
Bisher habe ich in Klassen nur Variablen benutzt. Ich würde mich über eine kleines
Beispiel freuen, das zeigt wie ich ein Tedit bzw. eine anderes Object der VCL in eine Klasse einbinden kann.

So long,

Euer Richard

Ultimator 7. Mai 2005 21:35

Re: TEdit in Klasse ?
 
Klar geht das.
Zitat:

Bisher habe ich in Klassen nur Variablen benutzt.
Dein Edit1 ist ja auch nur eine Variable, und zwar vom Typ TEdit ;)

jfheins 7. Mai 2005 21:37

Re: TEdit in Klasse ?
 
Naja, du kannst das Edit als Unterobjekt definieren, z.B. so:
Delphi-Quellcode:
TMyCFlass = class
published
Edit1: TEdit;
end;
Dann kannst du imho normal auf das Edit zugreigen (Instanz.Edit1.Text usw.)

So kannst du auch gewisse Eigenschaften wieder verbergen, die das Edit hatte, einfach im Private Teil deklarieren, und dann ein paar Wrapperfunktionen schreiben ... :coder: :roll: :wall:

richard_boderich 7. Mai 2005 22:52

Re: TEdit in Klasse ?
 
@All,

wenn ich die Klasse definiert hab. Und ich führe 2 x ein create aus, so hatt er dann doch 2 objecte von der Klasse erstellt. Sozusagen 2 instanzen vom selben Typ. Gibt es eine
Möglichkeit dann die beiden objecte Anhand eines unterschiedlichen Bezeichners anzusprechen?

z.B. meineKlasse1 1. Object, meineKlasse2 2. Object oder muss ich dafür ein
Array of Class machen?

es koennte auch sein das ich sowas benoetige

Delphi-Quellcode:
For i:=1 to 200 do
begin
create.meineklasse[i]
end;

Ultimator 7. Mai 2005 23:04

Re: TEdit in Klasse ?
 
Also du hast eine Klasse MyClass1.
Und du möchtest zwei Instanzen davon erzeugen.
Dann brauchst du auch zwei Variablen vom Typ MyClass1.
Wenn du aber nicht weißt, wie viele Instanzen du benötigst, dann musst du ein Array nehmen.
Ich weiß nicht, ob nicht vielleicht auch Listen gingen, weil ich mich damit nicht weiter auskenne :oops:

Zur unteren Frage:

Verstehe ich das richtig:
Du hast ein paar Klassen, angenommen namens MyClass42 bis MyClass666 (:mrgreen:).
Und du möchtest von jeder Klasse eine Instanz erstellen?
Das erscheint mir so gut wie unmöglich :-?
Wenn du zudem noch eine variable Anzahl an Instanzen dieser Klassen benötigst, dann brauchst du ja auch noch arrays of Wasweißich, evtrl. sogar array of Variant :shock:

Also das kann ich mir fast nicht vorstellen, dass das geht :?

richard_boderich 7. Mai 2005 23:26

Re: TEdit in Klasse ?
 
@Ultimator,

Es ist etwas schwer zu erklaeren. Ich programmiere grad eine Strategiemap für unseren Clan.

auf der Map kann ich Marker, Einheiten, Spieler und soweiter setzten. Ich würde das gern mit
Objecten machen.

nehmen wir an ich habe für jeden Einheitentyp eine eingene Klasse z.b

"Infantry" , "Luftabwehr" , "Panzer"
-----------------------------------------------------
1. Instanz ............................................Panzer 1
2. Instanz ............................................Panzer 2


wenn nun der spieler eine einheitentyp waehlt, soll dort wo er auf die Karte klickt ein entsprechendes
Object erscheinen. Nehmen wir mal an er erstellt 2 Panzer. Das sind 2 objecte mit namen "Panzer1" und "Panzer2" Obige Tabelle soll das mal verdeutlichen.

nehmen wir aber mal an. der spieler will die Psition der einheit aendern und klickt auf die einheit.
Jetzt habe ich das Problem wie ich diejenige Instanz ermittle die zu dem angeklickten object gehört.

ich muss ja dann eine Procedure schreiben die ein bewegen der einheiten ermoeglicht. Da ich nicht für jede instanz eine extra Procedure machen will, muss ich ja dann sowas machen.

Delphi-Quellcode:

Panzer[x].left:=20;
ICh hoffe du verstehts jetzt mein Problem.

So long

Richard

Hansa 7. Mai 2005 23:27

Re: TEdit in Klasse ?
 
Zitat:

Zitat von jfheins
Naja, du kannst das Edit als Unterobjekt definieren, z.B. so:
Delphi-Quellcode:
TMyCFlass = class
published
Edit1: TEdit;
end;
Dann kannst du imho normal auf das Edit zugreigen (Instanz.Edit1.Text usw.)

So kannst du auch gewisse Eigenschaften wieder verbergen, die das Edit hatte, einfach im Private Teil deklarieren, und dann ein paar Wrapperfunktionen schreiben ... :coder: :roll: :wall:

Sorry, aber bist du nicht mehr ganz fix ? :mrgreen: Was erzählst du denn da für seltsames Zeugs mit Wrapper-Klassen usw. ? Um es vorwegzunehmen : das da geht ziemlich in Richtung Komponentenentwicklung. Richard soll mal bitte etwas näher beschreiben, um was es geht.

richard_boderich 7. Mai 2005 23:34

Re: TEdit in Klasse ?
 
@Hansa,

^^ hab es oben mal genauer versucht zu erklaeren. hoffe es ist verstaendlich.

Richard

richard_boderich 7. Mai 2005 23:47

Re: TEdit in Klasse ?
 
@Hansa,

kann ich da nicht einfach (sender:Tobject) abfragen?

Hansa 7. Mai 2005 23:52

Re: TEdit in Klasse ?
 
Ja, so ist es fast verständlich. Jeder Spieler wird ja wohl eine Namen haben ? Dann benutzte die Methode Addobject. Die ist in der Hierarchie mind. ab TStrings vorhanden. Aber ich muß dich trotzdem warnen : wenn das auch keine eigene Komponente erfordert, dann doch zumindest eigene Objekte. Und da muß genau überlegt werden wie sie aussehen und wie sie gehandhabt werden, also wann anlegen wann freigeben usw. Nicht ganz trivial. 8)

P.S. : Wie einfach Sender abfangen ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:09 Uhr.
Seite 1 von 5  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz